Jelajahi Sumber

Booting/linux-bootstrap-1.md: update to the latest coreboot code

Iru Cai 7 tahun lalu
induk
melakukan
2da09c8755
1 mengubah file dengan 10 tambahan dan 8 penghapusan
  1. 10 8
      Booting/linux-bootstrap-1.md

+ 10 - 8
Booting/linux-bootstrap-1.md

@@ -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);
     }
 }