b33f63635b
build: moved CMake toolchain for Bootloader from Source folder to root of Bootloader
60 lines
1.0 KiB
ArmAsm
60 lines
1.0 KiB
ArmAsm
.section .text.boot, "ax"
|
|
.global _start
|
|
|
|
_start:
|
|
add x1, x0, #64
|
|
ldr x2, [x1] // base
|
|
ldr x3, [x1, #16] // width
|
|
ldr x4, [x1, #24] // height
|
|
|
|
mul x5, x3, x4
|
|
mov x7, #5
|
|
udiv x10, x5, x7 // stripe size
|
|
|
|
// 0x00RRGGBB
|
|
// lblue: 5B CE FA
|
|
mov w11, #0xCEFA
|
|
movk w11, #0x5B, lsl #16
|
|
|
|
// pink: F5 A7 B8
|
|
mov w12, #0xA7B8
|
|
movk w12, #0xF5, lsl #16
|
|
|
|
// white: FF FF FF
|
|
mov w13, #0xFFFF
|
|
movk w13, #0xFF, lsl #16
|
|
|
|
mov x14, #0 // pixels in curr stripe
|
|
mov x15, #0 // stripe index
|
|
|
|
fill_loop:
|
|
cbz x5, done
|
|
|
|
cmp x15, #0
|
|
b.eq set_blue
|
|
cmp x15, #1
|
|
b.eq set_pink
|
|
cmp x15, #2
|
|
b.eq set_white
|
|
cmp x15, #3
|
|
b.eq set_pink
|
|
b set_blue
|
|
|
|
set_blue: mov w6, w11; b draw
|
|
set_pink: mov w6, w12; b draw
|
|
set_white: mov w6, w13
|
|
|
|
draw:
|
|
str w6, [x2], #4
|
|
sub x5, x5, #1
|
|
add x14, x14, #1
|
|
|
|
cmp x14, x10
|
|
b.lt fill_loop
|
|
|
|
mov x14, #0
|
|
add x15, x15, #1
|
|
b fill_loop
|
|
|
|
done:
|
|
b done |