93,7 → 93,6 |
#define SET_FRAME_FLAGS_ARCH(ptl3, i, x) set_pt_level1_flags((pte_level1_t *)(ptl3), (index_t)(i), (x)) |
|
#define PTE_VALID_ARCH(pte) (*((uint32_t *) (pte)) != 0) |
// TODO: ?? != 0 |
#define PTE_PRESENT_ARCH(pte) ( ((pte_level0_t *)(pte))->descriptor_type != 0 ) |
|
/* pte should point into ptl3 */ |
119,11 → 118,10 |
|
} |
|
/** |
* Returns level 0 page table entry flags. |
/** Returns level 0 page table entry flags. |
* |
* \param pt level 0 page table |
* \param i index of the entry to return |
* \param pt level 0 page table |
* \param i index of the entry to return |
*/ |
static inline int get_pt_level0_flags(pte_level0_t *pt, index_t i) |
{ |
139,11 → 137,10 |
; |
} |
|
/** |
* Returns level 1 page table entry flags. |
/** Returns level 1 page table entry flags. |
* |
* \param pt level 1 page table |
* \param i index of the entry to return |
* \param pt level 1 page table |
* \param i index of the entry to return |
*/ |
static inline int get_pt_level1_flags(pte_level1_t *pt, index_t i) |
{ |
162,14 → 159,11 |
; |
} |
|
/** |
* Sets flags of level 0 page table entry. |
/** Sets flags of level 0 page table entry. |
* |
* \param pt level 0 page table |
* \param i index of the entry to be changed |
* \param flags new flags |
* |
* TODO: why should_be_zero set to 1? |
* \param pt level 0 page table |
* \param i index of the entry to be changed |
* \param flags new flags |
*/ |
static inline void set_pt_level0_flags(pte_level0_t *pt, index_t i, int flags) |
{ |
177,10 → 171,8 |
|
if (flags & PAGE_NOT_PRESENT) { |
p->descriptor_type = PTE_DESCRIPTOR_NOT_PRESENT; |
// ensures that the entry will be recognized as valid when PTE_VALID_ARCH applied |
p->should_be_zero = 1; |
// TODO: remove in final version |
// For Michal: Have to be here ... ensures this entry contains at least 1 non zero bit |
// all zero bits signals PTE_VALID_ARCH , it's different from not_present |
} else { |
p->descriptor_type = PTE_DESCRIPTOR_COARSE_TABLE; |
p->should_be_zero = 0; |
187,16 → 179,15 |
} |
} |
|
/** |
* Sets flags of level 1 page table entry. |
/** Sets flags of level 1 page table entry. |
* |
* We use same access rights for the whole page. When page is not preset then |
* store 1 in acess_rigts_3. |
* TODO: why access_right_3? |
* We use same access rights for the whole page. When page is not preset we |
* store 1 in acess_rigts_3 so that at least one bit is 1 (to mark correct |
* page entry, see #PAGE_VALID_ARCH). |
* |
* \param pt level 1 page table |
* \param i index of the entry to be changed |
* \param flags new flags |
* \param pt level 1 page table |
* \param i index of the entry to be changed |
* \param flags new flags |
*/ |
static inline void set_pt_level1_flags(pte_level1_t *pt, index_t i, int flags) |
{ |