blob: eb1e10582812b1a8da2354b0a5896bef57159d6b [file] [log] [blame]
# define __ASM_FORM(x) " " #x " "
# define JUMP_LABEL_INITIAL_NOP ".byte 0xe9 \n\t .long 0\n\t"
# define __ASM_SEL(a,b) __ASM_FORM(b)
#define _ASM_PTR __ASM_SEL(.long, .quad)
# define JUMP_LABEL(key, label) \
do { \
asm goto("1:" \
JUMP_LABEL_INITIAL_NOP \
".pushsection __jump_table, \"a\" \n\t"\
_ASM_PTR "1b, %l[" #label "], %c0 \n\t" \
".popsection \n\t" \
: : "i" (key) : : label); \
} while (0)
int main(int argc, char *argv[])
{
JUMP_LABEL("1", do_trace );
return 1;
do_trace:
return 0;
}
/*
* check-name: Asm with goto labels.
*/