summaryrefslogtreecommitdiff
path: root/pal.S
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2016-11-13 12:04:29 +0100
committerRichard Henderson <rth@twiddle.net>2016-11-13 12:04:29 +0100
commit333f7da2d9287747779599e62a0bab89b5fa558b (patch)
tree56e4fa46cdde9d04420d2cc6aaccecfcfdea82d0 /pal.S
parentc87a92639b28ac42bc8f6c67443543b405dc479b (diff)
downloadqemu-palcode-333f7da2d9287747779599e62a0bab89b5fa558b.zip
qemu-palcode-333f7da2d9287747779599e62a0bab89b5fa558b.tar.gz
qemu-palcode-333f7da2d9287747779599e62a0bab89b5fa558b.tar.bz2
Add smp support
Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'pal.S')
-rw-r--r--pal.S32
1 files changed, 24 insertions, 8 deletions
diff --git a/pal.S b/pal.S
index 1befc9f..1781c4b 100644
--- a/pal.S
+++ b/pal.S
@@ -97,9 +97,9 @@ __start:
bne a0, 1f
// Load boot arguments
- mfpr a0, qemu_trap_arg0
- mfpr a1, qemu_trap_arg1
- mfpr a2, qemu_trap_arg2
+ mfpr a0, qemu_trap_arg0 // memsize
+ mfpr a1, qemu_trap_arg1 // kernel entry
+ mfpr a2, qemu_trap_arg2 // ncpus
// Continue in do_start, outside PALmode.
ldah $27, do_start($gp) !gprelhigh
@@ -400,10 +400,25 @@ CallPal_Draina:
hw_rei
ENDFN CallPal_Draina
+/*
+ * Delay for N nanoseconds.
+ *
+ * This is unique to QEMU, used only within PALcode itself.
+ */
ORG_CALL_PAL_PRIV(0x03)
-CallPal_OpcDec03:
- br CallPal_OpcDec
-ENDFN CallPal_OpcDec03
+CallPal_Ndelay:
+ mfpr p0, qemu_vmtime
+ addq p0, a0, p0
+ mtpr p0, qemu_alarm
+
+ mtpr $31, qemu_wait
+
+ SYS_ACK_CLK p2, p3, p4
+
+ mfpr v0, qemu_vmtime
+ subq p0, v0, v0
+ hw_rei
+ENDFN CallPal_Ndelay
ORG_CALL_PAL_PRIV(0x04)
CallPal_OpcDec04:
@@ -1416,6 +1431,7 @@ ENDFN CallPal_OpcDec85
*/
ORG_CALL_PAL_UNPRIV(0x86)
CallPal_Imb:
+ mb
hw_rei
ENDFN CallPal_Imb
@@ -1914,5 +1930,5 @@ Sys_EnterConsole:
.align 3
.globl stack
.type stack,@object
- .size stack,STACK_SIZE
-stack: .skip STACK_SIZE
+ .size stack,STACK_SIZE * 4
+stack: .skip STACK_SIZE * 4