Merge 14551:14980 from trunk
Modified: branches/xmlbuildsystem/reactos/apps/utils/net/finger/net.c
Modified: branches/xmlbuildsystem/reactos/apps/utils/net/ftp/fake.c
Modified: branches/xmlbuildsystem/reactos/apps/utils/net/ftp/ftp.c
Modified: branches/xmlbuildsystem/reactos/apps/utils/ps/ps.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/FREELDR.INI
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/Makefile
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/bootsect/Makefile.powerpc
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/bootsect/fat.asm
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/arch.S
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/archmach.
c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/boot.S
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hardware.
c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwacpi.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwapm.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwcpu.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwpci.c
Added:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/i386.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/i386disk.
c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/linux.S
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/machpc.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/machpc.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/machxbox.
c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/machxbox.
h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/powerpc/mach.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/bootmgr.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/custom.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/disk/disk.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/disk/partition.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/drivemap.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/freeldr.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/ext2.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/ext2.h
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/fat.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/fat.h
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/fs.c
Deleted: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/fsrec.h
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/iso.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/iso.h
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/ntfs.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/fs/ntfs.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/bootmgr.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/disk.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/drivemap.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/freeldr.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/fs.h
Added:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/fsrec.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/inifile.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/linux.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/machine.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/miscboot.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/multiboot.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/oslist.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/reactos.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/ui.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/include/version.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/inifile/ini.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/inifile/ini_init.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/inifile/inifile.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/inifile/parse.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/linuxboot.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/machine.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/miscboot.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/options.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/oslist.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/reactos/arcname.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/reactos/binhive.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/reactos/reactos.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/reactos/registry.c
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/reactos/registry.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/reactos/setupldr.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/ui/tui.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/ui/tui.h
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/ui/tuimenu.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/ui/ui.c
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/version.c
Modified: branches/xmlbuildsystem/reactos/bootdata/hivesft.inf
Modified: branches/xmlbuildsystem/reactos/bootdata/hivesys.inf
Modified: branches/xmlbuildsystem/reactos/bootdata/packages/reactos.dff
Modified: branches/xmlbuildsystem/reactos/bootdata/txtsetup.sif
Modified: branches/xmlbuildsystem/reactos/drivers/bus/serenum/detect.c
Modified: branches/xmlbuildsystem/reactos/drivers/bus/serenum/fdo.c
Modified: branches/xmlbuildsystem/reactos/drivers/bus/serenum/misc.c
Modified: branches/xmlbuildsystem/reactos/drivers/bus/serenum/pdo.c
Modified: branches/xmlbuildsystem/reactos/drivers/bus/serenum/serenum.c
Modified: branches/xmlbuildsystem/reactos/drivers/bus/serenum/serenum.h
Added: branches/xmlbuildsystem/reactos/drivers/dd/green/
Deleted: branches/xmlbuildsystem/reactos/drivers/dd/sdisk/
Modified:
branches/xmlbuildsystem/reactos/drivers/dd/serial/circularbuffer.c
Modified: branches/xmlbuildsystem/reactos/drivers/dd/serial/create.c
Modified: branches/xmlbuildsystem/reactos/drivers/dd/serial/devctrl.c
Modified: branches/xmlbuildsystem/reactos/drivers/dd/serial/info.c
Modified: branches/xmlbuildsystem/reactos/drivers/dd/serial/misc.c
Modified: branches/xmlbuildsystem/reactos/drivers/dd/serial/pnp.c
Modified: branches/xmlbuildsystem/reactos/drivers/dd/serial/rw.c
Modified: branches/xmlbuildsystem/reactos/drivers/dd/serial/serial.c
Modified: branches/xmlbuildsystem/reactos/drivers/dd/serial/serial.h
Modified: branches/xmlbuildsystem/reactos/drivers/fs/ms/create.c
Modified: branches/xmlbuildsystem/reactos/drivers/fs/np/fsctrl.c
Modified: branches/xmlbuildsystem/reactos/drivers/fs/vfat/fsctl.c
Modified: branches/xmlbuildsystem/reactos/drivers/fs/vfat/shutdown.c
[truncated at 100 lines; 721 more skipped]
_____
Modified: branches/xmlbuildsystem/reactos/apps/utils/net/finger/net.c
--- branches/xmlbuildsystem/reactos/apps/utils/net/finger/net.c
2005-05-05 19:11:20 UTC (rev 15016)
+++ branches/xmlbuildsystem/reactos/apps/utils/net/finger/net.c
2005-05-05 19:15:25 UTC (rev 15017)
@@ -33,7 +33,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF
* SUCH DAMAGE.
*/
-
#include <sys/types.h>
#include <winsock2.h>
#include "unistd.h"
@@ -52,14 +51,14 @@
struct hostent *hp, def;
struct servent *sp;
struct sockaddr_in sin;
- int s;
+ SOCKET s;
char *alist[1], *host;
/* If this is a local request */
if (!(host = rindex(name, '@')))
return;
- *host++ = 0;
+ *host++ = '\0';
if (isdigit(*host) && (defaddr.s_addr = inet_addr(host)) != -1)
{
def.h_name = host;
def.h_addr_list = alist;
@@ -80,7 +79,7 @@
sin.sin_family = hp->h_addrtype;
bcopy(hp->h_addr, (char *)&sin.sin_addr, hp->h_length);
sin.sin_port = sp->s_port;
- if ((s = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) {
+ if ((s = socket(hp->h_addrtype, SOCK_STREAM, 0)) ==
INVALID_SOCKET) {
perror("finger: socket");
return;
}
_____
Modified: branches/xmlbuildsystem/reactos/apps/utils/net/ftp/fake.c
--- branches/xmlbuildsystem/reactos/apps/utils/net/ftp/fake.c
2005-05-05 19:11:20 UTC (rev 15016)
+++ branches/xmlbuildsystem/reactos/apps/utils/net/ftp/fake.c
2005-05-05 19:15:25 UTC (rev 15017)
@@ -235,7 +235,7 @@
static char input[256];
HANDLE in;
HANDLE err;
- int count;
+ DWORD count;
in = GetStdHandle (STD_INPUT_HANDLE);
err = GetStdHandle (STD_ERROR_HANDLE);
_____
Modified: branches/xmlbuildsystem/reactos/apps/utils/net/ftp/ftp.c
--- branches/xmlbuildsystem/reactos/apps/utils/net/ftp/ftp.c
2005-05-05 19:11:20 UTC (rev 15016)
+++ branches/xmlbuildsystem/reactos/apps/utils/net/ftp/ftp.c
2005-05-05 19:15:25 UTC (rev 15017)
@@ -97,7 +97,7 @@
sig_t lostpeer();
off_t restart_point = 0;
-int cin, cout;
+SOCKET cin, cout;
int dataconn(char *mode);
int command(char *fmt, ...);
@@ -113,7 +113,8 @@
char *hookup(char *host, int port)
{
register struct hostent *hp = 0;
- int s,len;
+ int len;
+ SOCKET s;
static char hostnamebuf[80];
bzero((char *)&hisctladdr, sizeof (hisctladdr));
@@ -136,7 +137,7 @@
}
hostname = hostnamebuf;
s = socket(hisctladdr.sin_family, SOCK_STREAM, 0);
- if (s < 0) {
+ if (s == INVALID_SOCKET) {
perror("ftp: socket");
code = -1;
return (0);
@@ -1327,8 +1328,8 @@
char name[MAXHOSTNAMELEN];
struct sockaddr_in mctl;
struct sockaddr_in hctl;
- FILE *in;
- FILE *out;
+ SOCKET in;
+ SOCKET out;
int tpe;
int cpnd;
int sunqe;
@@ -1371,10 +1372,10 @@
hisctladdr = op->hctl;
ip->mctl = myctladdr;
myctladdr = op->mctl;
- (int) ip->in = cin; // What the hell am I looking at...?
- cin = (int) op->in;
- (int) ip->out = cout; // Same again...
- cout = (int) op->out;
+ ip->in = cin;
+ cin = op->in;
+ ip->out = cout;
+ cout = op->out;
ip->tpe = type;
type = op->tpe;
if (!type)
_____
Modified: branches/xmlbuildsystem/reactos/apps/utils/ps/ps.c
--- branches/xmlbuildsystem/reactos/apps/utils/ps/ps.c 2005-05-05
19:11:20 UTC (rev 15016)
+++ branches/xmlbuildsystem/reactos/apps/utils/ps/ps.c 2005-05-05
19:15:25 UTC (rev 15017)
@@ -110,8 +110,8 @@
DWORD r;
ANSI_STRING astring;
HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
- PSYSTEM_PROCESSES SystemProcesses = NULL;
- PSYSTEM_PROCESSES CurrentProcess;
+ PSYSTEM_PROCESS_INFORMATION SystemProcesses = NULL;
+ PSYSTEM_PROCESS_INFORMATION CurrentProcess;
ULONG BufferSize, ReturnSize;
NTSTATUS Status;
char buf[256];
@@ -140,7 +140,7 @@
/* For every process print the information. */
CurrentProcess = SystemProcesses;
- while (CurrentProcess->NextEntryDelta != 0)
+ while (CurrentProcess->NextEntryOffset != 0)
{
int hour, hour1, thour, thour1;
unsigned char minute, minute1, tmin, tmin1;
@@ -159,53 +159,53 @@
minute1 = (ptime.QuadPart / (10000000LL * 60LL)) % 60LL;
seconds1 = (ptime.QuadPart / 10000000LL) % 60LL;
- RtlUnicodeStringToAnsiString(&astring,
&CurrentProcess->ProcessName, TRUE);
+ RtlUnicodeStringToAnsiString(&astring,
&CurrentProcess->ImageName, TRUE);
wsprintf(buf,"P%8d %8d %3d:%02d:%02d %3d:%02d:%02d ProcName:
%s\n",
- CurrentProcess->ProcessId,
CurrentProcess->InheritedFromProcessId,
+ CurrentProcess->UniqueProcessId,
CurrentProcess->InheritedFromUniqueProcessId,
hour, minute, seconds, hour1, minute1, seconds1,
astring.Buffer);
WriteFile(stdout, buf, lstrlen(buf), &r, NULL);
RtlFreeAnsiString(&astring);
- for (ti = 0; ti < CurrentProcess->ThreadCount; ti++)
+ for (ti = 0; ti < CurrentProcess->NumberOfThreads; ti++)
{
struct status *statt;
struct waitres *waitt;
char szWindowName[30] = {" "};
- ptime = CurrentProcess->Threads[ti].KernelTime;
+ ptime = CurrentProcess->TH[ti].KernelTime;
thour = (ptime.QuadPart / (10000000LL * 3600LL));
tmin = (ptime.QuadPart / (10000000LL * 60LL)) % 60LL;
tsec = (ptime.QuadPart / 10000000LL) % 60LL;
- ptime = CurrentProcess->Threads[ti].UserTime;
+ ptime = CurrentProcess->TH[ti].UserTime;
thour1 = (ptime.QuadPart / (10000000LL * 3600LL));
tmin1 = (ptime.QuadPart / (10000000LL * 60LL)) % 60LL;
tsec1 = (ptime.QuadPart / 10000000LL) % 60LL;
statt = thread_stat;
- while (statt->state !=
CurrentProcess->Threads[ti].State && statt->state >= 0)
+ while (statt->state !=
CurrentProcess->TH[ti].ThreadState && statt->state >= 0)
statt++;
waitt = waitreason;
- while (waitt->state !=
CurrentProcess->Threads[ti].WaitReason && waitt->state >= 0)
+ while (waitt->state !=
CurrentProcess->TH[ti].WaitReason && waitt->state >= 0)
waitt++;
wsprintf (buf1,
"t% %8d %3d:%02d:%02d %3d:%02d:%02d
%s %s\n",
-
CurrentProcess->Threads[ti].ClientId.UniqueThread,
+ CurrentProcess->TH[ti].ClientId.UniqueThread,
thour, tmin, tsec, thour1, tmin1, tsec1,
statt->desc , waitt->desc);
WriteFile(stdout, buf1, lstrlen(buf1), &r, NULL);
-
EnumThreadWindows((DWORD)CurrentProcess->Threads[ti].ClientId.UniqueThre
ad,
+
EnumThreadWindows((DWORD)CurrentProcess->TH[ti].ClientId.UniqueThread,
(ENUMWINDOWSPROC) EnumThreadProc,
(LPARAM)(LPTSTR) szWindowName );
}
- CurrentProcess =
(PSYSTEM_PROCESSES)((ULONG_PTR)CurrentProcess +
- CurrentProcess->NextEntryDelta);
+ CurrentProcess =
(PSYSTEM_PROCESS_INFORMATION)((ULONG_PTR)CurrentProcess +
+ CurrentProcess->NextEntryOffset);
}
return (0);
}
_____
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/FREELDR.INI
--- branches/xmlbuildsystem/reactos/boot/freeldr/FREELDR.INI
2005-05-05 19:11:20 UTC (rev 15016)
+++ branches/xmlbuildsystem/reactos/boot/freeldr/FREELDR.INI
2005-05-05 19:15:25 UTC (rev 15017)
@@ -51,8 +51,7 @@
; [OS-General] Section Commands:
;
; BootType - sets the boot type: ReactOS, Linux,
BootSector, Partition, Drive
-; BootDrive - sets the boot drive: 0 - first floppy, 1 -
second floppy, 0x80 - first hard disk, 0x81 - second hard disk
-; BootPartition - sets the boot partition
+; BootPath - ARC path e.g.
multi(0)disk(0)rdisk(x)partition(y)
; DriveMap - maps a BIOS drive number to another (i.e.
DriveMap=hd1,hd0 maps harddisk1 to harddisk0 or DriveMap=fd1,fd0)
; [BootSector OSType] Section Commands:
@@ -134,8 +133,7 @@
[Linux]
BootType=Linux
-BootDrive=hd1
-BootPartition=1
+BootPath=multi(0)disk(0)rdisk(1)partition(1)
Kernel=/vmlinuz
Initrd=/initrd.img
CommandLine="root=/dev/sdb1"
@@ -146,13 +144,11 @@
[MSWinders]
BootType=Partition
-BootDrive=hd0
-BootPartition=1
+BootPath=multi(0)disk(0)rdisk(0)partition(1)
;DriveMap=hd1,hd0
;DriveMap=hd2,hd0
;DriveMap=hd3,hd0
[DriveD]
BootType=Partition
-BootDrive=hd1
-BootPartition=1
+BootPath=multi(0)disk(0)rdisk(1)partition(1)
_____
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/Makefile
--- branches/xmlbuildsystem/reactos/boot/freeldr/Makefile
2005-05-05 19:11:20 UTC (rev 15016)
+++ branches/xmlbuildsystem/reactos/boot/freeldr/Makefile
2005-05-05 19:15:25 UTC (rev 15017)
@@ -20,6 +20,7 @@
PATH_TO_TOP = ../..
include rules.mak
+include $(PATH_TO_TOP)/config
all:
$(MAKE) -C tools
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/bootsect/Makefile.powerpc
---
branches/xmlbuildsystem/reactos/boot/freeldr/bootsect/Makefile.powerpc
2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/bootsect/Makefile.powerpc
2005-05-05 19:15:25 UTC (rev 15017)
@@ -27,8 +27,8 @@
rm freeldr.tmp
ofwldr: $(OBJS)
- mppcw32-ld --no-omagic $(LDSECT) $(OBJS) -g -o $@.elf
- mppcw32-objcopy $(SECTIONS) -O aixcoff-rs6000 $@.elf $@
+ $(LD) -melf32ppc --no-omagic $(LDSECT) $(OBJS) -g -o $@.elf
+ $(OBJCOPY) $(SECTIONS) -O aixcoff-rs6000 $@.elf $@
$(TOOLS)/hack-coff $@
clean:
_____
Modified: branches/xmlbuildsystem/reactos/boot/freeldr/bootsect/fat.asm
--- branches/xmlbuildsystem/reactos/boot/freeldr/bootsect/fat.asm
2005-05-05 19:11:20 UTC (rev 15016)
+++ branches/xmlbuildsystem/reactos/boot/freeldr/bootsect/fat.asm
2005-05-05 19:15:25 UTC (rev 15017)
@@ -89,9 +89,6 @@
mov es,ax
; Make ES correct
- cmp BYTE [BYTE bp+BootDrive],BYTE 0xff ; If they have
specified a boot drive then use it
- jne GetDriveParameters
-
mov [BYTE bp+BootDrive],dl ; Save
the boot drive
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/arch.S
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/arch.S
2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/arch.S
2005-05-05 19:15:25 UTC (rev 15017)
@@ -47,10 +47,10 @@
.code32
/* Store the boot drive */
- movb %dl,(_BootDrive)
+ movb %dl,(_i386BootDrive)
/* Store the boot partition */
- movb %dh,(_BootPartition)
+ movb %dh,(_i386BootPartition)
/* GO! */
xorl %eax,%eax
@@ -275,9 +275,11 @@
* other boot loaders like Grub
*/
+#define MB_INFO_SIZE 90
#define MB_INFO_FLAGS_OFFSET 0
#define MB_INFO_BOOT_DEVICE_OFFSET 12
#define MB_INFO_COMMAND_LINE_OFFSET 16
+#define CMDLINE_SIZE 256
/*
* We want to execute at 0x8000 (to be compatible with bootsector
@@ -285,7 +287,6 @@
* above 1MB. So we let Grub load us there and then relocate
* ourself to 0x8000
*/
-#define CMDLINE_BASE 0x7000
#define FREELDR_BASE 0x8000
#define INITIAL_BASE 0x200000
@@ -328,6 +329,31 @@
movw %dx,%ds
movw %dx,%es
+ /* Check for valid multiboot signature */
+ cmpl $MULTIBOOT_BOOTLOADER_MAGIC,%eax
+ jne mbfail
+
+ /* Store multiboot info in a safe place */
+ movl %ebx,%esi
+ movl $(mb_info + INITIAL_BASE - FREELDR_BASE),%edi
+ movl $MB_INFO_SIZE,%ecx
+ rep movsb
+
+ /* Save commandline */
+ movl MB_INFO_FLAGS_OFFSET(%ebx),%edx
+ testl $MB_INFO_FLAG_COMMAND_LINE,MB_INFO_FLAGS_OFFSET(%ebx)
+ jz mb3
+ movl MB_INFO_COMMAND_LINE_OFFSET(%ebx),%esi
+ movl $(cmdline + INITIAL_BASE - FREELDR_BASE),%edi
+ movl $CMDLINE_SIZE,%ecx
+mb2: lodsb
+ stosb
+ testb %al,%al
+ jz mb3
+ dec %ecx
+ jnz mb2
+mb3:
+
/* Copy to low mem */
movl $INITIAL_BASE,%esi
movl $FREELDR_BASE,%edi
@@ -342,8 +368,8 @@
/* Clear prefetch queue & correct CS,
* jump to low mem */
- ljmp $PMODE_CS, $mb2
-mb2:
+ ljmp $PMODE_CS, $mb4
+mb4:
/* Reload segment selectors */
movw $PMODE_DS,%dx
movw %dx,%ds
@@ -353,39 +379,28 @@
movw %dx,%ss
movl $STACK32ADDR,%esp
- /* Check for valid multiboot signature */
- cmpl $MULTIBOOT_BOOTLOADER_MAGIC,%eax
- jne mbfail
-
+ movl $mb_info,%ebx
/* See if the boot device was passed in */
movl MB_INFO_FLAGS_OFFSET(%ebx),%edx
testl $MB_INFO_FLAG_BOOT_DEVICE,%edx
- jz mb3
+ jz mb5
/* Retrieve boot device info */
movl MB_INFO_BOOT_DEVICE_OFFSET(%ebx),%eax
shrl $16,%eax
incb %al
- movb %al,_BootPartition
- movb %ah,_BootDrive
- jmp mb4
-mb3: /* No boot device known, assume first partition of first
harddisk */
- movb $0x80,_BootDrive
- movb $1,_BootPartition
-mb4:
-
- /* Check for a command line */
+ movb %al,_i386BootPartition
+ movb %ah,_i386BootDrive
+ jmp mb6
+mb5: /* No boot device known, assume first partition of first
harddisk */
+ movb $0x80,_i386BootDrive
+ movb $1,_i386BootPartition
+mb6:
+ /* Check for command line */
+ mov $cmdline,%eax
+ testl $MB_INFO_FLAG_COMMAND_LINE,MB_INFO_FLAGS_OFFSET(%ebx)
+ jnz mb7
xorl %eax,%eax
- testl $MB_INFO_FLAG_COMMAND_LINE,%edx
- jz mb6
- /* Copy command line to low mem*/
- movl MB_INFO_COMMAND_LINE_OFFSET(%ebx),%esi
- movl $CMDLINE_BASE,%edi
-mb5: lodsb
- stosb
- testb %al,%al
- jnz mb5
- movl $CMDLINE_BASE,%eax
-mb6:
+mb7:
/* GO! */
pushl %eax
@@ -462,8 +477,14 @@
.word 0x3ff /* Limit */
.long 0 /* Base Address */
-EXTERN(_BootDrive)
+EXTERN(_i386BootDrive)
.long 0
-EXTERN(_BootPartition)
+EXTERN(_i386BootPartition)
.long 0
+
+mb_info:
+ .fill MB_INFO_SIZE, 1, 0
+
+cmdline:
+ .fill CMDLINE_SIZE, 1, 0
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/archmach.
c
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/archmach.
c 2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/archmach.
c 2005-05-05 19:15:25 UTC (rev 15017)
@@ -27,7 +27,7 @@
#include "rtl.h"
VOID
-MachInit(VOID)
+MachInit(char *CmdLine)
{
ULONG PciId;
@@ -39,11 +39,11 @@
PciId = READ_PORT_ULONG((ULONG*) 0xcfc);
if (0x02a510de == PciId)
{
- XboxMachInit();
+ XboxMachInit(CmdLine);
}
else
{
- PcMachInit();
+ PcMachInit(CmdLine);
}
HalpCalibrateStallExecution();
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/boot.S
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/boot.S
2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/boot.S
2005-05-05 19:15:25 UTC (rev 15017)
@@ -31,7 +31,7 @@
.code16
/* Set the boot drive */
- movb (_BootDrive),%dl
+ movb (_i386BootDrive),%dl
/* Load segment registers */
cli
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hardware.
c
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hardware.
c 2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hardware.
c 2005-05-05 19:15:25 UTC (rev 15017)
@@ -101,9 +101,9 @@
typedef struct _CM_PNP_BIOS_DEVICE_NODE
{
USHORT Size;
- UCHAR Node;
+ CHAR Node;
ULONG ProductId;
- UCHAR DeviceType[3];
+ CHAR DeviceType[3];
USHORT DeviceAttributes;
} __attribute__((packed)) CM_PNP_BIOS_DEVICE_NODE,
*PCM_PNP_BIOS_DEVICE_NODE;
@@ -258,7 +258,7 @@
Error = RegSetValue(ComponentKey,
"Component Information",
REG_BINARY,
- (PUCHAR)&CompInfo,
+ (PCHAR)&CompInfo,
sizeof(CM_COMPONENT_INFORMATION));
if (Error != ERROR_SUCCESS)
{
@@ -287,7 +287,7 @@
LONG Error;
InstData = (PCM_PNP_BIOS_INSTALLATION_CHECK)PnpBiosSupported();
- if (InstData == NULL || strncmp(InstData->Signature, "$PnP", 4))
+ if (InstData == NULL || strncmp((CHAR*)InstData->Signature, "$PnP",
4))
{
DbgPrint((DPRINT_HWDETECT, "PnP-BIOS not supported\n"));
return;
@@ -335,7 +335,7 @@
Error = RegSetValue(BusKey,
"Identifier",
REG_SZ,
- (PUCHAR)"PNP BIOS",
+ "PNP BIOS",
9);
if (Error != ERROR_SUCCESS)
{
@@ -413,7 +413,7 @@
Error = RegSetValue(BusKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -495,7 +495,7 @@
Error = RegSetValue(DiskKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -516,7 +516,7 @@
ULONG i;
ULONG Checksum;
ULONG Signature;
- char Identifier[20];
+ CHAR Identifier[20];
LONG Error;
/* Read the MBR */
@@ -568,7 +568,7 @@
Error = RegSetValue(DiskKey,
"Identifier",
REG_SZ,
- (PUCHAR) Identifier,
+ Identifier,
20);
if (Error != ERROR_SUCCESS)
{
@@ -673,7 +673,7 @@
Error = RegSetValue(SystemKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -829,7 +829,7 @@
Error = RegSetValue(PeripheralKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -845,7 +845,7 @@
Error = RegSetValue(PeripheralKey,
"Identifier",
REG_SZ,
- (PUCHAR)Identifier,
+ (PCHAR)Identifier,
strlen(Identifier) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -939,7 +939,7 @@
Error = RegSetValue(ControllerKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -1280,7 +1280,7 @@
Error = RegSetValue(PeripheralKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR)&FullResourceDescriptor,
+ (PCHAR)&FullResourceDescriptor,
sizeof(CM_FULL_RESOURCE_DESCRIPTOR) -
sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR));
if (Error != ERROR_SUCCESS)
@@ -1294,7 +1294,7 @@
Error = RegSetValue(PeripheralKey,
"Identifier",
REG_SZ,
- (PUCHAR)Identifier,
+ Identifier,
strlen(Identifier) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -1409,7 +1409,7 @@
Error = RegSetValue(ControllerKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -1426,7 +1426,7 @@
Error = RegSetValue(ControllerKey,
"Identifier",
REG_SZ,
- (PUCHAR)Buffer,
+ Buffer,
strlen(Buffer) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -1542,7 +1542,7 @@
Error = RegSetValue(ControllerKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -1559,7 +1559,7 @@
Error = RegSetValue(ControllerKey,
"Identifier",
REG_SZ,
- (PUCHAR)Buffer,
+ Buffer,
strlen(Buffer) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -1702,7 +1702,7 @@
Error = RegSetValue(PeripheralKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR)FullResourceDescriptor,
+ (PCHAR)FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -1718,7 +1718,7 @@
Error = RegSetValue(ControllerKey,
"Identifier",
REG_SZ,
- (PUCHAR)Buffer,
+ Buffer,
strlen(Buffer) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -1804,7 +1804,7 @@
Error = RegSetValue(ControllerKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR)FullResourceDescriptor,
+ (PCHAR)FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -1972,7 +1972,7 @@
Error = RegSetValue(ControllerKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR)&FullResourceDescriptor,
+ (PCHAR)&FullResourceDescriptor,
sizeof(CM_FULL_RESOURCE_DESCRIPTOR));
if (Error != ERROR_SUCCESS)
{
@@ -2014,7 +2014,7 @@
Error = RegSetValue(PeripheralKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR)&FullResourceDescriptor,
+ (PCHAR)&FullResourceDescriptor,
sizeof(CM_FULL_RESOURCE_DESCRIPTOR) -
sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR));
if (Error != ERROR_SUCCESS)
@@ -2029,7 +2029,7 @@
Error = RegSetValue(PeripheralKey,
"Identifier",
REG_SZ,
- (PUCHAR)"MICROSOFT PS2 MOUSE",
+ "MICROSOFT PS2 MOUSE",
20);
if (Error != ERROR_SUCCESS)
{
@@ -2098,7 +2098,7 @@
Error = RegSetValue(ControllerKey,
"Identifier",
REG_SZ,
- (PUCHAR)Buffer,
+ Buffer,
strlen(Buffer) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -2146,7 +2146,7 @@
Error = RegSetValue(BusKey,
"Identifier",
REG_SZ,
- (PUCHAR)"ISA",
+ "ISA",
4);
if (Error != ERROR_SUCCESS)
{
@@ -2175,7 +2175,7 @@
Error = RegSetValue(BusKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwacpi.c
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwacpi.c
2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwacpi.c
2005-05-05 19:15:25 UTC (rev 15017)
@@ -92,7 +92,7 @@
Error = RegSetValue(BiosKey,
"Identifier",
REG_SZ,
- (PUCHAR)"ACPI BIOS",
+ "ACPI BIOS",
10);
if (Error != ERROR_SUCCESS)
{
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwapm.c
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwapm.c
2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwapm.c
2005-05-05 19:15:25 UTC (rev 15017)
@@ -95,7 +95,7 @@
Error = RegSetValue(BiosKey,
"Identifier",
REG_SZ,
- (PUCHAR)"APM",
+ "APM",
4);
if (Error != ERROR_SUCCESS)
{
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwcpu.c
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwcpu.c
2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwcpu.c
2005-05-05 19:15:25 UTC (rev 15017)
@@ -111,8 +111,8 @@
DetectCPU(FRLDRHKEY CpuKey,
FRLDRHKEY FpuKey)
{
- char VendorIdentifier[13];
- char Identifier[64];
+ CHAR VendorIdentifier[13];
+ CHAR Identifier[64];
ULONG FeatureSet;
FRLDRHKEY CpuInstKey;
FRLDRHKEY FpuInstKey;
@@ -195,7 +195,7 @@
Error = RegSetValue(CpuInstKey,
"FeatureSet",
REG_DWORD,
- (PUCHAR)&FeatureSet,
+ (PCHAR)&FeatureSet,
sizeof(ULONG));
if (Error != ERROR_SUCCESS)
{
@@ -208,7 +208,7 @@
Error = RegSetValue(CpuInstKey,
"Identifier",
REG_SZ,
- (PUCHAR)Identifier,
+ Identifier,
strlen(Identifier) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -218,7 +218,7 @@
Error = RegSetValue(FpuInstKey,
"Identifier",
REG_SZ,
- (PUCHAR)Identifier,
+ Identifier,
strlen(Identifier) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -231,7 +231,7 @@
Error = RegSetValue(CpuInstKey,
"VendorIdentifier",
REG_SZ,
- (PUCHAR)VendorIdentifier,
+ VendorIdentifier,
strlen(VendorIdentifier) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -250,7 +250,7 @@
Error = RegSetValue(CpuInstKey,
"~MHz",
REG_DWORD,
- (PUCHAR)&CpuSpeed,
+ (PCHAR)&CpuSpeed,
sizeof(ULONG));
if (Error != ERROR_SUCCESS)
{
@@ -339,7 +339,7 @@
Error = RegSetValue(CpuInstKey,
"FeatureSet",
REG_DWORD,
- (PUCHAR)&FeatureSet,
+ (PCHAR)&FeatureSet,
sizeof(ULONG));
if (Error != ERROR_SUCCESS)
{
@@ -352,7 +352,7 @@
Error = RegSetValue(CpuInstKey,
"Identifier",
REG_SZ,
- (PUCHAR)Identifier,
+ Identifier,
strlen(Identifier) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -362,7 +362,7 @@
Error = RegSetValue(FpuInstKey,
"Identifier",
REG_SZ,
- (PUCHAR)Identifier,
+ Identifier,
strlen(Identifier) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -375,7 +375,7 @@
Error = RegSetValue(CpuInstKey,
"VendorIdentifier",
REG_SZ,
- (PUCHAR)VendorIdentifier,
+ VendorIdentifier,
strlen(VendorIdentifier) + 1);
if (Error != ERROR_SUCCESS)
{
@@ -394,7 +394,7 @@
Error = RegSetValue(CpuInstKey,
"~MHz",
REG_DWORD,
- (PUCHAR)&CpuSpeed,
+ (PCHAR)&CpuSpeed,
sizeof(ULONG));
if (Error != ERROR_SUCCESS)
{
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwpci.c
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwpci.c
2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/hwpci.c
2005-05-05 19:15:25 UTC (rev 15017)
@@ -178,7 +178,7 @@
Error = RegSetValue(TableKey,
"Identifier",
REG_SZ,
- (PUCHAR)"PCI Real-mode IRQ Routing Table",
+ "PCI Real-mode IRQ Routing Table",
32);
if (Error != ERROR_SUCCESS)
{
@@ -216,7 +216,7 @@
Error = RegSetValue(TableKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
@@ -272,7 +272,7 @@
Error = RegSetValue(BiosKey,
"Identifier",
REG_SZ,
- (PUCHAR)"PCI BIOS",
+ "PCI BIOS",
9);
if (Error != ERROR_SUCCESS)
{
@@ -301,7 +301,7 @@
Error = RegSetValue(BiosKey,
"Configuration Data",
REG_FULL_RESOURCE_DESCRIPTOR,
- (PUCHAR) FullResourceDescriptor,
+ (PCHAR) FullResourceDescriptor,
Size);
MmFreeMemory(FullResourceDescriptor);
if (Error != ERROR_SUCCESS)
_____
Copied:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/i386.h
(from rev 14980, trunk/reactos/boot/freeldr/freeldr/arch/i386/i386.h)
Property changes on:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/i386.h
___________________________________________________________________
Name: svn:keywords + Author Date Id Revision Name: svn:eol-style +
native
_____
Modified:
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/i386disk.
c
---
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/i386disk.
c 2005-05-05 19:11:20 UTC (rev 15016)
+++
branches/xmlbuildsystem/reactos/boot/freeldr/freeldr/arch/i386/i386disk.
c 2005-05-05 19:15:25 UTC (rev 15017)
@@ -19,6 +19,8 @@
#include "freeldr.h"
#include "debug.h"
+#include "i386.h"
+#include "fsrec.h"
////////////////////////////////////////////////////////////////////////
/////////////////////
// FUNCTIONS
@@ -166,4 +168,244 @@
return TRUE;
}
-#endif // defined __i386__
+BOOL i386DiskGetBootVolume(PULONG DriveNumber, PULONGLONG StartSector,
PULONGLONG SectorCount, int *FsType)
+{
+ PARTITION_TABLE_ENTRY PartitionTableEntry;
+ UCHAR VolumeType;
+
+ DbgPrint((DPRINT_FILESYSTEM, "FsOpenVolume() DriveNumber: 0x%x
PartitionNumber: 0x%x\n", i386BootDrive, i386BootPartition));
+
+ // Check and see if it is a floppy drive
+ // If so then just assume FAT12 file system type
+ if (DiskIsDriveRemovable(i386BootDrive))
+ {
+ DbgPrint((DPRINT_FILESYSTEM, "Drive is a floppy diskette
drive. Assuming FAT12 file system.\n"));
+
+ *DriveNumber = i386BootDrive;
+ *StartSector = 0;
+ *SectorCount = 2 * 80 * 18; /* FIXME hardcoded for 1.44
Mb */
+ *FsType = FS_FAT;
+ return TRUE;
+ }
+
+ // Check for ISO9660 file system type
+ if (i386BootDrive >= 0x80 && FsRecIsIso9660(i386BootDrive))
+ {
+ DbgPrint((DPRINT_FILESYSTEM, "Drive is a cdrom drive.
Assuming ISO-9660 file system.\n"));
+
+ *DriveNumber = i386BootDrive;
+ *StartSector = 0;
+ *SectorCount = 0;
+ *FsType = FS_ISO9660;
+ return TRUE;
+ }
+
+ // Get the requested partition entry
+ if (i386BootPartition == 0)
+ {
+ // Partition requested was zero which means the boot
partition
+ if (! DiskGetActivePartitionEntry(i386BootDrive,
&PartitionTableEntry))
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ // Get requested partition
+ if (! MachDiskGetPartitionEntry(i386BootDrive,
i386BootPartition, &PartitionTableEntry))
+ {
+ return FALSE;
+ }
+ }
+
+ // Check for valid partition
+ if (PartitionTableEntry.SystemIndicator ==
PARTITION_ENTRY_UNUSED)
+ {
+ return FALSE;
+ }
+
+ // Try to recognize the file system
+ if (!FsRecognizeVolume(i386BootDrive,
PartitionTableEntry.SectorCountBeforePartition, &VolumeType))
+ {
+ return FALSE;
+ }
+
+ *DriveNumber = i386BootDrive;
+ *StartSector = PartitionTableEntry.SectorCountBeforePartition;
+ *SectorCount = PartitionTableEntry.PartitionSectorCount;
+
+ //switch (PartitionTableEntry.SystemIndicator)
+ switch (VolumeType)
+ {
+ case PARTITION_FAT_12:
+ case PARTITION_FAT_16:
+ case PARTITION_HUGE:
+ case PARTITION_XINT13:
+ case PARTITION_FAT32:
+ case PARTITION_FAT32_XINT13:
+ *FsType = FS_FAT;
+ return TRUE;
+ case PARTITION_EXT2:
+ *FsType = FS_EXT2;
+ return TRUE;
+ case PARTITION_NTFS:
+ *FsType = FS_NTFS;
+ return TRUE;
+ default:
[truncated at 1000 lines; 84535 more skipped]