Commit dfbcc8a2 authored by Tomasz Wlostowski's avatar Tomasz Wlostowski

updated cstartup

parent f9d01cff
......@@ -30,6 +30,21 @@
.global _start
_start:
bi _crt0_enter
.org 0xc0
_interrupt_handler:
sw (sp+0),ra
calli _save_all
mvi r1,2
calli _irq_entry
bi _restore_all_and_return
nop
nop
nop
.org 0x100
_crt0_enter:
/* Setup stack and global pointer */
mvhi sp, hi(_fstack)
......@@ -37,24 +52,6 @@ _start:
mvhi gp, hi(_gp)
ori gp, gp, lo(_gp)
bi _crt0_enter
.org 0xc0
_interrupt_handler:
sw (sp+0),ra
calli _save_all
mvi r1,2
calli _irq_entry
bi _restore_all_and_return
nop
nop
nop
_crt0_enter:
/* Clear BSS */
mvhi r1, hi(_fbss)
ori r1, r1, lo(_fbss)
......@@ -65,13 +62,6 @@ _crt0_enter:
calli memset
mvi r1, 0xffffffff
wcsr im, r1
mvi r1, 0x1
wcsr ie, r1
/* Call main program */
mvi r1, 0
mvi r2, 0
......@@ -79,75 +69,75 @@ _crt0_enter:
calli main
_save_all:
addi sp,sp,-128
sw (sp+4),r1
sw (sp+8),r2
sw (sp+12),r3
sw (sp+16),r4
sw (sp+20),r5
sw (sp+24),r6
sw (sp+28),r7
sw (sp+32),r8
sw (sp+36),r9
sw (sp+40),r10
sw (sp+44),r11
sw (sp+48),r12
sw (sp+52),r13
sw (sp+56),r14
sw (sp+60),r15
sw (sp+64),r16
sw (sp+68),r17
sw (sp+72),r18
sw (sp+76),r19
sw (sp+80),r20
sw (sp+84),r21
sw (sp+88),r22
sw (sp+92),r23
sw (sp+96),r24
sw (sp+100),r25
sw (sp+104),gp
sw (sp+108),fp
sw (sp+120),ea
sw (sp+124),ba
lw r1,(sp+128)
sw (sp+116),r1
mv r1,sp
addi r1,r1,128
sw (sp+112),r1
ret
addi sp,sp,-128
sw (sp+4),r1
sw (sp+8),r2
sw (sp+12),r3
sw (sp+16),r4
sw (sp+20),r5
sw (sp+24),r6
sw (sp+28),r7
sw (sp+32),r8
sw (sp+36),r9
sw (sp+40),r10
sw (sp+44),r11
sw (sp+48),r12
sw (sp+52),r13
sw (sp+56),r14
sw (sp+60),r15
sw (sp+64),r16
sw (sp+68),r17
sw (sp+72),r18
sw (sp+76),r19
sw (sp+80),r20
sw (sp+84),r21
sw (sp+88),r22
sw (sp+92),r23
sw (sp+96),r24
sw (sp+100),r25
sw (sp+104),gp
sw (sp+108),fp
sw (sp+120),ea
sw (sp+124),ba
lw r1,(sp+128)
sw (sp+116),r1
mv r1,sp
addi r1,r1,128
sw (sp+112),r1
ret
_restore_all_and_return:
lw r1,(sp+4)
lw r2,(sp+8)
lw r3,(sp+12)
lw r4,(sp+16)
lw r5,(sp+20)
lw r6,(sp+24)
lw r7,(sp+28)
lw r8,(sp+32)
lw r9,(sp+36)
lw r10,(sp+40)
lw r11,(sp+44)
lw r12,(sp+48)
lw r13,(sp+52)
lw r14,(sp+56)
lw r15,(sp+60)
lw r16,(sp+64)
lw r17,(sp+68)
lw r18,(sp+72)
lw r19,(sp+76)
lw r20,(sp+80)
lw r21,(sp+84)
lw r22,(sp+88)
lw r23,(sp+92)
lw r24,(sp+96)
lw r25,(sp+100)
lw gp,(sp+104)
lw fp,(sp+108)
lw ra,(sp+116)
lw ea,(sp+120)
lw ba,(sp+124)
lw sp,(sp+112)
eret
lw r1,(sp+4)
lw r2,(sp+8)
lw r3,(sp+12)
lw r4,(sp+16)
lw r5,(sp+20)
lw r6,(sp+24)
lw r7,(sp+28)
lw r8,(sp+32)
lw r9,(sp+36)
lw r10,(sp+40)
lw r11,(sp+44)
lw r12,(sp+48)
lw r13,(sp+52)
lw r14,(sp+56)
lw r15,(sp+60)
lw r16,(sp+64)
lw r17,(sp+68)
lw r18,(sp+72)
lw r19,(sp+76)
lw r20,(sp+80)
lw r21,(sp+84)
lw r22,(sp+88)
lw r23,(sp+92)
lw r24,(sp+96)
lw r25,(sp+100)
lw gp,(sp+104)
lw fp,(sp+108)
lw ra,(sp+116)
lw ea,(sp+120)
lw ba,(sp+124)
lw sp,(sp+112)
eret
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment