SYSLINUX COMBOOT (16-bit) image format.
Definition in file comboot.c.
| static int comboot_exec_loop |
( |
struct image * |
image | ) |
|
|
static |
Execute COMBOOT image.
- Parameters
-
- Return values
-
Definition at line 124 of file comboot.c.
139 DBGC (
image,
"executing 16-bit COMBOOT image at %4x:0100\n",
166 "xorw %%ax, %%ax\n\t" 167 "xorw %%bx, %%bx\n\t" 168 "xorw %%cx, %%cx\n\t" 169 "xorw %%dx, %%dx\n\t" 170 "xorw %%si, %%si\n\t" 171 "xorw %%di, %%di\n\t" 172 "xorw %%bp, %%bp\n\t" 184 DBGC (
image,
"COMBOOT %s: exited to run kernel %s\n",
189 DBGC (
image,
"COMBOOT %s: exited after executing command\n",
#define COMBOOT_PSP_SEG
Segment used for COMBOOT PSP and image.
static __always_inline void * real_to_virt(unsigned int segment, unsigned int offset)
Convert segment:offset address to virtual address.
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
static void comboot_init_psp(struct image *image, void *seg)
Initialize PSP.
void comboot_force_text_mode(void)
Set default text mode.
void unhook_comboot_interrupts()
Unhook BIOS interrupts related to COMBOOT API (INT 20h, 21h, 22h)
__asm__ __volatile__("call *%9" :"=a"(result), "=c"(discard_ecx), "=d"(discard_edx) :"d"(0), "a"(code), "b"(0), "c"(in_phys), "D"(0), "S"(out_phys), "m"(hypercall))
#define COMBOOT_EXIT_RUN_KERNEL
void unregister_image(struct image *image)
Unregister executable image.
__asm__(".section \".rodata\", \"a\", " PROGBITS "\n\t" "\nprivate_key_data:\n\t" ".size private_key_data, ( . - private_key_data )\n\t" ".equ private_key_len, ( . - private_key_data )\n\t" ".previous\n\t")
void hook_comboot_interrupts()
Hook BIOS interrupts related to COMBOOT API (INT 20h, 21h, 22h)
#define COMBOOT_EXIT_COMMAND
struct image * replacement
Replacement image.
struct golan_mkey_seg seg
#define REAL_CODE(asm_code_str)
References __asm__(), __volatile__(), assert(), COMBOOT_EXIT, COMBOOT_EXIT_COMMAND, COMBOOT_EXIT_RUN_KERNEL, comboot_force_text_mode(), comboot_init_psp(), COMBOOT_PSP_SEG, comboot_return, DBGC, hook_comboot_interrupts(), image::name, REAL_CODE, real_to_virt(), image::replacement, rmsetjmp, seg, state, unhook_comboot_interrupts(), and unregister_image().
Referenced by comboot_exec().
| static int comboot_prepare_segment |
( |
struct image * |
image | ) |
|
|
static |
Load COMBOOT image into memory, preparing a segment and returning it.
- Parameters
-
- Return values
-
Definition at line 237 of file comboot.c.
240 size_t filesz,
memsz;
254 DBGC (
image,
"COMBOOT %s: could not prepare segment: %s\n",
struct arbelprm_rc_send_wqe rc
const void * data
Read-only data.
#define COMBOOT_PSP_SEG
Segment used for COMBOOT PSP and image.
static __always_inline void * real_to_virt(unsigned int segment, unsigned int offset)
Convert segment:offset address to virtual address.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
char * strerror(int errno)
Retrieve string representation of error number.
size_t len
Length of raw file image.
int prep_segment(void *segment, size_t filesz, size_t memsz)
Prepare segment for loading.
struct golan_mkey_seg seg
void * memset(void *dest, int character, size_t len) __nonnull
References COMBOOT_PSP_SEG, image::data, DBGC, image::len, memcpy(), memset(), memsz, image::name, prep_segment(), rc, real_to_virt(), seg, and strerror().
Referenced by comboot_exec().