libmeinos: +llist2
[meinos.git] / kernel2 / include / idt.h
blobd92940d00540125da1cf73da8cd222f910714c29
1 /*
2 meinOS - A unix-like x86 microkernel operating system
3 Copyright (C) 2008 Janosch Gräf <janosch.graef@gmx.net>
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
19 #ifndef _IDT_H_
20 #define _IDT_H_
22 #include <stdint.h>
23 #include <gdt.h>
24 #include <isr.h>
26 #define IDT_PRESENT 0x80
27 #define IDT_INTGATE32 0x0E
29 typedef struct {
30 uint16_t address0_15;
31 selector_t selector;
32 uint8_t zero;
33 uint8_t type;
34 uint16_t address16_31;
35 } __attribute__ ((packed)) idtdesc_t;
37 /*typedef struct {
38 uint16_t address0_15;
39 selector_t selector;
40 uint8_t zero1;
41 unsigned present:1;
42 priv_t priv:2;
43 unsigned zero2:1;
44 enum {
45 IDT_TASK = 0x05,
46 IDT_INT_16 = 0x06,
47 IDT_TRAP_16 = 0x07,
48 IDT_INT_32 = 0x0E,
49 IDT_TRAP_32 = 0x0F
50 } gatetype:4;
51 uint16_t address16_31;
52 } __attribute__ ((packed)) idtdesc_t;*/
54 typedef struct {
55 uint16_t size;
56 uint32_t offset;
57 } __attribute__ ((packed)) idtsel_t;
59 typedef idtdesc_t* idt_t;
61 //idt_t idt;
62 idtdesc_t idt[ISR_NUM];
64 int idt_init();
65 void idt_set_descriptor(int i,void *addr,selector_t selector,priv_t priv,int type);
67 #endif