newlib/libgloss/ft32/sim-write.S

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