| /* |
| * nds32_init.inc |
| * |
| * NDS32 architecture startup assembler header file |
| * |
| */ |
| |
| .macro nds32_init |
| |
| ! Initialize GP for data access |
| la $gp, _SDA_BASE_ |
| |
| #if defined(__NDS32_EXT_EX9__) |
| ! Check HW for EX9 |
| mfsr $r0, $MSC_CFG |
| li $r1, (1 << 24) |
| and $r2, $r0, $r1 |
| beqz $r2, 1f |
| |
| ! Initialize the table base of EX9 instruction |
| la $r0, _ITB_BASE_ |
| mtusr $r0, $ITB |
| 1: |
| #endif |
| |
| #if defined(__NDS32_EXT_FPU_DP__) || defined(__NDS32_EXT_FPU_SP__) |
| ! Enable FPU |
| mfsr $r0, $FUCOP_CTL |
| ori $r0, $r0, #0x1 |
| mtsr $r0, $FUCOP_CTL |
| dsb |
| |
| ! Enable denormalized flush-to-Zero mode |
| fmfcsr $r0 |
| ori $r0,$r0,#0x1000 |
| fmtcsr $r0 |
| dsb |
| #endif |
| |
| ! Initialize default stack pointer |
| la $sp, _stack |
| |
| .endm |