i386: simplify sigreturn decoding

* signal.c (sys_sigreturn) [X86_64 || X32 || I386]: Do not define
i386_sigcontext_struct and i386_fpstate structures.
diff --git a/signal.c b/signal.c
index e9ce465..34b2946 100644
--- a/signal.c
+++ b/signal.c
@@ -740,66 +740,24 @@
 			return 0;
 		}
 # endif
-		struct i386_sigcontext_struct {
-			uint16_t gs, __gsh;
-			uint16_t fs, __fsh;
-			uint16_t es, __esh;
-			uint16_t ds, __dsh;
-			uint32_t edi;
-			uint32_t esi;
-			uint32_t ebp;
-			uint32_t esp;
-			uint32_t ebx;
-			uint32_t edx;
-			uint32_t ecx;
-			uint32_t eax;
-			uint32_t trapno;
-			uint32_t err;
-			uint32_t eip;
-			uint16_t cs, __csh;
-			uint32_t eflags;
-			uint32_t esp_at_signal;
-			uint16_t ss, __ssh;
-			uint32_t i387;
-			uint32_t oldmask;
-			uint32_t cr2;
-		};
-		struct i386_fpstate {
-			uint32_t cw;
-			uint32_t sw;
-			uint32_t tag;
-			uint32_t ipoff;
-			uint32_t cssel;
-			uint32_t dataoff;
-			uint32_t datasel;
-			uint8_t  st[8][10]; /* 8*10 bytes: FP regs */
-			uint16_t status;
-			uint16_t magic;
-			uint32_t fxsr_env[6];
-			uint32_t mxcsr;
-			uint32_t reserved;
-			uint8_t  stx[8][16]; /* 8*16 bytes: FP regs, each padded to 16 bytes */
-			uint8_t  xmm[8][16]; /* 8 XMM regs */
-			uint32_t padding1[44];
-			uint32_t padding2[12]; /* union with struct _fpx_sw_bytes */
-		};
-		struct {
-			struct i386_sigcontext_struct sc;
-			struct i386_fpstate fp;
-			uint32_t extramask[1];
-		} signal_stack;
-		/* On i386, sc is followed on stack by struct fpstate
-		 * and after it an additional u32 extramask[1] which holds
+		/*
+		 * On i386, sigcontext is followed on stack by struct fpstate
+		 * and after it an additional u32 extramask which holds
 		 * upper half of the mask.
 		 */
+		struct {
+			uint32_t struct_sigcontext_padding1[20];
+			uint32_t oldmask;
+			uint32_t struct_sigcontext_padding2;
+			uint32_t struct_fpstate_padding[156];
+			uint32_t extramask;
+		} frame;
 		tprints("{mask=");
-		if (umove(tcp, *i386_esp_ptr, &signal_stack) < 0) {
+		if (umove(tcp, *i386_esp_ptr, &frame) < 0) {
 			tprintf("%#lx", (unsigned long) *i386_esp_ptr);
 		} else {
-			uint32_t sigmask[2];
-			sigmask[0] = signal_stack.sc.oldmask;
-			sigmask[1] = signal_stack.extramask[0];
-			tprintsigmask_addr("", sigmask);
+			uint32_t mask[2] = { frame.oldmask, frame.extramask };
+			tprintsigmask_addr("", mask);
 		}
 		tprints("}");
 	}