/* * String handling functions for PowerPC. * * Copyright (C) 1996 Paul Mackerras. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <asm/processor.h> #include <asm/errno.h> #include <asm/ppc_asm.h> #include <asm/export.h> _GLOBAL(memset) neg r0,r3 rlwimi r4,r4,8,16,23 andi. r0,r0,7 /* # bytes to be 8-byte aligned */ rlwimi r4,r4,16,0,15 cmplw cr1,r5,r0 /* do we get that far? */ rldimi r4,r4,32,0 PPC_MTOCRF(1,r0) mr r6,r3 blt cr1,8f beq+ 3f /* if already 8-byte aligned */ subf r5,r0,r5 bf 31,1f stb r4,0(r6) addi r6,r6,1 1: bf 30,2f sth r4,0(r6) addi r6,r6,2 2: bf 29,3f stw r4,0(r6) addi r6,r6,4 3: srdi. r0,r5,6 clrldi r5,r5,58 mtctr r0 beq 5f .balign 16 4: std r4,0(r6) std r4,8(r6) std r4,16(r6) std r4,24(r6) std r4,32(r6) std r4,40(r6) std r4,48(r6) std r4,56(r6) addi r6,r6,64 bdnz 4b 5: srwi. r0,r5,3 clrlwi r5,r5,29 PPC_MTOCRF(1,r0) beq 8f bf 29,6f std r4,0(r6) std r4,8(r6) std r4,16(r6) std r4,24(r6) addi r6,r6,32 6: bf 30,7f std r4,0(r6) std r4,8(r6) addi r6,r6,16 7: bf 31,8f std r4,0(r6) addi r6,r6,8 8: cmpwi r5,0 PPC_MTOCRF(1,r5) beqlr+ bf 29,9f stw r4,0(r6) addi r6,r6,4 9: bf 30,10f sth r4,0(r6) addi r6,r6,2 10: bflr 31 stb r4,0(r6) blr EXPORT_SYMBOL(memset) _GLOBAL_TOC(memmove) cmplw 0,r3,r4 bgt backwards_memcpy b memcpy _GLOBAL(backwards_memcpy) rlwinm. r7,r5,32-3,3,31 /* r0 = r5 >> 3 */ add r6,r3,r5 add r4,r4,r5 beq 2f andi. r0,r6,3 mtctr r7 bne 5f .balign 16 1: lwz r7,-4(r4) lwzu r8,-8(r4) stw r7,-4(r6) stwu r8,-8(r6) bdnz 1b andi. r5,r5,7 2: cmplwi 0,r5,4 blt 3f lwzu r0,-4(r4) subi r5,r5,4 stwu r0,-4(r6) 3: cmpwi 0,r5,0 beqlr mtctr r5 4: lbzu r0,-1(r4) stbu r0,-1(r6) bdnz 4b blr 5: mtctr r0 6: lbzu r7,-1(r4) stbu r7,-1(r6) bdnz 6b subf r5,r0,r5 rlwinm. r7,r5,32-3,3,31 beq 2b mtctr r7 b 1b EXPORT_SYMBOL(memmove) on value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/diff/'>root</a>/<a href='/cgit.cgi/linux/net-next.git/diff/Documentation'>Documentation</a>/<a href='/cgit.cgi/linux/net-next.git/diff/Documentation/media'>media</a>/<a href='/cgit.cgi/linux/net-next.git/diff/Documentation/media/uapi'>uapi</a>/<a href='/cgit.cgi/linux/net-next.git/diff/Documentation/media/uapi/mediactl'>mediactl</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><div class='diffstat-header'><a href='/cgit.cgi/linux/net-next.git/diff/'>Diffstat</a> (limited to 'Documentation/media/uapi/mediactl')</div><table summary='diffstat' class='diffstat'>