Package: syslinux Severity: wishlist Tags: patch Please can you bring back default64 option so that lenny CDs can use it?
Patch attached, based on the previous one. Tested with qemu/qemu-system-x86_64 and known to work. Thanks -- System Information: Debian Release: lenny/sid APT prefers stable APT policy: (500, 'stable') Architecture: amd64 (x86_64) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18-5-amd64 Locale: LANG=ca_AD.UTF-8, LC_CTYPE=ca_AD.UTF-8 (charmap=UTF-8)
diff -ur syslinux-3.55.old/cpuinit.inc syslinux-3.55/cpuinit.inc --- syslinux-3.55.old/cpuinit.inc 2008-01-11 07:39:36.000000000 +0100 +++ syslinux-3.55/cpuinit.inc 2008-01-22 21:38:31.000000000 +0100 @@ -48,12 +48,10 @@ rep movsd ; -; Check if we're 386 (as opposed to 486+); if so we need to blank out -; the WBINVD instruction +; Determine if we're running on a 64-bit CPU ; -; We check for 486 by setting EFLAGS.AC +; First, check if we're 386. If so, we need to blank out the WBINVD instruction ; -%if DO_WBINVD pushfd ; Save the good flags pushfd pop eax @@ -69,9 +67,40 @@ ; ; 386 - Looks like we better blot out the WBINVD instruction ; +%if DO_WBINVD mov byte [try_wbinvd],0c3h ; Near RET -is_486: %endif ; DO_WBINVD + jmp is_32bit +is_486: +; +; Check if this CPU supports the CPUID command +; + pushfd ; Save the flags again + pushfd + pop eax + mov ebx,eax + xor eax,(1 << 21) ; CPUID bit + push eax + popfd + pushfd + pop eax + popfd ; Restore the original flags + xor eax,ebx + jz is_32bit +; +; Now check for the 64-bit flag (bit 29) in the CPU extended features byte ($8000_0001, edx) +; + mov eax, 80000000h ; Find last AMD cpuid # + cpuid + cmp eax, 80000000h + jbe is_32bit + mov eax, 80000001h ; Read AMD CPU flags + cpuid + bt edx, 29 ; 64-bit if bit 29 is set + jnc is_32bit + +is_64bit: mov byte [Is64Bit],1 ; Flag that we're 64-bit +is_32bit: section .data err_noram db 'It appears your computer has less than ' diff -ur syslinux-3.55.old/keywords syslinux-3.55/keywords --- syslinux-3.55.old/keywords 2008-01-11 07:39:36.000000000 +0100 +++ syslinux-3.55/keywords 2008-01-22 21:33:50.000000000 +0100 @@ -4,6 +4,7 @@ append config default +default64 display font implicit diff -ur syslinux-3.55.old/keywords.inc syslinux-3.55/keywords.inc --- syslinux-3.55.old/keywords.inc 2008-01-11 07:39:36.000000000 +0100 +++ syslinux-3.55/keywords.inc 2008-01-22 21:39:07.000000000 +0100 @@ -50,6 +50,7 @@ keyword include, pc_filecmd, pc_include keyword append, pc_append keyword default, pc_default + keyword default64, pc_default64 keyword display, pc_filecmd, get_msg_file keyword font, pc_filecmd, loadfont keyword implicit, pc_setint16, AllowImplicit diff -ur syslinux-3.55.old/kwdhash.gen syslinux-3.55/kwdhash.gen --- syslinux-3.55.old/kwdhash.gen 2008-01-11 07:39:41.000000000 +0100 +++ syslinux-3.55/kwdhash.gen 2008-01-22 21:33:50.000000000 +0100 @@ -4,6 +4,7 @@ hash_append equ 0xc53999a4 hash_config equ 0xc0c69547 hash_default equ 0xcc5159ed +hash_default64 equ 0x4567b1c5 hash_display equ 0xd509bc40 hash_font equ 0x0032b1b4 hash_implicit equ 0xa6f50207 diff -ur syslinux-3.55.old/parseconfig.inc syslinux-3.55/parseconfig.inc --- syslinux-3.55.old/parseconfig.inc 2008-01-11 07:39:36.000000000 +0100 +++ syslinux-3.55/parseconfig.inc 2008-01-22 21:33:50.000000000 +0100 @@ -20,7 +20,20 @@ ; ; "default" command ; -pc_default: mov di,default_cmd +pc_default: cmp byte [HasDefault64],0 ; Check if we accepted 'default64' + ja pc_getline ; If so, do nothing + mov di,default_cmd + call getline + mov byte [di-1],0 ; null-terminate + ret + +; +; "default64" command +; +pc_default64: cmp byte [Is64Bit],0 ; Make sure cpu is 64-bit + je pc_getline + mov byte [HasDefault64],1 ; Note that we saw a default64 + mov di,default_cmd call getline mov byte [di-1],0 ; null-terminate ret @@ -431,6 +444,8 @@ SerialPort dw 0 ; Serial port base (or 0 for no serial port) VKernelBytes dw 0 ; Number of bytes used by vkernels VKernel db 0 ; Have we seen any "label" statements? +Is64Bit db 0 ; Is this CPU 64-bit? +HasDefault64 db 0 ; We've seen a 'default64' statement %if IS_PXELINUX IPAppend db 0 ; Default IPAPPEND option