PERFORCE change 50662 for review

Andrew Reisse areisse at FreeBSD.org
Thu Apr 8 18:08:24 GMT 2004


http://perforce.freebsd.org/chv.cgi?CH=50662

Change 50662 by areisse at areisse_g4 on 2004/04/08 11:07:35

	bring in bootx 59.1.1

Affected files ...

.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/bootinfo.hdr#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/Control2.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/MAC-PARTS.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/ci.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/ci_io.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/sl_words.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/CaseTables.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/HFSCompare.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/cache.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs_bswap.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs_dinode.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs_dir.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/fs.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/hfs.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/net.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ufs.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ufs_byteorder.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ufs_byteorder.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/boot_args.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/ci.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/device_tree.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/fs.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/libclite.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/sl.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/sl_words.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/bsearch.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/bswap.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/mem.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/prf.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/printf.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/sprintf.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/string.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/strtol.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/zalloc.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/appleboot.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/clut.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/device_tree.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/display.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/drivers.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/elf.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/elf.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/failedboot.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/lzss.c#1 branch
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/macho.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/main.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/netboot.h#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/fcode-to-c.tproj/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/fcode-to-c.tproj/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/fcode-to-c.tproj/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/fcode-to-c.tproj/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/fcode-to-c.tproj/fcode-to-c.c#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/macho-to-xcoff.tproj/Makefile#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/macho-to-xcoff.tproj/Makefile.postamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/macho-to-xcoff.tproj/Makefile.preamble#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/macho-to-xcoff.tproj/PB.project#2 integrate
.. //depot/projects/trustedbsd/sedarwin73/apsl/BootX/macho-to-xcoff.tproj/macho-to-xcoff.c#2 integrate

Differences ...

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/Makefile#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/Makefile.postamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/Makefile.preamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/PB.project#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/Makefile#2 (text+ko) ====

@@ -31,7 +31,7 @@
 
 HEADER_PATHS = -I$(SRCROOT)/bootx.tproj/include.subproj
 NEXTSTEP_PB_CFLAGS = -static
-NEXTSTEP_PB_LDFLAGS = -nostdlib -e _StartTVector -seg1addr 01C00000
+NEXTSTEP_PB_LDFLAGS = -nostdlib -e _StartTVector -seg1addr 05600000
 
 
 NEXTSTEP_OBJCPLUS_COMPILER = /usr/bin/cc

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/Makefile.postamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/Makefile.preamble#2 (text+ko) ====

@@ -127,7 +127,7 @@
 
 # To include a version string, project source must exist in a directory named 
 # $(NAME).%d[.%d][.%d] and the following line must be uncommented.
-# OTHER_GENERATED_OFILES = $(VERS_OFILE)
+OTHER_GENERATED_OFILES = $(VERS_OFILE)
 
 # This definition will suppress stripping of debug symbols when an executable
 # is installed.  By default it is YES.

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/PB.project#2 (text+ko) ====

@@ -21,7 +21,7 @@
     NEXTSTEP_COMPILEROPTIONS = "-static"; 
     NEXTSTEP_INSTALLDIR = /bin; 
     NEXTSTEP_JAVA_COMPILER = /usr/bin/javac; 
-    NEXTSTEP_LINKEROPTIONS = "-nostdlib -e _StartTVector -seg1addr 01C00000"; 
+    NEXTSTEP_LINKEROPTIONS = "-nostdlib -e _StartTVector -seg1addr 05600000"; 
     NEXTSTEP_OBJCPLUS_COMPILER = /usr/bin/cc; 
     PDO_UNIX_BUILDTOOL = $NEXT_ROOT/Developer/bin/make; 
     PDO_UNIX_INSTALLDIR = /bin; 

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/bootinfo.hdr#2 (text+ko) ====

@@ -1,6 +1,6 @@
 <CHRP-BOOT>
 <COMPATIBLE>
-MacRISC MacRISC3
+MacRISC MacRISC3 MacRISC4
 </COMPATIBLE>
 <DESCRIPTION>
 Boot Loader for Mac OS X.

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/Control2.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/MAC-PARTS.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/Makefile#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/Makefile.postamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/Makefile.preamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/PB.project#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/ci.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/ci_io.c#2 (text+ko) ====

@@ -34,8 +34,10 @@
 #include <sl_words.h>
 #include <libclite.h>
 
