Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/include/interrupt.h

    r598f90e r21941ac  
    3636#define KERN_ia64_INTERRUPT_H_
    3737
    38 #include <typedefs.h>
    39 #include <arch/istate.h>
     38#include <arch/types.h>
     39#include <arch/register.h>
    4040
    4141/** ia64 has 256 INRs. */
     
    6161#define IRQ_KBD    (0x01 + LEGACY_INTERRUPT_BASE)
    6262#define IRQ_MOUSE  (0x0c + LEGACY_INTERRUPT_BASE)
    63 #define IRQ_DP8390 (0x09 + LEGACY_INTERRUPT_BASE)
    6463
    6564/** General Exception codes. */
     
    7372#define EOI  0  /**< The actual value doesn't matter. */
    7473
     74typedef struct istate {
     75        uint128_t f2;
     76        uint128_t f3;
     77        uint128_t f4;
     78        uint128_t f5;
     79        uint128_t f6;
     80        uint128_t f7;
     81        uint128_t f8;
     82        uint128_t f9;
     83        uint128_t f10;
     84        uint128_t f11;
     85        uint128_t f12;
     86        uint128_t f13;
     87        uint128_t f14;
     88        uint128_t f15;
     89        uint128_t f16;
     90        uint128_t f17;
     91        uint128_t f18;
     92        uint128_t f19;
     93        uint128_t f20;
     94        uint128_t f21;
     95        uint128_t f22;
     96        uint128_t f23;
     97        uint128_t f24;
     98        uint128_t f25;
     99        uint128_t f26;
     100        uint128_t f27;
     101        uint128_t f28;
     102        uint128_t f29;
     103        uint128_t f30;
     104        uint128_t f31;
     105       
     106        uintptr_t ar_bsp;
     107        uintptr_t ar_bspstore;
     108        uintptr_t ar_bspstore_new;
     109        uint64_t ar_rnat;
     110        uint64_t ar_ifs;
     111        uint64_t ar_pfs;
     112        uint64_t ar_rsc;
     113        uintptr_t cr_ifa;
     114        cr_isr_t cr_isr;
     115        uintptr_t cr_iipa;
     116        psr_t cr_ipsr;
     117        uintptr_t cr_iip;
     118        uint64_t pr;
     119        uintptr_t sp;
     120       
     121        /*
     122         * The following variables are defined only for break_instruction
     123         * handler.
     124         */
     125        uint64_t in0;
     126        uint64_t in1;
     127        uint64_t in2;
     128        uint64_t in3;
     129        uint64_t in4;
     130        uint64_t in5;
     131        uint64_t in6;
     132} istate_t;
     133
     134static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
     135{
     136        istate->cr_iip = retaddr;
     137        istate->cr_ipsr.ri = 0;    /* return to instruction slot #0 */
     138}
     139
     140static inline unative_t istate_get_pc(istate_t *istate)
     141{
     142        return istate->cr_iip;
     143}
     144
     145static inline unative_t istate_get_fp(istate_t *istate)
     146{
     147        return 0;       /* FIXME */
     148}
     149
     150static inline int istate_from_uspace(istate_t *istate)
     151{
     152        return (istate->cr_iip) < 0xe000000000000000ULL;
     153}
     154
    75155extern void *ivt;
    76156
    77 extern void general_exception(uint64_t, istate_t *);
    78 extern int break_instruction(uint64_t, istate_t *);
    79 extern void universal_handler(uint64_t, istate_t *);
    80 extern void nop_handler(uint64_t, istate_t *);
    81 extern void external_interrupt(uint64_t, istate_t *);
    82 extern void disabled_fp_register(uint64_t, istate_t *);
     157extern void general_exception(uint64_t vector, istate_t *istate);
     158extern int break_instruction(uint64_t vector, istate_t *istate);
     159extern void universal_handler(uint64_t vector, istate_t *istate);
     160extern void nop_handler(uint64_t vector, istate_t *istate);
     161extern void external_interrupt(uint64_t vector, istate_t *istate);
     162extern void disabled_fp_register(uint64_t vector, istate_t *istate);
    83163
    84 extern void trap_virtual_enable_irqs(uint16_t);
     164extern void trap_virtual_enable_irqs(uint16_t irqmask);
    85165
    86166#endif
Note: See TracChangeset for help on using the changeset viewer.