You've already forked slimbootloader
mirror of
https://github.com/Dasharo/slimbootloader.git
synced 2026-03-06 15:26:20 -08:00
Convert the line endings stored for all text files in the repository to LF. The majority previously used DOS-style CRLF line endings. Add a .gitattributes file to enforce this and treat certain extensions as never being text files. Update PatchCheck.py to insist on LF line endings rather than CRLF. However, its other checks fail on this commit due to lots of pre-existing complaints that it only notices because the line endings have changed. Silicon/QemuSocPkg/FspBin/Patches/0001-Build-QEMU-FSP-2.0-binaries.patch needs to be treated as binary since it contains a mixture of line endings. This change has implications depending on the client platform you are using the repository from: * Windows The usual configuration for Git on Windows means that text files will be checked out to the work tree with DOS-style CRLF line endings. If that's not the case then you can configure Git to do so for the entire machine with: git config --global core.autocrlf true or for just the repository with: git config core.autocrlf true Line endings will be normalised to LF when they are committed to the repository. If you commit a text file with only LF line endings then it will be converted to CRLF line endings in your work tree. * Linux, MacOS and other Unices The usual configuration for Git on such platforms is to check files out of the repository with LF line endings. This is probably the right thing for you. In the unlikely even that you are using Git on Unix but editing or compiling on Windows for some reason then you may need to tweak your configuration to force the use of CRLF line endings as described above. * General For more information see https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings . Fixes: https://github.com/slimbootloader/slimbootloader/issues/1400 Signed-off-by: Mike Crowe <mac@mcrowe.com>
253 lines
6.9 KiB
C
253 lines
6.9 KiB
C
/** @file
|
|
|
|
Copyright (c) 2011 - 2019, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef __LINUX_LIB_H__
|
|
#define __LINUX_LIB_H__
|
|
|
|
#define BOOTSIG 0x1FE
|
|
#define SETUP_HDR 0x53726448 // "HdrS"
|
|
|
|
#define BOOT_PARAMS_BASE 0x00090000
|
|
#define LINUX_KERNEL_BASE 0x00100000
|
|
#define CMDLINE_OFFSET 0xF000
|
|
#define CMDLINE_LENGTH_MAX 0x800
|
|
|
|
#define E820_RAM 1
|
|
#define E820_RESERVED 2
|
|
#define E820_ACPI 3
|
|
#define E820_NVS 4
|
|
#define E820_UNUSABLE 5
|
|
|
|
#define VIDEO_TYPE_EFI 0x70
|
|
#define GET_POS_FROM_MASK(mask) (mask & 0x0FF)?0:((mask & 0x0FF00)?8:((mask & 0x0FF0000)?16:24))
|
|
|
|
#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
|
|
#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef struct {
|
|
UINT8 SetupSectorss; /* Sectors for setup code */
|
|
UINT16 RootFlags;
|
|
UINT32 SysSize;
|
|
UINT16 RamSize;
|
|
UINT16 VideoMode;
|
|
UINT16 RootDev;
|
|
UINT16 Signature; /* Boot Signature */
|
|
UINT16 Jump;
|
|
UINT32 Header;
|
|
UINT16 Version;
|
|
UINT16 SuSwitch;
|
|
UINT16 SetupSeg;
|
|
UINT16 StartSys;
|
|
UINT16 KernalVer;
|
|
UINT8 LoaderId;
|
|
UINT8 LoadFlags;
|
|
UINT16 MoveSize;
|
|
UINT32 Code32Start; /* Start of code loaded high */
|
|
UINT32 RamDiskStart; /* Start of initial ramdisk */
|
|
UINT32 RamDisklen; /* Length of initial ramdisk */
|
|
UINT32 BootsectorKludge;
|
|
UINT16 HeapEnd;
|
|
UINT8 ExtLoaderVer; /* Extended boot loader version */
|
|
UINT8 ExtLoaderType; /* Extended boot loader ID */
|
|
UINT32 CmdLinePtr; /* 32-bit pointer to the kernel command line */
|
|
UINT32 RamDiskMax; /* Highest legal initrd address */
|
|
UINT32 KernelAlignment; /* Physical addr alignment required for kernel */
|
|
UINT8 RelocatableKernel; /* Whether kernel is relocatable or not */
|
|
UINT8 MinAlignment;
|
|
UINT16 XloadFlags;
|
|
UINT32 CmdlineSize;
|
|
UINT32 HardwareSubarch;
|
|
UINT64 HardwareSubarchData;
|
|
UINT32 PayloadOffset;
|
|
UINT32 PayloadLength;
|
|
UINT64 SetupData;
|
|
UINT64 PrefAddress;
|
|
UINT32 InitSize;
|
|
UINT32 HandoverOffset;
|
|
} SETUP_HEADER;
|
|
|
|
typedef struct {
|
|
UINT32 EfiLoaderSignature;
|
|
UINT32 EfiSystab;
|
|
UINT32 EfiMemdescSize;
|
|
UINT32 EfiMemdescVersion;
|
|
UINT32 EfiMemmap;
|
|
UINT32 EfiMemmapSize;
|
|
UINT32 EfiSystabHi;
|
|
UINT32 EfiMemmapHi;
|
|
} EFI_INFO;
|
|
|
|
typedef struct {
|
|
UINT64 Addr; /* start of memory segment */
|
|
UINT64 Size; /* size of memory segment */
|
|
UINT32 Type; /* Type of memory segment */
|
|
} E820_ENTRY;
|
|
|
|
typedef struct {
|
|
UINT8 OrigX; /* 0x00 */
|
|
UINT8 OrigY; /* 0x01 */
|
|
UINT16 ExtMemK; /* 0x02 */
|
|
UINT16 OrigVideoPage; /* 0x04 */
|
|
UINT8 OrigVideoMode; /* 0x06 */
|
|
UINT8 OrigVideoCols; /* 0x07 */
|
|
UINT8 Flags; /* 0x08 */
|
|
UINT8 Unused2; /* 0x09 */
|
|
UINT16 OrigVideoEgaBx; /* 0x0a */
|
|
UINT16 Unused3; /* 0x0c */
|
|
UINT8 OrigVideoLines; /* 0x0e */
|
|
UINT8 OrigVideoIsVGA; /* 0x0f */
|
|
UINT16 OrigVideoPoints; /* 0x10 */
|
|
|
|
/* VESA graphic mode -- linear frame buffer */
|
|
UINT16 LfbWidth; /* 0x12 */
|
|
UINT16 LfbHeight; /* 0x14 */
|
|
UINT16 LfbDepth; /* 0x16 */
|
|
UINT32 LfbBase; /* 0x18 */
|
|
UINT32 LfbSize; /* 0x1c */
|
|
UINT16 ClMagic, ClOffset; /* 0x20 */
|
|
UINT16 LfbLinelength; /* 0x24 */
|
|
UINT8 RedSize; /* 0x26 */
|
|
UINT8 RedPos; /* 0x27 */
|
|
UINT8 GreenSize; /* 0x28 */
|
|
UINT8 GreenPos; /* 0x29 */
|
|
UINT8 BlueSize; /* 0x2a */
|
|
UINT8 BluePos; /* 0x2b */
|
|
UINT8 RsvdSize; /* 0x2c */
|
|
UINT8 RsvdPos; /* 0x2d */
|
|
UINT16 VesapmSeg; /* 0x2e */
|
|
UINT16 VesapmOff; /* 0x30 */
|
|
UINT16 Pages; /* 0x32 */
|
|
UINT16 VesaAttributes; /* 0x34 */
|
|
UINT32 Capabilities; /* 0x36 */
|
|
UINT32 ExtLfbBase; /* 0x3a */
|
|
UINT8 Reserved[2]; /* 0x3e */
|
|
} SCREEN_INFO;
|
|
|
|
typedef struct {
|
|
SCREEN_INFO ScreenInfo;
|
|
UINT8 ApmBiosInfo[0x14];
|
|
UINT8 Pad2[4];
|
|
UINT64 TbootAddr;
|
|
UINT8 IstInfo[0x10];
|
|
UINT64 AcpiRsdpAddr;
|
|
UINT8 Pad3[8];
|
|
UINT8 Hd0Info[16];
|
|
UINT8 Hd1Info[16];
|
|
UINT8 SysDescTable[0x10];
|
|
UINT8 OlpcOfwHeader[0x10];
|
|
UINT8 Pad4[128];
|
|
UINT8 EdidInfo[0x80];
|
|
EFI_INFO EfiInfo;
|
|
UINT32 AltMemk;
|
|
UINT32 Scratch;
|
|
UINT8 E820Entries;
|
|
UINT8 EddbufEntries;
|
|
UINT8 EddMbrSigBufEntries;
|
|
UINT8 Pad6[6];
|
|
SETUP_HEADER Hdr;
|
|
UINT8 Pad7[0x290 - 0x1f1 - sizeof (SETUP_HEADER)];
|
|
UINT32 EddMbrSigBuffer[16];
|
|
E820_ENTRY E820Map[128];
|
|
UINT8 Pad8[48];
|
|
UINT8 Eddbuf[0x1ec];
|
|
UINT8 Pad9[276];
|
|
} BOOT_PARAMS;
|
|
|
|
typedef struct {
|
|
UINT16 Limit;
|
|
UINT64 *Base;
|
|
} DT_ADDR;
|
|
|
|
#pragma pack()
|
|
|
|
/**
|
|
Dumps kernel boot parameters.
|
|
|
|
@param[in] Bp Pointer to boot parameter structure.
|
|
**/
|
|
VOID
|
|
DumpLinuxBootParams (
|
|
IN BOOT_PARAMS *Bp
|
|
);
|
|
|
|
/**
|
|
Return kernel boot parameters.
|
|
|
|
@retval Pointer to boot parameter structure.
|
|
**/
|
|
BOOT_PARAMS *
|
|
EFIAPI
|
|
GetLinuxBootParams (
|
|
VOID
|
|
);
|
|
|
|
/**
|
|
Check if the image is a bootable Linux image.
|
|
|
|
@param[in] ImageBase Memory address of an image
|
|
|
|
@retval TRUE Image is a bootable kernel image
|
|
@retval FALSE Not a bootable kernel image
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
IsBzImage (
|
|
IN CONST VOID *ImageBase
|
|
);
|
|
|
|
/**
|
|
Load linux kernel image to specified address and setup boot parameters.
|
|
|
|
@param[in] KernelBase Memory address of an kernel image.
|
|
@param[in] InitRdBase Memory address of an InitRd image.
|
|
@param[in] InitRdLen InitRd image size.
|
|
@param[in] CmdLineBase Memory address of command line buffer.
|
|
@param[in] CmdLineLen Command line buffer size.
|
|
|
|
@retval EFI_INVALID_PARAMETER Input parameters are not valid.
|
|
@retval EFI_UNSUPPORTED Unsupported binary type.
|
|
@retval EFI_SUCCESS Kernel is loaded successfully.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
LoadBzImage (
|
|
IN CONST VOID *KernelBase,
|
|
IN CONST VOID *InitRdBase,
|
|
IN UINT32 InitRdLen,
|
|
IN CONST VOID *CmdLineBase,
|
|
IN UINT32 CmdLineLen
|
|
);
|
|
|
|
/**
|
|
Update linux kernel boot parameters.
|
|
|
|
@param[in] Bp BootParams address to be updated
|
|
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
UpdateLinuxBootParams (
|
|
IN BOOT_PARAMS *Bp
|
|
);
|
|
|
|
/**
|
|
Load linux kernel image to specified address and setup boot parameters.
|
|
|
|
@param[in] HobList HOB list pointer. Not used for now.
|
|
@param[in] Params Extra parameters. Not used for now.
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
LinuxBoot (
|
|
IN VOID *HobList,
|
|
IN VOID *Params
|
|
);
|
|
|
|
#endif
|