| /* { dg-do run { target i?86-*-* x86_64-*-* } } */ | 
 | /* { dg-options "-g -mgeneral-regs-only" } */ | 
 |  | 
 | extern void exit (int); | 
 |  | 
 | typedef unsigned int uword_t __attribute__ ((mode (__word__))); | 
 |  | 
 | #define ERROR		0x12345670 | 
 | #define IP		0x12345671 | 
 | #define CS		0x12345672 | 
 | #define FLAGS		0x12345673 | 
 | #define SP		0x12345674 | 
 | #define SS		0x12345675 | 
 |  | 
 | #define STRING(x)	XSTRING(x) | 
 | #define XSTRING(x)	#x | 
 | #define ASMNAME(cname)  ASMNAME2 (__USER_LABEL_PREFIX__, cname) | 
 | #define ASMNAME2(prefix, cname) XSTRING (prefix) cname | 
 |  | 
 | struct interrupt_frame | 
 | { | 
 |   uword_t ip; | 
 |   uword_t cs; | 
 |   uword_t flags; | 
 |   uword_t sp; | 
 |   uword_t ss; | 
 | }; | 
 |  | 
 | __attribute__((naked, used)) | 
 | void | 
 | fn (void) | 
 | { | 
 |   register uword_t *sp __asm__("sp"); | 
 |   uword_t error = *sp; | 
 |   struct interrupt_frame *frame = (struct interrupt_frame *) (sp + 1); | 
 |   if (ERROR != error)		/* BREAK */ | 
 |     __builtin_abort (); | 
 |   if (IP != frame->ip) | 
 |     __builtin_abort (); | 
 |   if (CS != frame->cs) | 
 |     __builtin_abort (); | 
 |   if (FLAGS != frame->flags) | 
 |     __builtin_abort (); | 
 |   if (SP != frame->sp) | 
 |     __builtin_abort (); | 
 |   if (SS != frame->ss) | 
 |     __builtin_abort (); | 
 |  | 
 |   exit (0); | 
 | } | 
 |  | 
 | int | 
 | main () | 
 | { | 
 |   asm ("push	$" STRING (SS) ";		\ | 
 | 	push	$" STRING (SP) ";		\ | 
 | 	push	$" STRING (FLAGS) ";		\ | 
 | 	push	$" STRING (CS) ";		\ | 
 | 	push	$" STRING (IP) ";		\ | 
 | 	push	$" STRING (ERROR) ";		\ | 
 | 	jmp	 " ASMNAME ("fn")); | 
 |   return 0; | 
 | } | 
 |  | 
 | /* { dg-final { gdb-test 36 "error" "0x12345670" } } */ | 
 | /* { dg-final { gdb-test 36 "frame->ip" "0x12345671" } } */ | 
 | /* { dg-final { gdb-test 36 "frame->cs" "0x12345672" } } */ | 
 | /* { dg-final { gdb-test 36 "frame->flags" "0x12345673" } } */ | 
 | /* { dg-final { gdb-test 36 "frame->sp" "0x12345674" } } */ | 
 | /* { dg-final { gdb-test 36 "frame->ss" "0x12345675" } } */ |