70,9 → 70,49 |
|
/** Page Table Entry. */ |
typedef struct { |
/* placeholder */ |
/**PageTables are so different that we have different types |
* for level 0 and level1 page table entries |
*/ |
unsigned dummy : 32; |
} pte_t; |
|
typedef struct { |
unsigned destriptor_type : 2; |
unsigned machine_depend : 3; // Alf: ???? v Architecture previev neni vyznam definovan |
unsigned domain : 4; |
unsigned should_be_zero : 1: |
unsigned coarse_table_addr : 22; |
} __attribute__ ((packed)) pte_level0_t; |
|
//TODO Alf: Comments |
typedef struct { |
unsigned destriptor_type : 2; |
unsigned bufferable : 1; |
unsigned cacheable : 1; |
unsigned access_permission_0 : 2; |
unsigned access_permission_1 : 2; |
unsigned access_permission_2 : 2; |
unsigned access_permission_3 : 2; |
unsigned frame_base_addr : 20; |
} __attribute__ ((packed)) pte__level1_t; |
|
/// Page table level 1 access permission constants |
/// User no acess, kernel no access |
#define pte_ap_user_no_kernel_no 0 |
/// User no acess, kernel read/write |
#define pte_ap_user_no_kernel_rw 1 |
/// User read only, kernel read/write |
#define pte_ap_user_ro_kernel_rw 2 |
/// User read/write, kernel read/write |
#define pte_ap_user_rw_kernel_rw 2 |
|
/// Value of descriptor_type in pte_level0_t and pte_level1_t that signal not present flag |
#define pte_descriptor_not_preset 0 |
/// Value of descriptor_type in pte_level0_t that signal a coarse page table format |
#define pte_descriptor_coarse_table 1 |
/// Value of descriptor_type in pte_level1_t that signal a small page table entry format |
#define pte_descriptor_small_page 2 |
|
#endif |
|
/** @} |