Changeset ab08b42 in mainline for arch/ia32/src/interrupt.c


Ignore:
Timestamp:
2005-09-03T16:40:25Z (20 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6401f79
Parents:
f6297e0
Message:

Added symbol table lookup in exceptions.
This breaks ia64 & ppc architecture compiles.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/src/interrupt.c

    rf6297e0 rab08b42  
    3737#include <mm/tlb.h>
    3838#include <arch.h>
     39#include <symtab.h>
    3940
    4041/*
     
    4748void (* enable_irqs_function)(__u16 irqmask) = NULL;
    4849void (* eoi_function)(void) = NULL;
     50
     51#define PRINT_INFO_ERRCODE(x) { \
     52        char *symbol = get_symtab_entry(stack[1]); \
     53        if (!symbol) \
     54                symbol = ""; \
     55        printf("----------------EXCEPTION OCCURED----------------\n"); \
     56        printf("%%eip: %X (%s)\n",x[1],symbol); \
     57        printf("ERROR_WORD=%X\n", x[0]); \
     58        printf("%%cs=%X,flags=%X\n", x[2], x[3]); \
     59        printf("%%eax=%X, %%ebx=%X, %%ecx=%X, %%edx=%X\n",\
     60               x[-2],x[-5],x[-3],x[-4]); \
     61        printf("%%esi=%X, %%edi=%X, %%ebp=%X, %%esp=%X\n",\
     62               x[-8],x[-9],x[-1],x); \
     63        printf("stack: %X, %X, %X, %X\n", x[4], x[5], x[6], x[7]); \
     64        printf("       %X, %X, %X, %X\n", x[8], x[9], x[10], x[11]); \
     65        }
    4966
    5067iroutine trap_register(__u8 n, iroutine f)
     
    8097void gp_fault(__u8 n, __native stack[])
    8198{
    82         printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
    83         printf("%%eax=%L, %%ebx=%L, %%ecx=%L, %%edx=%L,\n%%edi=%L, %%esi=%L, %%ebp=%L, %%esp=%L\n", stack[-2], stack[-5], stack[-3], stack[-4], stack[-9], stack[-8], stack[-1], stack);
    84         printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]);
     99        PRINT_INFO_ERRCODE(stack);
    85100        panic("general protection fault\n");
    86101}
     
    88103void ss_fault(__u8 n, __native stack[])
    89104{
    90         printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
    91         printf("%%eax=%L, %%ebx=%L, %%ecx=%L, %%edx=%L,\n%%edi=%L, %%esi=%L, %%ebp=%L, %%esp=%L\n", stack[-2], stack[-5], stack[-3], stack[-4], stack[-9], stack[-8], stack[-1], stack);
    92         printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]);
     105        PRINT_INFO_ERRCODE(stack);
    93106        panic("stack fault\n");
    94107}
     
    111124void page_fault(__u8 n, __native stack[])
    112125{
     126        PRINT_INFO_ERRCODE(stack);
    113127        printf("page fault address: %X\n", read_cr2());
    114         printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
    115         printf("%%eax=%L, %%ebx=%L, %%ecx=%L, %%edx=%L,\n%%edi=%L, %%esi=%L, %%ebp=%L, %%esp=%L\n", stack[-2], stack[-5], stack[-3], stack[-4], stack[-9], stack[-8], stack[-1], stack);
    116         printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]);
    117128        panic("page fault\n");
    118129}
Note: See TracChangeset for help on using the changeset viewer.