summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorBrian Stegmiller <bjs@us.ibm.com>2015-12-14 10:30:50 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-08-07 21:49:39 -0400
commite9e636a7c44cae8ac85c1f41b6cfbfe12cfd62e9 (patch)
tree7a78e7b919ccb1360b2f6d61222018ee5632eaeb /src/kernel
parent7767776ba9b56ba3cda5a7a68933794eb3b22c4f (diff)
downloadtalos-hostboot-e9e636a7c44cae8ac85c1f41b6cfbfe12cfd62e9.tar.gz
talos-hostboot-e9e636a7c44cae8ac85c1f41b6cfbfe12cfd62e9.zip
Replace NAP with STOP instruction
Change-Id: I58a382cfc285e37cc8748fe8e23f71c877850263 RTC: 130186 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/816 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/cpumgr.C1
-rw-r--r--src/kernel/exception.C2
-rw-r--r--src/kernel/start.S3
-rw-r--r--src/kernel/syscall.C4
4 files changed, 7 insertions, 3 deletions
diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C
index c1733bb7c..93248ea98 100644
--- a/src/kernel/cpumgr.C
+++ b/src/kernel/cpumgr.C
@@ -332,6 +332,7 @@ void CpuManager::activateCPU(cpu_t * i_cpu)
kassert(WAKEUP_MSR_VALUE == msr);
setLPCR(WAKEUP_LPCR_VALUE);
setRPR(WAKEUP_RPR_VALUE);
+ setPSSCR(PSSCR_NAP_VALUE); // init NAP value (stop level 1)
}
void CpuManager::deactivateCPU(cpu_t * i_cpu)
diff --git a/src/kernel/exception.C b/src/kernel/exception.C
index 5b891ff63..dad6ff676 100644
--- a/src/kernel/exception.C
+++ b/src/kernel/exception.C
@@ -191,7 +191,7 @@ namespace ExceptionHandles
// Check for 'nap' and skip over. This avoids a task-crash
// if for some reason we entered back into the task without
// privilege raised.
- if (*instruction == 0x4c000364)
+ if (*instruction == STOP_INSTRUCTION)
{
printk("Error: Nap executed with lowered permissions on %d\n",
t->tid);
diff --git a/src/kernel/start.S b/src/kernel/start.S
index f9b5a95ce..190717257 100644
--- a/src/kernel/start.S
+++ b/src/kernel/start.S
@@ -41,6 +41,9 @@ _start:
mtsrr1 r2
li r2, _start_postmsr@l
mtsrr0 r2
+ lis r9,49 ;// Want to default the NAP value
+ ori r9,r9,1 ;// Value is 0x0000000000310001
+ mtspr 855,r9 ;// set actual PSSCR
rfid
_start_postmsr:
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index cc1cc3e5d..035f7c8e2 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -759,8 +759,8 @@ namespace Systemcalls
{
uint32_t* instruction = static_cast<uint32_t*>(t->context.nip);
- if (0x4c000364 == (*instruction)) // Verify 'nap' instruction,
- // otherwise just return.
+ if (STOP_INSTRUCTION == (*instruction)) // Verify 'nap' instruction,
+ // otherwise just return.
{
// Disable EE, PR, IR, DR so 'nap' can be executed.
// (which means to stay in HV state)
OpenPOWER on IntegriCloud