diff options
| -rw-r--r-- | arch/parisc/kernel/entry.S | 46 | ||||
| -rw-r--r-- | arch/parisc/kernel/pacache.S | 70 | ||||
| -rw-r--r-- | include/asm-parisc/assembly.h | 6 |
3 files changed, 56 insertions, 66 deletions
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 1a3935e61ab7..5d0837458c19 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
| @@ -41,16 +41,8 @@ | |||
| 41 | #include <linux/init.h> | 41 | #include <linux/init.h> |
| 42 | 42 | ||
| 43 | #ifdef CONFIG_64BIT | 43 | #ifdef CONFIG_64BIT |
| 44 | #define CMPIB cmpib,* | ||
| 45 | #define CMPB cmpb,* | ||
| 46 | #define COND(x) *x | ||
| 47 | |||
| 48 | .level 2.0w | 44 | .level 2.0w |
| 49 | #else | 45 | #else |
| 50 | #define CMPIB cmpib, | ||
| 51 | #define CMPB cmpb, | ||
| 52 | #define COND(x) x | ||
| 53 | |||
| 54 | .level 2.0 | 46 | .level 2.0 |
| 55 | #endif | 47 | #endif |
| 56 | 48 | ||
| @@ -958,9 +950,9 @@ intr_check_sig: | |||
| 958 | * Only do signals if we are returning to user space | 950 | * Only do signals if we are returning to user space |
| 959 | */ | 951 | */ |
| 960 | LDREG PT_IASQ0(%r16), %r20 | 952 | LDREG PT_IASQ0(%r16), %r20 |
| 961 | CMPIB=,n 0,%r20,intr_restore /* backward */ | 953 | cmpib,COND(=),n 0,%r20,intr_restore /* backward */ |
| 962 | LDREG PT_IASQ1(%r16), %r20 | 954 | LDREG PT_IASQ1(%r16), %r20 |
| 963 | CMPIB=,n 0,%r20,intr_restore /* backward */ | 955 | cmpib,COND(=),n 0,%r20,intr_restore /* backward */ |
| 964 | 956 | ||
| 965 | copy %r0, %r25 /* long in_syscall = 0 */ | 957 | copy %r0, %r25 /* long in_syscall = 0 */ |
| 966 | #ifdef CONFIG_64BIT | 958 | #ifdef CONFIG_64BIT |
| @@ -1014,10 +1006,10 @@ intr_do_resched: | |||
| 1014 | * we jump back to intr_restore. | 1006 | * we jump back to intr_restore. |
| 1015 | */ | 1007 | */ |
| 1016 | LDREG PT_IASQ0(%r16), %r20 | 1008 | LDREG PT_IASQ0(%r16), %r20 |
| 1017 | CMPIB= 0, %r20, intr_do_preempt | 1009 | cmpib,COND(=) 0, %r20, intr_do_preempt |
| 1018 | nop | 1010 | nop |
| 1019 | LDREG PT_IASQ1(%r16), %r20 | 1011 | LDREG PT_IASQ1(%r16), %r20 |
| 1020 | CMPIB= 0, %r20, intr_do_preempt | 1012 | cmpib,COND(=) 0, %r20, intr_do_preempt |
| 1021 | nop | 1013 | nop |
| 1022 | 1014 | ||
| 1023 | #ifdef CONFIG_64BIT | 1015 | #ifdef CONFIG_64BIT |
| @@ -1046,7 +1038,7 @@ intr_do_preempt: | |||
| 1046 | /* current_thread_info()->preempt_count */ | 1038 | /* current_thread_info()->preempt_count */ |
| 1047 | mfctl %cr30, %r1 | 1039 | mfctl %cr30, %r1 |
| 1048 | LDREG TI_PRE_COUNT(%r1), %r19 | 1040 | LDREG TI_PRE_COUNT(%r1), %r19 |
| 1049 | CMPIB<> 0, %r19, intr_restore /* if preempt_count > 0 */ | 1041 | cmpib,COND(<>) 0, %r19, intr_restore /* if preempt_count > 0 */ |
| 1050 | nop /* prev insn branched backwards */ | 1042 | nop /* prev insn branched backwards */ |
| 1051 | 1043 | ||
| 1052 | /* check if we interrupted a critical path */ | 1044 | /* check if we interrupted a critical path */ |
| @@ -1065,7 +1057,7 @@ intr_do_preempt: | |||
| 1065 | */ | 1057 | */ |
| 1066 | 1058 | ||
| 1067 | intr_extint: | 1059 | intr_extint: |
| 1068 | CMPIB=,n 0,%r16,1f | 1060 | cmpib,COND(=),n 0,%r16,1f |
| 1069 | 1061 | ||
| 1070 | get_stack_use_cr30 | 1062 | get_stack_use_cr30 |
| 1071 | b,n 2f | 1063 | b,n 2f |
| @@ -1100,7 +1092,7 @@ ENDPROC(syscall_exit_rfi) | |||
| 1100 | 1092 | ||
| 1101 | ENTRY(intr_save) /* for os_hpmc */ | 1093 | ENTRY(intr_save) /* for os_hpmc */ |
| 1102 | mfsp %sr7,%r16 | 1094 | mfsp %sr7,%r16 |
| 1103 | CMPIB=,n 0,%r16,1f | 1095 | cmpib,COND(=),n 0,%r16,1f |
| 1104 | get_stack_use_cr30 | 1096 | get_stack_use_cr30 |
| 1105 | b 2f | 1097 | b 2f |
| 1106 | copy %r8,%r26 | 1098 | copy %r8,%r26 |
| @@ -1122,7 +1114,7 @@ ENTRY(intr_save) /* for os_hpmc */ | |||
| 1122 | * adjust isr/ior below. | 1114 | * adjust isr/ior below. |
| 1123 | */ | 1115 | */ |
| 1124 | 1116 | ||
| 1125 | CMPIB=,n 6,%r26,skip_save_ior | 1117 | cmpib,COND(=),n 6,%r26,skip_save_ior |
| 1126 | 1118 | ||
| 1127 | 1119 | ||
| 1128 | mfctl %cr20, %r16 /* isr */ | 1120 | mfctl %cr20, %r16 /* isr */ |
| @@ -1451,11 +1443,11 @@ nadtlb_emulate: | |||
| 1451 | bb,>=,n %r9,26,nadtlb_nullify /* m bit not set, just nullify */ | 1443 | bb,>=,n %r9,26,nadtlb_nullify /* m bit not set, just nullify */ |
| 1452 | BL get_register,%r25 | 1444 | BL get_register,%r25 |
| 1453 | extrw,u %r9,15,5,%r8 /* Get index register # */ | 1445 | extrw,u %r9,15,5,%r8 /* Get index register # */ |
| 1454 | CMPIB=,n -1,%r1,nadtlb_fault /* have to use slow path */ | 1446 | cmpib,COND(=),n -1,%r1,nadtlb_fault /* have to use slow path */ |
| 1455 | copy %r1,%r24 | 1447 | copy %r1,%r24 |
| 1456 | BL get_register,%r25 | 1448 | BL get_register,%r25 |
| 1457 | extrw,u %r9,10,5,%r8 /* Get base register # */ | 1449 | extrw,u %r9,10,5,%r8 /* Get base register # */ |
| 1458 | CMPIB=,n -1,%r1,nadtlb_fault /* have to use slow path */ | 1450 | cmpib,COND(=),n -1,%r1,nadtlb_fault /* have to use slow path */ |
| 1459 | BL set_register,%r25 | 1451 | BL set_register,%r25 |
| 1460 | add,l %r1,%r24,%r1 /* doesn't affect c/b bits */ | 1452 | add,l %r1,%r24,%r1 /* doesn't affect c/b bits */ |
| 1461 | 1453 | ||
| @@ -1487,7 +1479,7 @@ nadtlb_probe_check: | |||
| 1487 | cmpb,<>,n %r16,%r17,nadtlb_fault /* Must be probe,[rw]*/ | 1479 | cmpb,<>,n %r16,%r17,nadtlb_fault /* Must be probe,[rw]*/ |
| 1488 | BL get_register,%r25 /* Find the target register */ | 1480 | BL get_register,%r25 /* Find the target register */ |
| 1489 | extrw,u %r9,31,5,%r8 /* Get target register */ | 1481 | extrw,u %r9,31,5,%r8 /* Get target register */ |
| 1490 | CMPIB=,n -1,%r1,nadtlb_fault /* have to use slow path */ | 1482 | cmpib,COND(=),n -1,%r1,nadtlb_fault /* have to use slow path */ |
| 1491 | BL set_register,%r25 | 1483 | BL set_register,%r25 |
| 1492 | copy %r0,%r1 /* Write zero to target register */ | 1484 | copy %r0,%r1 /* Write zero to target register */ |
| 1493 | b nadtlb_nullify /* Nullify return insn */ | 1485 | b nadtlb_nullify /* Nullify return insn */ |
| @@ -1571,12 +1563,12 @@ dbit_trap_20w: | |||
| 1571 | L3_ptep ptp,pte,t0,va,dbit_fault | 1563 | L3_ptep ptp,pte,t0,va,dbit_fault |
| 1572 | 1564 | ||
| 1573 | #ifdef CONFIG_SMP | 1565 | #ifdef CONFIG_SMP |
| 1574 | CMPIB=,n 0,spc,dbit_nolock_20w | 1566 | cmpib,COND(=),n 0,spc,dbit_nolock_20w |
| 1575 | load32 PA(pa_dbit_lock),t0 | 1567 | load32 PA(pa_dbit_lock),t0 |
| 1576 | 1568 | ||
| 1577 | dbit_spin_20w: | 1569 | dbit_spin_20w: |
| 1578 | LDCW 0(t0),t1 | 1570 | LDCW 0(t0),t1 |
| 1579 | cmpib,= 0,t1,dbit_spin_20w | 1571 | cmpib,COND(=) 0,t1,dbit_spin_20w |
| 1580 | nop | 1572 | nop |
| 1581 | 1573 | ||
| 1582 | dbit_nolock_20w: | 1574 | dbit_nolock_20w: |
| @@ -1587,7 +1579,7 @@ dbit_nolock_20w: | |||
| 1587 | 1579 | ||
| 1588 | idtlbt pte,prot | 1580 | idtlbt pte,prot |
| 1589 | #ifdef CONFIG_SMP | 1581 | #ifdef CONFIG_SMP |
| 1590 | CMPIB=,n 0,spc,dbit_nounlock_20w | 1582 | cmpib,COND(=),n 0,spc,dbit_nounlock_20w |
| 1591 | ldi 1,t1 | 1583 | ldi 1,t1 |
| 1592 | stw t1,0(t0) | 1584 | stw t1,0(t0) |
| 1593 | 1585 | ||
| @@ -1607,7 +1599,7 @@ dbit_trap_11: | |||
| 1607 | L2_ptep ptp,pte,t0,va,dbit_fault | 1599 | L2_ptep ptp,pte,t0,va,dbit_fault |
| 1608 | 1600 | ||
| 1609 | #ifdef CONFIG_SMP | 1601 | #ifdef CONFIG_SMP |
| 1610 | CMPIB=,n 0,spc,dbit_nolock_11 | 1602 | cmpib,COND(=),n 0,spc,dbit_nolock_11 |
| 1611 | load32 PA(pa_dbit_lock),t0 | 1603 | load32 PA(pa_dbit_lock),t0 |
| 1612 | 1604 | ||
| 1613 | dbit_spin_11: | 1605 | dbit_spin_11: |
| @@ -1629,7 +1621,7 @@ dbit_nolock_11: | |||
| 1629 | 1621 | ||
| 1630 | mtsp t1, %sr1 /* Restore sr1 */ | 1622 | mtsp t1, %sr1 /* Restore sr1 */ |
| 1631 | #ifdef CONFIG_SMP | 1623 | #ifdef CONFIG_SMP |
| 1632 | CMPIB=,n 0,spc,dbit_nounlock_11 | 1624 | cmpib,COND(=),n 0,spc,dbit_nounlock_11 |
| 1633 | ldi 1,t1 | 1625 | ldi 1,t1 |
| 1634 | stw t1,0(t0) | 1626 | stw t1,0(t0) |
| 1635 | 1627 | ||
| @@ -1647,7 +1639,7 @@ dbit_trap_20: | |||
| 1647 | L2_ptep ptp,pte,t0,va,dbit_fault | 1639 | L2_ptep ptp,pte,t0,va,dbit_fault |
| 1648 | 1640 | ||
| 1649 | #ifdef CONFIG_SMP | 1641 | #ifdef CONFIG_SMP |
| 1650 | CMPIB=,n 0,spc,dbit_nolock_20 | 1642 | cmpib,COND(=),n 0,spc,dbit_nolock_20 |
| 1651 | load32 PA(pa_dbit_lock),t0 | 1643 | load32 PA(pa_dbit_lock),t0 |
| 1652 | 1644 | ||
| 1653 | dbit_spin_20: | 1645 | dbit_spin_20: |
| @@ -1666,7 +1658,7 @@ dbit_nolock_20: | |||
| 1666 | idtlbt pte,prot | 1658 | idtlbt pte,prot |
| 1667 | 1659 | ||
| 1668 | #ifdef CONFIG_SMP | 1660 | #ifdef CONFIG_SMP |
| 1669 | CMPIB=,n 0,spc,dbit_nounlock_20 | 1661 | cmpib,COND(=),n 0,spc,dbit_nounlock_20 |
| 1670 | ldi 1,t1 | 1662 | ldi 1,t1 |
| 1671 | stw t1,0(t0) | 1663 | stw t1,0(t0) |
| 1672 | 1664 | ||
| @@ -1995,7 +1987,7 @@ ENTRY(syscall_exit) | |||
| 1995 | 1987 | ||
| 1996 | /* We can't use "CMPIB<> PER_HPUX" since "im5" field is sign extended */ | 1988 | /* We can't use "CMPIB<> PER_HPUX" since "im5" field is sign extended */ |
| 1997 | ldo -PER_HPUX(%r19), %r19 | 1989 | ldo -PER_HPUX(%r19), %r19 |
| 1998 | CMPIB<>,n 0,%r19,1f | 1990 | cmpib,COND(<>),n 0,%r19,1f |
| 1999 | 1991 | ||
| 2000 | /* Save other hpux returns if personality is PER_HPUX */ | 1992 | /* Save other hpux returns if personality is PER_HPUX */ |
| 2001 | STREG %r22,TASK_PT_GR22(%r1) | 1993 | STREG %r22,TASK_PT_GR22(%r1) |
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 7e4a33978907..e3246a5ca74f 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
| @@ -86,7 +86,7 @@ ENTRY(flush_tlb_all_local) | |||
| 86 | LDREG ITLB_OFF_COUNT(%r1), %arg2 | 86 | LDREG ITLB_OFF_COUNT(%r1), %arg2 |
| 87 | LDREG ITLB_LOOP(%r1), %arg3 | 87 | LDREG ITLB_LOOP(%r1), %arg3 |
| 88 | 88 | ||
| 89 | ADDIB= -1, %arg3, fitoneloop /* Preadjust and test */ | 89 | addib,COND(=) -1, %arg3, fitoneloop /* Preadjust and test */ |
| 90 | movb,<,n %arg3, %r31, fitdone /* If loop < 0, skip */ | 90 | movb,<,n %arg3, %r31, fitdone /* If loop < 0, skip */ |
| 91 | copy %arg0, %r28 /* Init base addr */ | 91 | copy %arg0, %r28 /* Init base addr */ |
| 92 | 92 | ||
| @@ -96,14 +96,14 @@ fitmanyloop: /* Loop if LOOP >= 2 */ | |||
| 96 | copy %arg2, %r29 /* Init middle loop count */ | 96 | copy %arg2, %r29 /* Init middle loop count */ |
| 97 | 97 | ||
| 98 | fitmanymiddle: /* Loop if LOOP >= 2 */ | 98 | fitmanymiddle: /* Loop if LOOP >= 2 */ |
| 99 | ADDIB> -1, %r31, fitmanymiddle /* Adjusted inner loop decr */ | 99 | addib,COND(>) -1, %r31, fitmanymiddle /* Adjusted inner loop decr */ |
| 100 | pitlbe 0(%sr1, %r28) | 100 | pitlbe 0(%sr1, %r28) |
| 101 | pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */ | 101 | pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */ |
| 102 | ADDIB> -1, %r29, fitmanymiddle /* Middle loop decr */ | 102 | addib,COND(>) -1, %r29, fitmanymiddle /* Middle loop decr */ |
| 103 | copy %arg3, %r31 /* Re-init inner loop count */ | 103 | copy %arg3, %r31 /* Re-init inner loop count */ |
| 104 | 104 | ||
| 105 | movb,tr %arg0, %r28, fitmanyloop /* Re-init base addr */ | 105 | movb,tr %arg0, %r28, fitmanyloop /* Re-init base addr */ |
| 106 | ADDIB<=,n -1, %r22, fitdone /* Outer loop count decr */ | 106 | addib,COND(<=),n -1, %r22, fitdone /* Outer loop count decr */ |
| 107 | 107 | ||
| 108 | fitoneloop: /* Loop if LOOP = 1 */ | 108 | fitoneloop: /* Loop if LOOP = 1 */ |
| 109 | mtsp %r20, %sr1 | 109 | mtsp %r20, %sr1 |
| @@ -111,10 +111,10 @@ fitoneloop: /* Loop if LOOP = 1 */ | |||
| 111 | copy %arg2, %r29 /* init middle loop count */ | 111 | copy %arg2, %r29 /* init middle loop count */ |
| 112 | 112 | ||
| 113 | fitonemiddle: /* Loop if LOOP = 1 */ | 113 | fitonemiddle: /* Loop if LOOP = 1 */ |
| 114 | ADDIB> -1, %r29, fitonemiddle /* Middle loop count decr */ | 114 | addib,COND(>) -1, %r29, fitonemiddle /* Middle loop count decr */ |
| 115 | pitlbe,m %arg1(%sr1, %r28) /* pitlbe for one loop */ | 115 | pitlbe,m %arg1(%sr1, %r28) /* pitlbe for one loop */ |
| 116 | 116 | ||
| 117 | ADDIB> -1, %r22, fitoneloop /* Outer loop count decr */ | 117 | addib,COND(>) -1, %r22, fitoneloop /* Outer loop count decr */ |
| 118 | add %r21, %r20, %r20 /* increment space */ | 118 | add %r21, %r20, %r20 /* increment space */ |
| 119 | 119 | ||
| 120 | fitdone: | 120 | fitdone: |
| @@ -129,7 +129,7 @@ fitdone: | |||
| 129 | LDREG DTLB_OFF_COUNT(%r1), %arg2 | 129 | LDREG DTLB_OFF_COUNT(%r1), %arg2 |
| 130 | LDREG DTLB_LOOP(%r1), %arg3 | 130 | LDREG DTLB_LOOP(%r1), %arg3 |
| 131 | 131 | ||
| 132 | ADDIB= -1, %arg3, fdtoneloop /* Preadjust and test */ | 132 | addib,COND(=) -1, %arg3, fdtoneloop /* Preadjust and test */ |
| 133 | movb,<,n %arg3, %r31, fdtdone /* If loop < 0, skip */ | 133 | movb,<,n %arg3, %r31, fdtdone /* If loop < 0, skip */ |
| 134 | copy %arg0, %r28 /* Init base addr */ | 134 | copy %arg0, %r28 /* Init base addr */ |
| 135 | 135 | ||
| @@ -139,14 +139,14 @@ fdtmanyloop: /* Loop if LOOP >= 2 */ | |||
| 139 | copy %arg2, %r29 /* Init middle loop count */ | 139 | copy %arg2, %r29 /* Init middle loop count */ |
| 140 | 140 | ||
| 141 | fdtmanymiddle: /* Loop if LOOP >= 2 */ | 141 | fdtmanymiddle: /* Loop if LOOP >= 2 */ |
| 142 | ADDIB> -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */ | 142 | addib,COND(>) -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */ |
| 143 | pdtlbe 0(%sr1, %r28) | 143 | pdtlbe 0(%sr1, %r28) |
| 144 | pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */ | 144 | pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */ |
| 145 | ADDIB> -1, %r29, fdtmanymiddle /* Middle loop decr */ | 145 | addib,COND(>) -1, %r29, fdtmanymiddle /* Middle loop decr */ |
| 146 | copy %arg3, %r31 /* Re-init inner loop count */ | 146 | copy %arg3, %r31 /* Re-init inner loop count */ |
| 147 | 147 | ||
| 148 | movb,tr %arg0, %r28, fdtmanyloop /* Re-init base addr */ | 148 | movb,tr %arg0, %r28, fdtmanyloop /* Re-init base addr */ |
| 149 | ADDIB<=,n -1, %r22,fdtdone /* Outer loop count decr */ | 149 | addib,COND(<=),n -1, %r22,fdtdone /* Outer loop count decr */ |
| 150 | 150 | ||
| 151 | fdtoneloop: /* Loop if LOOP = 1 */ | 151 | fdtoneloop: /* Loop if LOOP = 1 */ |
| 152 | mtsp %r20, %sr1 | 152 | mtsp %r20, %sr1 |
| @@ -154,10 +154,10 @@ fdtoneloop: /* Loop if LOOP = 1 */ | |||
| 154 | copy %arg2, %r29 /* init middle loop count */ | 154 | copy %arg2, %r29 /* init middle loop count */ |
| 155 | 155 | ||
| 156 | fdtonemiddle: /* Loop if LOOP = 1 */ | 156 | fdtonemiddle: /* Loop if LOOP = 1 */ |
| 157 | ADDIB> -1, %r29, fdtonemiddle /* Middle loop count decr */ | 157 | addib,COND(>) -1, %r29, fdtonemiddle /* Middle loop count decr */ |
| 158 | pdtlbe,m %arg1(%sr1, %r28) /* pdtlbe for one loop */ | 158 | pdtlbe,m %arg1(%sr1, %r28) /* pdtlbe for one loop */ |
| 159 | 159 | ||
| 160 | ADDIB> -1, %r22, fdtoneloop /* Outer loop count decr */ | 160 | addib,COND(>) -1, %r22, fdtoneloop /* Outer loop count decr */ |
| 161 | add %r21, %r20, %r20 /* increment space */ | 161 | add %r21, %r20, %r20 /* increment space */ |
| 162 | 162 | ||
| 163 | 163 | ||
| @@ -210,18 +210,18 @@ ENTRY(flush_instruction_cache_local) | |||
| 210 | LDREG ICACHE_COUNT(%r1), %arg2 | 210 | LDREG ICACHE_COUNT(%r1), %arg2 |
| 211 | LDREG ICACHE_LOOP(%r1), %arg3 | 211 | LDREG ICACHE_LOOP(%r1), %arg3 |
| 212 | rsm PSW_SM_I, %r22 /* No mmgt ops during loop*/ | 212 | rsm PSW_SM_I, %r22 /* No mmgt ops during loop*/ |
| 213 | ADDIB= -1, %arg3, fioneloop /* Preadjust and test */ | 213 | addib,COND(=) -1, %arg3, fioneloop /* Preadjust and test */ |
| 214 | movb,<,n %arg3, %r31, fisync /* If loop < 0, do sync */ | 214 | movb,<,n %arg3, %r31, fisync /* If loop < 0, do sync */ |
| 215 | 215 | ||
| 216 | fimanyloop: /* Loop if LOOP >= 2 */ | 216 | fimanyloop: /* Loop if LOOP >= 2 */ |
| 217 | ADDIB> -1, %r31, fimanyloop /* Adjusted inner loop decr */ | 217 | addib,COND(>) -1, %r31, fimanyloop /* Adjusted inner loop decr */ |
| 218 | fice %r0(%sr1, %arg0) | 218 | fice %r0(%sr1, %arg0) |
| 219 | fice,m %arg1(%sr1, %arg0) /* Last fice and addr adjust */ | 219 | fice,m %arg1(%sr1, %arg0) /* Last fice and addr adjust */ |
| 220 | movb,tr %arg3, %r31, fimanyloop /* Re-init inner loop count */ | 220 | movb,tr %arg3, %r31, fimanyloop /* Re-init inner loop count */ |
| 221 | ADDIB<=,n -1, %arg2, fisync /* Outer loop decr */ | 221 | addib,COND(<=),n -1, %arg2, fisync /* Outer loop decr */ |
| 222 | 222 | ||
| 223 | fioneloop: /* Loop if LOOP = 1 */ | 223 | fioneloop: /* Loop if LOOP = 1 */ |
| 224 | ADDIB> -1, %arg2, fioneloop /* Outer loop count decr */ | 224 | addib,COND(>) -1, %arg2, fioneloop /* Outer loop count decr */ |
| 225 | fice,m %arg1(%sr1, %arg0) /* Fice for one loop */ | 225 | fice,m %arg1(%sr1, %arg0) /* Fice for one loop */ |
| 226 | 226 | ||
| 227 | fisync: | 227 | fisync: |
| @@ -251,18 +251,18 @@ ENTRY(flush_data_cache_local) | |||
| 251 | LDREG DCACHE_COUNT(%r1), %arg2 | 251 | LDREG DCACHE_COUNT(%r1), %arg2 |
| 252 | LDREG DCACHE_LOOP(%r1), %arg3 | 252 | LDREG DCACHE_LOOP(%r1), %arg3 |
| 253 | rsm PSW_SM_I, %r22 | 253 | rsm PSW_SM_I, %r22 |
| 254 | ADDIB= -1, %arg3, fdoneloop /* Preadjust and test */ | 254 | addib,COND(=) -1, %arg3, fdoneloop /* Preadjust and test */ |
| 255 | movb,<,n %arg3, %r31, fdsync /* If loop < 0, do sync */ | 255 | movb,<,n %arg3, %r31, fdsync /* If loop < 0, do sync */ |
| 256 | 256 | ||
| 257 | fdmanyloop: /* Loop if LOOP >= 2 */ | 257 | fdmanyloop: /* Loop if LOOP >= 2 */ |
| 258 | ADDIB> -1, %r31, fdmanyloop /* Adjusted inner loop decr */ | 258 | addib,COND(>) -1, %r31, fdmanyloop /* Adjusted inner loop decr */ |
| 259 | fdce %r0(%sr1, %arg0) | 259 | fdce %r0(%sr1, %arg0) |
| 260 | fdce,m %arg1(%sr1, %arg0) /* Last fdce and addr adjust */ | 260 | fdce,m %arg1(%sr1, %arg0) /* Last fdce and addr adjust */ |
| 261 | movb,tr %arg3, %r31, fdmanyloop /* Re-init inner loop count */ | 261 | movb,tr %arg3, %r31, fdmanyloop /* Re-init inner loop count */ |
| 262 | ADDIB<=,n -1, %arg2, fdsync /* Outer loop decr */ | 262 | addib,COND(<=),n -1, %arg2, fdsync /* Outer loop decr */ |
| 263 | 263 | ||
| 264 | fdoneloop: /* Loop if LOOP = 1 */ | 264 | fdoneloop: /* Loop if LOOP = 1 */ |
| 265 | ADDIB> -1, %arg2, fdoneloop /* Outer loop count decr */ | 265 | addib,COND(>) -1, %arg2, fdoneloop /* Outer loop count decr */ |
| 266 | fdce,m %arg1(%sr1, %arg0) /* Fdce for one loop */ | 266 | fdce,m %arg1(%sr1, %arg0) /* Fdce for one loop */ |
| 267 | 267 | ||
| 268 | fdsync: | 268 | fdsync: |
| @@ -343,7 +343,7 @@ ENTRY(copy_user_page_asm) | |||
| 343 | * non-taken backward branch. Note that .+4 is a backwards branch. | 343 | * non-taken backward branch. Note that .+4 is a backwards branch. |
| 344 | * The ldd should only get executed if the branch is taken. | 344 | * The ldd should only get executed if the branch is taken. |
| 345 | */ | 345 | */ |
| 346 | ADDIB>,n -1, %r1, 1b /* bundle 10 */ | 346 | addib,COND(>),n -1, %r1, 1b /* bundle 10 */ |
| 347 | ldd 0(%r25), %r19 /* start next loads */ | 347 | ldd 0(%r25), %r19 /* start next loads */ |
| 348 | 348 | ||
| 349 | #else | 349 | #else |
| @@ -392,7 +392,7 @@ ENTRY(copy_user_page_asm) | |||
| 392 | stw %r21, 56(%r26) | 392 | stw %r21, 56(%r26) |
| 393 | stw %r22, 60(%r26) | 393 | stw %r22, 60(%r26) |
| 394 | ldo 64(%r26), %r26 | 394 | ldo 64(%r26), %r26 |
| 395 | ADDIB>,n -1, %r1, 1b | 395 | addib,COND(>),n -1, %r1, 1b |
| 396 | ldw 0(%r25), %r19 | 396 | ldw 0(%r25), %r19 |
| 397 | #endif | 397 | #endif |
| 398 | bv %r0(%r2) | 398 | bv %r0(%r2) |
| @@ -516,7 +516,7 @@ ENTRY(copy_user_page_asm) | |||
| 516 | stw %r21, 56(%r28) | 516 | stw %r21, 56(%r28) |
| 517 | stw %r22, 60(%r28) | 517 | stw %r22, 60(%r28) |
| 518 | ldo 64(%r28), %r28 | 518 | ldo 64(%r28), %r28 |
| 519 | ADDIB> -1, %r1,1b | 519 | addib,COND(>) -1, %r1,1b |
| 520 | ldo 64(%r29), %r29 | 520 | ldo 64(%r29), %r29 |
| 521 | 521 | ||
| 522 | bv %r0(%r2) | 522 | bv %r0(%r2) |
| @@ -575,7 +575,7 @@ ENTRY(__clear_user_page_asm) | |||
| 575 | std %r0, 104(%r28) | 575 | std %r0, 104(%r28) |
| 576 | std %r0, 112(%r28) | 576 | std %r0, 112(%r28) |
| 577 | std %r0, 120(%r28) | 577 | std %r0, 120(%r28) |
| 578 | ADDIB> -1, %r1, 1b | 578 | addib,COND(>) -1, %r1, 1b |
| 579 | ldo 128(%r28), %r28 | 579 | ldo 128(%r28), %r28 |
| 580 | 580 | ||
| 581 | #else /* ! CONFIG_64BIT */ | 581 | #else /* ! CONFIG_64BIT */ |
| @@ -598,7 +598,7 @@ ENTRY(__clear_user_page_asm) | |||
| 598 | stw %r0, 52(%r28) | 598 | stw %r0, 52(%r28) |
| 599 | stw %r0, 56(%r28) | 599 | stw %r0, 56(%r28) |
| 600 | stw %r0, 60(%r28) | 600 | stw %r0, 60(%r28) |
| 601 | ADDIB> -1, %r1, 1b | 601 | addib,COND(>) -1, %r1, 1b |
| 602 | ldo 64(%r28), %r28 | 602 | ldo 64(%r28), %r28 |
| 603 | #endif /* CONFIG_64BIT */ | 603 | #endif /* CONFIG_64BIT */ |
| 604 | 604 | ||
| @@ -641,7 +641,7 @@ ENTRY(flush_kernel_dcache_page_asm) | |||
| 641 | fdc,m %r23(%r26) | 641 | fdc,m %r23(%r26) |
| 642 | fdc,m %r23(%r26) | 642 | fdc,m %r23(%r26) |
| 643 | fdc,m %r23(%r26) | 643 | fdc,m %r23(%r26) |
| 644 | CMPB<< %r26, %r25,1b | 644 | cmpb,COND(<<) %r26, %r25,1b |
| 645 | fdc,m %r23(%r26) | 645 | fdc,m %r23(%r26) |
| 646 | 646 | ||
| 647 | sync | 647 | sync |
| @@ -684,7 +684,7 @@ ENTRY(flush_user_dcache_page) | |||
| 684 | fdc,m %r23(%sr3, %r26) | 684 | fdc,m %r23(%sr3, %r26) |
| 685 | fdc,m %r23(%sr3, %r26) | 685 | fdc,m %r23(%sr3, %r26) |
| 686 | fdc,m %r23(%sr3, %r26) | 686 | fdc,m %r23(%sr3, %r26) |
| 687 | CMPB<< %r26, %r25,1b | 687 | cmpb,COND(<<) %r26, %r25,1b |
| 688 | fdc,m %r23(%sr3, %r26) | 688 | fdc,m %r23(%sr3, %r26) |
| 689 | 689 | ||
| 690 | sync | 690 | sync |
| @@ -727,7 +727,7 @@ ENTRY(flush_user_icache_page) | |||
| 727 | fic,m %r23(%sr3, %r26) | 727 | fic,m %r23(%sr3, %r26) |
| 728 | fic,m %r23(%sr3, %r26) | 728 | fic,m %r23(%sr3, %r26) |
| 729 | fic,m %r23(%sr3, %r26) | 729 | fic,m %r23(%sr3, %r26) |
| 730 | CMPB<< %r26, %r25,1b | 730 | cmpb,COND(<<) %r26, %r25,1b |
| 731 | fic,m %r23(%sr3, %r26) | 731 | fic,m %r23(%sr3, %r26) |
| 732 | 732 | ||
| 733 | sync | 733 | sync |
| @@ -770,7 +770,7 @@ ENTRY(purge_kernel_dcache_page) | |||
| 770 | pdc,m %r23(%r26) | 770 | pdc,m %r23(%r26) |
| 771 | pdc,m %r23(%r26) | 771 | pdc,m %r23(%r26) |
| 772 | pdc,m %r23(%r26) | 772 | pdc,m %r23(%r26) |
| 773 | CMPB<< %r26, %r25, 1b | 773 | cmpb,COND(<<) %r26, %r25, 1b |
| 774 | pdc,m %r23(%r26) | 774 | pdc,m %r23(%r26) |
| 775 | 775 | ||
| 776 | sync | 776 | sync |
| @@ -834,7 +834,7 @@ ENTRY(flush_alias_page) | |||
| 834 | fdc,m %r23(%r28) | 834 | fdc,m %r23(%r28) |
| 835 | fdc,m %r23(%r28) | 835 | fdc,m %r23(%r28) |
| 836 | fdc,m %r23(%r28) | 836 | fdc,m %r23(%r28) |
| 837 | CMPB<< %r28, %r29, 1b | 837 | cmpb,COND(<<) %r28, %r29, 1b |
| 838 | fdc,m %r23(%r28) | 838 | fdc,m %r23(%r28) |
| 839 | 839 | ||
| 840 | sync | 840 | sync |
| @@ -857,7 +857,7 @@ flush_user_dcache_range_asm: | |||
| 857 | ldo -1(%r23), %r21 | 857 | ldo -1(%r23), %r21 |
| 858 | ANDCM %r26, %r21, %r26 | 858 | ANDCM %r26, %r21, %r26 |
| 859 | 859 | ||
| 860 | 1: CMPB<<,n %r26, %r25, 1b | 860 | 1: cmpb,COND(<<),n %r26, %r25, 1b |
| 861 | fdc,m %r23(%sr3, %r26) | 861 | fdc,m %r23(%sr3, %r26) |
| 862 | 862 | ||
| 863 | sync | 863 | sync |
| @@ -878,7 +878,7 @@ ENTRY(flush_kernel_dcache_range_asm) | |||
| 878 | ldo -1(%r23), %r21 | 878 | ldo -1(%r23), %r21 |
| 879 | ANDCM %r26, %r21, %r26 | 879 | ANDCM %r26, %r21, %r26 |
| 880 | 880 | ||
| 881 | 1: CMPB<<,n %r26, %r25,1b | 881 | 1: cmpb,COND(<<),n %r26, %r25,1b |
| 882 | fdc,m %r23(%r26) | 882 | fdc,m %r23(%r26) |
| 883 | 883 | ||
| 884 | sync | 884 | sync |
| @@ -900,7 +900,7 @@ ENTRY(flush_user_icache_range_asm) | |||
| 900 | ldo -1(%r23), %r21 | 900 | ldo -1(%r23), %r21 |
| 901 | ANDCM %r26, %r21, %r26 | 901 | ANDCM %r26, %r21, %r26 |
| 902 | 902 | ||
| 903 | 1: CMPB<<,n %r26, %r25,1b | 903 | 1: cmpb,COND(<<),n %r26, %r25,1b |
| 904 | fic,m %r23(%sr3, %r26) | 904 | fic,m %r23(%sr3, %r26) |
| 905 | 905 | ||
| 906 | sync | 906 | sync |
| @@ -943,7 +943,7 @@ ENTRY(flush_kernel_icache_page) | |||
| 943 | fic,m %r23(%sr4, %r26) | 943 | fic,m %r23(%sr4, %r26) |
| 944 | fic,m %r23(%sr4, %r26) | 944 | fic,m %r23(%sr4, %r26) |
| 945 | fic,m %r23(%sr4, %r26) | 945 | fic,m %r23(%sr4, %r26) |
| 946 | CMPB<< %r26, %r25, 1b | 946 | cmpb,COND(<<) %r26, %r25, 1b |
| 947 | fic,m %r23(%sr4, %r26) | 947 | fic,m %r23(%sr4, %r26) |
| 948 | 948 | ||
| 949 | sync | 949 | sync |
| @@ -964,7 +964,7 @@ ENTRY(flush_kernel_icache_range_asm) | |||
| 964 | ldo -1(%r23), %r21 | 964 | ldo -1(%r23), %r21 |
| 965 | ANDCM %r26, %r21, %r26 | 965 | ANDCM %r26, %r21, %r26 |
| 966 | 966 | ||
| 967 | 1: CMPB<<,n %r26, %r25, 1b | 967 | 1: cmpb,COND(<<),n %r26, %r25, 1b |
| 968 | fic,m %r23(%sr4, %r26) | 968 | fic,m %r23(%sr4, %r26) |
| 969 | 969 | ||
| 970 | sync | 970 | sync |
diff --git a/include/asm-parisc/assembly.h b/include/asm-parisc/assembly.h index 5587f0023881..ffb208840ecc 100644 --- a/include/asm-parisc/assembly.h +++ b/include/asm-parisc/assembly.h | |||
| @@ -31,9 +31,8 @@ | |||
| 31 | #define STREGM std,ma | 31 | #define STREGM std,ma |
| 32 | #define SHRREG shrd | 32 | #define SHRREG shrd |
| 33 | #define SHLREG shld | 33 | #define SHLREG shld |
| 34 | #define ADDIB addib,* | ||
| 35 | #define CMPB cmpb,* | ||
| 36 | #define ANDCM andcm,* | 34 | #define ANDCM andcm,* |
| 35 | #define COND(x) * ## x | ||
| 37 | #define RP_OFFSET 16 | 36 | #define RP_OFFSET 16 |
| 38 | #define FRAME_SIZE 128 | 37 | #define FRAME_SIZE 128 |
| 39 | #define CALLEE_REG_FRAME_SIZE 144 | 38 | #define CALLEE_REG_FRAME_SIZE 144 |
| @@ -46,9 +45,8 @@ | |||
| 46 | #define STREGM stwm | 45 | #define STREGM stwm |
| 47 | #define SHRREG shr | 46 | #define SHRREG shr |
| 48 | #define SHLREG shlw | 47 | #define SHLREG shlw |
| 49 | #define ADDIB addib, | ||
| 50 | #define CMPB cmpb, | ||
| 51 | #define ANDCM andcm | 48 | #define ANDCM andcm |
| 49 | #define COND(x) x | ||
| 52 | #define RP_OFFSET 20 | 50 | #define RP_OFFSET 20 |
| 53 | #define FRAME_SIZE 64 | 51 | #define FRAME_SIZE 64 |
| 54 | #define CALLEE_REG_FRAME_SIZE 128 | 52 | #define CALLEE_REG_FRAME_SIZE 128 |
