Linux-2.6.12-rc2
[linux-3.10.git] / arch / h8300 / lib / romfs.S
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