diff options
| author | Brian Stegmiller <bjs@us.ibm.com> | 2015-12-14 10:30:50 -0600 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-08-07 21:49:39 -0400 |
| commit | e9e636a7c44cae8ac85c1f41b6cfbfe12cfd62e9 (patch) | |
| tree | 7a78e7b919ccb1360b2f6d61222018ee5632eaeb /src/kernel | |
| parent | 7767776ba9b56ba3cda5a7a68933794eb3b22c4f (diff) | |
| download | talos-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.C | 1 | ||||
| -rw-r--r-- | src/kernel/exception.C | 2 | ||||
| -rw-r--r-- | src/kernel/start.S | 3 | ||||
| -rw-r--r-- | src/kernel/syscall.C | 4 |
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) |

