OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [newlib/] [libc/] [machine/] [h8300/] [memset.S] - Rev 40

Go to most recent revision | Compare with Previous | Blame | View Log

#include "defines.h"

#ifdef __H8300H__
        .h8300h
#endif

#ifdef __H8300S__
        .h8300s
#endif


; A0P pointer to cursor
; A1P thing to copy
        .global _memset

_memset:

;       MOVP    @(2/4,r7),A2P   ; dst
;       MOVP    @(4/8,r7),A1    ; src thing
;       MOVP    @(6/12,r7),A3P  ; len

        MOVP    A2P,A2P
        beq     quit

        ; A3 points to the end of the area
        MOVP    A0P,A3P
        ADDP    A2P,A3P

        ; see if we can do it in words
        ; by oring in the start of the buffer to the end address

        or      A0L,A2L
        btst    #0,A2L
        bne     byteloop
        
        ; we can do it a word at a time

        mov.b   A1L,A1H 

wordloop:
        mov.w   A1,@-A3P
        CMPP    A3P,A0P
        bne     wordloop
quit:   rts     

byteloop:
        mov.b   A1L,@-A3P
        CMPP    A3P,A0P
        bne     byteloop
        rts

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.