blob: df38aa91fd53dec34eb1aaa2fa80cb4323255614 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
This is the memory layout of a standard process :
This can be changed by the app :
- 0x00100000 to 0xB0000000 Application's code and data (data for heap allocated with sbrk)
- 0xBF000000 User stack for first thread (other threads must have a pre-allocated stack)
This is necessary :
- 0xC0000000 to 0xFFFFFFFF Kernel code and heap
The beginning of the kernel code at 0xC0000000 corresponds to the linker-defined
symbol k_highhalf_addr, that is used at as many places as possible.
If this address was to be changed, it would have to be changed in two places :
- link.ld, change address of k_highhalf_addr;
- loader_.asm, update the temporary GDT structure data.
|