Changeset 1e2aecca in mainline


Ignore:
Timestamp:
2005-10-03T13:09:53Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ce031f0
Parents:
df364582
Message:

IA-64 work.
Map interrupt vectors to their names.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/src/interrupt_handler.c

    rdf364582 r1e2aecca  
    2828 */
    2929
    30 
    3130#include <panic.h>
    3231#include <print.h>
     
    3433#include <arch/asm.h>
    3534#include <symtab.h>
     35#include <debug.h>
     36
     37#define VECTORS_64_BUNDLE       20
     38#define VECTORS_16_BUNDLE       48
     39#define VECTORS_16_BUNDLE_START 0x5000
     40#define VECTOR_MAX              0x7f00
     41
     42#define BUNDLE_SIZE             16
    3643
    3744extern __u64 REG_DUMP;
     45
     46char *vector_names_64_bundle[VECTORS_64_BUNDLE] = {
     47        "VHPT Translation vector",
     48        "Instruction TLB vector",
     49        "Data TLB vector",
     50        "Alternate Instruction TLB vector",
     51        "Alternate Data TLB vector",
     52        "Data Nested TLB vector",
     53        "Instruction Key Miss vector",
     54        "Data Key Miss vector",
     55        "Dirty-Bit vector",
     56        "Instruction Access-Bit vector",
     57        "Data Access-Bit vector"
     58        "Break Instruction vector",
     59        "External Interrupt vector"
     60        "Reserved",
     61        "Reserved",
     62        "Reserved",
     63        "Reserved",
     64        "Reserved",
     65        "Reserved",
     66        "Reserved"
     67};
     68
     69char *vector_names_16_bundle[VECTORS_16_BUNDLE] = {
     70        "Page Not Present vector",
     71        "Key Permission vector",
     72        "Instruction Access rights vector",
     73        "Data Access Rights vector",
     74        "General Exception vector",
     75        "Disabled FP-Register vector",
     76        "NaT Consumption vector",
     77        "Speculation vector",
     78        "Reserved",
     79        "Debug vector",
     80        "Unaligned Reference vector",
     81        "Unsupported Data Reference vector",
     82        "Floating-point Fault vector",
     83        "Floating-point Trap vector",
     84        "Lower-Privilege Transfer Trap vector",
     85        "Taken Branch Trap vector",
     86        "Single STep Trap vector",
     87        "Reserved",
     88        "Reserved",
     89        "Reserved",
     90        "Reserved",
     91        "Reserved",
     92        "Reserved",
     93        "Reserved",
     94        "Reserved",
     95        "IA-32 Exception vector",
     96        "IA-32 Intercept vector",
     97        "IA-32 Interrupt vector",
     98        "Reserved",
     99        "Reserved",
     100        "Reserved"
     101};
     102
     103static char *vector_to_string(__u16 vector);
     104
     105char *vector_to_string(__u16 vector)
     106{
     107        ASSERT(vector <= VECTOR_MAX);
     108       
     109        if (vector >= VECTORS_16_BUNDLE_START)
     110                return vector_names_16_bundle[(vector-VECTORS_16_BUNDLE_START)/(16*BUNDLE_SIZE)];
     111        else
     112                return vector_names_64_bundle[vector/(64*BUNDLE_SIZE)];
     113}
    38114
    39115
     
    41117void general_exception(void)
    42118{
    43     panic("\nGeneral Exception\n");
     119        panic("\nGeneral Exception\n");
    44120}
    45121
     
    49125void break_instruction(void)
    50126{
    51     panic("\nBreak Instruction\n");
    52 }
    53 
     127        panic("\nBreak Instruction\n");
     128}
    54129
    55130#define cr_dump(r) {__u64 val; get_control_register(r,val); printf("\ncr"#r":%Q",val);}
     
    64139        char *sym;
    65140       
    66        
    67141        get_shadow_register(16,vector);
    68142
    69        
    70143        p=&REG_DUMP;
    71144
    72145        for(i=0;i<128;i+=2) printf("gr%d:%Q\tgr%d:%Q\n",i,p[i],i+1,p[i+1]);
    73 
    74146
    75147        cr_dump(0);     
     
    132204        printf("\nPSR:%Q\n",psr);
    133205       
    134         panic("\nException:%Q\n",vector);
    135 }
    136 
    137 
     206        panic("\nException:%W (%s)\n", (__u16) vector, vector_to_string(vector));
     207}
     208
     209
Note: See TracChangeset for help on using the changeset viewer.