amiga_boottest
annotate src/startup.s @ 2:58ebd84822e7
it works
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 22 Feb 2018 12:44:20 +0200 |
parents | 48093e4bd99a |
children |
rev | line source |
---|---|
nuclear@0 | 1 | vi:filetype=gas68k: |
nuclear@0 | 2 .global halt_cpu |
nuclear@1 | 3 .extern main |
nuclear@0 | 4 |
nuclear@2 | 5 .section .startup,"a" |
nuclear@1 | 6 |
nuclear@1 | 7 | enter supervisor mode (assumes VBR=0) |
nuclear@1 | 8 move.l #super, 0x80 |
nuclear@1 | 9 trap #0 |
nuclear@1 | 10 super: |
nuclear@1 | 11 ori.w #0x0300, %sr | disable interrupts |
nuclear@1 | 12 |
nuclear@0 | 13 | zero the .bss section |
nuclear@0 | 14 move.l #_bss_start, %a0 |
nuclear@0 | 15 move.l #_bss_end, %a1 |
nuclear@0 | 16 cmp.l %a0, %a1 |
nuclear@0 | 17 beq.s 1f | skip zeroing if the section is empty |
nuclear@2 | 18 0: clr.b (%a0)+ |
nuclear@0 | 19 cmp.l %a0, %a1 |
nuclear@0 | 20 bne.s 0b |
nuclear@0 | 21 1: |
nuclear@0 | 22 | setup the stack |
nuclear@0 | 23 move.l #_stacktop, %sp |
nuclear@1 | 24 andi.w #0xf8ff, %sr | enable interrupts |
nuclear@0 | 25 |
nuclear@1 | 26 jsr main |
nuclear@1 | 27 0: bra.b 0b |
nuclear@0 | 28 |
nuclear@0 | 29 halt_cpu: |
nuclear@0 | 30 stop #0x2700 |