blob: b72f93a47e310aafb2bc186e5c325a77884f4ad6 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/* romfs move to __ebss */
2
3#include <asm/linkage.h>
4#include <linux/config.h>
5
6#if defined(__H8300H__)
7 .h8300h
8#endif
9#if defined(__H8300S__)
10 .h8300s
11#endif
12
13#define BLKOFFSET 512
14
15 .text
16.globl __move_romfs
17_romfs_sig_len = 8
18
19__move_romfs:
20 mov.l #__sbss,er0
21 mov.l #_romfs_sig,er1
22 mov.b #_romfs_sig_len,r3l
231: /* check romfs image */
24 mov.b @er0+,r2l
25 mov.b @er1+,r2h
26 cmp.b r2l,r2h
27 bne 2f
28 dec.b r3l
29 bne 1b
30
31 /* find romfs image */
32 mov.l @__sbss+8,er0 /* romfs length(be) */
33 mov.l #__sbss,er1
34 add.l er0,er1 /* romfs image end */
35 mov.l #__ebss,er2
36 add.l er0,er2 /* distination address */
37#if defined(CONFIG_INTELFLASH)
38 add.l #BLKOFFSET,er2
39#endif
40 adds #2,er0
41 adds #1,er0
42 shlr er0
43 shlr er0 /* transfer length */
441:
45 mov.l @er1,er3 /* copy image */
46 mov.l er3,@er2
47 subs #4,er1
48 subs #4,er2
49 dec.l #1,er0
50 bpl 1b
512:
52 rts
53
54 .section .rodata
55_romfs_sig:
56 .ascii "-rom1fs-"
57
58 .end