diff options
| author | Michael Brown | 2016-02-19 00:23:38 +0100 |
|---|---|---|
| committer | Michael Brown | 2016-02-19 00:23:38 +0100 |
| commit | 31b5c2e753dbcb3d5023bccc8e644d0bcb56b2ad (patch) | |
| tree | 536967f3f34fba94970a31cbde3fe1d2cf657cce /src/arch/x86/prefix | |
| parent | [librm] Convert prot_call() to a real-mode near call (diff) | |
| download | ipxe-31b5c2e753dbcb3d5023bccc8e644d0bcb56b2ad.tar.gz ipxe-31b5c2e753dbcb3d5023bccc8e644d0bcb56b2ad.tar.xz ipxe-31b5c2e753dbcb3d5023bccc8e644d0bcb56b2ad.zip | |
[librm] Provide an abstraction wrapper for prot_call
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/x86/prefix')
| -rw-r--r-- | src/arch/x86/prefix/dskprefix.S | 6 | ||||
| -rw-r--r-- | src/arch/x86/prefix/exeprefix.S | 5 | ||||
| -rw-r--r-- | src/arch/x86/prefix/hdprefix.S | 6 | ||||
| -rw-r--r-- | src/arch/x86/prefix/libprefix.S | 5 | ||||
| -rw-r--r-- | src/arch/x86/prefix/lkrnprefix.S | 5 | ||||
| -rw-r--r-- | src/arch/x86/prefix/nbiprefix.S | 6 | ||||
| -rw-r--r-- | src/arch/x86/prefix/pxeprefix.S | 4 | ||||
| -rw-r--r-- | src/arch/x86/prefix/romprefix.S | 6 | ||||
| -rw-r--r-- | src/arch/x86/prefix/undiloader.S | 5 |
9 files changed, 29 insertions, 19 deletions
diff --git a/src/arch/x86/prefix/dskprefix.S b/src/arch/x86/prefix/dskprefix.S index 041ec4c4c..0503f113d 100644 --- a/src/arch/x86/prefix/dskprefix.S +++ b/src/arch/x86/prefix/dskprefix.S @@ -18,6 +18,8 @@ FILE_LICENCE ( GPL2_ONLY ) +#include <librm.h> + .equ BOOTSEG, 0x07C0 /* original address of boot-sector */ .equ SYSSEG, 0x1000 /* system loaded at SYSSEG<<4 */ @@ -370,8 +372,8 @@ start_runtime: lret .section ".text16", "awx", @progbits 1: - pushl $main - call prot_call + /* Run iPXE */ + virtcall main /* Uninstall iPXE */ call uninstall diff --git a/src/arch/x86/prefix/exeprefix.S b/src/arch/x86/prefix/exeprefix.S index 9598122bc..c351456e2 100644 --- a/src/arch/x86/prefix/exeprefix.S +++ b/src/arch/x86/prefix/exeprefix.S @@ -24,6 +24,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ) +#include <librm.h> + /* Initial temporary stack size */ #define EXE_STACK_SIZE 0x400 @@ -148,8 +150,7 @@ _exe_start: movl %esi, cmdline_phys /* Run iPXE */ - pushl $main - call prot_call + virtcall main /* Uninstall iPXE */ call uninstall diff --git a/src/arch/x86/prefix/hdprefix.S b/src/arch/x86/prefix/hdprefix.S index 6caf12fc0..24f5d3850 100644 --- a/src/arch/x86/prefix/hdprefix.S +++ b/src/arch/x86/prefix/hdprefix.S @@ -1,5 +1,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ) +#include <librm.h> + .text .arch i386 .section ".prefix", "awx", @progbits @@ -99,8 +101,8 @@ start_image: lret .section ".text16", "awx", @progbits 1: - pushl $main - call prot_call + /* Run iPXE */ + virtcall main /* Uninstall iPXE */ call uninstall diff --git a/src/arch/x86/prefix/libprefix.S b/src/arch/x86/prefix/libprefix.S index 7eb1e501f..425f51484 100644 --- a/src/arch/x86/prefix/libprefix.S +++ b/src/arch/x86/prefix/libprefix.S @@ -24,6 +24,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ) +#include <librm.h> + .arch i386 /* Image compression enabled */ @@ -887,8 +889,7 @@ payload_death_message: * ready for the copy to the new location. */ progress " relocate\n" - pushl $relocate - call prot_call + virtcall relocate /* Jump back to .prefix segment */ pushw $1f diff --git a/src/arch/x86/prefix/lkrnprefix.S b/src/arch/x86/prefix/lkrnprefix.S index 41a5b4678..922181f0e 100644 --- a/src/arch/x86/prefix/lkrnprefix.S +++ b/src/arch/x86/prefix/lkrnprefix.S @@ -1,5 +1,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ) +#include <librm.h> + #define BZI_LOAD_HIGH_ADDR 0x100000 .text @@ -197,8 +199,7 @@ no_cmd_line: movl %ecx, initrd_len /* Run iPXE */ - pushl $main - call prot_call + virtcall main /* Uninstall iPXE */ call uninstall diff --git a/src/arch/x86/prefix/nbiprefix.S b/src/arch/x86/prefix/nbiprefix.S index c25c254e5..de38e4af6 100644 --- a/src/arch/x86/prefix/nbiprefix.S +++ b/src/arch/x86/prefix/nbiprefix.S @@ -1,5 +1,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ) +#include <librm.h> + .text .arch i386 .code16 @@ -66,8 +68,8 @@ _nbi_start: lret .section ".text16", "awx", @progbits 1: - pushl $main - call prot_call + /* Run iPXE */ + virtcall main /* Uninstall iPXE */ call uninstall diff --git a/src/arch/x86/prefix/pxeprefix.S b/src/arch/x86/prefix/pxeprefix.S index 2c6d7abb7..52ea18039 100644 --- a/src/arch/x86/prefix/pxeprefix.S +++ b/src/arch/x86/prefix/pxeprefix.S @@ -16,6 +16,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ) .org 0 .code16 +#include <librm.h> #include <undi.h> #define STACK_MAGIC ( 'L' + ( 'R' << 8 ) + ( 'E' << 16 ) + ( 'T' << 24 ) ) @@ -820,8 +821,7 @@ run_ipxe: movl %ecx, cached_dhcpack_phys /* Run main program */ - pushl $main - call prot_call + virtcall main /* Uninstall iPXE */ call uninstall diff --git a/src/arch/x86/prefix/romprefix.S b/src/arch/x86/prefix/romprefix.S index 941e2ce6b..f4ca20677 100644 --- a/src/arch/x86/prefix/romprefix.S +++ b/src/arch/x86/prefix/romprefix.S @@ -8,6 +8,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ) +#include <librm.h> #include <config/general.h> #include <config/branding.h> @@ -806,9 +807,8 @@ exec: /* Set %ds = %cs */ #endif /* AUTOBOOT_ROM_FILTER */ .endif - /* Call main() */ - pushl $main - call prot_call + /* Run iPXE */ + virtcall main /* Set up flat real mode for return to BIOS */ call flatten_real_mode diff --git a/src/arch/x86/prefix/undiloader.S b/src/arch/x86/prefix/undiloader.S index fb42637c8..530b48e8a 100644 --- a/src/arch/x86/prefix/undiloader.S +++ b/src/arch/x86/prefix/undiloader.S @@ -1,5 +1,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ) +#include <librm.h> + .text .code16 .arch i386 @@ -45,8 +47,7 @@ undiloader: .section ".text16", "ax", @progbits 1: /* Call UNDI loader C code */ - pushl $pxe_loader_call - call prot_call + virtcall pxe_loader_call 1: /* Restore registers and return */ popw %bx |
