diff options
Diffstat (limited to 'arch/sparc64/kernel/head.S')
-rw-r--r-- | arch/sparc64/kernel/head.S | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/sparc64/kernel/head.S b/arch/sparc64/kernel/head.S index c8e9dc9d68a9..baea10a98196 100644 --- a/arch/sparc64/kernel/head.S +++ b/arch/sparc64/kernel/head.S | |||
@@ -78,11 +78,7 @@ sparc_ramdisk_image64: | |||
78 | 78 | ||
79 | /* PROM cif handler code address is in %o4. */ | 79 | /* PROM cif handler code address is in %o4. */ |
80 | sparc64_boot: | 80 | sparc64_boot: |
81 | 1: rd %pc, %g7 | 81 | mov %o4, %l7 |
82 | set 1b, %g1 | ||
83 | cmp %g1, %g7 | ||
84 | be,pn %xcc, sparc64_boot_after_remap | ||
85 | mov %o4, %l7 | ||
86 | 82 | ||
87 | /* We need to remap the kernel. Use position independant | 83 | /* We need to remap the kernel. Use position independant |
88 | * code to remap us to KERNBASE. | 84 | * code to remap us to KERNBASE. |
@@ -295,7 +291,6 @@ is_sun4v: | |||
295 | 291 | ||
296 | add %sp, (192 + 128), %sp | 292 | add %sp, (192 + 128), %sp |
297 | 293 | ||
298 | sparc64_boot_after_remap: | ||
299 | sethi %hi(prom_root_compatible), %g1 | 294 | sethi %hi(prom_root_compatible), %g1 |
300 | or %g1, %lo(prom_root_compatible), %g1 | 295 | or %g1, %lo(prom_root_compatible), %g1 |
301 | sethi %hi(prom_sun4v_name), %g7 | 296 | sethi %hi(prom_sun4v_name), %g7 |
@@ -489,6 +484,14 @@ tlb_fixup_done: | |||
489 | call __bzero | 484 | call __bzero |
490 | sub %o1, %o0, %o1 | 485 | sub %o1, %o0, %o1 |
491 | 486 | ||
487 | #ifdef CONFIG_LOCKDEP | ||
488 | /* We have this call this super early, as even prom_init can grab | ||
489 | * spinlocks and thus call into the lockdep code. | ||
490 | */ | ||
491 | call lockdep_init | ||
492 | nop | ||
493 | #endif | ||
494 | |||
492 | mov %l6, %o1 ! OpenPROM stack | 495 | mov %l6, %o1 ! OpenPROM stack |
493 | call prom_init | 496 | call prom_init |
494 | mov %l7, %o0 ! OpenPROM cif handler | 497 | mov %l7, %o0 ! OpenPROM cif handler |