Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778/* * PROJECT: ReactOS Boot Loader * LICENSE: BSD - See COPYING.ARM in the top level directory * FILE: boot/armllb/boot.s * PURPOSE: Implements the entry point for ARM machines * PROGRAMMERS: ReactOS Portable Systems Group */
.title "ARM LLB Entry Point" .include "ntoskrnl/include/internal/arm/kxarm.h" .include "ntoskrnl/include/internal/arm/ksarm.h"
NESTED_ENTRY _start PROLOG_END _start
#ifdef _BEAGLE_ // This is only used for TI BootROM on Beagle/Emulator for now /* * On Beagle, the boot is directly from TI BootROM that reads NAND flash. * First word is size of program to load. * Second word is load address of program. Since DDR is not initialized, * we load to SDRAM at 40200000h. Max 64K. */ .word 0x8000 .word 0x40200000#elif _ZOOM2_ /* * On ZOOM2, we currently load from u-boot to make bring-up easier. * * In order to get ATAG and all that goodness, we have to fool u-boot into * thinking we are a Linux ARM kernel. * * So this is a 'fake' uImage-format header, which will make u-boot grok our * image and correctly execute it. * * Note that a data checksum is in the header, but thankfully we can disable * the check. * * There's also a header checksum, but as long as there's no need to modify * this header, we can leave it static. * * Finally, note that the "Image String" is sized as a 32-byte array in the * uImage header format. The string chosen below is not only accurate, but * also happens to fit exactly in 32 bytes, meaning we don't need to pad. */ .word 0x56190527 // Header Magic .word 0x5E4B8444 // Checksum .word 0x483BE54C // Timestamp .word 0x0CA10000 // Image size (64K) .word 0x00000081 // Load address .word 0x40000081 // Entrypoint .word 0x90873DD8 // Data Checksum ('setenv verify n' must be set!) .byte 5 // Linux OS .byte 2 // ARM .byte 2 // Kernel .byte 0 // No compression .ascii "ReactOS ARM Low-Level Bootloader"#endif
/* Load C entrypoint and setup LLB stack */ ldr lr, L_LlbStartup ldr sp, L_BootStackEnd bx lr ENTRY_END _start
L_BootStackEnd:#ifdef _BEAGLE_ // This is only used for TI BootROM on Beagle/Emulator for now .long 0x00010000#elif _ZOOM2_ // On ZOOM2 RAM starts at 0x80000000, not 0 .long 0x81014000#else#error Stack Address Not Defined#endif
L_LlbStartup: .long LlbStartup
/* EOF */