diff options
Diffstat (limited to 'arch/ppc/kernel/misc.S')
-rw-r--r-- | arch/ppc/kernel/misc.S | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/arch/ppc/kernel/misc.S b/arch/ppc/kernel/misc.S index 5f6684012ded..d319f9ba2379 100644 --- a/arch/ppc/kernel/misc.S +++ b/arch/ppc/kernel/misc.S | |||
@@ -110,80 +110,6 @@ _GLOBAL(reloc_got2) | |||
110 | blr | 110 | blr |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * identify_cpu, | ||
114 | * called with r3 = data offset and r4 = CPU number | ||
115 | * doesn't change r3 | ||
116 | */ | ||
117 | _GLOBAL(identify_cpu) | ||
118 | addis r8,r3,cpu_specs@ha | ||
119 | addi r8,r8,cpu_specs@l | ||
120 | mfpvr r7 | ||
121 | 1: | ||
122 | lwz r5,CPU_SPEC_PVR_MASK(r8) | ||
123 | and r5,r5,r7 | ||
124 | lwz r6,CPU_SPEC_PVR_VALUE(r8) | ||
125 | cmplw 0,r6,r5 | ||
126 | beq 1f | ||
127 | addi r8,r8,CPU_SPEC_ENTRY_SIZE | ||
128 | b 1b | ||
129 | 1: | ||
130 | addis r6,r3,cur_cpu_spec@ha | ||
131 | addi r6,r6,cur_cpu_spec@l | ||
132 | sub r8,r8,r3 | ||
133 | stw r8,0(r6) | ||
134 | blr | ||
135 | |||
136 | /* | ||
137 | * do_cpu_ftr_fixups - goes through the list of CPU feature fixups | ||
138 | * and writes nop's over sections of code that don't apply for this cpu. | ||
139 | * r3 = data offset (not changed) | ||
140 | */ | ||
141 | _GLOBAL(do_cpu_ftr_fixups) | ||
142 | /* Get CPU 0 features */ | ||
143 | addis r6,r3,cur_cpu_spec@ha | ||
144 | addi r6,r6,cur_cpu_spec@l | ||
145 | lwz r4,0(r6) | ||
146 | add r4,r4,r3 | ||
147 | lwz r4,CPU_SPEC_FEATURES(r4) | ||
148 | |||
149 | /* Get the fixup table */ | ||
150 | addis r6,r3,__start___ftr_fixup@ha | ||
151 | addi r6,r6,__start___ftr_fixup@l | ||
152 | addis r7,r3,__stop___ftr_fixup@ha | ||
153 | addi r7,r7,__stop___ftr_fixup@l | ||
154 | |||
155 | /* Do the fixup */ | ||
156 | 1: cmplw 0,r6,r7 | ||
157 | bgelr | ||
158 | addi r6,r6,16 | ||
159 | lwz r8,-16(r6) /* mask */ | ||
160 | and r8,r8,r4 | ||
161 | lwz r9,-12(r6) /* value */ | ||
162 | cmplw 0,r8,r9 | ||
163 | beq 1b | ||
164 | lwz r8,-8(r6) /* section begin */ | ||
165 | lwz r9,-4(r6) /* section end */ | ||
166 | subf. r9,r8,r9 | ||
167 | beq 1b | ||
168 | /* write nops over the section of code */ | ||
169 | /* todo: if large section, add a branch at the start of it */ | ||
170 | srwi r9,r9,2 | ||
171 | mtctr r9 | ||
172 | add r8,r8,r3 | ||
173 | lis r0,0x60000000@h /* nop */ | ||
174 | 3: stw r0,0(r8) | ||
175 | andi. r10,r4,CPU_FTR_SPLIT_ID_CACHE@l | ||
176 | beq 2f | ||
177 | dcbst 0,r8 /* suboptimal, but simpler */ | ||
178 | sync | ||
179 | icbi 0,r8 | ||
180 | 2: addi r8,r8,4 | ||
181 | bdnz 3b | ||
182 | sync /* additional sync needed on g4 */ | ||
183 | isync | ||
184 | b 1b | ||
185 | |||
186 | /* | ||
187 | * call_setup_cpu - call the setup_cpu function for this cpu | 113 | * call_setup_cpu - call the setup_cpu function for this cpu |
188 | * r3 = data offset, r24 = cpu number | 114 | * r3 = data offset, r24 = cpu number |
189 | * | 115 | * |