aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parisc/head.S7
-rw-r--r--src/parisc/hppa_hardware.h2
-rw-r--r--src/parisc/parisc.c2
3 files changed, 6 insertions, 5 deletions
diff --git a/src/parisc/head.S b/src/parisc/head.S
index 3eb7e9c..3cfe9fd 100644
--- a/src/parisc/head.S
+++ b/src/parisc/head.S
@@ -176,13 +176,14 @@ $smp_exit_loop:
rsm PSW_I, %r0 /* disable local irqs */
mtctl %r0, CR_EIEM
- /* on 64bit: Address of PDCE_PROC for each non-monarch processor in GR26. */
- load32 BOOTADDR(pdc_entry), %r26
+ /* provide PDCE_PROC entry in arg0 (required on 64-bit) */
+ load32 MEM_PDC_ENTRY, %arg0
/* jump to rendevouz */
ldw 0x10(%r0),%r3 /* MEM_RENDEZ */
/* ldw 0x28(%r0),%r0 MEM_RENDEZ_HI - assume addr < 4GB */
- cmpb,=,n %r0,%r3,startup /* branch to startup if not yet initialized */
+ cmpb,=,n %r0,%r3,enter_smp_idle_loop
+ nop /* failed backward branch is nullified */
load32 startup, %rp
bv,n 0(%r3)
diff --git a/src/parisc/hppa_hardware.h b/src/parisc/hppa_hardware.h
index f74e770..d4230da 100644
--- a/src/parisc/hppa_hardware.h
+++ b/src/parisc/hppa_hardware.h
@@ -7,6 +7,8 @@
#define FIRMWARE_START 0xf0000000
#define FIRMWARE_END 0xf0800000
+#define MEM_PDC_ENTRY 0x4800 /* PDC entry address */
+
#define DEVICE_HPA_LEN 0x00100000
#define GSC_HPA 0xffc00000
diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c
index d4eea02..2be2a16 100644
--- a/src/parisc/parisc.c
+++ b/src/parisc/parisc.c
@@ -161,8 +161,6 @@ extern char iodc_entry_table[14*4];
#define MIN_RAM_SIZE (16*1024*1024) // 16 MB
-#define MEM_PDC_ENTRY 0x4800 /* as in a B160L */
-
#define CPU_HPA_IDX(i) (CPU_HPA + (i)*0x1000) /* CPU_HPA of CPU#i */
static int index_of_CPU_HPA(unsigned long hpa) {