From c0beec8bafea20437a8ec3cae89abfc6c53152af Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sat, 6 Sep 2008 03:19:03 +0100 Subject: [PATCH] [pxe] Add a dummy PXENV+ entry point at UNDI_CS:0000 Wyse Streaming Manager server (WLDRM13.BIN) assumes that the PXENV+ entry point is at UNDI_CS:0000; apparently, somebody at Wyse has difficulty distinguishing between the words "may" and "must"... Add a dummy entry point at UNDI_CS:0000, which just jumps to the correct entry point. --- src/arch/i386/interface/pxe/pxe_entry.S | 10 ++++++++++ src/arch/i386/scripts/i386.lds | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/arch/i386/interface/pxe/pxe_entry.S b/src/arch/i386/interface/pxe/pxe_entry.S index c55e581f..e5d327a5 100644 --- a/src/arch/i386/interface/pxe/pxe_entry.S +++ b/src/arch/i386/interface/pxe/pxe_entry.S @@ -103,6 +103,16 @@ pxenv: * none **************************************************************************** */ + /* Wyse Streaming Manager server (WLDRM13.BIN) assumes that + * the PXENV+ entry point is at UNDI_CS:0000; apparently, + * somebody at Wyse has difficulty distinguishing between the + * words "may" and "must"... + */ + .section ".text16.null" + .code16 +pxenv_null_entry: + jmp pxenv_entry + .section ".text16" .code16 pxenv_entry: diff --git a/src/arch/i386/scripts/i386.lds b/src/arch/i386/scripts/i386.lds index 7d63dae6..729ad30a 100644 --- a/src/arch/i386/scripts/i386.lds +++ b/src/arch/i386/scripts/i386.lds @@ -66,10 +66,12 @@ SECTIONS { . = _text16_link_addr; _text16 = .; - . += 1; /* Prevent NULL being valid */ + /* We need to allow code at the NULL address in .text16 */ .text16 : AT ( _text16_load_offset + __text16 ) { __text16 = .; + *(.text16.null) + . += 1; /* Prevent NULL being valid */ *(.text16) *(.text16.*) _etext16_progbits = .;