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