mirror of
https://github.com/Fennix-Project/Lynx.git
synced 2025-07-11 23:29:15 +00:00
Code stub
This commit is contained in:
44
UEFI/Makefile
Normal file
44
UEFI/Makefile
Normal file
@ -0,0 +1,44 @@
|
||||
include ../../Makefile.conf
|
||||
|
||||
NAME=efi-loader.bin
|
||||
CC = gcc
|
||||
LD = ld
|
||||
OBJCOPY = objcopy
|
||||
|
||||
C_SOURCES = $(shell find ./src -type f -name '*.c')
|
||||
OBJ = $(C_SOURCES:.c=.o)
|
||||
|
||||
GNUEFI_RELEASE_VERSION=3.0.14
|
||||
|
||||
gnuefi:
|
||||
wget https://archive.org/download/gnu-efi-$(GNUEFI_RELEASE_VERSION).tar/gnu-efi-$(GNUEFI_RELEASE_VERSION).tar.bz2
|
||||
tar -xf gnu-efi-$(GNUEFI_RELEASE_VERSION).tar.bz2
|
||||
rm gnu-efi-$(GNUEFI_RELEASE_VERSION).tar.bz2
|
||||
mv ./gnu-efi-$(GNUEFI_RELEASE_VERSION) ./gnu-efi
|
||||
mkdir -p include
|
||||
cp -a ./gnu-efi/inc/. ./include
|
||||
make -C gnu-efi
|
||||
|
||||
prepare: gnuefi
|
||||
|
||||
build: $(NAME)
|
||||
|
||||
$(NAME): BOOTX64
|
||||
dd if=/dev/zero of=$(NAME) bs=512 count=93750
|
||||
mformat -i $(NAME) ::
|
||||
mmd -i $(NAME) ::/EFI
|
||||
mmd -i $(NAME) ::/EFI/BOOT
|
||||
mcopy -i $(NAME) BOOTX64.EFI ::/EFI/BOOT
|
||||
|
||||
BOOTX64: $(OBJ)
|
||||
$(LD) -shared -Bsymbolic -Lgnu-efi/x86_64/lib -Lgnu-efi/x86_64/gnuefi -Tgnu-efi/gnuefi/elf_x86_64_efi.lds gnu-efi/x86_64/gnuefi/crt0-efi-x86_64.o $(OBJ) -o tmp.so -lgnuefi -lefi
|
||||
$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc --target efi-app-x86_64 --subsystem=10 tmp.so BOOTX64.EFI
|
||||
rm tmp.so
|
||||
|
||||
%.o: %.c
|
||||
$(info Compiling $<)
|
||||
$(CC) -Ignu-efi/inc -Ignu-efi/inc/x86_64 -Ignu-efi/inc/protocol -fpic -ffreestanding -fno-stack-protector -fno-stack-check -fshort-wchar -mno-red-zone -maccumulate-outgoing-args -c $< -o $@
|
||||
|
||||
|
||||
clean:
|
||||
rm -f $(NAME) $(OBJ) BOOTX64.EFI
|
8
UEFI/src/FileLoader.c
Normal file
8
UEFI/src/FileLoader.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include "FileLoader.h"
|
||||
|
||||
// https://wiki.osdev.org/Loading_files_under_UEFI
|
||||
|
||||
EFI_FILE *LoadFile(EFI_FILE *Directory, CHAR16 *Path, EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
|
||||
{
|
||||
return NULL;
|
||||
}
|
5
UEFI/src/FileLoader.h
Normal file
5
UEFI/src/FileLoader.h
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
EFI_FILE *LoadFile(EFI_FILE *Directory, CHAR16 *Path, EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable);
|
23
UEFI/src/Lynx.c
Normal file
23
UEFI/src/Lynx.c
Normal file
@ -0,0 +1,23 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
#include "FileLoader.h"
|
||||
|
||||
EFI_STATUS EFIAPI efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
|
||||
{
|
||||
InitializeLib(ImageHandle, SystemTable);
|
||||
SystemTable->BootServices->SetWatchdogTimer(0, 0, 0, NULL);
|
||||
Print(L"Lynx Bootloader © EnderIce2 2022\n");
|
||||
EFI_FILE *Kernel = LoadFile(NULL, L"kernel.fsys", ImageHandle, SystemTable);
|
||||
|
||||
if (Kernel == NULL)
|
||||
{
|
||||
Print(L"Kernel not found\n");
|
||||
while (1)
|
||||
asm("hlt");
|
||||
}
|
||||
|
||||
while (1)
|
||||
asm("hlt");
|
||||
return EFI_SUCCESS;
|
||||
}
|
0
UEFI/src/Paging.c
Normal file
0
UEFI/src/Paging.c
Normal file
0
UEFI/src/VirtualMemory.c
Normal file
0
UEFI/src/VirtualMemory.c
Normal file
Reference in New Issue
Block a user