multiboot2_header.S 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # Multiboot2 Header definition.
  2. # The assembly code uses the GNU Assembly (GAS) flavor with Intel noprefix
  3. # syntax.
  4. # Symbol from main.rs
  5. .EXTERN start
  6. .code32
  7. .align 8
  8. .section .multiboot2_header
  9. mb2_header_start:
  10. .long 0xe85250d6 # magic number
  11. .long 0 # architecture 0 (protected mode i386)
  12. .long mb2_header_end - mb2_header_start # header length
  13. # checksum
  14. .long 0x100000000 - (0xe85250d6 + 0 + (mb2_header_end - mb2_header_start))
  15. # OPTIONAL MULTIBOOT2 TAGS (additional to required END TAG)
  16. # ------------------------------------------------------------------------------------
  17. .align 8
  18. .Lmb2_header_tag_information_request_start:
  19. .word 1 # type (16bit)
  20. .word 0 # flags (16bit)
  21. .long .Lmb2_header_tag_information_request_end - .Lmb2_header_tag_information_request_start # size (32bit)
  22. .long 1
  23. .long 2
  24. .long 3
  25. .long 4
  26. .long 5
  27. .long 6
  28. .long 7
  29. .long 8
  30. .long 9
  31. .long 10
  32. .long 11
  33. .long 12
  34. # .long 13 GRUB reports: not supported
  35. .long 14
  36. .long 15
  37. .long 16
  38. .long 17
  39. .long 18
  40. .long 19
  41. .long 20
  42. .long 21
  43. .long
  44. .Lmb2_header_tag_information_request_end:
  45. .align 8
  46. .Lmb2_header_tag_module_alignment_start:
  47. .word 7 # type (16bit)
  48. .word 0 # flags (16bit)
  49. .long .Lmb2_header_tag_module_alignment_end - .Lmb2_header_tag_module_alignment_start # size (32bit)
  50. .long start
  51. .Lmb2_header_tag_module_alignment_end:
  52. # ------------------------------------------------------------------------------------
  53. # REQUIRED END TAG
  54. .align 8
  55. .Lmb2_header_tag_end_start:
  56. .word 0 # type (16bit)
  57. .word 0 # flags (16bit)
  58. .long .Lmb2_header_tag_end_end - .Lmb2_header_tag_end_start # size (32bit)
  59. .Lmb2_header_tag_end_end:
  60. mb2_header_end: