X-Git-Url: https://rtime.felk.cvut.cz/gitweb/sysless.git/blobdiff_plain/998bdc6985740eb34d4410dc9e290c42939732f3..45d71724eb4d4c8c6d52b7e0721c39b7560a8a30:/arch/h8300/generic/bloader/bloader.c diff --git a/arch/h8300/generic/bloader/bloader.c b/arch/h8300/generic/bloader/bloader.c index 0d2aa45..60dbeb0 100644 --- a/arch/h8300/generic/bloader/bloader.c +++ b/arch/h8300/generic/bloader/bloader.c @@ -82,17 +82,14 @@ static void deb_led_out(char val) /* Provided by linker script */ extern char __boot_fn_start; extern char __boot_fn_end; +extern char etext; -void RelocatedProgMode(unsigned long where, unsigned baud) +void RelocatedProgMode(unsigned baud) { - void (*ProgMode_ptr)(unsigned baud); - unsigned long reloc_offs=where-(unsigned long)&__boot_fn_start; size_t reloc_size=&__boot_fn_end-&__boot_fn_start; - ProgMode_ptr=&ProgMode; - ProgMode_ptr=(__u8*)ProgMode_ptr+reloc_offs; - memcpy((char*)where,&__boot_fn_start,reloc_size); + memcpy(&__boot_fn_start,&etext,reloc_size); /*deb_wr_hex((long)ProgMode_ptr,8);*/ - (*ProgMode_ptr)(baud); + ProgMode(baud); } @@ -127,7 +124,7 @@ void boot_test() if((__u8*)&__boot_fn_start<(__u8*)0xffb000) { /* If we are not in the internal RAM, copy and run us from * there */ - RelocatedProgMode(0xffb000,HIT_LOAD_BAUD); + RelocatedProgMode(HIT_LOAD_BAUD); } else ProgMode(HIT_LOAD_BAUD);