-void  putchar(int ch)
+int putchar(int ch)
 {
   if ((ch == '\r') || (ch == '\n')) CallMethod(0, 0, SLWordsIH, "slw_cr");
   else CallMethod(1, 0, SLWordsIH, "slw_emit", ch);
+  
+  return ch;
 }

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/ci.subproj/sl_words.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/CaseTables.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/HFSCompare.c#2 (text+ko) ====

@@ -194,6 +194,41 @@
 		return 1;
 }
 
+//
+//  BinaryUnicodeCompare - Compare two Unicode strings; produce a relative ordering
+//  Compared using a 16-bit binary comparison (no case folding)
+//
+int32_t BinaryUnicodeCompare (u_int16_t * str1, u_int32_t length1,
+			      u_int16_t * str2, u_int32_t length2)
+{
+	register u_int16_t c1, c2;
+	int32_t bestGuess;
+	u_int32_t length;
+
+	bestGuess = 0;
+
+	if (length1 < length2) {
+		length = length1;
+		--bestGuess;
+	} else if (length1 > length2) {
+		length = length2;
+		++bestGuess;
+	} else {
+		length = length1;
+	}
+
+	while (length--) {
+		c1 = *(str1++);
+		c2 = *(str2++);
+
+		if (c1 > c2)
+			return (1);
+		if (c1 < c2)
+			return (-1);
+	}
+
+	return (bestGuess);
+}
 
 /*
  * UTF-8 (UCS Transformation Format)

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/Makefile#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/Makefile.postamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/Makefile.preamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/PB.project#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/cache.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
 /*
  *  cache.c - A simple cache for file systems meta-data.
  *
- *  Copyright (c) 2000 Apple Computer, Inc.
+ *  Copyright (c) 2000 - 2003 Apple Computer, Inc.
  *
  *  DRI: Josh de Cesare
  */
@@ -40,7 +40,7 @@
 };
 typedef struct CacheEntry CacheEntry;
 
-#define kCacheSize            (0x80000)
+#define kCacheSize            (kFSCacheSize)
 #define kCacheMinBlockSize    (0x200)
 #define kCacheMaxBlockSize    (0x4000)
 #define kCacheMaxEntries      (kCacheSize / kCacheMinBlockSize)
@@ -50,7 +50,7 @@
 static long       gCacheNumEntries;
 static long       gCacheTime;
 static CacheEntry gCacheEntries[kCacheMaxEntries];
-static char       gCacheBuffer[kCacheSize];
+static char       *gCacheBuffer = (char *)kFSCacheAddr;
 
 unsigned long     gCacheHits;
 unsigned long     gCacheMisses;

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs_bswap.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs_dinode.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ext2fs_dir.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/fs.c#2 (text+ko) ====

@@ -53,6 +53,7 @@
 
 #define kNumPartInfos  (16)
 static PartInfo gParts[kNumPartInfos];
+static char gMakeDirSpec[1024];
 
 // Private function prototypes
 long LookupPartition(char *devSpec);
