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