head.S
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/arch/sh/boot/compressed/head.S
  3.  *
  4.  *  Copyright (C) 1999 Stuart Menefy
  5.  */
  6. .text
  7. #include <linux/linkage.h>
  8. .global startup
  9. startup:
  10. /* Load initial status register */
  11. mov.l   init_sr, r1
  12. ldc     r1, sr
  13. /* First clear BSS */
  14. mov.l end_addr, r1
  15. mov.l bss_start_addr, r2
  16. mov #0, r0
  17. l1:
  18. mov.l r0, @-r1
  19. cmp/eq r1,r2
  20. bf l1
  21. /* Set the initial pointer. */
  22. mov.l init_stack_addr, r0
  23. mov.l @r0, r15
  24. /* Decompress the kernel */
  25. mov.l decompress_kernel_addr, r0
  26. jsr @r0
  27. nop
  28. /* Jump to the start of the decompressed kernel */
  29. mov.l kernel_start_addr, r0
  30. jmp @r0
  31. nop
  32. .align 2
  33. bss_start_addr:
  34. .long __bss_start
  35. end_addr:
  36. .long _end
  37. init_sr:
  38. .long 0x400000F0 /* Privileged mode, Bank=0, Block=0, IMASK=0xF */
  39. init_stack_addr:
  40. .long stack_start
  41. decompress_kernel_addr:
  42. .long decompress_kernel
  43. kernel_start_addr:
  44. .long _text+0x1000
  45. .align 9
  46. fake_headers_as_bzImage:
  47. .word 0
  48. .ascii "HdrS" ! header signature
  49. .word 0x0202 ! header version number (>= 0x0105)
  50. ! or else old loadlin-1.5 will fail)
  51. .word 0 ! default_switch
  52. .word 0 ! SETUPSEG
  53. .word 0x1000
  54. .word 0 ! pointing to kernel version string
  55. .byte 0 ! = 0, old one (LILO, Loadlin,
  56. ! 0xTV: T=0 for LILO
  57. !       V = version
  58. .byte 1 ! Load flags bzImage=1
  59. .word 0x8000 ! size to move, when setup is not
  60. .long 0x100000 ! 0x100000 = default for big kernel
  61. .long 0 ! address of loaded ramdisk image
  62. .long 0 # its size in bytes