65 lines
918 B
ArmAsm
65 lines
918 B
ArmAsm
|
.macro FUNC_START name
|
||
|
.text
|
||
|
.globl \name
|
||
|
.globl _\name
|
||
|
\name:
|
||
|
_\name:
|
||
|
.endm
|
||
|
|
||
|
FUNC_START _sbrk
|
||
|
mov r4, r2 // save increment
|
||
|
lrw r3, brkval
|
||
|
ldw r2, (r3) // get next spot
|
||
|
|
||
|
movi r5, 7
|
||
|
addi r2, 7 // round up to 8 bytes
|
||
|
andn r2, r5
|
||
|
|
||
|
addu r4, r2 // save updated pointer
|
||
|
stw r4, (r3)
|
||
|
jmp r15
|
||
|
|
||
|
// brk() could go in here too...
|
||
|
|
||
|
.data
|
||
|
.import _end
|
||
|
brkval: .long _end
|
||
|
|
||
|
|
||
|
FUNC_START _exit
|
||
|
mov r1, r1 // accomodate simulator glitch...
|
||
|
.short 0x5000
|
||
|
br _exit // hard loop here
|
||
|
|
||
|
// 0x5001 - printf
|
||
|
// 0x5002 - scanf
|
||
|
|
||
|
FUNC_START utime
|
||
|
.short 0x5003
|
||
|
jmp r15
|
||
|
|
||
|
|
||
|
.macro stub name value
|
||
|
FUNC_START \name
|
||
|
movi r1, \value
|
||
|
.short 0x50FF
|
||
|
jmp r15
|
||
|
.endm
|
||
|
|
||
|
stub _close 6
|
||
|
stub _lseek 19
|
||
|
stub _open 5
|
||
|
stub _read 3
|
||
|
stub _times 43
|
||
|
stub _unlink 10
|
||
|
stub _write 4
|
||
|
|
||
|
//stub access 33
|
||
|
//stub creat 8
|
||
|
//stub link 9
|
||
|
//stub time 13
|
||
|
|
||
|
//stub profil 98 // movi r6, 2
|
||
|
//stub lprofil 98 // movi r6, 4
|
||
|
|