diff --git a/src/bin/ld/addlibrary.c b/src/bin/ld/addlibrary.c index 5853025..e3c4487 100644 --- a/src/bin/ld/addlibrary.c +++ b/src/bin/ld/addlibrary.c @@ -16,7 +16,7 @@ if (tmpLib->output == 0x0) { linkerFd = fopen(lib,"rb"); if (linkerFd->fd == 0x0) { - printf("Cant Open Library: %s\n",lib); + printf("Could not open library: %s\n",lib); exit(-1); } tmpLib->output = (char *)malloc((linkerFd->size+0x4000)); diff --git a/src/sys/compile/Makefile b/src/sys/compile/Makefile index 56da09e..fdd83eb 100644 --- a/src/sys/compile/Makefile +++ b/src/sys/compile/Makefile @@ -9,7 +9,7 @@ OBJS = null.o #Kernel Parts -KPARTS = ../init/*.o ../sys/*.o ../vmm/*.o ../lib/*.o ../kernel/*.o ../isa/*.o ../vfs/*.o ../ubixfs/*.o ../pci/*.o ../sde/*.o ../devfs/*.o ../net/core/*.o ../net/net/*.o ../net/api/*.o ../net/netif/*.o ../mpi/*.o +KPARTS = ../init/*.o ../sys/*.o ../vmm/*.o ../lib/*.o ../kernel/*.o ../isa/*.o ../vfs/*.o ../ubixfs/*.o ../pci/*.o ../sde/*.o ../devfs/*.o ../net/core/*.o ../net/net/*.o ../net/api/*.o ../net/netif/*.o ../mpi/*.o ../ufs/*.o #../graphics/*.o ../ld/*.o -Ttext 0x30000 -Tdata 0x34000 # Link the kernel statically with fixed text+data address @1M diff --git a/src/sys/init/main.c b/src/sys/init/main.c index f5c2d5d..4e35da4 100644 --- a/src/sys/init/main.c +++ b/src/sys/init/main.c @@ -57,6 +57,7 @@ #include #include #include +#include static char kernelStack[8192]; // Stack Space For Our Kernel @@ -173,6 +174,7 @@ kprintf("Free Pages: [%i]\n",freePages); kprintf("MemoryMap: [0x%X]\n",vmmMemoryMap); kprintf("Starting Os\n"); + lookup("/COPYRIGHT"); irqEnable(0x0); sched(); return(0x0); @@ -223,6 +225,9 @@ /*** $Log$ + Revision 1.35 2004/06/28 23:12:58 reddawg + file format now container:/path/to/file + Revision 1.34 2004/06/25 17:25:52 reddawg I am cleaning too diff --git a/src/sys/ufs/ufsread.c b/src/sys/ufs/ufsread.c index 22ee914..be77593 100644 --- a/src/sys/ufs/ufsread.c +++ b/src/sys/ufs/ufsread.c @@ -5,6 +5,68 @@ static int dskread(void *, unsigned, unsigned); +static int +dskread(void *buf, unsigned lba, unsigned nblk) +{ + struct dos_partition *dp; + struct disklabel *d; + char *sec; + unsigned sl, i; + + if (!dsk_meta) { + sec = dmadat->secbuf; + dsk.start = 0; + if (drvread(sec, DOSBBSECTOR, 1)) + return -1; + dp = (void *)(sec + DOSPARTOFF); + sl = dsk.slice; + if (sl < BASE_SLICE) { + for (i = 0; i < NDOSPART; i++) + if (dp[i].dp_typ == DOSPTYP_386BSD && + (dp[i].dp_flag & 0x80 || sl < BASE_SLICE)) { + sl = BASE_SLICE + i; + if (dp[i].dp_flag & 0x80 || + dsk.slice == COMPATIBILITY_SLICE) + break; + } + if (dsk.slice == WHOLE_DISK_SLICE) + dsk.slice = sl; + } + if (sl != WHOLE_DISK_SLICE) { + if (sl != COMPATIBILITY_SLICE) + dp += sl - BASE_SLICE; + if (dp->dp_typ != DOSPTYP_386BSD) { + printf("Invalid %s\n", "slice"); + return -1; + } + dsk.start = dp->dp_start; + } + if (drvread(sec, dsk.start + LABELSECTOR, 1)) + return -1; + d = (void *)(sec + LABELOFFSET); + if (d->d_magic != DISKMAGIC || d->d_magic2 != DISKMAGIC) { + if (dsk.part != RAW_PART) { + printf("Invalid %s\n", "label"); + return -1; + } + } else { + if (!dsk.init) { + if (d->d_type == DTYPE_SCSI) + dsk.type = TYPE_DA; + dsk.init++; + } + if (dsk.part >= d->d_npartitions || + !d->d_partitions[dsk.part].p_size) { + printf("Invalid %s\n", "partition"); + return -1; + } + dsk.start += d->d_partitions[dsk.part].p_offset; + dsk.start -= d->d_partitions[RAW_PART].p_offset; + } + } + return drvread(buf, dsk.start + lba, nblk); +} + static ssize_t fsread(ino_t, void *, size_t); struct dmadat { @@ -191,5 +253,8 @@ /*** $Log$ + Revision 1.1 2004/07/05 23:04:02 reddawg + Added UFS Support + END ***/