summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/kernel/start.S41
-rw-r--r--src/runtime/rt_start.S7
2 files changed, 26 insertions, 22 deletions
diff --git a/src/kernel/start.S b/src/kernel/start.S
index 190717257..9b61720a3 100644
--- a/src/kernel/start.S
+++ b/src/kernel/start.S
@@ -5,8 +5,9 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2010,2016
+# Contributors Listed Below - COPYRIGHT 2010,2017
# [+] International Business Machines Corp.
+# [+] Joel Stanley
#
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -202,7 +203,7 @@ UNIMPL_INTERRUPT(hype_decrementer, 0x980)
;//
.org _start + 0xC00
intvect_system_call_fast:
- cmpi cr0, r3, 0x0800
+ cmpwi cr0, r3, 0x0800
bge cr0, system_call_fast_path
STD_INTERRUPT(system_call, 0xC08)
@@ -306,7 +307,7 @@ _other_thread_spinlock:
1:
ld r3, 0(r2)
;// Loop until value is 1...
- cmpi cr0, r3, 1
+ cmpwi cr0, r3, 1
beq _other_thread_spinlock_complete
or 1,1,1 ;// Lower thread priority.
b 1b
@@ -321,12 +322,12 @@ _other_thread_spinlock_complete:
extrwi r1, r1, 3, 19
sldi r1, r1, 3
ldx r2, r1, r2 ;// Dereference to get on-node CPUs array.
- cmpi cr0, r2, 0 ;// Check for NULL node array.
+ cmpwi cr0, r2, 0 ;// Check for NULL node array.
beq- 1f
mfspr r1, PIR ;// Extract on-node CPU id.
clrlslwi r1, r1, 22, 3
ldx r3, r1, r2 ;// Load CPU object.
- cmpi cr0, r3, 0 ;// Check for NULL CPU object.
+ cmpwi cr0, r3, 0 ;// Check for NULL CPU object.
beq- 1f
ld r1, CPU_KERNEL_STACK(r3) ;// Load initial stack.
@@ -402,7 +403,7 @@ kernel_save_task:
std r31, TASK_GPR_31(r1) ;// Save GPR31
ld r2, TASK_FP_CONTEXT(r1) ;// Load FP Context pointer.
- cmpi cr0, r2, 0
+ cmpwi cr0, r2, 0
bne- cr0, 1f ;// Jump to FP-save if != NULL.
2:
@@ -484,7 +485,7 @@ kernel_dispatch_task:
;// Check if FP enabled, load context.
ld r2, TASK_FP_CONTEXT(r1)
- cmpi cr0, r2, 0
+ cmpwi cr0, r2, 0
bne- 1f
2:
;// Restore GPRs from context.
@@ -601,7 +602,7 @@ intvect_system_reset:
lis r2, kernel_other_thread_spinlock@h
ori r2, r2, kernel_other_thread_spinlock@l
ld r2, 0(r2)
- cmpi cr0, r2, 0
+ cmpwi cr0, r2, 0
beq- _start
;// Get CPU object from thread ID, check for NULL which implies not
@@ -612,12 +613,12 @@ intvect_system_reset:
extrwi r1, r1, 3, 19
sldi r1, r1, 3
ldx r2, r1, r2 ;// Dereference to get on-node CPUs array.
- cmpi cr0, r2, 0 ;// Check for NULL node array.
+ cmpwi cr0, r2, 0 ;// Check for NULL node array.
beq- _start
mfspr r1, PIR ;// Extract on-node CPU id.
clrlslwi r1, r1, 22, 3
ldx r2, r1, r2 ;// Load CPU object.
- cmpi cr0, r2, 0 ;// Check for NULL CPU object.
+ cmpwi cr0, r2, 0 ;// Check for NULL CPU object.
beq- _start
;// Check for inactive CPU.
@@ -631,13 +632,13 @@ intvect_system_reset:
mfsrr1 r2
extrdi r2, r2, 3, 42
;// Check for decrementer (bits = 011).
- cmpi cr0, r2, 0x3
+ cmpwi cr0, r2, 0x3
beq+ intvect_system_reset_decrementer
;// Check for external interrupt (bits = 010).
- cmpi cr0, r2, 0x4
+ cmpwi cr0, r2, 0x4
beq+ intvect_system_reset_external
;// Check for HMI (bits = 101).
- cmpi cr0, r2, 0x5
+ cmpwi cr0, r2, 0x5
beq+ 1f ;// Unable to handle HMI, jump to 'unknown reason'.
1: ;// Unknown reason, call as unhandled_exception.
@@ -749,14 +750,14 @@ system_call_fast_path:
b 1f ;// Jump to exit point.
;// Check if this is HMER write (0x801).
2:
- cmpi cr0, r3, 0x801
+ cmpwi cr0, r3, 0x801
bne cr0, 3f
mtspr HMER, r4
li r3, 0
b 1f ;// Jump to exit point.
;// Check if this is SCRATCH read (0x802).
3:
- cmpi cr0, r3, 0x802
+ cmpwi cr0, r3, 0x802
bne cr0, 4f
;// Check for being on master processor.
mfsprg3 r6 ;// Get task structure.
@@ -783,7 +784,7 @@ system_call_fast_path:
b intvect_system_call
;// Check if this is SCRATCH write (0x803).
4:
- cmpi cr0, r3, 0x803
+ cmpwi cr0, r3, 0x803
bne cr0, 5f
;// Check for master processor.
mfsprg3 r6 ;// Get task structure.
@@ -798,7 +799,7 @@ system_call_fast_path:
b 1f ;// Jump to exit point.
;// Check if this is PVR read (0x804).
5:
- cmpi cr0, r3, 0x804
+ cmpwi cr0, r3, 0x804
bne cr0, 6f
mfspr r3, PVR
b 1f ;// Jump to exit point.
@@ -828,7 +829,7 @@ system_call_fast_path:
.global userspace_task_entry
userspace_task_entry:
;// Skip stack frame if GPR1 == NULL.
- cmpi cr0, r1, 0
+ cmpwi cr0, r1, 0
beq- 1f
;// Create frame.
;// NULL back-chain + 48 bytes + quad-word alignment. See ABI.
@@ -846,11 +847,11 @@ userspace_task_entry:
.global task_end_stub
task_end_stub:
// Check for a NULL stack pointer and skip TLS cleanup.
- cmpi cr0, r1, 0
+ cmpwi cr0, r1, 0
beq 1f
// Check for a NULL TLS-context and skip TLS cleanup.
ld r0, TASK_TLS_CONTEXT(r13)
- cmpi cr0, r0, 0
+ cmpwi cr0, r0, 0
beq 1f
// Save off r3.
mr r31, r3
diff --git a/src/runtime/rt_start.S b/src/runtime/rt_start.S
index d69184aef..ba1a975d7 100644
--- a/src/runtime/rt_start.S
+++ b/src/runtime/rt_start.S
@@ -5,7 +5,10 @@
#
# OpenPOWER HostBoot Project
#
-# COPYRIGHT International Business Machines Corp. 2013,2014
+# Contributors Listed Below - COPYRIGHT 2013,2017
+# [+] International Business Machines Corp.
+# [+] Joel Stanley
+#
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -47,7 +50,7 @@ _init:
ld r8, 0(r10) # Get count of relocations.
- cmpi cr0, r8, 0 # Perform relocations (if any).
+ cmpwi cr0, r8, 0 # Perform relocations (if any).
beq 2f
mtctr r8
1:
OpenPOWER on IntegriCloud