diff options
Diffstat (limited to 'extras/mini-os/arch/ia64/debug.c')
-rw-r--r-- | extras/mini-os/arch/ia64/debug.c | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/extras/mini-os/arch/ia64/debug.c b/extras/mini-os/arch/ia64/debug.c deleted file mode 100644 index f0e57776f7..0000000000 --- a/extras/mini-os/arch/ia64/debug.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - **************************************************************************** - * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com - * - * Description: ia64 specific part of the mini-os - * Prints debug information on a crash of mini-os - * - * Parts are taken from FreeBSD. - * - **************************************************************************** - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include <mini-os/os.h> - -static const char *ia64_vector_names[] = { - "VHPT Translation", /* 0 */ - "Instruction TLB", /* 1 */ - "Data TLB", /* 2 */ - "Alternate Instruction TLB", /* 3 */ - "Alternate Data TLB", /* 4 */ - "Data Nested TLB", /* 5 */ - "Instruction Key Miss", /* 6 */ - "Data Key Miss", /* 7 */ - "Dirty-Bit", /* 8 */ - "Instruction Access-Bit", /* 9 */ - "Data Access-Bit", /* 10 */ - "Break Instruction", /* 11 */ - "External Interrupt", /* 12 */ - "Reserved 13", /* 13 */ - "Reserved 14", /* 14 */ - "Reserved 15", /* 15 */ - "Reserved 16", /* 16 */ - "Reserved 17", /* 17 */ - "Reserved 18", /* 18 */ - "Reserved 19", /* 19 */ - "Page Not Present", /* 20 */ - "Key Permission", /* 21 */ - "Instruction Access Rights", /* 22 */ - "Data Access Rights", /* 23 */ - "General Exception", /* 24 */ - "Disabled FP-Register", /* 25 */ - "NaT Consumption", /* 26 */ - "Speculation", /* 27 */ - "Reserved 28", /* 28 */ - "Debug", /* 29 */ - "Unaligned Reference", /* 30 */ - "Unsupported Data Reference", /* 31 */ - "Floating-point Fault", /* 32 */ - "Floating-point Trap", /* 33 */ - "Lower-Privilege Transfer Trap", /* 34 */ - "Taken Branch Trap", /* 35 */ - "Single Step Trap", /* 36 */ - "Reserved 37", /* 37 */ - "Reserved 38", /* 38 */ - "Reserved 39", /* 39 */ - "Reserved 40", /* 40 */ - "Reserved 41", /* 41 */ - "Reserved 42", /* 42 */ - "Reserved 43", /* 43 */ - "Reserved 44", /* 44 */ - "IA-32 Exception", /* 45 */ - "IA-32 Intercept", /* 46 */ - "IA-32 Interrupt", /* 47 */ - "Reserved 48", /* 48 */ - "Reserved 49", /* 49 */ - "Reserved 50", /* 50 */ - "Reserved 51", /* 51 */ - "Reserved 52", /* 52 */ - "Reserved 53", /* 53 */ - "Reserved 54", /* 54 */ - "Reserved 55", /* 55 */ - "Reserved 56", /* 56 */ - "Reserved 57", /* 57 */ - "Reserved 58", /* 58 */ - "Reserved 59", /* 59 */ - "Reserved 60", /* 60 */ - "Reserved 61", /* 61 */ - "Reserved 62", /* 62 */ - "Reserved 63", /* 63 */ - "Reserved 64", /* 64 */ - "Reserved 65", /* 65 */ - "Reserved 66", /* 66 */ - "Reserved 67", /* 67 */ -}; - -typedef struct -{ - uint64_t sof :7; /* 0-6 size of frame */ - uint64_t sol :7; /* 7-13 size of locals (in + loc) */ - uint64_t sor :4; - uint64_t rrb_gr :7; - uint64_t rrb_fr :7; - uint64_t rrb_pr :6; - uint64_t res :25; /* reserved */ - uint64_t v :1; /* The v bit */ -} ifs_t; - -void -do_trap_error(trap_frame_t* tf) -{ - ifs_t curIfs; - - printk("TRAP in mini-os:\n"); - printk(" trap: %d (%s)\n", tf->trap_num, - ia64_vector_names[tf->trap_num]); - printk(" iip : 0x%.16lx ifa: 0x%.16lx\n", tf->iip, tf->ifa); - printk(" ipsr: 0x%.16lx ifs: 0x%.16lx\n", tf->ipsr, tf->ifs); - printk(" isr : 0x%.16lx\n", tf->isr); - printk(" gp : 0x%.16lx sp : 0x%.16lx\n", tf->gp, tf->sp); - printk(" rp : 0x%.16lx tp : 0x%.16lx\n", tf->b0, tf->tp); - printk(" b6 : 0x%.16lx b7 : 0x%.16lx\n", tf->b6, tf->b7); - printk(" r8 : 0x%.16lx\n", tf->r8); - printk(" bsp : 0x%.16lx rsc: 0x%.16lx\n", tf->bsp, tf->rsc); - printk(" r14 : 0x%.16lx r15: 0x%.16lx\n", tf->r14, tf->r15); - printk(" r16 : 0x%.16lx r17: 0x%.16lx\n", tf->r16, tf->r17); - printk(" r18 : 0x%.16lx r19: 0x%.16lx\n", tf->r18, tf->r19); - printk(" r20 : 0x%.16lx r21: 0x%.16lx\n", tf->r20, tf->r21); - printk(" r22 : 0x%.16lx r23: 0x%.16lx\n", tf->r22, tf->r23); - printk(" r24 : 0x%.16lx r25: 0x%.16lx\n", tf->r24, tf->r25); - printk(" r26 : 0x%.16lx r27: 0x%.16lx\n", tf->r26, tf->r27); - printk(" r28 : 0x%.16lx r29: 0x%.16lx\n", tf->r28, tf->r29); - printk(" r30 : 0x%.16lx r31: 0x%.16lx\n", tf->r30, tf->r31); - - __asm __volatile("flushrs;;"); - curIfs = *((ifs_t*)((void*)(&tf->ifs))); - if (!curIfs.v) - printk(" ifs.v = 0"); - else { - uint64_t* regP; - uint32_t i; - - printk(" cfm.sof: %d cfm.sol: %d\n", curIfs.sof, curIfs.sol); - regP = (uint64_t *)(tf->bsp + tf->ndirty); - for (i = curIfs.sof; i != 0; ) { - if (i <= (((uint64_t)regP & 0x000001f8) >> 3)) { - regP -= i; - i = 0; - break; - } - i -= ((uint64_t)regP & 0x000001f8) >> 3; - regP = (uint64_t *)((uint64_t)regP & ~0x000001ff) - 1; - } - for (i = 0; i < curIfs.sof; i++) { - if (((uint64_t)regP & 0x000001f8) == 0x000001f8) - regP++; - printk(" r%d: 0x%lx\n", i+32, *regP); - regP++; - } - } - HYPERVISOR_shutdown(SHUTDOWN_poweroff); -} |