Module Name: src Committed By: jakllsch Date: Wed Jan 5 23:13:02 UTC 2011
Modified Files: src/sys/arch/i386/stand/boot: Makefile.boot biosboot.S boot2.c version src/sys/sys: bootblock.h Log Message: Pass a 64-bit boot partition base LBA into x86 /boot, while maintaining compatibility with existing bootxx code. To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/sys/arch/i386/stand/boot/Makefile.boot cvs rdiff -u -r1.7 -r1.8 src/sys/arch/i386/stand/boot/biosboot.S cvs rdiff -u -r1.50 -r1.51 src/sys/arch/i386/stand/boot/boot2.c cvs rdiff -u -r1.12 -r1.13 src/sys/arch/i386/stand/boot/version cvs rdiff -u -r1.50 -r1.51 src/sys/sys/bootblock.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/i386/stand/boot/Makefile.boot diff -u src/sys/arch/i386/stand/boot/Makefile.boot:1.47 src/sys/arch/i386/stand/boot/Makefile.boot:1.48 --- src/sys/arch/i386/stand/boot/Makefile.boot:1.47 Mon Dec 20 00:55:10 2010 +++ src/sys/arch/i386/stand/boot/Makefile.boot Wed Jan 5 23:13:01 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.boot,v 1.47 2010/12/20 00:55:10 jakllsch Exp $ +# $NetBSD: Makefile.boot,v 1.48 2011/01/05 23:13:01 jakllsch Exp $ S= ${.CURDIR}/../../../../.. @@ -32,7 +32,6 @@ .PATH: ${.CURDIR}/.. ${.CURDIR}/../../lib LDFLAGS+= -nostdlib -Wl,-N -Wl,-e,boot_start -# CPPFLAGS+= -D__daddr_t=int32_t CPPFLAGS+= -I ${.CURDIR}/.. -I ${.CURDIR}/../../lib -I ${S}/lib/libsa CPPFLAGS+= -I ${.OBJDIR} #CPPFLAGS+= -DDEBUG_MEMSIZE Index: src/sys/arch/i386/stand/boot/biosboot.S diff -u src/sys/arch/i386/stand/boot/biosboot.S:1.7 src/sys/arch/i386/stand/boot/biosboot.S:1.8 --- src/sys/arch/i386/stand/boot/biosboot.S:1.7 Mon Dec 20 00:39:06 2010 +++ src/sys/arch/i386/stand/boot/biosboot.S Wed Jan 5 23:13:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: biosboot.S,v 1.7 2010/12/20 00:39:06 jakllsch Exp $ */ +/* $NetBSD: biosboot.S,v 1.8 2011/01/05 23:13:01 jakllsch Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. @@ -37,8 +37,8 @@ * * On entry: * %dl BIOS drive number - * %ebx Sector number of netbsd partition - * %ds:%esi Boot parameter block (patched by installboot) + * %ecx:%ebx Sector number of NetBSD partition + * %ds:%si Boot parameter block (patched by installboot) * %cs 0x1000 * %ds, %es, %ss All zero * %sp near 0xfffc @@ -77,6 +77,8 @@ mov %cs, %ax mov %ax, %es + movl %ecx, %ebp /* move LBA out of the way */ + /* Grab boot_params patched into bootxx by installboot */ cmpl $X86_BOOT_MAGIC_1,-4(%si) /* sanity check ptr */ jne 2f @@ -110,11 +112,17 @@ rep stosl - and $0xff, %edx + testb $X86_BP_FLAGS_LBA64VALID, boot_params+4 + jnz 1f + xorl %ebp, %ebp /* high part of LBA is not valid */ +1: + + movzbl %dl, %edx + push %ebp /* high 32 bits of first sector */ push %ebx /* first sector of bios partition */ push %edx /* bios disk */ call _C_LABEL(boot2) /* C bootstrap code */ - add $8, %esp + addl $12, %esp call prot_to_real .code16 Index: src/sys/arch/i386/stand/boot/boot2.c diff -u src/sys/arch/i386/stand/boot/boot2.c:1.50 src/sys/arch/i386/stand/boot/boot2.c:1.51 --- src/sys/arch/i386/stand/boot/boot2.c:1.50 Mon Dec 20 01:12:44 2010 +++ src/sys/arch/i386/stand/boot/boot2.c Wed Jan 5 23:13:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: boot2.c,v 1.50 2010/12/20 01:12:44 jakllsch Exp $ */ +/* $NetBSD: boot2.c,v 1.51 2011/01/05 23:13:01 jakllsch Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -92,7 +92,7 @@ int errno; int boot_biosdev; -u_int boot_biossector; +daddr_t boot_biossector; static const char * const names[][2] = { { "netbsd", "netbsd.gz" }, @@ -112,7 +112,7 @@ char *sprint_bootsel(const char *); void bootit(const char *, int, int); void print_banner(void); -void boot2(int, u_int); +void boot2(int, uint64_t); void command_help(char *); void command_ls(char *); @@ -276,7 +276,7 @@ * biossector: Sector number of the NetBSD partition */ void -boot2(int biosdev, u_int biossector) +boot2(int biosdev, uint64_t biossector) { extern char twiddle_toggle; int currname; Index: src/sys/arch/i386/stand/boot/version diff -u src/sys/arch/i386/stand/boot/version:1.12 src/sys/arch/i386/stand/boot/version:1.13 --- src/sys/arch/i386/stand/boot/version:1.12 Wed Jan 5 22:28:05 2011 +++ src/sys/arch/i386/stand/boot/version Wed Jan 5 23:13:01 2011 @@ -1,4 +1,4 @@ -$NetBSD: version,v 1.12 2011/01/05 22:28:05 jakllsch Exp $ +$NetBSD: version,v 1.13 2011/01/05 23:13:01 jakllsch Exp $ NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this file is important - make sure the entries are appended on end, last item @@ -44,3 +44,4 @@ restored on ACPI resume. 5.5: Adjust stack and heap areas to not overlap. 5.6: GUID Partition Table support. +5.7: Recognize 64-bit LBA from bootxx. Index: src/sys/sys/bootblock.h diff -u src/sys/sys/bootblock.h:1.50 src/sys/sys/bootblock.h:1.51 --- src/sys/sys/bootblock.h:1.50 Sun Jan 17 14:54:43 2010 +++ src/sys/sys/bootblock.h Wed Jan 5 23:13:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: bootblock.h,v 1.50 2010/01/17 14:54:43 drochner Exp $ */ +/* $NetBSD: bootblock.h,v 1.51 2011/01/05 23:13:01 jakllsch Exp $ */ /*- * Copyright (c) 2002-2004 The NetBSD Foundation, Inc. @@ -1070,6 +1070,7 @@ #define X86_BP_FLAGS_PASSWORD 2 #define X86_BP_FLAGS_NOMODULES 4 #define X86_BP_FLAGS_NOBOOTCONF 8 +#define X86_BP_FLAGS_LBA64VALID 0x10 /* values for bp_consdev */ #define X86_BP_CONSDEV_PC 0