/* romfs move to __ebss */ #include <asm/linkage.h> #include <linux/config.h> #if defined(__H8300H__) .h8300h #endif #if defined(__H8300S__) .h8300s #endif #define BLKOFFSET 512 .text .globl __move_romfs _romfs_sig_len = 8 __move_romfs: mov.l #__sbss,er0 mov.l #_romfs_sig,er1 mov.b #_romfs_sig_len,r3l 1: /* check romfs image */ mov.b @er0+,r2l mov.b @er1+,r2h cmp.b r2l,r2h bne 2f dec.b r3l bne 1b /* find romfs image */ mov.l @__sbss+8,er0 /* romfs length(be) */ mov.l #__sbss,er1 add.l er0,er1 /* romfs image end */ mov.l #__ebss,er2 add.l er0,er2 /* distination address */ #if defined(CONFIG_INTELFLASH) add.l #BLKOFFSET,er2 #endif adds #2,er0 adds #1,er0 shlr er0 shlr er0 /* transfer length */ 1: mov.l @er1,er3 /* copy image */ mov.l er3,@er2 subs #4,er1 subs #4,er2 dec.l #1,er0 bpl 1b 2: rts .section .rodata _romfs_sig: .ascii "-rom1fs-" .end