48 extern void abort (void);
50 __attribute__((naked)) void dumpregs () __asm("myfunc");
51 __attribute__((naked)) void dumpregs ()
55 "stmfd sp!, {r0-r3}\n\t"
57 "fstmdbs sp!, {s0-s15}\n\t"
58 "fstmdbd sp!, {d0-d7}\n\t"
61 "stmfd sp!, {ip, r14}\n\t"
63 "ldmfd sp!, {r0, r14}\n\t"
69 #define LAST_ARG(type,val,offset) { type __x = val; if (memcmp(&__x, stack+offset, sizeof(type)) != 0) abort(); }
70 #define ARG(type,val,offset) LAST_ARG(type, val, offset)
71 #define ANON(type,val,offset) LAST_ARG(type, val, offset)
72 #define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
75 void testfunc(char* stack)
86 #define LAST_ARG(type,val,offset) type
87 #define ARG(type,val,offset) LAST_ARG(type, val, offset),
89 #define ANON(type,val, offset)
90 #define LAST_ANON(type,val, offset)
93 #define MYFUNCTYPE void
109 #define LAST_ARG(type,val,offset) val
110 #define ARG(type,val,offset) LAST_ARG(type, val, offset),
112 #define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
113 #define ANON(type,val,offset) LAST_ARG(type, val, offset),