[FREELDR] Add support for loading Linux in x64 FreeLdr. Part 2/2: C code.
[reactos.git] / boot / freeldr / freeldr / include / linux.h
index 38928f9..6bb92d9 100644 (file)
 #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
 
@@ -127,19 +128,20 @@ typedef struct
 } 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