blob: 6c540b1042a4c069f7c5aa0170c11c808eca33d0 [file] [log] [blame]
# MACRO: start
# All assembler tests should start with a call to "start"
.macro start
.text
# Skip over these inlined funcs.
jmp __start;
.global __pass
.type __pass, function
__pass:
write 1, _passmsg, 5
exit 0
.global __fail
.type __fail, function
__fail:
write 1, _failmsg, 5
exit 1
.data
_passmsg:
.ascii "pass\n"
.align 4
_failmsg:
.ascii "fail\n"
.align 4
.text
.global __start
.type __start, function
__start:
.endm
# MACRO: system_call
# Make a libgloss/Linux system call
.macro system_call nr:req
call #(0x180|\nr);
.endm
# MACRO: exit
# Quit the current test
.macro exit rc:req
mov #\rc, r12
system_call 1
.endm
# MACRO: pass
# Write 'pass' to stdout via syscalls and quit;
# meant for non-OS operating environments
.macro pass
jmp __pass;
.endm
# MACRO: fail
# Write 'fail' to stdout via syscalls and quit;
# meant for non-OS operating environments
.macro fail
jmp __fail;
.endm
# MACRO: write
# Just like the write() C function; uses system calls
.macro write fd:req, buf:req, count:req
mov #\fd, r12;
mov #\buf, r13;
mov #\count, r14;
system_call 5
.endm