Files
domenico 0cba744dde
Some checks failed
Build Kernel / Set targets (push) Has been cancelled
Build all core packages / build (malta/be) (push) Has been cancelled
Build all core packages / build (x86/64) (push) Has been cancelled
Build host tools / build-macos-latest (push) Has been cancelled
Build host tools / build-linux-buildbot (push) Has been cancelled
Build Kernel / Build Kernel with external toolchain (push) Has been cancelled
Build Kernel / Check Kernel patches (push) Has been cancelled
Build host tools / push-tools-container (push) Has been cancelled
Initial commit
2025-06-24 13:18:37 +02:00

46 lines
1.0 KiB
ArmAsm

// Arm assembly to copy the Gemini kernel on Storlink reference
// designs and derived devices with the same flash layout and
// boot loader.
//
// This will execute at 0x01600000
//
// Copies the kernel from two fragments (originally zImage
// and initramdisk) to 0x00400000 making space for a kernel
// image of up to 8 MB except for these 512 bytes used for
// this bootstrap.
//
// 0x01600200 .. 0x017fffff -> 0x00400000 .. 0x005ffdff
// 0x00800000 .. 0x00dfffff -> 0x005ffe00 .. 0x00bffdff
// Memory used for this bootstrap
.equ BOOT_HEADROOM, 0x200
.global _start // Stand-alone assembly code
_start:
mov r1, #0x01600000
mov r2, #0x00400000
mov r3, #0x00200000
add r1, r1, #BOOT_HEADROOM
sub r3, r3, #BOOT_HEADROOM
copyloop1:
ldr r0, [r1]
str r0, [r2]
add r1, r1, #4
add r2, r2, #4
sub r3, r3, #4
cmp r3, #0
bne copyloop1
mov r1, #0x00800000
mov r3, #0x00600000
copyloop2:
ldr r0, [r1]
str r0, [r2]
add r1, r1, #4
add r2, r2, #4
sub r3, r3, #4
cmp r3, #0
bne copyloop2
mov r0, #0x00400000
// Let's go
mov pc, r0