diff --git a/src/system/boot/arch/arm/arch_cpu.cpp b/src/system/boot/arch/arm/arch_cpu.cpp index 5bb64e59ab..fdd6d07297 100644 --- a/src/system/boot/arch/arm/arch_cpu.cpp +++ b/src/system/boot/arch/arm/arch_cpu.cpp @@ -123,13 +123,6 @@ arch_cpu_memory_write_barrier(void) } -extern "C" void -arch_spin(bigtime_t microseconds) -{ - panic("No timing support in bootloader yet!"); -} - - extern "C" status_t boot_arch_cpu_init(void) { @@ -144,3 +137,21 @@ boot_arch_cpu_init(void) return B_OK; } + + +extern "C" bigtime_t +system_time() +{ + #warning Implement system_time in ARM bootloader! + return 0; +} + + +extern "C" void +spin(bigtime_t microseconds) +{ + #warning Implment spin in ARM bootloader! + //bigtime_t time = system_time(); + //while ((system_time() - time) < microseconds) + // asm volatile ("nop;"); +} diff --git a/src/system/boot/arch/arm/arch_cpu.h b/src/system/boot/arch/arm/arch_cpu.h index beebacb359..f904cf2e01 100644 --- a/src/system/boot/arch/arm/arch_cpu.h +++ b/src/system/boot/arch/arm/arch_cpu.h @@ -13,7 +13,6 @@ extern "C" { #endif -extern void arch_spin(bigtime_t microseconds); extern void arch_cpu_memory_read_barrier(void); extern void arch_cpu_memory_write_barrier(void); extern status_t boot_arch_cpu_init(void); diff --git a/src/system/boot/platform/efi/arch/arm/crt0-efi-arm.S b/src/system/boot/platform/efi/arch/arm/crt0-efi-arm.S index c5bb6d482d..817d8a775b 100644 --- a/src/system/boot/platform/efi/arch/arm/crt0-efi-arm.S +++ b/src/system/boot/platform/efi/arch/arm/crt0-efi-arm.S @@ -69,7 +69,7 @@ extra_header_fields: // Everything before the kernel image is considered part of the header .long _start - ImageBase // SizeOfHeaders .long 0 // CheckSum - .short EFI_SUBSYSTEM // Subsystem + .short 10 // Subsystem (EFI) .short 0 // DllCharacteristics .long 0 // SizeOfStackReserve .long 0 // SizeOfStackCommit @@ -122,6 +122,7 @@ section_table: .short 0 // NumberOfLineNumbers (0 for executables) .long 0xe0500020 // Characteristics (section flags) + .globl _start _start: stmfd sp!, {r0-r2, lr} diff --git a/src/system/boot/platform/efi/arch/arm64/crt0-efi-arm64.S b/src/system/boot/platform/efi/arch/arm64/crt0-efi-arm64.S index c300d89bdf..481bdb40e1 100644 --- a/src/system/boot/platform/efi/arch/arm64/crt0-efi-arm64.S +++ b/src/system/boot/platform/efi/arch/arm64/crt0-efi-arm64.S @@ -67,7 +67,7 @@ extra_header_fields: // Everything before the kernel image is considered part of the header .long _start - ImageBase // SizeOfHeaders .long 0 // CheckSum - .short EFI_SUBSYSTEM // Subsystem + .short 10 // Subsystem (EFI) .short 0 // DllCharacteristics .quad 0 // SizeOfStackReserve .quad 0 // SizeOfStackCommit @@ -110,6 +110,8 @@ section_table: .long 0xc0000040 // Characteristics (section flags) .align 12 + + .globl _start _start: stp x29, x30, [sp, #-32]! mov x29, sp diff --git a/src/system/boot/platform/u-boot/arch/ppc/arch_cpu.cpp b/src/system/boot/platform/u-boot/arch/ppc/arch_cpu.cpp index 68c338e8f5..dff416c268 100644 --- a/src/system/boot/platform/u-boot/arch/ppc/arch_cpu.cpp +++ b/src/system/boot/platform/u-boot/arch/ppc/arch_cpu.cpp @@ -257,7 +257,7 @@ check_cpu_features() extern "C" void -arch_spin(bigtime_t microseconds) +spin(bigtime_t microseconds) { for(bigtime_t i=0;i