release 3.14
https://sourceforge.net/projects/elilo/files/elilo/elilo-3.14/
This commit is contained in:
parent
e351d8fbea
commit
82f7288853
29 changed files with 659 additions and 235 deletions
|
@ -107,12 +107,12 @@ typedef union x86_64_boot_params {
|
|||
/* 0x06 */ UINT8 orig_video_mode; /* LDR */
|
||||
/* 0x07 */ UINT8 orig_video_cols; /* LDR */
|
||||
|
||||
/* 0x08 */ UINT16 unused_1; /* unused */
|
||||
/* 0x08 */ UINT16 pad_1; /* unused */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x0A */ UINT16 orig_ega_bx; /* LDR */
|
||||
|
||||
/* 0x0C */ UINT16 unused_2; /* unused */
|
||||
/* 0x0C */ UINT16 pad_2; /* unused */
|
||||
|
||||
/* Screen height before passing control to kernel. */
|
||||
/* 0x0E */ UINT8 orig_video_rows; /* LDR */
|
||||
|
@ -174,7 +174,7 @@ typedef union x86_64_boot_params {
|
|||
/* 0x4E */ UINT32 bios_code_len; /* LDR */
|
||||
/* 0x52 */ UINT16 bios_data_len; /* LDR */
|
||||
|
||||
/* 0x54 */ UINT8 unused_3[0x2C]; /* unused */
|
||||
/* 0x54 */ UINT8 pad_3[0x2C]; /* unused */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x80 */ UINT8 hd0_info[0x10]; /* LDR */
|
||||
|
@ -184,7 +184,7 @@ typedef union x86_64_boot_params {
|
|||
/* 0xA0 */ UINT16 mca_info_len; /* LDR */
|
||||
/* 0xA2 */ UINT8 mca_info_buf[0x10]; /* LDR */
|
||||
|
||||
/* 0xB2 */ UINT8 unused_4[0x10E]; /* unused */
|
||||
/* 0xB2 */ UINT8 pad_4[0x10E]; /* unused */
|
||||
|
||||
/* EFI boot loader signature. */
|
||||
/* 0x1C0 */ UINT8 efi_loader_sig[4]; /* LDR */
|
||||
|
@ -209,9 +209,9 @@ typedef union x86_64_boot_params {
|
|||
/* Available contiguous extended memory in KB. */
|
||||
/* 0x1E0 */ UINT32 alt_mem_k; /* LDR */
|
||||
|
||||
/* 0x1E4 */ UINT32 unused_51; /* unused */
|
||||
/* 0x1E4 */ UINT32 pad_51; /* unused */
|
||||
/* 0x1E8 */ UINT8 e820_nrmap;
|
||||
/* 0x1E9 */ UINT32 unused_52[2]; /* unused */
|
||||
/* 0x1E9 */ UINT32 pad_52[2]; /* unused */
|
||||
|
||||
/* Size of setup code in sectors (1 sector == 512 bytes). */
|
||||
/* 0x1F1 */ UINT8 setup_sectors; /* BLD */
|
||||
|
@ -220,15 +220,10 @@ typedef union x86_64_boot_params {
|
|||
/* 0x1F2 */ UINT16 mount_root_rdonly; /* BLD */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x1F4 */ UINT16 sys_size; /* BLD */
|
||||
/* 0x1F4 */ UINT32 sys_size; /* BLD */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x1F6 */ UINT16 swap_dev; /* BLD */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x1F8 */ UINT16 ramdisk_flags; /* BLD */
|
||||
#define RAMDISK_PROMPT 0x8000
|
||||
#define RAMDISK_LOAD 0x4000
|
||||
/* 0x1F8 */ UINT16 ram_size_DNU; /* BLD */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x1FA */ UINT16 video_mode_flag; /* BLD */
|
||||
|
@ -236,12 +231,8 @@ typedef union x86_64_boot_params {
|
|||
/* %%TBD */
|
||||
/* 0x1FC */ UINT16 orig_root_dev; /* BLD */
|
||||
|
||||
/* 0x1FE */ UINT8 unused_6; /* unused */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x1FF */ UINT8 aux_dev_info; /* LDR */
|
||||
#define NO_MOUSE 0x00
|
||||
#define FOUND_MOUSE 0xAA
|
||||
/* 0x1FE */ UINT16 boot_flag; /* ? */
|
||||
|
||||
/* Jump past setup data (not used in EFI). */
|
||||
/* 0x200 */ UINT16 jump; /* BLD */
|
||||
|
@ -283,16 +274,21 @@ typedef union x86_64_boot_params {
|
|||
/* 0x21C */ UINT32 initrd_size; /* LDR */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x220 */ UINT32 bootsect_helper; /* BLD */
|
||||
/* 0x220 */ UINT32 bootsect_helper_DNU; /* BLD */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x224 */ UINT16 heap_end_ptr; /* LDR */
|
||||
|
||||
/* %%TBD */
|
||||
/* 0x226 */ UINT16 unused_7; /* LDR */
|
||||
/* 0x226 */ UINT8 ext_loader_ver; /* LDR */
|
||||
/* 0x227 */ UINT8 ext_loader_type; /* LDR */
|
||||
|
||||
/* 0x228 */ UINT32 cmdline_addr; /* LDR */
|
||||
/* 0x22C */ UINT32 unused_8[41];
|
||||
/* 0x22C */ UINT32 initrd_addr_max; /* BLD */
|
||||
/* 0x230 */ UINT32 kernel_alignment; /* BLD */
|
||||
/* 0x234 */ UINT8 relocatable_kernel; /* BLD */
|
||||
/* 0x235 */ UINT8 pad_8[3];
|
||||
/* 0x238 */ UINT32 pad_9[38];
|
||||
/* 0x2D0 */ UINT8 e820_map[2560];
|
||||
} s;
|
||||
} boot_params_t;
|
||||
|
@ -368,6 +364,7 @@ extern UINT8 rmswitch_image[];
|
|||
extern UINTN rmswitch_size;
|
||||
|
||||
extern INTN x86_64_use_legacy_free_boot();
|
||||
extern INTN x86_64_text_mode();
|
||||
|
||||
/*
|
||||
* How to jump to kernel code
|
||||
|
@ -382,7 +379,6 @@ start_kernel(VOID *kentry, boot_params_t *bp)
|
|||
UINT16 kernel_cs;
|
||||
} jumpvector;
|
||||
VOID *jump_start;
|
||||
uint64_t temp;
|
||||
|
||||
/*
|
||||
* Disable interrupts.
|
||||
|
@ -390,22 +386,16 @@ start_kernel(VOID *kentry, boot_params_t *bp)
|
|||
asm volatile ( "cli" : : );
|
||||
|
||||
/*
|
||||
* Relocate kernel (if needed), and initrd (if present).
|
||||
* Copy kernel first, in case kernel was loaded overlapping where we're
|
||||
* planning to copy the initrd. This assumes that the initrd didn't
|
||||
* get loaded overlapping where we're planning to copy the kernel, but
|
||||
* that's pretty unlikely since we couldn't alloc that space for the
|
||||
* kernel (or the kernel would already be there).
|
||||
* Relocate kernel (if needed).
|
||||
* This assumes that the initrd didn't get loaded overlapping where
|
||||
* we're planning to copy the kernel, but that's pretty unlikely
|
||||
* since we couldn't alloc that space for the kernel (or the kernel
|
||||
* would already be there).
|
||||
*/
|
||||
if (kernel_start != kernel_load_address) {
|
||||
MEMCPY(kernel_start, kernel_load_address, kernel_size);
|
||||
}
|
||||
|
||||
if (bp->s.initrd_start) {
|
||||
temp = bp->s.initrd_start;
|
||||
MEMCPY(INITRD_START, temp , bp->s.initrd_size);
|
||||
bp->s.initrd_start = INITRD_START;
|
||||
}
|
||||
/*
|
||||
* Copy boot sector, setup data and command line
|
||||
* to final resting place. We need to copy
|
||||
|
@ -468,7 +458,8 @@ start_kernel(VOID *kentry, boot_params_t *bp)
|
|||
}
|
||||
|
||||
typedef struct sys_img_options {
|
||||
UINT8 nothing_yet;
|
||||
UINT8 dummy; /* forces non-zero offset for first field */
|
||||
UINT8 text_mode; /* do not try to initialize Graphics Output Protocol */
|
||||
} sys_img_options_t;
|
||||
|
||||
#endif /* __ELILO_SYSDEPS_X86_64_H__ */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue