; Trap 0 handler (syscall interface). | |
; | |
; The trap handler returns the result in r0 and the error code (errno value) | |
; in r2. r1 is reserved in case an 8 byte quantity ever needs to be | |
; returned in registers. | |
.text | |
.global __trap0 | |
__trap0: | |
trap #0 ; trap 0 returns result in r0, error code in r2 | |
cmpui r2,#1 ; is error code zero? | |
bc .Lret ; yes, skip setting errno | |
ld r4,@(sp) ; no, set errno | |
st r2,@r4 | |
.Lret: | |
jmp lr ; return to caller |