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
|