|
@@ -30,35 +30,6 @@ static void init_abc_memmap(void)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-extern const char __dram_init_start[], __dram_init_end[], __dram_init_len[];
|
|
|
|
-extern const char __dram_bss_start[], __dram_bss_end[], __dram_bss_len[];
|
|
|
|
-
|
|
|
|
-static uint32_t romcopy_time[2];
|
|
|
|
-static unsigned int romcopy_state;
|
|
|
|
-IRQHANDLER(romcopy)
|
|
|
|
-{
|
|
|
|
- switch (romcopy_state++) {
|
|
|
|
- case 0:
|
|
|
|
- /* Copy testdata */
|
|
|
|
- ROMCOPY_RAMADDR = (size_t)__dram_init_start;
|
|
|
|
- ROMCOPY_ROMADDR = ROM_OFFSET;
|
|
|
|
- ROMCOPY_DATALEN = (size_t)__dram_init_len;
|
|
|
|
- break;
|
|
|
|
- case 1:
|
|
|
|
- /* Zero .dram.bss */
|
|
|
|
- romcopy_time[0] = rdtime() - time_zero;
|
|
|
|
-
|
|
|
|
- ROMCOPY_RAMADDR = (size_t)__dram_bss_start;
|
|
|
|
- ROMCOPY_ROMADDR = 0; /* Clear */
|
|
|
|
- ROMCOPY_DATALEN = (size_t)__dram_bss_len;
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- romcopy_time[1] = rdtime() - romcopy_time[0];
|
|
|
|
- mask_irq(ROMCOPY_IRQ);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static no_return killed(const char *how, size_t pc)
|
|
static no_return killed(const char *how, size_t pc)
|
|
{
|
|
{
|
|
con_printf("ERROR: %s at 0x%08x\n", how, pc);
|
|
con_printf("ERROR: %s at 0x%08x\n", how, pc);
|
|
@@ -86,7 +57,6 @@ static void init(void)
|
|
"Firmware compiled on: " __DATE__ " " __TIME__ "\n\n";
|
|
"Firmware compiled on: " __DATE__ " " __TIME__ "\n\n";
|
|
|
|
|
|
/* Start ROM copy engine */
|
|
/* Start ROM copy engine */
|
|
- romcopy_state = 0;
|
|
|
|
unmask_irqs((1U << ROMCOPY_IRQ)|(1U << EBREAK_IRQ)|(1U << BUSERR_IRQ));
|
|
unmask_irqs((1U << ROMCOPY_IRQ)|(1U << EBREAK_IRQ)|(1U << BUSERR_IRQ));
|
|
|
|
|
|
set_led(0);
|
|
set_led(0);
|