git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
ppc
/
boot
/
common
/
util.S
diff --git
a/arch/ppc/boot/common/util.S
b/arch/ppc/boot/common/util.S
index
93771e2
..
0c5e43c
100644
(file)
--- a/
arch/ppc/boot/common/util.S
+++ b/
arch/ppc/boot/common/util.S
@@
-1,6
+1,4
@@
/*
/*
- * arch/ppc/boot/common/util.S
- *
* Useful bootup functions, which are more easily done in asm than C.
*
* NOTE: Be very very careful about the registers you use here.
* Useful bootup functions, which are more easily done in asm than C.
*
* NOTE: Be very very careful about the registers you use here.
@@
-27,6
+25,7
@@
.text
.text
+#ifdef CONFIG_6xx
.globl disable_6xx_mmu
disable_6xx_mmu:
/* Establish default MSR value, exception prefix 0xFFF.
.globl disable_6xx_mmu
disable_6xx_mmu:
/* Establish default MSR value, exception prefix 0xFFF.
@@
-41,28
+40,28
@@
disable_6xx_mmu:
/* Test for a 601 */
mfpvr r10
srwi r10,r10,16
/* Test for a 601 */
mfpvr r10
srwi r10,r10,16
- cmp
i
0,r10,1 /* 601 ? */
+ cmp
wi
0,r10,1 /* 601 ? */
beq .clearbats_601
/* Clear BATs */
li r8,0
beq .clearbats_601
/* Clear BATs */
li r8,0
- mtspr DBAT0U,r8
- mtspr DBAT0L,r8
- mtspr DBAT1U,r8
- mtspr DBAT1L,r8
- mtspr DBAT2U,r8
- mtspr DBAT2L,r8
- mtspr DBAT3U,r8
- mtspr DBAT3L,r8
+ mtspr
SPRN_
DBAT0U,r8
+ mtspr
SPRN_
DBAT0L,r8
+ mtspr
SPRN_
DBAT1U,r8
+ mtspr
SPRN_
DBAT1L,r8
+ mtspr
SPRN_
DBAT2U,r8
+ mtspr
SPRN_
DBAT2L,r8
+ mtspr
SPRN_
DBAT3U,r8
+ mtspr
SPRN_
DBAT3L,r8
.clearbats_601:
.clearbats_601:
- mtspr IBAT0U,r8
- mtspr IBAT0L,r8
- mtspr IBAT1U,r8
- mtspr IBAT1L,r8
- mtspr IBAT2U,r8
- mtspr IBAT2L,r8
- mtspr IBAT3U,r8
- mtspr IBAT3L,r8
+ mtspr
SPRN_
IBAT0U,r8
+ mtspr
SPRN_
IBAT0L,r8
+ mtspr
SPRN_
IBAT1U,r8
+ mtspr
SPRN_
IBAT1L,r8
+ mtspr
SPRN_
IBAT2U,r8
+ mtspr
SPRN_
IBAT2L,r8
+ mtspr
SPRN_
IBAT3U,r8
+ mtspr
SPRN_
IBAT3L,r8
isync
sync
sync
isync
sync
sync
@@
-83,17
+82,18
@@
disable_6xx_l1cache:
/* Enable, invalidate and then disable the L1 icache/dcache. */
li r8,0
ori r8,r8,(HID0_ICE|HID0_DCE|HID0_ICFI|HID0_DCI)
/* Enable, invalidate and then disable the L1 icache/dcache. */
li r8,0
ori r8,r8,(HID0_ICE|HID0_DCE|HID0_ICFI|HID0_DCI)
- mfspr r11,HID0
+ mfspr r11,
SPRN_
HID0
or r11,r11,r8
andc r10,r11,r8
isync
or r11,r11,r8
andc r10,r11,r8
isync
- mtspr HID0,r8
+ mtspr
SPRN_
HID0,r8
sync
isync
sync
isync
- mtspr HID0,r10
+ mtspr
SPRN_
HID0,r10
sync
isync
blr
sync
isync
blr
+#endif
.globl _setup_L2CR
_setup_L2CR:
.globl _setup_L2CR
_setup_L2CR:
@@
-105,38
+105,38
@@
_setup_L2CR:
/* Invalidate/disable L2 cache */
sync
isync
/* Invalidate/disable L2 cache */
sync
isync
- mfspr r8,L2CR
+ mfspr r8,
SPRN_
L2CR
rlwinm r8,r8,0,1,31
oris r8,r8,L2CR_L2I@h
sync
isync
rlwinm r8,r8,0,1,31
oris r8,r8,L2CR_L2I@h
sync
isync
- mtspr L2CR,r8
+ mtspr
SPRN_
L2CR,r8
sync
isync
/* Wait for the invalidation to complete */
sync
isync
/* Wait for the invalidation to complete */
- mfspr r8,PVR
+ mfspr r8,
SPRN_
PVR
srwi r8,r8,16
srwi r8,r8,16
- cmpl
i
cr0,r8,0x8000 /* 7450 */
- cmpl
i
cr1,r8,0x8001 /* 7455 */
- cmpl
i
cr2,r8,0x8002 /* 7457 */
+ cmpl
wi
cr0,r8,0x8000 /* 7450 */
+ cmpl
wi
cr1,r8,0x8001 /* 7455 */
+ cmpl
wi
cr2,r8,0x8002 /* 7457 */
cror 4*cr0+eq,4*cr0+eq,4*cr1+eq /* Now test if any are true. */
cror 4*cr0+eq,4*cr0+eq,4*cr2+eq
bne 2f
cror 4*cr0+eq,4*cr0+eq,4*cr1+eq /* Now test if any are true. */
cror 4*cr0+eq,4*cr0+eq,4*cr2+eq
bne 2f
-1: mfspr r8,
L2CR
/* On 745x, poll L2I bit (bit 10) */
+1: mfspr r8,
SPRN_L2CR
/* On 745x, poll L2I bit (bit 10) */
rlwinm. r9,r8,0,10,10
bne 1b
b 3f
rlwinm. r9,r8,0,10,10
bne 1b
b 3f
-2: mfspr r8,
L2CR
/* On 75x & 74[01]0, poll L2IP bit (bit 31) */
+2: mfspr r8,
SPRN_L2CR
/* On 75x & 74[01]0, poll L2IP bit (bit 31) */
rlwinm. r9,r8,0,31,31
bne 2b
3: rlwinm r8,r8,0,11,9 /* Turn off L2I bit */
sync
isync
rlwinm. r9,r8,0,31,31
bne 2b
3: rlwinm r8,r8,0,11,9 /* Turn off L2I bit */
sync
isync
- mtspr L2CR,r8
+ mtspr
SPRN_
L2CR,r8
sync
isync
blr
sync
isync
blr
@@
-146,24
+146,24
@@
_setup_L3CR:
/* Invalidate/disable L3 cache */
sync
isync
/* Invalidate/disable L3 cache */
sync
isync
- mfspr r8,L3CR
+ mfspr r8,
SPRN_
L3CR
rlwinm r8,r8,0,1,31
ori r8,r8,L3CR_L3I@l
sync
isync
rlwinm r8,r8,0,1,31
ori r8,r8,L3CR_L3I@l
sync
isync
- mtspr L3CR,r8
+ mtspr
SPRN_
L3CR,r8
sync
isync
/* Wait for the invalidation to complete */
sync
isync
/* Wait for the invalidation to complete */
-1: mfspr r8,L3CR
+1: mfspr r8,
SPRN_
L3CR
rlwinm. r9,r8,0,21,21
bne 1b
rlwinm r8,r8,0,22,20 /* Turn off L3I bit */
sync
isync
rlwinm. r9,r8,0,21,21
bne 1b
rlwinm r8,r8,0,22,20 /* Turn off L3I bit */
sync
isync
- mtspr L3CR,r8
+ mtspr
SPRN_
L3CR,r8
sync
isync
blr
sync
isync
blr
@@
-188,9
+188,9
@@
timebase_period_ns:
*/
.globl udelay
udelay:
*/
.globl udelay
udelay:
- mfspr r4,PVR
+ mfspr r4,
SPRN_
PVR
srwi r4,r4,16
srwi r4,r4,16
- cmp
i
0,r4,1 /* 601 ? */
+ cmp
wi
0,r4,1 /* 601 ? */
bne .udelay_not_601
00: li r0,86 /* Instructions / microsecond? */
mtctr r0
bne .udelay_not_601
00: li r0,86 /* Instructions / microsecond? */
mtctr r0
@@
-213,16
+213,16
@@
udelay:
1: mftbu r5
mftb r6
mftbu r7
1: mftbu r5
mftb r6
mftbu r7
- cmp
0,r5,r7
+ cmp
w
0,r5,r7
bne 1b /* Get [synced] base time */
addc r9,r6,r4 /* Compute end time */
addze r8,r5
2: mftbu r5
bne 1b /* Get [synced] base time */
addc r9,r6,r4 /* Compute end time */
addze r8,r5
2: mftbu r5
- cmp
0,r5,r8
+ cmp
w
0,r5,r8
blt 2b
bgt 3f
mftb r6
blt 2b
bgt 3f
mftb r6
- cmp
0,r6,r9
+ cmp
w
0,r6,r9
blt 2b
3: blr
blt 2b
3: blr
@@
-232,17
+232,18
@@
udelay:
* First, flush the data cache in case it was enabled and may be
* holding instructions for copy back.
*/
* First, flush the data cache in case it was enabled and may be
* holding instructions for copy back.
*/
-_GLOBAL(flush_instruction_cache)
+ .globl flush_instruction_cache
+flush_instruction_cache:
mflr r6
bl flush_data_cache
#ifdef CONFIG_8xx
lis r3, IDC_INVALL@h
mflr r6
bl flush_data_cache
#ifdef CONFIG_8xx
lis r3, IDC_INVALL@h
- mtspr IC_CST, r3
+ mtspr
SPRN_
IC_CST, r3
lis r3, IDC_ENABLE@h
lis r3, IDC_ENABLE@h
- mtspr IC_CST, r3
+ mtspr
SPRN_
IC_CST, r3
lis r3, IDC_DISABLE@h
lis r3, IDC_DISABLE@h
- mtspr DC_CST, r3
+ mtspr
SPRN_
DC_CST, r3
#elif CONFIG_4xx
lis r3,start@h # r9 = &_start
lis r4,_etext@ha
#elif CONFIG_4xx
lis r3,start@h # r9 = &_start
lis r4,_etext@ha
@@
-250,20
+251,20
@@
_GLOBAL(flush_instruction_cache)
1: dcbf r0,r3 # Flush the data cache
icbi r0,r3 # Invalidate the instruction cache
addi r3,r3,0x10 # Increment by one cache line
1: dcbf r0,r3 # Flush the data cache
icbi r0,r3 # Invalidate the instruction cache
addi r3,r3,0x10 # Increment by one cache line
- cmplw
i
cr0,r3,r4 # Are we at the end yet?
+ cmplw
cr0,r3,r4 # Are we at the end yet?
blt 1b # No, keep flushing and invalidating
#else
/* Enable, invalidate and then disable the L1 icache/dcache. */
li r3,0
ori r3,r3,(HID0_ICE|HID0_DCE|HID0_ICFI|HID0_DCI)
blt 1b # No, keep flushing and invalidating
#else
/* Enable, invalidate and then disable the L1 icache/dcache. */
li r3,0
ori r3,r3,(HID0_ICE|HID0_DCE|HID0_ICFI|HID0_DCI)
- mfspr r4,HID0
+ mfspr r4,
SPRN_
HID0
or r5,r4,r3
isync
or r5,r4,r3
isync
- mtspr HID0,r5
+ mtspr
SPRN_
HID0,r5
sync
isync
ori r5,r4,HID0_ICE /* Enable cache */
sync
isync
ori r5,r4,HID0_ICE /* Enable cache */
- mtspr HID0,r5
+ mtspr
SPRN_
HID0,r5
sync
isync
#endif
sync
isync
#endif
@@
-277,7
+278,8
@@
_GLOBAL(flush_instruction_cache)
* Flush data cache
* Do this by just reading lots of stuff into the cache.
*/
* Flush data cache
* Do this by just reading lots of stuff into the cache.
*/
-_GLOBAL(flush_data_cache)
+ .globl flush_data_cache
+flush_data_cache:
lis r3,cache_flush_buffer@h
ori r3,r3,cache_flush_buffer@l
li r4,NUM_CACHE_LINES
lis r3,cache_flush_buffer@h
ori r3,r3,cache_flush_buffer@l
li r4,NUM_CACHE_LINES