summaryrefslogtreecommitdiff
path: root/cpu/features/optional/segmented_paging/structures.txt
blob: d7de77bbb45ba4778f973d243bd2a9c091488554 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
TODO: Assign bit in FR

Offset: 9 + (n/16)

Replaces the offset field in the gdt with the following:
	Width: half the number of bits for the current mode
	Value: pointer to array of chunks, physical address

Array of chunks:
	Width: half the number of bits for the current mode

	Value:
		Upper (n - offset) bits:
			Pointer to physical address >> offset
		Lowest bit:
			Present
		Remaining bits:
			Unused by this system


	Each value in the array represents 1 << offset bytes of memory.
	Physical address is calculated from a reference such that:
		Physical address = (gdt[segment].chunks[addr>>offset].address << offset) | (lowest offset bits of addr)

		Triggers a page fault if the present bit is not set