Advertisement
Guest User

Untitled

a guest
Oct 19th, 2024
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. #include "gdt.h"
  2. #include "types.h"
  3.  
  4. u64 gdt_entries[3];
  5.  
  6. u64 create_entry(u32 base, u32 limit, u8 access_byte, u8 flags){
  7. u64 rv = 0;
  8. rv |= (u64)(limit && 0x00FFFF);
  9. rv |= (u64)(base && 0x00FFFFFF) << 16;
  10. rv |= (u64)(access_byte && 0xFF) << 40;
  11. rv |= (u64)(limit && 0xFF0000) << 48;
  12. rv |= (u64)(flags && 0xF) << 52;
  13. rv |= (u64)(base && 0xFF000000) << 56;
  14. return rv;
  15. }
  16.  
  17. void init_gdt(){
  18. gdt_entries[0] = create_entry(0, 0, 0, 0);
  19. gdt_entries[1] = create_entry(0, 0xFFFFFFFF, KERNEL_CODE_ACCESS_BYTE, FLAGS);
  20. gdt_entries[2] = create_entry(0, 0xFFFFFFFF, KERNEL_DATA_ACCESS_BYTE, FLAGS);
  21. //load_gdt(sizeof(gdt_entries)-1, (u32)&gdt_entries);
  22. //reloadSegments();
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement