diff options
| author | Patrick Williams <iawillia@us.ibm.com> | 2011-09-15 14:48:47 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2011-09-16 12:36:24 -0500 |
| commit | ea37c1fc02819175e8ede86718a3afc904c723bc (patch) | |
| tree | ac06338ecc0110d10c150150ad14c957997a4221 /src/kernel | |
| parent | a740789978e866ce8e9c278ecb05b0060751f090 (diff) | |
| download | talos-hostboot-ea37c1fc02819175e8ede86718a3afc904c723bc.tar.gz talos-hostboot-ea37c1fc02819175e8ede86718a3afc904c723bc.zip | |
Add debug message for MC exception.
Change-Id: Ic8c0a5567f4f1e008014a4d54fb640dda6669cbc
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/346
Tested-by: Jenkins Server
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/kernel')
| -rw-r--r-- | src/kernel/exception.C | 12 | ||||
| -rw-r--r-- | src/kernel/start.S | 8 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/kernel/exception.C b/src/kernel/exception.C index 0cd192c77..6f015a57c 100644 --- a/src/kernel/exception.C +++ b/src/kernel/exception.C @@ -213,3 +213,15 @@ void kernel_execute_softpatch() } } } + +extern "C" +void kernel_execute_machine_check() +{ + task_t* t = TaskManager::getCurrentTask(); + printk("Machine check in %d on %ld:\n" + "\tSRR0 = %lx, SRR1 = %lx\n" + "\tDSISR = %lx, DAR = %lx\n", + t->tid, getPIR(), + getSRR0(), getSRR0(), getDSISR(), getDAR()); + kassert(false); +} diff --git a/src/kernel/start.S b/src/kernel/start.S index cda7e92f9..71f3b6db9 100644 --- a/src/kernel/start.S +++ b/src/kernel/start.S @@ -140,7 +140,13 @@ hbi_pre_phyp_breakpoint: attn; /* TODO: Add actual breakpoint attention. */ b _start -UNIMPL_INTERRUPT(machine_check, 0x200) + /* TODO: Eventually we likely need specific code for machine check + * interrupts because they can happen at any time, including + * while we're already in an interrupt path. (Don't want to + * save kernel state over top of a user-space task structure). + */ +STD_INTERRUPT(machine_check, 0x200) + STD_INTERRUPT(data_storage, 0x300) STD_INTERRUPT(data_segment, 0x380) STD_INTERRUPT(inst_storage, 0x400) |

