| /* romfs move to __ebss */ | |
| #include <asm/linkage.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 |