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