123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #
- ! $Source: /cvsroot/tack/Ack/plat/linux386/libsys/_syscall.s,v $
- ! $State: Exp $
- ! $Revision: 1.1 $
- ! Declare segments (the order is important).
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- EINVAL = 22
-
- ! Perform a Linux system call.
- .define __syscall
- __syscall:
- move.l (4, sp), d0
- move.l (8, sp), d1
- move.l (12, sp), d2
- move.l (16, sp), d3
- trap #0
-
- tst.l d0
- bmi 1f
- rts
-
- 1:
- neg.l d0
- ! It just so happens that errnos 1-34 are the same in Linux as in ACK.
- cmp.l #1, d0
- blt 2f
- cmp.l #34, d0
- bgt 2f
- move.l d0, (_errno)
- 3:
- move.l #-1, d0
- rts
-
- 2:
- move.l #EINVAL, (_errno)
- bra 3b
|