diff options
Diffstat (limited to 'libgloss/ft32/sim-write.S')
-rw-r--r-- | libgloss/ft32/sim-write.S | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/libgloss/ft32/sim-write.S b/libgloss/ft32/sim-write.S new file mode 100644 index 000000000..90fef8d69 --- /dev/null +++ b/libgloss/ft32/sim-write.S @@ -0,0 +1,56 @@ +/* + * 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 |