57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * sim-write.S -- write interface for FT32 simulator
 | |
|  *
 | |
|  * Copyright (C) 2015 FTDI (support@ftdichip.com)
 | |
|  *
 | |
|  * The authors hereby grant permission to use, copy, modify, distribute,
 | |
|  * and license this software and its documentation for any purpose, provided
 | |
|  * that existing copyright notices are retained in all copies and that this
 | |
|  * notice is included verbatim in any distributions. No written agreement,
 | |
|  * license, or royalty fee is required for any of the authorized uses.
 | |
|  * Modifications to this software may be copyrighted by their authors
 | |
|  * and need not follow the licensing terms described here, provided that
 | |
|  * the new terms are clearly indicated on the first page of each file where
 | |
|  * they apply.
 | |
|  */
 | |
| 
 | |
| #include "syscall.h"
 | |
| 
 | |
| /*
 | |
|  * Input:
 | |
|  * $r0            -- File descriptor.
 | |
|  * $r1            -- String to be printed.
 | |
|  * $r2      -- Length of the string.
 | |
|  *
 | |
|  * Output:
 | |
|  * $r0          -- Length written or -1.
 | |
|  * errno  -- Set if an error
 | |
|  */
 | |
| 
 | |
|         .globl        _write
 | |
|         .type        _write,@function
 | |
|         .weak        write
 | |
|         .text
 | |
| _write:
 | |
| write:
 | |
| 
 | |
| #         LDI.l   $r1,$r0,0
 | |
| #         STA.l   MAGIC,$r1
 | |
| #         jmp     .f
 | |
| #
 | |
| # .loop:
 | |
| #         sta.l   0x10000,$r2
 | |
| #         add.l   $r0,$r0,1
 | |
| # .f:
 | |
| #         ldi.b   $r2,$r0,0
 | |
| #         cmp.b   $r2,0
 | |
| #         jmpc    nz,.loop
 | |
| 
 | |
|         ldk.l   $r3,0x10000
 | |
|         streamout.b $r3,$r1,$r2
 | |
|         move.l  $r0,$r2
 | |
| 
 | |
|         return
 | |
| 
 | |
| .Lend:
 | |
|         .size        _write,.Lend-_write
 |