aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc64
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2005-08-19 00:52:31 -0400
committerPaul Mackerras <paulus@samba.org>2005-08-28 20:53:33 -0400
commit2e2446ea0758cd57dd065962d9544e3f4d44ea2b (patch)
tree745b7fb19e2fb48265aed6eb8ee33217a9e3f22a /arch/ppc64
parent19dbd0f6a74f7529d6d49dd50ad6b31adbe0598d (diff)
[PATCH] Remove NACA fixed address constraint
Comments in head.S suggest that the iSeries naca has a fixed address, because tools expect to find it there. The only tool which appears to access the naca is addRamDisk, but both the in-kernel version and the version used in RHEL and SuSE in fact locate the NACA the same way as the hypervisor does, by following the pointer in the hvReleaseData structure. Since the requirement for a fixed address seems to be obsolete, this patch removes the naca from head.S and replaces it with a normal C initializer. For good measure, it removes an old version of addRamDisk.c which was sitting, unused, in the ppc32 tree. Signed-off-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/ppc64')
-rw-r--r--arch/ppc64/kernel/LparData.c11
-rw-r--r--arch/ppc64/kernel/head.S17
2 files changed, 12 insertions, 16 deletions
diff --git a/arch/ppc64/kernel/LparData.c b/arch/ppc64/kernel/LparData.c
index 1c11031c838e..3b9a2600fec2 100644
--- a/arch/ppc64/kernel/LparData.c
+++ b/arch/ppc64/kernel/LparData.c
@@ -51,6 +51,17 @@ struct HvReleaseData hvReleaseData = {
51 0xf4, 0x4b, 0xf6, 0xf4 }, 51 0xf4, 0x4b, 0xf6, 0xf4 },
52}; 52};
53 53
54/*
55 * The NACA. The first dword of the naca is required by the iSeries
56 * hypervisor to point to itVpdAreas. The hypervisor finds the NACA
57 * through the pointer in hvReleaseData.
58 */
59struct naca_struct naca = {
60 .xItVpdAreas = &itVpdAreas,
61 .xRamDisk = 0,
62 .xRamDiskSize = 0,
63};
64
54extern void system_reset_iSeries(void); 65extern void system_reset_iSeries(void);
55extern void machine_check_iSeries(void); 66extern void machine_check_iSeries(void);
56extern void data_access_iSeries(void); 67extern void data_access_iSeries(void);
diff --git a/arch/ppc64/kernel/head.S b/arch/ppc64/kernel/head.S
index accaa052d31f..13c03648a602 100644
--- a/arch/ppc64/kernel/head.S
+++ b/arch/ppc64/kernel/head.S
@@ -30,7 +30,6 @@
30#include <asm/processor.h> 30#include <asm/processor.h>
31#include <asm/page.h> 31#include <asm/page.h>
32#include <asm/mmu.h> 32#include <asm/mmu.h>
33#include <asm/naca.h>
34#include <asm/systemcfg.h> 33#include <asm/systemcfg.h>
35#include <asm/ppc_asm.h> 34#include <asm/ppc_asm.h>
36#include <asm/offsets.h> 35#include <asm/offsets.h>
@@ -511,24 +510,10 @@ _GLOBAL(do_stab_bolted_pSeries)
511 mfspr r12,SPRG2 510 mfspr r12,SPRG2
512 EXCEPTION_PROLOG_PSERIES(PACA_EXSLB, .do_stab_bolted) 511 EXCEPTION_PROLOG_PSERIES(PACA_EXSLB, .do_stab_bolted)
513 512
514
515 /* Space for the naca. Architected to be located at real address
516 * NACA_PHYS_ADDR. Various tools rely on this location being fixed.
517 * The first dword of the naca is required by iSeries LPAR to
518 * point to itVpdAreas. On pSeries native, this value is not used.
519 */
520 . = NACA_PHYS_ADDR
521 .globl __end_interrupts
522__end_interrupts:
523#ifdef CONFIG_PPC_ISERIES
524 .globl naca
525naca:
526 .llong itVpdAreas
527 .llong 0 /* xRamDisk */
528 .llong 0 /* xRamDiskSize */
529 513
530 . = 0x6100 514 . = 0x6100
531 515
516#ifdef CONFIG_PPC_ISERIES
532/*** ISeries-LPAR interrupt handlers ***/ 517/*** ISeries-LPAR interrupt handlers ***/
533 518
534 STD_EXCEPTION_ISERIES(0x200, machine_check, PACA_EXMC) 519 STD_EXCEPTION_ISERIES(0x200, machine_check, PACA_EXMC)