refactor: fix release building for aarch64 and arm

Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
EnderIce2 2025-01-11 07:11:28 +02:00
parent 75c8dbd31b
commit 3af04bce80
No known key found for this signature in database
GPG Key ID: 2EE20AF089811A5A
16 changed files with 40 additions and 10 deletions

View File

@ -173,7 +173,6 @@ jobs:
with:
folder: doxygen-doc
compile_amd64:
name: Build amd64
runs-on: ubuntu-latest

View File

@ -54,7 +54,7 @@ else ifeq ($(OSARCH), i386)
CFLAGS += -march=pentium -m32 -mno-red-zone
LDFLAGS += -Tarch/i386/linker.ld
else ifeq ($(OSARCH), arm)
CFLAGS += -march=armv7-a -mfloat-abi=softfp
CFLAGS += -march=armv7-a -mfloat-abi=softfp -ggdb3
LDFLAGS += -Tarch/arm/linker.ld
WARNCFLAG += -w
else ifeq ($(OSARCH), aarch64)

View File

@ -15,6 +15,9 @@
along with Fennix Kernel. If not, see <https://www.gnu.org/licenses/>.
*/
OUTPUT_FORMAT("elf64-littleaarch64")
OUTPUT_ARCH(aarch64)
ENTRY(_start)
SECTIONS

View File

@ -15,6 +15,9 @@
along with Fennix Kernel. If not, see <https://www.gnu.org/licenses/>.
*/
OUTPUT_FORMAT("elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS

View File

@ -163,8 +163,9 @@ namespace CPU
asmv("popl %0"
: "=r"(Flags));
return Flags & (1 << 9);
#elif defined(__aarch64__)
#warning "aarch64 not implemented"
#else
#warning "not implemented"
UNUSED(Flags);
return 0;
#endif
}

View File

@ -80,6 +80,7 @@ namespace v0
#elif defined(__aarch64__)
UNUSED(cs);
stub;
return 0;

View File

@ -36,7 +36,9 @@ namespace Memory
this->PTEIndex = Address & 0x3FF;
Address >>= 10;
this->PDEIndex = Address & 0x3FF;
#elif defined(__aarch64__)
#else
#warning "not implemented"
UNUSED(Address);
#endif
if (VirtualAddress > PAGE_SIZE)

View File

@ -330,6 +330,8 @@ namespace Memory
MgrLock.Lock(__FUNCTION__);
#else
#warning "Not implemented"
UNUSED(AddressToMap);
UNUSED(RealAddress);
#endif
}

View File

@ -188,6 +188,8 @@ nsa __noreturn void HandleUnrecoverableException(CPU::ExceptionFrame *Frame)
#if defined(__amd64__) || defined(__i386__)
ExPrint("\x1b[30;41mUnrecoverable exception %#lx on CPU %d\n",
Frame->InterruptNumber, core->ID);
#else
UNUSED(core);
#endif
#if defined(__amd64__) || defined(__i386__)
ExPrint("CR0=%#lx CR2=%#lx CR3=%#lx CR4=%#lx CR8=%#lx\n",

View File

@ -779,6 +779,9 @@ nsa void DisplayAssertionFailed(const char *File, int Line, const char *Expressi
asmv("movl %%cr3, %0" : "=r"(ef.cr3));
ef.eip = (uint32_t)fun;
ef.ebp = ef.esp = (uint32_t)stk;
#else
UNUSED(fun);
UNUSED(stk);
#endif
DisplayStackScreen(&ef);

View File

@ -154,6 +154,8 @@ nsa bool UserModeExceptionHandler(CPU::ExceptionFrame *Frame)
break;
}
}
#else
UNUSED(proc);
#endif
if (sigRet == 0)

View File

@ -355,8 +355,9 @@ EXTERNC __no_stack_protector NIF void Entry(BootInfo *Info)
: "r"(KernelStack)
: "memory");
asmv("mov $0, %ebp");
#elif defined(__aarch64__)
#else
#warning "Kernel stack is not set!"
UNUSED(KernelStack);
#endif
#ifdef DEBUG

View File

@ -69,6 +69,8 @@ void cmd_top(const char *)
Thrd->ID, Thrd->Name, TaskStateStrings[Thrd->State.load()],
Thrd->Info.Priority, TO_KiB(Thrd->GetSize()),
Thrd->Info.UserTime + Thrd->Info.KernelTime);
#else
UNUSED(Thrd);
#endif
}
}

View File

@ -48,6 +48,9 @@ void cmd_uptime(const char *)
printf("%lld days, %lld hours, %lld minutes, %lld %s\n",
Days, Hours, Minutes, Seconds,
Seconds == 1 ? "second" : "seconds");
#else
#warning "not implemented"
UNUSED(Days);
#endif
}
else

View File

@ -1091,6 +1091,9 @@ static int linux_mprotect(SysFrm *, void *addr, size_t len, int prot)
pte->UserSupervisor = p_Read;
pte->ReadWrite = p_Write;
// pte->ExecuteDisable = p_Exec;
#else
UNUSED(p_Read);
UNUSED(p_Write);
#endif
debug("Changed permissions of page %#lx to %s %s %s %s",
@ -4332,7 +4335,9 @@ uintptr_t HandleLinuxSyscalls(SyscallsFrame *Frame)
debug("< [%d:\"%s\"] = %d", Frame->ax, Syscall.Name, sc_ret);
return sc_ret;
#elif defined(__aarch64__)
#else
UNUSED(LinuxSyscallsTableAMD64);
UNUSED(LinuxSyscallsTableI386);
return -linux_ENOSYS;
#endif

View File

@ -320,8 +320,9 @@ namespace Tasking
this->Registers.rsp = StackPointerReg;
#elif defined(__i386__)
this->Registers.esp = StackPointerReg;
#elif defined(__aarch64__)
#warning "aarch64 not implemented"
#else
#warning "not implemented"
UNUSED(StackPointerReg);
#endif
if (argvLen > 0)