URL
https://opencores.org/ocsvn/c0or1k/c0or1k/trunk
Subversion Repositories c0or1k
[/] [c0or1k/] [trunk/] [src/] [arch/] [arm/] [memset.S.ARM] - Rev 6
Compare with Previous | Blame | View Log
/** Copyright 2010 (C) B Labs.* Author: Prem Mallappa <prem.mallappa@b-labs.co.uk>* Description: Optimized memset for ARM*/#include INC_ARCH(asm.h)/*void *memset(void *dst, int c, int len)*/BEGIN_PROC(_memset)stmfd sp!, {r4 - r11, lr}and r1, r1, #255 /* c &= 0xff */orr r1, r1, lsl #8 /* c |= c<<8 */orr r1, r1, lsl #16 /* c |= c<<16 */mov r4, r1cmp r2, #8blt 4fmovge r5, r4cmpge r2, #16blt 8fmovge r6, r4movge r7, r4cmpge r2, #32blt 16fmovge r8, r4movge r9, r4movge r10, r4movge r11, r432:cmp r2, #32blt 16fstmia r0!, {r4 - r11}sub r2, r2, #32b 32b16:cmp r2, #16blt 8fstmia r0!, {r4 - r7}sub r2, r2, #16b 16b8:cmp r2, #8blt 4fstmia r0!, {r4, r5}sub r2, r2, #8b 8b4:cmp r2, #4blt endstmia r0!, {r4}sub r2, r2, #4b 4bend:teq r2, #0strneb r4, [r0, #0]subne r2, r2, #1addne r0, r0, #1bne endldmfd sp!, {r4 - r11, pc}END_PROC(_memset)
