| ;----------------------------------------------------------------------------- ;   startup ;-----------------------------------------------------------------------------     .section ".text.cmn", text     .public  __cstart_pm1     .align   2 __cstart_pm1:     mov      #_stacktop, sp     ;  set sp register     mov      #__gp_data, gp     ;  set gp register     mov      #__ep_data, ep     ;  set ep register       mov      #__s.INIT_DSEC.const, r6     mov      #__e.INIT_DSEC.const, r7     mov      #__s.INIT_BSEC.const, r8     mov      #__e.INIT_BSEC.const, r9     jarl32   __INITSCT_RH, lp   ;  initialize RAM area       ; set various flags to PSW via FEPSW       stsr     5, r10, 0          ; r10 <- PSW       movhi    0x0001, r0, r11     or       r11, r10     ldsr     r10, 5, 0          ; enable FPU       movhi    0x0002, r0, r11     ldsr     r11, 6, 0          ; initialize FPSR     ldsr     r0, 7, 0           ; initialize FPEPC       stsr     5, r10, 0          ; r10 <- PSW       ;xori    0x0020, r10, r10   ; enable interrupt       ;movhi   0x4000, r0, r11     ;or      r11, r10           ; supervisor mode -> user mode       ldsr     r10, 3, 0          ; FEPSW <- r10       mov      #_exit, lp         ; lp <- #_exit     mov      #_main, r10     ldsr     r10, 2, 0          ; FEPC <- #_main       ; apply PSW and PC to start user mode     feret   _exit:     br       _exit              ;  end of program   ;----------------------------------------------------------------------------- ;   dummy section ;-----------------------------------------------------------------------------     .section    ".data", data .L.dummy.data:     .section    ".bss", bss .L.dummy.bss:     .section    ".const", const .L.dummy.const:     .section    ".text", text .L.dummy.text: ;-------------------- end of start up module -------------------; |