@@ -86,6 +87,18 @@
 {
   long ret, index = 0;
   char *curName;
+
+  if (!dirSpec) {
+    long       idx, len;
+
+    len = strlen(name);
+
+    for (idx = len; idx && (name[idx] != '\\'); idx--) {}
+    idx++;
+    strncpy(gMakeDirSpec, name, idx);
+    name += idx;
+    dirSpec = gMakeDirSpec;
+  }
   
   while (1) {
     ret = GetDirEntry(dirSpec, &index, &curName, flags, time);

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/hfs.c#2 (text+ko) ====

@@ -43,6 +43,7 @@
 static CICell                  gCurrentIH;
 static long long               gAllocationOffset;
 static long                    gIsHFSPlus;
+static long                    gCaseSensitive;
 static long                    gBlockSize;
 static char                    gBTreeHeaderBuffer[512];
 static BTHeaderRec             *gBTHeaders[2];
@@ -82,6 +83,8 @@
 extern long FastRelString(char *str1, char *str2);
 extern long FastUnicodeCompare(u_int16_t *uniStr1, u_int32_t len1,
 			       u_int16_t *uniStr2, u_int32_t len2);
+extern long BinaryUnicodeCompare(u_int16_t *uniStr1, u_int32_t len1,
+			         u_int16_t *uniStr2, u_int32_t len2);
 extern void utf_encodestr(const u_int16_t *ucsp, int ucslen,
 			  u_int8_t *utf8p, u_int32_t bufsize);
 extern void utf_decodestr(const u_int8_t *utf8p, u_int16_t *ucsp,
@@ -99,6 +102,7 @@
   
   gAllocationOffset = 0;
   gIsHFSPlus = 0;
+  gCaseSensitive = 0;
   gBTHeaders[0] = 0;
   gBTHeaders[1] = 0;
   
@@ -139,7 +143,8 @@
   Read(ih, (long)gHFSPlusHeader, kBlockSize);
   
   // Not a HFS[+] volume.
-  if (gHFSPlus->signature != kHFSPlusSigWord) return -1;
+  if ((gHFSPlus->signature != kHFSPlusSigWord) &&
+      (gHFSPlus->signature != kHFSXSigWord)) return -1;
   
   gIsHFSPlus = 1;
   gBlockSize = gHFSPlus->blockSize;
@@ -495,6 +500,10 @@
 	       gBTreeHeaderBuffer + btree * 256, 0);
     gBTHeaders[btree] = (BTHeaderRec *)(gBTreeHeaderBuffer + btree * 256 +
 				       sizeof(BTNodeDescriptor));
+    if ((gIsHFSPlus && btree == kBTreeCatalog) &&
+        (gBTHeaders[btree]->keyCompareType == kHFSBinaryCompare)) {
+      gCaseSensitive = 1;
+    }
   }
   
   curNode = gBTHeaders[btree]->rootNode;
@@ -745,10 +754,17 @@
     if ((searchKey->nodeName.length == 0) || (trialKey->nodeName.length == 0))
       result = searchKey->nodeName.length - trialKey->nodeName.length;
     else
-      result = FastUnicodeCompare(&searchKey->nodeName.unicode[0],
-				  searchKey->nodeName.length,
-				  &trialKey->nodeName.unicode[0],
-				  trialKey->nodeName.length);
+      if (gCaseSensitive) {
+        result = BinaryUnicodeCompare(&searchKey->nodeName.unicode[0],
+				      searchKey->nodeName.length,
+				      &trialKey->nodeName.unicode[0],
+				      trialKey->nodeName.length);
+      } else {
+        result = FastUnicodeCompare(&searchKey->nodeName.unicode[0],
+				    searchKey->nodeName.length,
+				    &trialKey->nodeName.unicode[0],
+				    trialKey->nodeName.length);
+      }
   }
   
   return result;

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/net.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ufs.c#2 (text+ko) ====

@@ -52,12 +52,8 @@
 static long ReadFile(InodePtr fileInode, long *length);
 
 
-#define kDevBlockSize (0x200)    // Size of each disk block.
-#define kDiskLableBlock (15)     // Block the DL is in.
-
 static CICell    gCurrentIH;
 static long long gPartitionBase;
-static char      gDLBuf[8192];
 static char      gFSBuf[SBSIZE];
 static struct fs *gFS;
 static long      gBlockSize;
@@ -74,9 +70,6 @@
 
 long UFSInitPartition(CICell ih)
 {
-  disk_label_t *dl;
-  partition_t  *part;
-  
   if (ih == gCurrentIH) return 0;
   
   printf("UFSInitPartition: %x\n", ih);
@@ -92,30 +85,7 @@
   
   gFS = (struct fs *)gFSBuf;
   if (gFS->fs_magic != FS_MAGIC) {
-    // Did not find it... Look for the Disk Label.
-    // Look for the Disk Label
-    Seek(ih, 1ULL * kDevBlockSize * kDiskLableBlock);
-    Read(ih, (long)gDLBuf, 8192);
-    
-    dl = (disk_label_t *)gDLBuf;
-    byte_swap_disklabel_in(dl);
-    
-    if (dl->dl_version != DL_VERSION) {
-      return -1;
-    }
-    
-    part = &dl->dl_part[0];
-    gPartitionBase = (1ULL * (dl->dl_front + part->p_base) * dl->dl_secsize) -
-      (1ULL * (dl->dl_label_blkno - kDiskLableBlock) * kDevBlockSize);
-    
-    // Re-read the Super Block.
-    Seek(ih, gPartitionBase + SBOFF);
-    Read(ih, (long)gFSBuf, SBSIZE);
-    
-    gFS = (struct fs *)gFSBuf;
-    if (gFS->fs_magic != FS_MAGIC) {
-      return -1;
-    }
+    return -1;
   }
   
   // Calculate the block size and set up the block cache.

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ufs_byteorder.c#2 (text+ko) ====

@@ -77,102 +77,6 @@
 }
 
 
