|
@@ -207,49 +207,6 @@ static void init(void)
|
|
|
read_rtc();
|
|
|
}
|
|
|
|
|
|
-static uint32_t romcopy_time[2];
|
|
|
-static unsigned int romcopy_state;
|
|
|
-extern const char __dram_init_start[], __dram_init_end[], __dram_init_len[];
|
|
|
-
|
|
|
-static uint32_t romcopy_time[2];
|
|
|
-static unsigned int romcopy_state;
|
|
|
-IRQHANDLER(romcopy)
|
|
|
-{
|
|
|
- size_t rombase;
|
|
|
-
|
|
|
- /*
|
|
|
- * The handover code from the normal startup will set tp to
|
|
|
- * our ROM area, not including the SRAM image.
|
|
|
- */
|
|
|
- asm("mv %0,tp" : "=r" (rombase));
|
|
|
-
|
|
|
- if (rombase) {
|
|
|
- /* Test-only ROM image? */
|
|
|
- rombase = ROM_OFFSET;
|
|
|
- }
|
|
|
-
|
|
|
- switch (romcopy_state++) {
|
|
|
- case 0:
|
|
|
- /* Copy testdata */
|
|
|
- ROMCOPY_RAMADDR = (size_t)__dram_init_start;
|
|
|
- ROMCOPY_ROMADDR = rombase;
|
|
|
- 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)
|
|
|
{
|
|
|
con_printf("ERROR: %s at 0x%08x\n", how, pc);
|
|
@@ -301,7 +258,6 @@ void main(void)
|
|
|
unmask_irq(EBREAK_IRQ);
|
|
|
|
|
|
CON_DATA = '3';
|
|
|
- romcopy_state = 0;
|
|
|
unmask_irq(ROMCOPY_IRQ);
|
|
|
|
|
|
CON_DATA = '4';
|