[FREELDR]

Add ebp to the bios register set.

svn path=/trunk/; revision=53875
This commit is contained in:
Timo Kreuzer 2011-09-27 19:29:52 +00:00
parent 23b2b84ce7
commit 5bfa5255bf
6 changed files with 26 additions and 17 deletions

View file

@ -19,6 +19,7 @@
#include <asm.inc>
#include <arch/pc/x86common.h>
#include <arch/pc/pcbios.h>
.code64
EXTERN CallRealMode:PROC

View file

@ -19,6 +19,7 @@
#include <asm.inc>
#include <arch/pc/x86common.h>
#include <arch/pc/pcbios.h>
EXTERN _BootMain:PROC
EXTERN _InitIdt:PROC

View file

@ -45,6 +45,8 @@ Int386_esi:
.long 0
Int386_edi:
.long 0
Int386_ebp:
.long 0
Int386_ds:
.word 0

View file

@ -1,4 +1,5 @@
#include "../../include/arch/pc/pcbios.h"
Int386:
/* Save all registers + segment registers */

View file

@ -10,6 +10,7 @@ typedef struct
unsigned long esi;
unsigned long edi;
unsigned long ebp;
unsigned short ds;
unsigned short es;
@ -29,6 +30,7 @@ typedef struct
unsigned short si, _upper_si;
unsigned short di, _upper_di;
unsigned short bp, _upper_bp;
unsigned short ds;
unsigned short es;
@ -56,6 +58,7 @@ typedef struct
unsigned short si, _upper_si;
unsigned short di, _upper_di;
unsigned short bp, _upper_bp;
unsigned short ds;
unsigned short es;
@ -96,3 +99,19 @@ VOID SoftReboot(VOID); // Implemented in boot.S
VOID DetectHardware(VOID); // Implemented in hardware.c
#endif /* ! __ASM__ */
/* Layout of the REGS structure */
#define REGS_EAX 0
#define REGS_EBX 4
#define REGS_ECX 8
#define REGS_EDX 12
#define REGS_ESI 16
#define REGS_EDI 20
#define REGS_EBP 24
#define REGS_DS 28
#define REGS_ES 30
#define REGS_FS 32
#define REGS_GS 34
#define REGS_EFLAGS 36
#define REGS_SIZE 40

View file

@ -23,25 +23,10 @@
#define BIOSCALLBUFSEGMENT (BIOSCALLBUFFER/16) /* Buffer to store temporary data for any Int386() call */
#define BIOSCALLBUFOFFSET HEX(0000) /* Buffer to store temporary data for any Int386() call */
/* Layout of the REGS structure */
#define REGS_EAX 0
#define REGS_EBX 4
#define REGS_ECX 8
#define REGS_EDX 12
#define REGS_ESI 16
#define REGS_EDI 20
#define REGS_DS 24
#define REGS_ES 26
#define REGS_FS 28
#define REGS_GS 30
#define REGS_EFLAGS 32
#define REGS_SIZE 36
/* These addresses specify the realmode "BSS section" layout */
#define BSS_RealModeEntry (BSS_START + 0)
#define BSS_CallbackAddress (BSS_START + 4)
#define BSS_CallbackReturn (BSS_START + 8)
#define BSS_RegisterSet (BSS_START + 16) /* size = 36 */
#define BSS_CallbackReturn (BSS_START + 4)
#define BSS_RegisterSet (BSS_START + 8) /* size = 40 */
#define BSS_IntVector (BSS_START + 52)
#define BSS_PxeEntryPoint (BSS_START + 56)
#define BSS_PxeBufferSegment (BSS_START + 60)