|
@@ -95,33 +95,33 @@ void *memcpy(void *pdst,
|
|
|
If you want to check that the allocation was right; then
|
|
|
check the equalities in the first comment. It should say
|
|
|
"r13=r13, r11=r11, r12=r12" */
|
|
|
- __asm__ volatile ("
|
|
|
- ;; Check that the following is true (same register names on
|
|
|
- ;; both sides of equal sign, as in r8=r8):
|
|
|
- ;; %0=r13, %1=r11, %2=r12
|
|
|
- ;;
|
|
|
- ;; Save the registers we'll use in the movem process
|
|
|
- ;; on the stack.
|
|
|
- subq 11*4,$sp
|
|
|
- movem $r10,[$sp]
|
|
|
-
|
|
|
- ;; Now we've got this:
|
|
|
- ;; r11 - src
|
|
|
- ;; r13 - dst
|
|
|
- ;; r12 - n
|
|
|
-
|
|
|
- ;; Update n for the first loop
|
|
|
- subq 44,$r12
|
|
|
-0:
|
|
|
- movem [$r11+],$r10
|
|
|
- subq 44,$r12
|
|
|
- bge 0b
|
|
|
- movem $r10,[$r13+]
|
|
|
-
|
|
|
- addq 44,$r12 ;; compensate for last loop underflowing n
|
|
|
-
|
|
|
- ;; Restore registers from stack
|
|
|
- movem [$sp+],$r10"
|
|
|
+ __asm__ volatile ("\n\
|
|
|
+ ;; Check that the following is true (same register names on \n\
|
|
|
+ ;; both sides of equal sign, as in r8=r8): \n\
|
|
|
+ ;; %0=r13, %1=r11, %2=r12 \n\
|
|
|
+ ;; \n\
|
|
|
+ ;; Save the registers we'll use in the movem process \n\
|
|
|
+ ;; on the stack. \n\
|
|
|
+ subq 11*4,$sp \n\
|
|
|
+ movem $r10,[$sp] \n\
|
|
|
+ \n\
|
|
|
+ ;; Now we've got this: \n\
|
|
|
+ ;; r11 - src \n\
|
|
|
+ ;; r13 - dst \n\
|
|
|
+ ;; r12 - n \n\
|
|
|
+ \n\
|
|
|
+ ;; Update n for the first loop \n\
|
|
|
+ subq 44,$r12 \n\
|
|
|
+0: \n\
|
|
|
+ movem [$r11+],$r10 \n\
|
|
|
+ subq 44,$r12 \n\
|
|
|
+ bge 0b \n\
|
|
|
+ movem $r10,[$r13+] \n\
|
|
|
+ \n\
|
|
|
+ addq 44,$r12 ;; compensate for last loop underflowing n \n\
|
|
|
+ \n\
|
|
|
+ ;; Restore registers from stack \n\
|
|
|
+ movem [$sp+],$r10"
|
|
|
|
|
|
/* Outputs */ : "=r" (dst), "=r" (src), "=r" (n)
|
|
|
/* Inputs */ : "0" (dst), "1" (src), "2" (n));
|