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/amd64/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    9
    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 /** This is passed to interrupt handlers */
    73 typedef struct istate {
    74         uint64_t rax;
    75         uint64_t rcx;
    76         uint64_t rdx;
    77         uint64_t rsi;
    78         uint64_t rdi;
    79         uint64_t r8;
    80         uint64_t r9;
    81         uint64_t r10;
    82         uint64_t r11;
    83         uint64_t rbp;
    84         uint64_t error_word;
    85         uint64_t rip;
    86         uint64_t cs;
    87         uint64_t rflags;
    88         uint64_t stack[]; /* Additional data on stack */
    89 } istate_t;
    90 
    91 /** Return true if exception happened while in userspace */
    92 static inline int istate_from_uspace(istate_t *istate)
    93 {
    94         return !(istate->rip & 0x8000000000000000);
    95 }
    96 
    97 static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
    98 {
    99         istate->rip = retaddr;
    100 }
    101 static inline unative_t istate_get_pc(istate_t *istate)
    102 {
    103         return istate->rip;
    104 }
    105 static inline unative_t istate_get_fp(istate_t *istate)
    106 {
    107         return istate->rbp;
    108 }
    109 
    110 extern void (* disable_irqs_function)(uint16_t irqmask);
    111 extern void (* enable_irqs_function)(uint16_t irqmask);
     73extern void (* disable_irqs_function)(uint16_t);
     74extern void (* enable_irqs_function)(uint16_t);
    11275extern void (* eoi_function)(void);
     76extern const char *irqs_info;
    11377
    11478extern void interrupt_init(void);
    115 extern void trap_virtual_enable_irqs(uint16_t irqmask);
    116 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);
    11781
    11882#endif
Note: See TracChangeset for help on using the changeset viewer.