ia64
[Interrupt handling and dispatching]


Files

file  interrupt.h
file  interrupt.c

Data Structures

struct  istate

Defines

#define IRQ_COUNT   257 /* 256 NOT suppotred IRQS*/
#define IRQ_KBD   256
#define INTERRUPT_TIMER   0
#define INTERRUPT_SPURIOUS   15
#define GE_ILLEGALOP   0
#define GE_PRIVOP   1
#define GE_PRIVREG   2
#define GE_RESREGFLD   3
#define GE_DISBLDISTRAN   4
#define GE_ILLEGALDEP   8
#define EOI   0
#define VECTORS_64_BUNDLE   20
#define VECTORS_16_BUNDLE   48
#define VECTORS_16_BUNDLE_START   0x5000
#define VECTOR_MAX   0x7f00
#define BUNDLE_SIZE   16

Functions

static void istate_set_retaddr (istate_t *istate, __address retaddr)
static __native istate_get_pc (istate_t *istate)
static int istate_from_uspace (istate_t *istate)
void general_exception (__u64 vector, istate_t *istate)
int break_instruction (__u64 vector, istate_t *istate)
void universal_handler (__u64 vector, istate_t *istate)
void nop_handler (__u64 vector, istate_t *istate)
void external_interrupt (__u64 vector, istate_t *istate)
void virtual_interrupt (__u64 irq, void *param)
void disabled_fp_register (__u64 vector, istate_t *istate)
static char * vector_to_string (__u16 vector)
static void dump_interrupted_context (istate_t *istate)
void fpu_enable (void)
void irq_ipc_bind_arch (__native irq)

Variables

void * ivt
char * vector_names_64_bundle [VECTORS_64_BUNDLE]
char * vector_names_16_bundle [VECTORS_16_BUNDLE]

Define Documentation

#define BUNDLE_SIZE   16
 

Definition at line 62 of file interrupt.c.

Referenced by vector_to_string().

#define EOI   0
 

The actual value doesn't matter.

Definition at line 57 of file interrupt.h.

Referenced by it_interrupt().

#define GE_DISBLDISTRAN   4
 

Definition at line 54 of file interrupt.h.

Referenced by general_exception().

#define GE_ILLEGALDEP   8
 

Definition at line 55 of file interrupt.h.

Referenced by general_exception().

#define GE_ILLEGALOP   0
 

General Exception codes.

Definition at line 50 of file interrupt.h.

Referenced by general_exception().

#define GE_PRIVOP   1
 

Definition at line 51 of file interrupt.h.

Referenced by general_exception().

#define GE_PRIVREG   2
 

Definition at line 52 of file interrupt.h.

Referenced by general_exception().

#define GE_RESREGFLD   3
 

Definition at line 53 of file interrupt.h.

Referenced by general_exception().

#define INTERRUPT_SPURIOUS   15
 

Definition at line 47 of file interrupt.h.

Referenced by external_interrupt().

#define INTERRUPT_TIMER   0
 

External Interrupt vectors.

Definition at line 46 of file interrupt.h.

Referenced by external_interrupt(), and it_init().

#define IRQ_COUNT   257 /* 256 NOT suppotred IRQS*/
 

Definition at line 42 of file interrupt.h.

Referenced by ipc_init(), sys_ipc_register_irq(), and sys_ipc_unregister_irq().

#define IRQ_KBD   256
 

Definition at line 43 of file interrupt.h.

Referenced by irq_ipc_bind_arch(), poll_keyboard(), ski_set_console_sysinfo(), and virtual_interrupt().

#define VECTOR_MAX   0x7f00
 

Definition at line 60 of file interrupt.c.

Referenced by vector_to_string().

#define VECTORS_16_BUNDLE   48
 

Definition at line 58 of file interrupt.c.

#define VECTORS_16_BUNDLE_START   0x5000
 

Definition at line 59 of file interrupt.c.

Referenced by vector_to_string().

#define VECTORS_64_BUNDLE   20
 

Definition at line 57 of file interrupt.c.


Function Documentation

int break_instruction __u64  vector,
istate_t istate
 

Handle syscall.

Definition at line 210 of file interrupt.c.

References istate::cr_iip, istate::cr_ipsr, istate::in0, istate::in1, istate::in2, istate::in3, istate::in4, panic, psr::ri, SYSCALL_END, and syscall_table.

void disabled_fp_register __u64  vector,
istate_t istate
 

Definition at line 191 of file interrupt.c.