-static inline void
-byte_swap_disklabel_common(disk_label_t *dl)
-{
-
-	swapBigLongToHost(dl->dl_version);	/* ditto */
-	swapBigLongToHost(dl->dl_label_blkno);
-	swapBigLongToHost(dl->dl_size);
-	swapBigLongToHost(dl->dl_flags);
-	swapBigLongToHost(dl->dl_tag);
-//	swapBigShortToHost(dl->dl_checksum);
-//	if (dl->dl_version >= DL_V3)
-//		swapBigShortToHost(dl->dl_un.DL_v3_checksum);
-//	else
-//		swapBigIntsToHost(dl->dl_un.DL_bad, NBAD);
-
-}
-
-
-void
-byte_swap_disklabel_in(disk_label_t *dl)
-{
-
-	byte_swap_disklabel_common(dl);
-	byte_swap_disktab_in(&dl->dl_dt);
-
-}
-
-
-static inline void
-byte_swap_disktab_common(struct disktab *dt)
-{
-
-	register unsigned int	i;
-
-	swapBigLongToHost(dt->d_secsize);
-	swapBigLongToHost(dt->d_ntracks);
-	swapBigLongToHost(dt->d_nsectors);
-	swapBigLongToHost(dt->d_ncylinders);
-//	swapBigLongToHost(dt->d_rpm);
-	swapBigShortToHost(dt->d_front);
-	swapBigShortToHost(dt->d_back);
-//	swapBigShortToHost(dt->d_ngroups);
-//	swapBigShortToHost(dt->d_ag_size);
-//	swapBigShortToHost(dt->d_ag_alts);
-//	swapBigShortToHost(dt->d_ag_off);
-//	swapBigIntsToHost(dt->d_boot0_blkno, NBOOTS);
-
-	for (i=0; i < NPART; i++)
-		byte_swap_partition(&dt->d_partitions[i]);
-
-}
-
-/*
- *  This is particularly grody.  The beginning of the partition array is two
- *  bytes low on the 68 wrt natural alignment rules.  Furthermore, each
- *  element of the partition table is two bytes smaller on 68k due to padding
- *  at the end of the struct.
- */
-void
-byte_swap_disktab_in(struct disktab *dt)
-{
-
-	struct partition	*pp;
-	int			i;
-
-	/*
-	 *  Shift each struct partition up in memory by 2 + 2 * offset bytes.
-	 *  Do it backwards so we don't overwrite anything.
-	 */
-	for (i=NPART - 1; i >=0; i--) {
-		struct partition temp;
-		pp = &dt->d_partitions[i];
-		/* beware: compiler doesn't do overlapping struct assignment */
-		temp = *(struct partition *)(((char *) pp) - 2 * (i + 1));
-		*pp = temp;
-	}
-
-	byte_swap_disktab_common(dt);
-
-}
-
-
-void
-byte_swap_partition(struct partition *part)
-{
-
-	swapBigLongToHost(part->p_base);
-	swapBigLongToHost(part->p_size);
-	swapBigShortToHost(part->p_bsize);
-	swapBigShortToHost(part->p_fsize);
-	swapBigShortToHost(part->p_cpg);
-	swapBigShortToHost(part->p_density);
-
-}
-
-
 void
 byte_swap_inode_in(struct dinode *dc, struct dinode *ic)
 {

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/fs.subproj/ufs_byteorder.h#2 (text+ko) ====

@@ -43,10 +43,8 @@
 
 #include <sys/param.h>
 #include <sys/types.h>
-#include <sys/disktab.h>
 #include <sys/vnode.h>
 #include <sys/buf.h>
-#include <dev/disk.h>
 #include <ufs/ufs/quota.h>
 #include <ufs/ufs/inode.h>
 #include <ufs/ffs/fs.h>
@@ -54,8 +52,5 @@
 void byte_swap_ints(int *array, int count);
 void byte_swap_shorts(short *array, int count);
 
-void byte_swap_disklabel_in(disk_label_t *dl);
-void byte_swap_disktab_in(struct disktab *dt);
-void byte_swap_partition(struct partition *part);
 void byte_swap_inode_in(struct dinode *dc, struct dinode *ic);
 void byte_swap_dir_block_in(char *addr, int count);

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/Makefile#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/Makefile.postamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/Makefile.preamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/PB.project#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/boot_args.h#2 (text+ko) ====

@@ -25,7 +25,7 @@
 /*
  *  boot_args.h - Data stuctures for the information passed to the kernel.
  *
- *  Copyright (c) 1998-2000 Apple Computer, Inc.
+ *  Copyright (c) 1998-2003 Apple Computer, Inc.
  *
  *  DRI: Josh de Cesare
  */
@@ -59,7 +59,8 @@
 // Boot argument structure - passed into kernel at boot time.
 
 #define kBootArgsRevision (1)
-#define kBootArgsVersion  (1)
+#define kBootArgsVersion1 (1)
+#define kBootArgsVersion2 (2)
 
 #define BOOT_LINE_LENGTH  (256)
 
@@ -76,4 +77,17 @@
 };
 typedef struct boot_args boot_args, *boot_args_ptr;
 
