X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fmisc_arm.s;h=56c7401990b89b41c712bc277d3deefd52f24561;hb=fda2f31020bf0d6cf7b5dd70ec01cf390b7e1483;hp=1ef2e58fca414bc726319ff7b91a636a8f82e8fc;hpb=1cfc5cc4ce06642b9bc45ca3b9d32793718e9455;p=picodrive.git diff --git a/pico/misc_arm.s b/pico/misc_arm.s index 1ef2e58..56c7401 100644 --- a/pico/misc_arm.s +++ b/pico/misc_arm.s @@ -1,46 +1,10 @@ -@ vim:filetype=armasm - -@ Generic memory routines. -@ (c) Copyright 2007, Grazvydas "notaz" Ignotas - - -.global memcpy16 @ unsigned short *dest, unsigned short *src, int count - -memcpy16: - eor r3, r0, r1 - tst r3, #2 - bne mcp16_cant_align - - tst r0, #2 - ldrneh r3, [r1], #2 - subne r2, r2, #1 - strneh r3, [r0], #2 - - subs r2, r2, #4 - bmi mcp16_fin - -mcp16_loop: - ldmia r1!, {r3,r12} - subs r2, r2, #4 - stmia r0!, {r3,r12} - bpl mcp16_loop - -mcp16_fin: - tst r2, #2 - ldrne r3, [r1], #4 - strne r3, [r0], #4 - ands r2, r2, #1 - bxeq lr - -mcp16_cant_align: - ldrh r3, [r1], #2 - subs r2, r2, #1 - strh r3, [r0], #2 - bne mcp16_cant_align - - bx lr - - +/* + * Generic memory routines. + * (C) notaz, 2007-2008 + * + * This work is licensed under the terms of MAME license. + * See COPYING file in the top-level directory. + */ @ 0x12345678 -> 0x34127856 @ r4=temp, lr=0x00ff00ff @@ -50,7 +14,6 @@ mcp16_cant_align: orr \reg, \reg, r4, lsl #8 .endm - @ dest must be halfword aligned, src can be unaligned .global memcpy16bswap @ unsigned short *dest, void *src, int count @@ -119,37 +82,6 @@ mcp16bs_cant_align2: bx lr - -.global memcpy32 @ int *dest, int *src, int count - -memcpy32: - stmfd sp!, {r4,lr} - - subs r2, r2, #4 - bmi mcp32_fin - -mcp32_loop: - ldmia r1!, {r3,r4,r12,lr} - subs r2, r2, #4 - stmia r0!, {r3,r4,r12,lr} - bpl mcp32_loop - -mcp32_fin: - tst r2, #3 - ldmeqfd sp!, {r4,pc} - tst r2, #1 - ldrne r3, [r1], #4 - strne r3, [r0], #4 - -mcp32_no_unal1: - tst r2, #2 - ldmneia r1!, {r3,r12} - ldmfd sp!, {r4,lr} - stmneia r0!, {r3,r12} - bx lr - - - .global memset32 @ int *dest, int c, int count memset32: @@ -177,5 +109,4 @@ mst32_fin: ldmfd sp!, {lr} bx lr - - +@ vim:filetype=armasm