]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* 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 | |
23 | 1: /* 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 */ | |
44 | 1: | |
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 | |
51 | 2: | |
52 | rts | |
53 | ||
54 | .section .rodata | |
55 | _romfs_sig: | |
56 | .ascii "-rom1fs-" | |
57 | ||
58 | .end |