+struct compressed_kernel_header {
+  u_int32_t signature;
+  u_int32_t compress_type;
+  u_int32_t adler32;
+  u_int32_t uncompressed_size;
+  u_int32_t compressed_size;
+  u_int32_t reserved[11];
+  char      platform_name[64];
+  char      root_path[256];
+  u_int8_t  data[0];
+};
+typedef struct compressed_kernel_header compressed_kernel_header;
+
 #endif /* ! _BOOTX_BOOT_ARGS_H_ */

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/ci.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/device_tree.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/fs.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/libclite.h#2 (text+ko) ====

@@ -41,7 +41,7 @@
 #include <stddef.h>
 
 // ci_io.c
-extern void  putchar(int ch);
+extern int putchar(int ch);
 
 // prf.c
 extern void prf(const char *fmt, unsigned int *adx, void (*putfn_p)(),
@@ -83,7 +83,7 @@
 // mem.c
 extern void *memcpy(void *dst, const void *src, size_t len);
 extern void *memset(void *dst, int ch, size_t len);
-extern void *bcopy(void *src, void *dst, int len);
+extern void bcopy(const void *src, void *dst, size_t len);
 extern void bzero(void *dst, int len);
 
 // bsearch.c

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/sl.h#2 (text+ko) ====

@@ -25,7 +25,7 @@
 /*
  *  sl.h - Headers for configuring the Secondary Loader
  *
- *  Copyright (c) 1998-2002 Apple Computer, Inc.
+ *  Copyright (c) 1998-2003 Apple Computer, Inc.
  *
  *  DRI: Josh de Cesare
  */
@@ -37,33 +37,26 @@
 
 /*
 
-Memory Map...  Assumes 32 MB
+Memory Map:  assumes 96 MB
 
 Physical Address
 
-Open Firmware Version     1x, 2x                        3x
-00000000 - 00003FFF  :             Exception Vectors
-00004000 - 002FFFFF  :                Free Memory
-00300000 - 004FFFFF  :   OF Image         /            Free Memory
-00500000 - 01DFFFFF  :                Free Memory
-01E00000 - 01FFFFFF  :   Free Memory      /            OF Image
+Open Firmware Version    3x, 4x, ...
+00000000 - 00003FFF  :   Exception Vectors
+00004000 - 057FFFFF  :   Free Memory
+05800000 - 05FFFFFF  :   OF Image
 
 
 Logical Address
 
 00000000 - 00003FFF  : Exception Vectors
-00004000 - 013FFFFF  : Kernel Image, Boot Struct and Drivers
-01400000 - 01BFFFFF  : File Load Area
-01C00000 - 01CFFFFF  : Secondary Loader Image
-01D00000 - 01DFFFFF  : Malloc Area
-01E00000 - 01FFFFFF  : Unused
-
-To provide a consistant Logical Memory Usage between OF 1,2 and OF 3
-the Logical Addresses 0x00300000 - 0x004FFFFF will be mapped to
-Physical Address 0x01E00000 - 0x01FFFFFF and will be copied back
-just before the kernel is loaded.
+00004000 - 03FFFFFF  : Kernel Image, Boot Struct and Drivers
+04000000 - 04FFFFFF  : File Load Area
+05000000 - 053FFFFF  : FS Cache
+05400000 - 055FFFFF  : Malloc Zone
+05600000 - 057FFFFF  : BootX Image
+05800000 - 05FFFFFF  : Unused
 
-
 */
 
 #define kVectorAddr     (0x00000000)
@@ -71,22 +64,25 @@
 
 // OF 3.x
 #define kImageAddr      (0x00004000)
-#define kImageSize      (0x013FC000)
+#define kImageSize      (0x03FFC000)
 
 // OF 1.x 2.x
 #define kImageAddr0     (0x00004000)
 #define kImageSize0     (0x002FC000)
 #define kImageAddr1     (0x00300000)
 #define kImageSize1     (0x00200000)
-#define kImageAddr1Phys (0x01E00000)
+#define kImageAddr1Phys (0x05800000)
 #define kImageAddr2     (0x00500000)
-#define kImageSize2     (0x00F00000)
+#define kImageSize2     (0x03B00000)
+
+#define kLoadAddr       (0x04000000)
+#define kLoadSize       (0x01000000)
 
-#define kLoadAddr       (0x01400000)
-#define kLoadSize       (0x00800000)
+#define kFSCacheAddr    (0x05000000)
+#define kFSCacheSize    (0x00400000)
 
-#define kMallocAddr     (0x01D00000)
-#define kMallocSize     (0x00100000)
+#define kMallocAddr     (0x05400000)
+#define kMallocSize     (0x00200000)
 
 // Default Output Level
 #define kOutputLevelOff  (0)
@@ -96,6 +92,7 @@
 #define kOFVersion1x    (0x01000000)
 #define kOFVersion2x    (0x02000000)
 #define kOFVersion3x    (0x03000000)
+#define kOFVersion4x    (0x04000000)
 
 // Device Types
 enum {
@@ -162,9 +159,9 @@
 extern long gBootMode;
 extern long gBootDeviceType;
 extern long gBootFileType;
+extern char gHaveKernelCache;
 extern char gBootDevice[256];
 extern char gBootFile[256];
-extern char gRootDir[256];
 
 extern char gTempStr[4096];
 
@@ -174,6 +171,9 @@
 
 extern char *gKeyMap;
 
+extern long gRootAddrCells;
+extern long gRootSizeCells;
+
 extern CICell gChosenPH;
 extern CICell gOptionsPH;
 extern CICell gScreenPH;
@@ -185,6 +185,7 @@
 extern CICell gStdOutIH;
 extern CICell gKeyboardIH;
 
+extern long ThinFatBinary(void **binary, unsigned long *length);
 extern long GetDeviceType(char *devSpec);
 extern long ConvertFileSpec(char *fileSpec, char *devSpec, char **filePath);
 extern long MatchThis(CICell phandle, char *string);
@@ -194,10 +195,12 @@
 extern unsigned long Alder32(unsigned char *buffer, long length);
 
 // Externs for macho.c
-extern long DecodeMachO(void);
+extern long ThinFatBinaryMachO(void **binary, unsigned long *length);
+extern long DecodeMachO(void *binary);
 
 // Externs for elf.c
-extern long DecodeElf(void);
+extern long ThinFatBinaryElf(void **binary, unsigned long *length);
+extern long DecodeElf(void *binary);
 
 // Externs for device_tree.c
 extern long FlattenDeviceTree(void);
@@ -217,4 +220,7 @@
 extern long InitConfig(void);
 extern long ParseConfigFile(char *addr);
 
+// Externs for lzss.c
+extern int decompress_lzss(u_int8_t *dst, u_int8_t *src, u_int32_t srclen);
+
 #endif /* ! _BOOTX_SL_H_ */

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/include.subproj/sl_words.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/Makefile#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/Makefile.postamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/Makefile.preamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/PB.project#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/bsearch.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/bswap.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/mem.c#2 (text+ko) ====

@@ -79,9 +79,9 @@
   return dst;
 }
 
-void *bcopy(void *src, void *dst, int len)
+void bcopy(const void *src, void *dst, size_t len)
 {
-  return memcpy(dst, src, len);
+  memcpy(dst, src, len);
 }
 
 void bzero(void *dst, int len)

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/prf.c#2 (text+ko) ====

@@ -50,6 +50,7 @@
 
 #define SPACE	1
 #define ZERO	2
+#define UCASE	16
 
 /*
  * Scaled down version of C Library printf.
@@ -80,7 +81,7 @@
 	}
 	cp = prbuf;
 	do {
-		*cp++ = "0123456789abcdef"[n%b];
+		*cp++ = "0123456789abcdef0123456789ABCDEF"[(flag & UCASE) + n%b];
 		n /= b;
 		width++;
 	} while (n);
@@ -140,7 +141,10 @@
 		minwidth *= 10;
 		minwidth += c - '0';
 		goto again;
-	case 'x': case 'X':
+	case 'X':
+		flag |= UCASE;
+		/* fall through */
+	case 'x':
 		b = 16;
 		goto number;
 	case 'd':

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/printf.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/sprintf.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/string.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/strtol.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/libclite.subproj/zalloc.c#2 (text+ko) ====

@@ -32,14 +32,14 @@
 /*
  *  zalloc.c - malloc functions.
  *
- *  Copyright (c) 1998-2000 Apple Computer, Inc.
+ *  Copyright (c) 1998-2003 Apple Computer, Inc.
  *
  *  DRI: Josh de Cesare
  */
 
 #include <libclite.h>
 
-#define ZALLOC_NODES    384
+#define ZALLOC_NODES    768
 
 #define ZDEBUG 0
 

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/Makefile#2 (text+ko) ====

@@ -14,7 +14,7 @@
 
 HFILES = appleboot.h clut.h elf.h failedboot.h netboot.h
 
-CFILES = main.c macho.c device_tree.c display.c drivers.c elf.c
+CFILES = main.c macho.c device_tree.c display.c drivers.c elf.c lzss.c
 
 OTHERSRCS = Makefile.preamble Makefile Makefile.postamble
 

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/Makefile.postamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/Makefile.preamble#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/PB.project#2 (text+ko) ====

@@ -14,7 +14,7 @@
             netboot.h 
         ); 
         M_FILES = (); 
