Skip to content

Commit

Permalink
cpu/gowin_emcu: Use crt0.c from cortex_m3.
Browse files Browse the repository at this point in the history
  • Loading branch information
enjoy-digital committed Jan 4, 2024
1 parent de6fbf1 commit 386854c
Showing 1 changed file with 59 additions and 8 deletions.
67 changes: 59 additions & 8 deletions litex/soc/cores/cpu/gowin_emcu/crt0.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ void _start(void);
void default_handler(void);

void _start(void) {
__asm__(
"mov r0, %0\n"
"mov sp, r0\n" : : "r" (&_fstack)
);
uint32_t *y = &_fdata_rom;
for (uint32_t *x = &_fdata; x < &_edata; x ++)
*x = *y ++;
Expand All @@ -22,26 +26,73 @@ void _start(void) {
while(1);
}


void default_handler(void) {
while(1);
}


const void* isr_vector[] __attribute__((__used__)) __attribute__((section(".isr_vector"))) = {
&_fstack,
_start,
_start, // reset
default_handler, // nmi
default_handler, // hard fault
default_handler, // mem manage
default_handler, // bus fault
default_handler, // usage fault
(void *) 0x55, // reserved
0, // reserved
0, // reserved
0, // reserved
default_handler, // svc
default_handler, // debug mon
0, // reserved
default_handler, // pend sv
default_handler, // systick
// external
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
default_handler,
0,
0,
0,
0,
default_handler,
default_handler,
0,
default_handler,
default_handler
};

__asm__ (
"__gnu_thumb1_case_uhi:\n"
"push {r0, r1}\n"
"mov r1, lr\n"
"lsrs r1, r1, #1\n"
"lsls r0, r0, #1\n"
"lsls r1, r1, #1\n"
"ldrh r1, [r1, r0]\n"
"lsls r1, r1, #1\n"
"add lr, lr, r1\n"
"pop {r0, r1}\n"
"bx lr\n"
);

0 comments on commit 386854c

Please sign in to comment.