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 000000000..2418eb02b --- /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 |