Home | History | Annotate | Line # | Download | only in riscv
      1      1.1  christos # MACRO: exit
      2      1.1  christos 	.macro exit nr
      3      1.1  christos 	li a0, \nr
      4      1.1  christos 	# The exit utility function.
      5      1.1  christos 	li a7, 93;
      6      1.1  christos 	# Trigger OS trap.
      7      1.1  christos 	ecall;
      8      1.1  christos 	.endm
      9      1.1  christos 
     10      1.1  christos # MACRO: pass
     11      1.1  christos # Write 'pass' to stdout and quit.
     12      1.1  christos 	.macro pass
     13      1.1  christos 	# syscall write().
     14      1.1  christos 	li a7, 64;
     15      1.1  christos 	# Use stdout.
     16      1.1  christos 	li a0, 1;
     17      1.1  christos 	# Point to the string.
     18      1.1  christos 	lla a1, 1f;
     19      1.1  christos 	# Number of bytes to write.
     20      1.1  christos 	li a2, 5;
     21      1.1  christos 	# Trigger OS trap.
     22      1.1  christos 	ecall;
     23      1.1  christos 	exit 0;
     24  1.1.1.2  christos 	.pushsection .data
     25      1.1  christos 	1: .asciz "pass\n"
     26  1.1.1.2  christos 	.popsection
     27      1.1  christos 	.endm
     28      1.1  christos 
     29      1.1  christos # MACRO: fail
     30      1.1  christos # Write 'fail' to stdout and quit.
     31      1.1  christos 	.macro fail
     32      1.1  christos 	# syscall write().
     33      1.1  christos 	li a7, 64;
     34      1.1  christos 	# Use stdout.
     35      1.1  christos 	li a0, 1;
     36      1.1  christos 	# Point to the string.
     37  1.1.1.2  christos 	la a1, 1f;
     38      1.1  christos 	# Number of bytes to write.
     39      1.1  christos 	li a2, 5;
     40      1.1  christos 	# Trigger OS trap.
     41      1.1  christos 	ecall;
     42      1.1  christos 	exit 0;
     43  1.1.1.2  christos 	.pushsection .data
     44      1.1  christos 	1: .asciz "fail\n"
     45  1.1.1.2  christos 	.popsection
     46      1.1  christos 	.endm
     47      1.1  christos 
     48      1.1  christos # MACRO: start
     49      1.1  christos # All assembler tests should start with a call to "start".
     50      1.1  christos 	.macro start
     51      1.1  christos 	.text
     52      1.1  christos .global _start
     53      1.1  christos _start:
     54  1.1.1.2  christos 	.option push
     55  1.1.1.2  christos 	.option norelax
     56  1.1.1.2  christos 	lla gp, __global_pointer$
     57  1.1.1.2  christos 	.option pop
     58      1.1  christos 	.endm
     59