1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng/* 2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng * Copyright (C) 2002 Paul Mackerras, IBM Corp. 3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng * 4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng * This program is free software; you can redistribute it and/or 5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng * modify it under the terms of the GNU General Public License 6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng * as published by the Free Software Foundation; either version 7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng * 2 of the License, or (at your option) any later version. 8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng */ 9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <asm/processor.h> 10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <asm/ppc_asm.h> 11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng .align 7 13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng_GLOBAL(memcpy) 14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengBEGIN_FTR_SECTION 15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng std r3,48(r1) /* save destination pointer for return value */ 16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengFTR_SECTION_ELSE 17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng b memcpy_power7 18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengALT_FTR_SECTION_END_IFCLR(CPU_FTR_VMX_COPY) 19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PPC_MTOCRF(0x01,r5) 20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng cmpldi cr1,r5,16 21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng neg r6,r3 # LS 3 bits = # bytes to 8-byte dest bdry 22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng andi. r6,r6,7 23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng dcbt 0,r4 24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng blt cr1,.Lshort_copy 25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng/* Below we want to nop out the bne if we're on a CPU that has the 26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CPU_FTR_UNALIGNED_LD_STD bit set and the CPU_FTR_CP_USE_DCBTZ bit 27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng cleared. 28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng At the time of writing the only CPU that has this combination of bits 29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng set is Power6. */ 30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengBEGIN_FTR_SECTION 31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng nop 32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengFTR_SECTION_ELSE 33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bne .Ldst_unaligned 34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengALT_FTR_SECTION_END(CPU_FTR_UNALIGNED_LD_STD | CPU_FTR_CP_USE_DCBTZ, \ 35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CPU_FTR_UNALIGNED_LD_STD) 36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng.Ldst_aligned: 37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,-16 38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengBEGIN_FTR_SECTION 39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng andi. r0,r4,7 40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bne .Lsrc_unaligned 41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengEND_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) 42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng srdi r7,r5,4 43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ld r9,0(r4) 44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r4,r4,-8 45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng mtctr r7 46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng andi. r5,r5,7 47e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bf cr7*4+0,2f 48e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,8 49e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r4,r4,8 50e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng mr r8,r9 51e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng blt cr1,3f 52e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng1: ld r9,8(r4) 53e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng std r8,8(r3) 54e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng2: ldu r8,16(r4) 55e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stdu r9,16(r3) 56e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bdnz 1b 57e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng3: std r8,8(r3) 58e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng beq 3f 59e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,16 60e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng.Ldo_tail: 61e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bf cr7*4+1,1f 62e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lwz r9,8(r4) 63e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r4,r4,4 64e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stw r9,0(r3) 65e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,4 66e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng1: bf cr7*4+2,2f 67e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lhz r9,8(r4) 68e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r4,r4,2 69e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sth r9,0(r3) 70e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,2 71e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng2: bf cr7*4+3,3f 72e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lbz r9,8(r4) 73e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stb r9,0(r3) 74e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng3: ld r3,48(r1) /* return dest pointer */ 75e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng blr 76e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 77e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng.Lsrc_unaligned: 78e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng srdi r6,r5,3 79e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r5,r5,-16 80e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng subf r4,r0,r4 81e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng srdi r7,r5,4 82e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sldi r10,r0,3 83e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng cmpdi cr6,r6,3 84e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng andi. r5,r5,7 85e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng mtctr r7 86e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng subfic r11,r10,64 87e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng add r5,r5,r0 88e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 89e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bt cr7*4+0,0f 90e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 91e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ld r9,0(r4) # 3+2n loads, 2+2n stores 92e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ld r0,8(r4) 93e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sld r6,r9,r10 94e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ldu r9,16(r4) 95e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng srd r7,r0,r11 96e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sld r8,r0,r10 97e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng or r7,r7,r6 98e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng blt cr6,4f 99e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ld r0,8(r4) 100e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng # s1<< in r8, d0=(s0<<|s1>>) in r7, s3 in r0, s2 in r9, nix in r6 & r12 101e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng b 2f 102e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 103e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng0: ld r0,0(r4) # 4+2n loads, 3+2n stores 104e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ldu r9,8(r4) 105e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sld r8,r0,r10 106e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,-8 107e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng blt cr6,5f 108e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ld r0,8(r4) 109e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng srd r12,r9,r11 110e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sld r6,r9,r10 111e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ldu r9,16(r4) 112e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng or r12,r8,r12 113e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng srd r7,r0,r11 114e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sld r8,r0,r10 115e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,16 116e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng beq cr6,3f 117e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 118e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng # d0=(s0<<|s1>>) in r12, s1<< in r6, s2>> in r7, s2<< in r8, s3 in r9 119e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng1: or r7,r7,r6 120e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ld r0,8(r4) 121e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng std r12,8(r3) 122e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng2: srd r12,r9,r11 123e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sld r6,r9,r10 124e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ldu r9,16(r4) 125e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng or r12,r8,r12 126e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stdu r7,16(r3) 127e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng srd r7,r0,r11 128e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sld r8,r0,r10 129e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bdnz 1b 130e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 131e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng3: std r12,8(r3) 132e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng or r7,r7,r6 133e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng4: std r7,16(r3) 134e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng5: srd r12,r9,r11 135e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng or r12,r8,r12 136e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng std r12,24(r3) 137e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng beq 4f 138e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng cmpwi cr1,r5,8 139e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,32 140e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sld r9,r9,r10 141e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ble cr1,6f 142e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ld r0,8(r4) 143e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng srd r7,r0,r11 144e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng or r9,r7,r9 145e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng6: 146e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bf cr7*4+1,1f 147e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng rotldi r9,r9,32 148e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stw r9,0(r3) 149e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,4 150e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng1: bf cr7*4+2,2f 151e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng rotldi r9,r9,16 152e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sth r9,0(r3) 153e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,2 154e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng2: bf cr7*4+3,3f 155e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng rotldi r9,r9,8 156e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stb r9,0(r3) 157e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng3: ld r3,48(r1) /* return dest pointer */ 158e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng blr 159e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 160e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng.Ldst_unaligned: 161e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PPC_MTOCRF(0x01,r6) # put #bytes to 8B bdry into cr7 162e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng subf r5,r6,r5 163e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng li r7,0 164e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng cmpldi cr1,r5,16 165e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bf cr7*4+3,1f 166e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lbz r0,0(r4) 167e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stb r0,0(r3) 168e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r7,r7,1 169e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng1: bf cr7*4+2,2f 170e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lhzx r0,r7,r4 171e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sthx r0,r7,r3 172e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r7,r7,2 173e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng2: bf cr7*4+1,3f 174e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lwzx r0,r7,r4 175e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stwx r0,r7,r3 176e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng3: PPC_MTOCRF(0x01,r5) 177e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng add r4,r6,r4 178e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng add r3,r6,r3 179e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng b .Ldst_aligned 180e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 181e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng.Lshort_copy: 182e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bf cr7*4+0,1f 183e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lwz r0,0(r4) 184e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lwz r9,4(r4) 185e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r4,r4,8 186e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stw r0,0(r3) 187e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stw r9,4(r3) 188e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,8 189e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng1: bf cr7*4+1,2f 190e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lwz r0,0(r4) 191e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r4,r4,4 192e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stw r0,0(r3) 193e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,4 194e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng2: bf cr7*4+2,3f 195e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lhz r0,0(r4) 196e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r4,r4,2 197e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng sth r0,0(r3) 198e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng addi r3,r3,2 199e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng3: bf cr7*4+3,4f 200e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng lbz r0,0(r4) 201e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stb r0,0(r3) 202e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng4: ld r3,48(r1) /* return dest pointer */ 203e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng blr 204