-        OTHER_LINKED = (main.c, macho.c, device_tree.c, display.c, elf.c, drivers.c); 
+        OTHER_LINKED = (main.c, macho.c, device_tree.c, display.c, elf.c, drivers.c, lzss.c); 
         OTHER_SOURCES = (Makefile.preamble, Makefile, Makefile.postamble); 
         SUBPROJECTS = (); 
         TOOLS = (); 

==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/appleboot.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/clut.h#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/device_tree.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/display.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin73/apsl/BootX/bootx.tproj/sl.subproj/drivers.c#2 (text+ko) ====

@@ -32,6 +32,8 @@
 
 #include <sl.h>
 
+#define DRIVER_DEBUG 0
+
 enum {
   kTagTypeNone = 0,
   kTagTypeDict,
@@ -133,11 +135,12 @@
 static void FreeTag(TagPtr tag);
 static char *NewSymbol(char *string);
 static void FreeSymbol(char *string);
+#if DRIVER_DEBUG
 static void DumpTag(TagPtr tag, long depth);
+#endif
 
 static ModulePtr gModuleHead, gModuleTail;
 static TagPtr    gPersonalityHead, gPersonalityTail;
-static char      gExtensionsSpec[4096];
 static char      gDriverSpec[4096];
 static char      gFileSpec[4096];
 static char      gTempSpec[4096];
@@ -150,9 +153,7 @@
   if (gBootFileType == kNetworkDeviceType) {
     NetLoadDrivers(dirSpec);
   } else if (gBootFileType == kBlockDeviceType) {
-    strcpy(gExtensionsSpec, dirSpec);
-    strcat(gExtensionsSpec, "System\\Library\\");
-    FileLoadDrivers(gExtensionsSpec, 0);
+    FileLoadDrivers(dirSpec, 0);
   } else {

>>> TRUNCATED FOR MAIL (1000 lines) <<<
To Unsubscribe: send mail to majordomo at trustedbsd.org
with "unsubscribe trustedbsd-cvs" in the body of the message



More information about the trustedbsd-cvs mailing list