[pxe] Add a dummy PXENV+ entry point at UNDI_CS:0000
authorMichael Brown <mcb30@etherboot.org>
Sat, 6 Sep 2008 02:19:03 +0000 (03:19 +0100)
committerMichael Brown <mcb30@etherboot.org>
Sat, 6 Sep 2008 02:19:03 +0000 (03:19 +0100)
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
src/arch/i386/scripts/i386.lds

index c55e581..e5d327a 100644 (file)
@@ -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:
index 7d63dae..729ad30 100644 (file)
@@ -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 = .;