Module Name: src
Committed By: christos
Date: Wed Aug 25 18:11:54 UTC 2010
Modified Files:
src/sys/arch/sparc/stand/boot: boot.c
src/sys/arch/sparc/stand/common: promdev.c promdev.h
Log Message:
Don't LOAD_BACKWARDS for floppies.
To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/sparc/stand/boot/boot.c
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/sparc/stand/common/promdev.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/sparc/stand/common/promdev.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/sparc/stand/boot/boot.c
diff -u src/sys/arch/sparc/stand/boot/boot.c:1.24 src/sys/arch/sparc/stand/boot/boot.c:1.25
--- src/sys/arch/sparc/stand/boot/boot.c:1.24 Sun Mar 4 01:00:47 2007
+++ src/sys/arch/sparc/stand/boot/boot.c Wed Aug 25 14:11:54 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: boot.c,v 1.24 2007/03/04 06:00:47 christos Exp $ */
+/* $NetBSD: boot.c,v 1.25 2010/08/25 18:11:54 christos Exp $ */
/*-
* Copyright (c) 1982, 1986, 1990, 1993
@@ -170,6 +170,7 @@
vaddr_t va;
paddr_t pa;
u_long size;
+ int flags = LOAD_KERNEL;
if ((fd = open(kernel, 0)) < 0)
return (errno ? errno : ENOENT);
@@ -224,8 +225,11 @@
loadaddrmask = 0x07ffffffUL;
}
+ if (promdev_isfloppy())
+ flags &= ~LOAD_BACKWARDS;
+
marks[MARK_START] = 0;
- error = fdloadfile(fd, marks, LOAD_KERNEL);
+ error = fdloadfile(fd, marks, flags);
out:
close(fd);
return (error);
Index: src/sys/arch/sparc/stand/common/promdev.c
diff -u src/sys/arch/sparc/stand/common/promdev.c:1.23 src/sys/arch/sparc/stand/common/promdev.c:1.24
--- src/sys/arch/sparc/stand/common/promdev.c:1.23 Sun Oct 18 02:24:21 2009
+++ src/sys/arch/sparc/stand/common/promdev.c Wed Aug 25 14:11:54 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: promdev.c,v 1.23 2009/10/18 06:24:21 tsutsui Exp $ */
+/* $NetBSD: promdev.c,v 1.24 2010/08/25 18:11:54 christos Exp $ */
/*
* Copyright (c) 1993 Paul Kranenburg
@@ -106,6 +106,14 @@
#endif
+int
+bootdev_isfloppy(void)
+{
+ return strncmp(prom_bootdevice, "fd", 2) == 0 ||
+ strstr(prom_bootdevice, "SUNW,fdtwo") != NULL ||
+ strstr(prom_bootdevice, "fdthree") != NULL;
+}
+
void
putchar(int c)
{
@@ -219,9 +227,7 @@
* Don't check disklabel on floppy boot since
* reopening it could cause Data Access Exception later.
*/
- if (strncmp(prom_bootdevice, "fd", 2) == 0 ||
- strstr(prom_bootdevice, "SUNW,fdtwo") != NULL ||
- strstr(prom_bootdevice, "fdthree") != NULL)
+ if (bootdev_isfloppy())
return 0;
/*
Index: src/sys/arch/sparc/stand/common/promdev.h
diff -u src/sys/arch/sparc/stand/common/promdev.h:1.14 src/sys/arch/sparc/stand/common/promdev.h:1.15
--- src/sys/arch/sparc/stand/common/promdev.h:1.14 Mon Jan 12 06:32:44 2009
+++ src/sys/arch/sparc/stand/common/promdev.h Wed Aug 25 14:11:54 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: promdev.h,v 1.14 2009/01/12 11:32:44 tsutsui Exp $ */
+/* $NetBSD: promdev.h,v 1.15 2010/08/25 18:11:54 christos Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -70,6 +70,9 @@
extern int (*pmap_map)(vaddr_t, paddr_t, psize_t);
extern int (*pmap_extract)(vaddr_t, paddr_t *);
+/* In promdev.c */
+extern int bootdev_isfloppy(void);
+
/* In str0.S: */
extern void sparc_noop(void);
extern void *romp;