Author: nyan
Date: Thu Dec 31 12:17:38 2009
New Revision: 201340
URL: http://svn.freebsd.org/changeset/base/201340

Log:
  Don't use 15M-16M area on pc98.  It's reserved for some devices.
  
  MFC after:    2 week

Modified:
  head/sys/boot/common/module.c
  head/sys/boot/pc98/Makefile.inc

Modified: head/sys/boot/common/module.c
==============================================================================
--- head/sys/boot/common/module.c       Thu Dec 31 12:05:48 2009        
(r201339)
+++ head/sys/boot/common/module.c       Thu Dec 31 12:17:38 2009        
(r201340)
@@ -351,6 +351,9 @@ file_loadraw(char *type, char *name)
     char                       *cp;
     int                                fd, got;
     vm_offset_t                        laddr;
+#ifdef PC98
+    struct stat                        st;
+#endif
 
     /* We can't load first */
     if ((file_findfile(NULL, NULL)) == NULL) {
@@ -372,6 +375,14 @@ file_loadraw(char *type, char *name)
        return(CMD_ERROR);
     }
 
+#ifdef PC98
+    /* We cannot use 15M-16M area on pc98. */
+    if (loadaddr < 0x1000000 &&
+       fstat(fd, &st) == 0 &&
+       (st.st_size == -1 || loadaddr + st.st_size > 0xf00000))
+       loadaddr = 0x1000000;
+#endif
+
     laddr = loadaddr;
     for (;;) {
        /* read in 4k chunks; size is not really important */
@@ -477,6 +488,14 @@ mod_loadkld(const char *kldname, int arg
        ;
 
     do {
+#ifdef PC98
+       /* We cannot use 15M-16M area on pc98. */
+       struct stat st;
+       if (loadaddr < 0x1000000 &&
+           stat(filename, &st) == 0 &&
+           (st.st_size == -1 || loadaddr + st.st_size > 0xf00000))
+           loadaddr = 0x1000000;
+#endif
        err = file_load(filename, loadaddr, &fp);
        if (err)
            break;

Modified: head/sys/boot/pc98/Makefile.inc
==============================================================================
--- head/sys/boot/pc98/Makefile.inc     Thu Dec 31 12:05:48 2009        
(r201339)
+++ head/sys/boot/pc98/Makefile.inc     Thu Dec 31 12:17:38 2009        
(r201340)
@@ -7,7 +7,7 @@ BINDIR?=        /boot
 LOADER_ADDRESS?=0x200000
 CFLAGS+=       -ffreestanding -mpreferred-stack-boundary=2 \
                -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 \
-               -Os
+               -Os -DPC98
 LDFLAGS+=      -nostdlib
 
 # BTX components
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to