global.h 933 B

123456789101112131415161718192021222324252627282930313233
  1. #ifndef __KERNEL_GLOBAL_H
  2. #define __KERNEL_GLOBAL_H
  3. #include "stdint.h"
  4. #define RPL0 0
  5. #define RPL1 1
  6. #define RPL2 2
  7. #define RPL3 3
  8. #define TI_GDT 0x00
  9. #define TI_LDT 0x01
  10. #define PG_P 1
  11. #define SELECTOR_K_CODE ((1 << 3) + (TI_GDT << 2) + RPL0)
  12. #define SELECTOR_K_DATA ((2 << 3) + (TI_GDT << 2) + RPL0)
  13. #define SELECTOR_K_STACK SELECTOR_K_DATA
  14. #define SELECTOR_K_GS ((3 << 3) + (TI_GDT << 2) + RPL0)
  15. /*---------------------- IDT 描述符属性 -----------------------------------------*/
  16. #define IDT_DESC_P 1
  17. #define IDT_DESC_DPL0 0
  18. #define IDT_DESC_DPL3 3
  19. #define IDT_DESC_32_TYPE 0xE // 32 位的门
  20. #define IDT_DESC_16_TYPE 0x6 // 16 位的门,不用,定义它只为和 32 位门区分
  21. #define IDT_DESC_ATTR_DPL0 ((IDT_DESC_P << 7) + (IDT_DESC_DPL0 << 5) + IDT_DESC_32_TYPE)
  22. #define IDT_DESC_ATTR_DPL3 ((IDT_DESC_P << 7) + (IDT_DESC_DPL3 << 5) + IDT_DESC_32_TYPE)
  23. #define NULL ((void *)0)
  24. #endif // __KERNEL_GLOBAL_H