17 lines
451 B
ArmAsm
17 lines
451 B
ArmAsm
; 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
|