#ifndef __LINUX_H
#define __LINUX_H
-#ifdef __i386__
-#define LINUX_LOADER_TYPE_LILO 0x01
-#define LINUX_LOADER_TYPE_LOADLIN 0x11
-#define LINUX_LOADER_TYPE_BOOTSECT 0x21
-#define LINUX_LOADER_TYPE_SYSLINUX 0x31
-#define LINUX_LOADER_TYPE_ETHERBOOT 0x41
+#if defined(_M_IX86) || defined(_M_AMD64)
+
+#define LINUX_LOADER_TYPE_LILO 0x01
+#define LINUX_LOADER_TYPE_LOADLIN 0x11
+#define LINUX_LOADER_TYPE_BOOTSECT 0x21
+#define LINUX_LOADER_TYPE_SYSLINUX 0x31
+#define LINUX_LOADER_TYPE_ETHERBOOT 0x41
#define LINUX_LOADER_TYPE_FREELOADER 0x81
#define LINUX_COMMAND_LINE_MAGIC 0xA33F
-#define LINUX_SETUP_HEADER_ID 0x53726448 // 'HdrS'
+#define LINUX_SETUP_HEADER_ID 0x53726448 // 'HdrS'
-#define LINUX_BOOT_SECTOR_MAGIC 0xAA55
+#define LINUX_BOOT_SECTOR_MAGIC 0xAA55
-#define LINUX_KERNEL_LOAD_ADDRESS 0x100000
+#define LINUX_KERNEL_LOAD_ADDRESS 0x100000
#define LINUX_FLAG_LOAD_HIGH 0x01
-#define LINUX_FLAG_CAN_USE_HEAP 0x80
+#define LINUX_FLAG_CAN_USE_HEAP 0x80
#define LINUX_MAX_INITRD_ADDRESS 0x38000000
} LINUX_SETUPSECTOR, *PLINUX_SETUPSECTOR;
#include <poppack.h>
-VOID BootNewLinuxKernel(VOID); // Implemented in linux.S
-VOID BootOldLinuxKernel(ULONG KernelSize); // Implemented in linux.S
-
-VOID
-LoadAndBootLinux(IN OperatingSystemItem* OperatingSystem,
- IN USHORT OperatingSystemVersion);
-
-BOOLEAN LinuxParseIniSection(PCSTR OperatingSystemName);
-BOOLEAN LinuxReadBootSector(PFILE LinuxKernelFile);
-BOOLEAN LinuxReadSetupSector(PFILE LinuxKernelFile);
-BOOLEAN LinuxReadKernel(PFILE LinuxKernelFile);
-BOOLEAN LinuxCheckKernelVersion(VOID);
-BOOLEAN LinuxReadInitrd(PFILE LinuxInitrdFile);
-#endif /* __i386__ */
+// Implemented in linux.S
+VOID __cdecl BootLinuxKernel(
+ IN ULONG KernelSize,
+ IN PVOID KernelCurrentLoadAddress,
+ IN PVOID KernelTargetLoadAddress,
+ IN UCHAR DriveNumber,
+ IN ULONG PartitionNumber);
+
+ARC_STATUS
+LoadAndBootLinux(
+ IN ULONG Argc,
+ IN PCHAR Argv[],
+ IN PCHAR Envp[]);
+
+#endif /* _M_IX86 || _M_AMD64 */
#endif // defined __LINUX_H