[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5 1/4] xen: introduce CONFIG_GENERIC_BUG_FRAME
> > > > > + > > > > > +#define BUG_FRAME(type, line, ptr, second_frame, msg) do > > > > > { \ > > > > > + BUILD_BUG_ON((line) >> (BUG_LINE_LO_WIDTH + > > > > > BUG_LINE_HI_WIDTH)); \ > > > > > + BUILD_BUG_ON((type) >= > > > > > BUGFRAME_NR); \ > > > > > + asm volatile ( > > > > > _ASM_BUGFRAME_TEXT(second_frame) \ > > > > > + :: _ASM_BUGFRAME_INFO(type, line, ptr, > > > > > msg) > > > > > ); \ > > > > > +} while (0) > > > > > > Isn't this tied to BUG_FRAME_STRUCT being defined (or not)? At > > > least > > > the 1st BUILD_BUG_ON() looks problematic if an arch wasn't to use > > > the generic struct: With how you have things right now > > > BUG_LINE_{LO,HI}_WIDTH may not be defined, and the check would > > > also > > > be at risk of causing false positives. Perhaps it's appropriate > > > to > > > have a separate #ifdef (incl the distinct identifier used), but > > > that > > > first BUILD_BUG_ON() needs abstracting out. > Missed that. Thanks. > I'll introduce that a separate #ifdef before BUG_FRAME: > > #ifndef BUILD_BUG_ON_LINE_WIDTH > #define BUILD_BUG_ON_LINE_WIDTH \ > BUILD_BUG_ON((line) >> (BUG_LINE_LO_WIDTH + > BUG_LINE_HI_WIDTH)) > #endif I think even better will be to do in the following way: #ifndef LINE_WIDTH #define LINE_WIDTH (BUG_LINE_LO_WIDTH + BUG_LINE_HI_WIDTH) #endif #define BUG_FRAME(type, line, ptr, second_frame, msg) do { \ BUILD_BUG_ON((line) >> LINE_WIDTH); \ BUILD_BUG_ON((type) >= BUGFRAME_NR); \ asm volatile ( _ASM_BUGFRAME_TEXT(second_frame) \ :: _ASM_BUGFRAME_INFO(type, line, ptr, msg) ); \ } while (false) ~ Oleksii
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |