| 123456789101112131415161718192021222324252627282930313233343536 | /* * Load and switch to test image */#include "fw.h"#include "irq.h"#include "io.h"#include "sys.h"extern const char __dram_start[];extern const char __dram_test_start[], __dram_test_end[], __dram_test_size[];extern no_return __start_test(void);static inline void disable_abcmem(void){    volatile uint32_t *pg = &ABCMEMMAP_PAGE(0);    for (unsigned int addr = 0; addr < 0x10000; addr += 512)	*pg++ = 0;}void __dram_text run_test_image(void){    disable_abcmem();    disable_irqs();    ROMCOPY_RAMADDR = (size_t)__dram_test_start;    ROMCOPY_ROMADDR = __rom_offset + (__dram_test_start - __dram_start);    ROMCOPY_DATALEN = (size_t)__dram_test_size;    waitfor(ROMCOPY_IRQ);    __start_test();}
 |