apic.h 635 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include "../../../common/asm.h"
  3. #include"../../../process/ptrace.h"
  4. #include"../../../exception/irq.h"
  5. struct apic_IO_APIC_map
  6. {
  7. // 间接访问寄存器的物理基地址
  8. uint addr_phys;
  9. // 索引寄存器虚拟地址
  10. unsigned char* virtual_index_addr;
  11. // 数据寄存器虚拟地址
  12. uint* virtual_data_addr;
  13. // EOI寄存器虚拟地址
  14. uint* virtual_EOI_addr;
  15. }apic_ioapic_map;
  16. /**
  17. * @brief 中断服务程序
  18. *
  19. * @param rsp 中断栈指针
  20. * @param number 中断号
  21. */
  22. void do_IRQ(struct pt_regs* rsp, ul number);
  23. /**
  24. * @brief 初始化apic控制器
  25. *
  26. */
  27. void apic_init();