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
 | 
						|
		
 |