- Initial checkin of the freebios2 tree
[coreboot.git] / src / cpu / i386 / reset16.inc
1         .section ".reset"
2         .code16
3 .globl  EXT(reset_vector)
4 EXT(reset_vector):
5 #if _ROMBASE >= 0xffff0000
6         /* Hmm.
7          * _start_offset is the low 16 bits of _start.
8          * Theoretically we should have problems but it compiles
9          * and links properly with binutils 2.9.5 & 2.10.90
10          * This is probably a case that needs fixing in binutils.
11          * And then we can just use _start.
12          * We also need something like the assume directive in
13          * other assemblers to tell it where the segment registers
14          * are pointing in memory right now.
15          */
16         jmp     EXT(_start_offset)
17 #elif (_ROMBASE < 0x100000)
18         ljmp    $((_ROMBASE & 0xf0000)>>4),$EXT(_start_offset);
19 #else
20 #error  _ROMBASE is an unsupported value
21 #endif
22
23         . = 0x8;
24         .code32
25         jmp     EXT(protected_start)
26
27         .previous