References dump_interrupted_context(), fault_if_from_uspace, panic, scheduler_fpu_lazy_request(), and vector_to_string().

Here is the call graph for this function:

void dump_interrupted_context istate_t istate  )  [static]
 

Definition at line 135 of file interrupt.c.

References istate::ar_bsp, istate::ar_bspstore, istate::ar_ifs, istate::ar_pfs, istate::ar_rnat, istate::ar_rsc, istate::cr_ifa, istate::cr_iip, istate::cr_iipa, istate::cr_ipsr, istate::cr_isr, cr_isr::ei, get_symtab_entry(), printf(), putchar(), and cr_isr::value.

Referenced by disabled_fp_register(), general_exception(), and universal_handler().

Here is the call graph for this function:

void external_interrupt __u64  vector,
istate_t istate
 

Definition at line 237 of file interrupt.c.

References CPU, INTERRUPT_SPURIOUS, INTERRUPT_TIMER, it_interrupt(), ivr_read(), panic, printf(), srlz_d, cr_ivr::value, and cr_ivr::vector.

Here is the call graph for this function:

void fpu_enable void   ) 
 

Definition at line 283 of file fpu_context.c.

References PSR_DFH_MASK.

void general_exception __u64  vector,
istate_t istate
 

Definition at line 155 of file interrupt.c.

References istate::cr_isr, dump_interrupted_context(), fault_if_from_uspace, cr_isr::ge_code, GE_DISBLDISTRAN, GE_ILLEGALDEP, GE_ILLEGALOP, GE_PRIVOP, GE_PRIVREG, GE_RESREGFLD, and panic.

Here is the call graph for this function:

void irq_ipc_bind_arch __native  irq  ) 
 

Definition at line 270 of file interrupt.c.

References IRQ_KBD, kbd_uspace, and panic.

Referenced by sys_ipc_register_irq().

static int istate_from_uspace istate_t istate  )  [static]
 

Definition at line 127 of file interrupt.h.

References istate::cr_iip.

Referenced by exc_dispatch().

static __native istate_get_pc istate_t istate  )  [static]
 

Definition at line 122 of file interrupt.h.

References istate::cr_iip.

static void istate_set_retaddr istate_t istate,
__address  retaddr
[static]
 

Definition at line 116 of file interrupt.h.

References istate::cr_iip, istate::cr_ipsr, and psr::ri.

void nop_handler __u64  vector,
istate_t istate
 

Definition at line 203 of file interrupt.c.

void universal_handler __u64  vector,
istate_t istate
 

Definition at line 230 of file interrupt.c.

References dump_interrupted_context(), fault_if_from_uspace, panic, and vector_to_string().

Here is the call graph for this function:

char * vector_to_string __u16  vector  )  [static]
 

Definition at line 125 of file interrupt.c.

References ASSERT, BUNDLE_SIZE, VECTOR_MAX, vector_names_16_bundle, vector_names_64_bundle, and VECTORS_16_BUNDLE_START.

Referenced by disabled_fp_register(), and universal_handler().

void virtual_interrupt __u64  irq,
void *  param
 

Definition at line 257 of file interrupt.c.

References ipc_irq_send_notif(), IRQ_KBD, kbd_uspace, and panic.

Referenced by poll_keyboard().

Here is the call graph for this function:


Variable Documentation

void* ivt
 

Referenced by arch_pre_mm_init().

char* vector_names_16_bundle[VECTORS_16_BUNDLE]
 

Definition at line 88 of file interrupt.c.

Referenced by vector_to_string().

char* vector_names_64_bundle[VECTORS_64_BUNDLE]
 

Initial value:

 {
        "VHPT Translation vector",
        "Instruction TLB vector",
        "Data TLB vector",
        "Alternate Instruction TLB vector",
        "Alternate Data TLB vector",
        "Data Nested TLB vector",
        "Instruction Key Miss vector",
        "Data Key Miss vector",
        "Dirty-Bit vector",
        "Instruction Access-Bit vector",
        "Data Access-Bit vector"
        "Break Instruction vector",
        "External Interrupt vector"
        "Reserved",
        "Reserved",
        "Reserved",
        "Reserved",
        "Reserved",
        "Reserved",
        "Reserved"
}

Definition at line 65 of file interrupt.c.

Referenced by vector_to_string().


Generated on Sun Jun 18 17:00:06 2006 for HelenOS Kernel (ia64) by  doxygen 1.4.6