romfs.S 911 B

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