~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/riscv/kernel/efi-header.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * Copyright (C) 2020 Western Digital Corporation or its affiliates.
  4  * Adapted from arch/arm64/kernel/efi-header.S
  5  */
  6 
  7 #include <linux/pe.h>
  8 #include <linux/sizes.h>
  9 #include <asm/set_memory.h>
 10 
 11         .macro  __EFI_PE_HEADER
 12         .long   PE_MAGIC
 13 coff_header:
 14 #ifdef CONFIG_64BIT
 15         .short  IMAGE_FILE_MACHINE_RISCV64              // Machine
 16 #else
 17         .short  IMAGE_FILE_MACHINE_RISCV32              // Machine
 18 #endif
 19         .short  section_count                           // NumberOfSections
 20         .long   0                                       // TimeDateStamp
 21         .long   0                                       // PointerToSymbolTable
 22         .long   0                                       // NumberOfSymbols
 23         .short  section_table - optional_header         // SizeOfOptionalHeader
 24         .short  IMAGE_FILE_DEBUG_STRIPPED | \
 25                 IMAGE_FILE_EXECUTABLE_IMAGE | \
 26                 IMAGE_FILE_LINE_NUMS_STRIPPED           // Characteristics
 27 
 28 optional_header:
 29 #ifdef CONFIG_64BIT
 30         .short  PE_OPT_MAGIC_PE32PLUS                   // PE32+ format
 31 #else
 32         .short  PE_OPT_MAGIC_PE32                       // PE32 format
 33 #endif
 34         .byte   0x02                                    // MajorLinkerVersion
 35         .byte   0x14                                    // MinorLinkerVersion
 36         .long   __pecoff_text_end - efi_header_end      // SizeOfCode
 37 #ifdef __clang__
 38         .long   __pecoff_data_virt_size                 // SizeOfInitializedData
 39 #else
 40         .long   __pecoff_data_virt_end - __pecoff_text_end      // SizeOfInitializedData
 41 #endif
 42         .long   0                                       // SizeOfUninitializedData
 43         .long   __efistub_efi_pe_entry - _start         // AddressOfEntryPoint
 44         .long   efi_header_end - _start                 // BaseOfCode
 45 #ifdef CONFIG_32BIT
 46         .long  __pecoff_text_end - _start               // BaseOfData
 47 #endif
 48 
 49 extra_header_fields:
 50         .quad   0                                       // ImageBase
 51         .long   PECOFF_SECTION_ALIGNMENT                // SectionAlignment
 52         .long   PECOFF_FILE_ALIGNMENT                   // FileAlignment
 53         .short  0                                       // MajorOperatingSystemVersion
 54         .short  0                                       // MinorOperatingSystemVersion
 55         .short  LINUX_EFISTUB_MAJOR_VERSION             // MajorImageVersion
 56         .short  LINUX_EFISTUB_MINOR_VERSION             // MinorImageVersion
 57         .short  0                                       // MajorSubsystemVersion
 58         .short  0                                       // MinorSubsystemVersion
 59         .long   0                                       // Win32VersionValue
 60 
 61         .long   _end - _start                           // SizeOfImage
 62 
 63         // Everything before the kernel image is considered part of the header
 64         .long   efi_header_end - _start                 // SizeOfHeaders
 65         .long   0                                       // CheckSum
 66         .short  IMAGE_SUBSYSTEM_EFI_APPLICATION         // Subsystem
 67         .short  IMAGE_DLL_CHARACTERISTICS_NX_COMPAT     // DllCharacteristics
 68         .quad   0                                       // SizeOfStackReserve
 69         .quad   0                                       // SizeOfStackCommit
 70         .quad   0                                       // SizeOfHeapReserve
 71         .quad   0                                       // SizeOfHeapCommit
 72         .long   0                                       // LoaderFlags
 73         .long   (section_table - .) / 8                 // NumberOfRvaAndSizes
 74 
 75         .quad   0                                       // ExportTable
 76         .quad   0                                       // ImportTable
 77         .quad   0                                       // ResourceTable
 78         .quad   0                                       // ExceptionTable
 79         .quad   0                                       // CertificationTable
 80         .quad   0                                       // BaseRelocationTable
 81 
 82         // Section table
 83 section_table:
 84         .ascii  ".text\0\0\0"
 85         .long   __pecoff_text_end - efi_header_end      // VirtualSize
 86         .long   efi_header_end - _start                 // VirtualAddress
 87         .long   __pecoff_text_end - efi_header_end      // SizeOfRawData
 88         .long   efi_header_end - _start                 // PointerToRawData
 89 
 90         .long   0                                       // PointerToRelocations
 91         .long   0                                       // PointerToLineNumbers
 92         .short  0                                       // NumberOfRelocations
 93         .short  0                                       // NumberOfLineNumbers
 94         .long   IMAGE_SCN_CNT_CODE | \
 95                 IMAGE_SCN_MEM_READ | \
 96                 IMAGE_SCN_MEM_EXECUTE                   // Characteristics
 97 
 98         .ascii  ".data\0\0\0"
 99 #ifdef __clang__
100         .long   __pecoff_data_virt_size                 // VirtualSize
101 #else
102         .long   __pecoff_data_virt_end - __pecoff_text_end      // VirtualSize
103 #endif
104         .long   __pecoff_text_end - _start              // VirtualAddress
105 #ifdef __clang__
106         .long   __pecoff_data_raw_size                  // SizeOfRawData
107 #else
108         .long   __pecoff_data_raw_end - __pecoff_text_end       // SizeOfRawData
109 #endif
110         .long   __pecoff_text_end - _start              // PointerToRawData
111 
112         .long   0                                       // PointerToRelocations
113         .long   0                                       // PointerToLineNumbers
114         .short  0                                       // NumberOfRelocations
115         .short  0                                       // NumberOfLineNumbers
116         .long   IMAGE_SCN_CNT_INITIALIZED_DATA | \
117                 IMAGE_SCN_MEM_READ | \
118                 IMAGE_SCN_MEM_WRITE                     // Characteristics
119 
120         .set    section_count, (. - section_table) / 40
121 
122         .balign 0x1000
123 efi_header_end:
124         .endm

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php