Changeset 89c57b6 in mainline for kernel/arch/ia32/include/interrupt.h


Ignore:
Timestamp:
2011-04-13T14:45:41Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
88634420
Parents:
cefb126 (diff), 17279ead (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

File:
1 edited

Legend:

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

    rcefb126 r89c57b6  
    3737
    3838#include <typedefs.h>
     39#include <arch/istate.h>
    3940#include <arch/pm.h>
    4041
    41 #define IVT_ITEMS       IDT_ITEMS
    42 #define IVT_FIRST       0
     42#define IVT_ITEMS  IDT_ITEMS
     43#define IVT_FIRST  0
    4344
    44 #define EXC_COUNT       32
    45 #define IRQ_COUNT       16
     45#define EXC_COUNT  32
     46#define IRQ_COUNT  16
    4647
    47 #define IVT_EXCBASE     0
    48 #define IVT_IRQBASE     (IVT_EXCBASE + EXC_COUNT)
    49 #define IVT_FREEBASE    (IVT_IRQBASE + IRQ_COUNT)
     48#define IVT_EXCBASE   0
     49#define IVT_IRQBASE   (IVT_EXCBASE + EXC_COUNT)
     50#define IVT_FREEBASE  (IVT_IRQBASE + IRQ_COUNT)
    5051
    51 #define IRQ_CLK         0
    52 #define IRQ_KBD         1
    53 #define IRQ_PIC1        2
    54 #define IRQ_PIC_SPUR    7
    55 #define IRQ_MOUSE       12
    56 #define IRQ_DP8390      9
     52#define IRQ_CLK       0
     53#define IRQ_KBD       1
     54#define IRQ_PIC1      2
     55#define IRQ_PIC_SPUR  7
     56#define IRQ_MOUSE     12
     57#define IRQ_NE2000    5
    5758
    58 /* this one must have four least significant bits set to ones */
    59 #define VECTOR_APIC_SPUR        (IVT_ITEMS - 1)
     59/* This one must have four least significant bits set to ones */
     60#define VECTOR_APIC_SPUR  (IVT_ITEMS - 1)
    6061
    6162#if (((VECTOR_APIC_SPUR + 1) % 16) || VECTOR_APIC_SPUR >= IVT_ITEMS)
     
    6364#endif
    6465
    65 #define VECTOR_DEBUG                    1
    66 #define VECTOR_CLK                      (IVT_IRQBASE + IRQ_CLK)
    67 #define VECTOR_PIC_SPUR                 (IVT_IRQBASE + IRQ_PIC_SPUR)
    68 #define VECTOR_SYSCALL                  IVT_FREEBASE
    69 #define VECTOR_TLB_SHOOTDOWN_IPI        (IVT_FREEBASE + 1)
    70 #define VECTOR_DEBUG_IPI                (IVT_FREEBASE + 2)
     66#define VECTOR_DEBUG              1
     67#define VECTOR_CLK                (IVT_IRQBASE + IRQ_CLK)
     68#define VECTOR_PIC_SPUR           (IVT_IRQBASE + IRQ_PIC_SPUR)
     69#define VECTOR_SYSCALL            IVT_FREEBASE
     70#define VECTOR_TLB_SHOOTDOWN_IPI  (IVT_FREEBASE + 1)
     71#define VECTOR_DEBUG_IPI          (IVT_FREEBASE + 2)
    7172
    72 typedef struct istate {
    73         uint32_t eax;
    74         uint32_t ebx;
    75         uint32_t ecx;
    76         uint32_t edx;
    77         uint32_t edi;
    78         uint32_t esi;
    79         uint32_t ebp;
    80        
    81         uint32_t ebp_frame;     /* imitation of frame pointer linkage */
    82         uint32_t eip_frame;     /* imitation of return address linkage */
    83 
    84         uint32_t gs;
    85         uint32_t fs;
    86         uint32_t es;
    87         uint32_t ds;
    88 
    89         uint32_t error_word;    /* real or fake error word */
    90         uint32_t eip;
    91         uint32_t cs;
    92         uint32_t eflags;
    93         uint32_t esp;           /* only if istate_t is from uspace */
    94         uint32_t ss;            /* only if istate_t is from uspace */
    95 } istate_t;
    96 
    97 /** Return true if exception happened while in userspace */
    98 static inline int istate_from_uspace(istate_t *istate)
    99 {
    100         return !(istate->eip & 0x80000000);
    101 }
    102 
    103 static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
    104 {
    105         istate->eip = retaddr;
    106 }
    107 
    108 static inline unative_t istate_get_pc(istate_t *istate)
    109 {
    110         return istate->eip;
    111 }
    112 
    113 static inline unative_t istate_get_fp(istate_t *istate)
    114 {
    115         return istate->ebp;
    116 }
    117 
    118 extern void (* disable_irqs_function)(uint16_t irqmask);
    119 extern void (* enable_irqs_function)(uint16_t irqmask);
     73extern void (* disable_irqs_function)(uint16_t);
     74extern void (* enable_irqs_function)(uint16_t);
    12075extern void (* eoi_function)(void);
     76extern const char *irqs_info;
    12177
    12278extern void interrupt_init(void);
    123 extern void trap_virtual_enable_irqs(uint16_t irqmask);
    124 extern void trap_virtual_disable_irqs(uint16_t irqmask);
     79extern void trap_virtual_enable_irqs(uint16_t);
     80extern void trap_virtual_disable_irqs(uint16_t);
    12581
    12682#endif
Note: See TracChangeset for help on using the changeset viewer.