diff options
Diffstat (limited to 'newlib/libc/sys/sysvi386/signal.s')
-rw-r--r-- | newlib/libc/sys/sysvi386/signal.s | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/newlib/libc/sys/sysvi386/signal.s b/newlib/libc/sys/sysvi386/signal.s new file mode 100644 index 0000000..2418eb0 --- /dev/null +++ b/newlib/libc/sys/sysvi386/signal.s @@ -0,0 +1,16 @@ +/ According to the iBCS2 book, signal() has 0x30 in %eax, and the address +/ of a function in %edx. This function is where a signal handler will +/ return to; it should just adjust the stack pointer, and call $f,$0. +/ Strange but true. + .globl signal + +sigret: + addl $4, %esp + lcall $0xf, $0 +signal: + movl $0x30, %eax + movl sigret, %edx + lcall $7,$0 + jb _cerror +/ The iBCS2 book also clears out %eax here, which seems to be broken. + ret |