Messages in this thread | | | Date | Thu, 19 Feb 2009 13:10:27 +0100 | From | Ingo Molnar <> | Subject | Re: Definition of BUG on x86 |
| |
* Petr Tesarik <ptesarik@suse.cz> wrote:
> So, the only method I could invent was using gas macros. It > works but is quite ugly, because it relies on the actual > assembler instruction which is generated by the compiler. Now, > AFAIK gcc has always translated "for(;;)" into a jump to self, > and that with any conceivable compiler options, but I don't > know anything about Intel cc.
> +static inline __noreturn void discarded_jmp(void) > +{ > + asm volatile(".macro jmp target\n" > + "\t.purgem jmp\n" > + ".endm\n"); > + for (;;) ; > +}
hm, that's very fragile.
Why not just:
static inline __noreturn void x86_u2d(void) { asm volatile("u2d\n"); }
If GCC emits a bogus warning about _that_, then it's a bug in the compiler that should be fixed.
Ingo
| |