mirror of
https://github.com/0xAX/linux-insides.git
synced 2024-12-22 14:48:08 +00:00
Booting/linux-bootstrap-1.md: update to the latest coreboot code
This commit is contained in:
parent
16bb7744f3
commit
2da09c8755
@ -76,26 +76,28 @@ The starting address is formed by adding the base address to the value in the EI
|
||||
We get `0xfffffff0`, which is 16 bytes below 4GB. This point is called the [Reset vector](https://en.wikipedia.org/wiki/Reset_vector). This is the memory location at which the CPU expects to find the first instruction to execute after reset. It contains a [jump](https://en.wikipedia.org/wiki/JMP_%28x86_instruction%29) (`jmp`) instruction that usually points to the BIOS entry point. For example, if we look in the [coreboot](https://www.coreboot.org/) source code (`src/cpu/x86/16bit/reset16.inc`), we will see:
|
||||
|
||||
```assembly
|
||||
.section ".reset"
|
||||
.section ".reset", "ax", %progbits
|
||||
.code16
|
||||
.globl reset_vector
|
||||
reset_vector:
|
||||
.globl _start
|
||||
_start:
|
||||
.byte 0xe9
|
||||
.int _start - ( . + 2 )
|
||||
.int _start16bit - ( . + 2 )
|
||||
...
|
||||
```
|
||||
|
||||
Here we can see the `jmp` instruction [opcode](http://ref.x86asm.net/coder32.html#xE9), which is `0xe9`, and its destination address at `_start - ( . + 2)`.
|
||||
Here we can see the `jmp` instruction [opcode](http://ref.x86asm.net/coder32.html#xE9), which is `0xe9`, and its destination address at `_start16bit - ( . + 2)`.
|
||||
|
||||
We can also see that the `reset` section is `16` bytes and that is compiled to start from `0xfffffff0` address (`src/cpu/x86/16bit/reset16.lds`):
|
||||
We can also see that the `reset` section is `16` bytes and that is compiled to start from `0xfffffff0` address (`src/cpu/x86/16bit/reset16.ld`):
|
||||
|
||||
```
|
||||
SECTIONS {
|
||||
/* Trigger an error if I have an unuseable start address */
|
||||
_bogus = ASSERT(_start16bit >= 0xffff0000, "_start16bit too low. Please report.");
|
||||
_ROMTOP = 0xfffffff0;
|
||||
. = _ROMTOP;
|
||||
.reset . : {
|
||||
*(.reset)
|
||||
. = 15 ;
|
||||
*(.reset);
|
||||
. = 15;
|
||||
BYTE(0x00);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user