Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/arch/arm64/kernel/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 5 kB image not shown  

Quelle  efi-header.S   Sprache: Sparc

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2013 - 2017 Linaro, Ltd.
 * Copyright (C) 2013, 2014 Red Hat, Inc.
 */


#include <linux/pe.h>
#include <linux/sizes.h>

 .macro efi_signature_nop
#ifdef CONFIG_EFI
.L_head:
 /*
 * This ccmp instruction has no meaningful effect except that
 * its opcode forms the magic "MZ" signature required by UEFI.
 */

 ccmp x18, #0, #0xd, pl
#else
 /*
 * Bootloaders may inspect the opcode at the start of the kernel
 * image to decide if the kernel is capable of booting via UEFI.
 * So put an ordinary NOP here, not the "MZ.." pseudo-nop above.
 */

 nop
#endif
 .endm

 .macro __EFI_PE_HEADER
#ifdef CONFIG_EFI
 .set .Lpe_header_offset, . - .L_head
 .long IMAGE_NT_SIGNATURE
 .short IMAGE_FILE_MACHINE_ARM64  // Machine
 .short .Lsection_count    // NumberOfSections
 .long 0      // TimeDateStamp
 .long 0     // PointerToSymbolTable
 .long 0     // NumberOfSymbols
 .short .Lsection_table - .Loptional_header // SizeOfOptionalHeader
 .short IMAGE_FILE_DEBUG_STRIPPED | \
  IMAGE_FILE_EXECUTABLE_IMAGE | \
  IMAGE_FILE_LINE_NUMS_STRIPPED  // Characteristics

.Loptional_header:
 .short IMAGE_NT_OPTIONAL_HDR64_MAGIC  // PE32+ format
 .byte 0x02     // MajorLinkerVersion
 .byte 0x14     // MinorLinkerVersion
 .long __initdata_begin - .Lefi_header_end // SizeOfCode
 .long __pecoff_data_size   // SizeOfInitializedData
 .long 0     // SizeOfUninitializedData
 .long __efistub_efi_pe_entry - .L_head // AddressOfEntryPoint
 .long .Lefi_header_end - .L_head  // BaseOfCode

 .quad 0     // ImageBase
 .long SEGMENT_ALIGN    // SectionAlignment
 .long PECOFF_FILE_ALIGNMENT   // FileAlignment
 .short 0     // MajorOperatingSystemVersion
 .short 0     // MinorOperatingSystemVersion
 .short LINUX_EFISTUB_MAJOR_VERSION  // MajorImageVersion
 .short LINUX_EFISTUB_MINOR_VERSION  // MinorImageVersion
 .short 0     // MajorSubsystemVersion
 .short 0     // MinorSubsystemVersion
 .long 0     // Win32VersionValue

 .long _end - .L_head    // SizeOfImage

 // Everything before the kernel image is considered part of the header
 .long .Lefi_header_end - .L_head  // SizeOfHeaders
 .long 0     // CheckSum
 .short IMAGE_SUBSYSTEM_EFI_APPLICATION  // Subsystem
 .short IMAGE_DLLCHARACTERISTICS_NX_COMPAT // DllCharacteristics
 .quad 0     // SizeOfStackReserve
 .quad 0     // SizeOfStackCommit
 .quad 0     // SizeOfHeapReserve
 .quad 0     // SizeOfHeapCommit
 .long 0     // LoaderFlags
 .long (.Lsection_table - .) / 8  // NumberOfRvaAndSizes

 .quad 0     // ExportTable
 .quad 0     // ImportTable
 .quad 0     // ResourceTable
 .quad 0     // ExceptionTable
 .quad 0     // CertificationTable
 .quad 0     // BaseRelocationTable

#if defined(CONFIG_DEBUG_EFI) || defined(CONFIG_ARM64_BTI_KERNEL)
 .long .Lefi_debug_table - .L_head  // DebugTable
 .long .Lefi_debug_table_size

 /*
 * The debug table is referenced via its Relative Virtual Address (RVA),
 * which is only defined for those parts of the image that are covered
 * by a section declaration. Since this header is not covered by any
 * section, the debug table must be emitted elsewhere. So stick it in
 * the .init.rodata section instead.
 *
 * Note that the payloads themselves are permitted to have zero RVAs,
 * which means we can simply put those right after the section headers.
 */

 __INITRODATA

 .align 2
.Lefi_debug_table:
#ifdef CONFIG_DEBUG_EFI
 // EFI_IMAGE_DEBUG_DIRECTORY_ENTRY
 .long 0     // Characteristics
 .long 0     // TimeDateStamp
 .short 0     // MajorVersion
 .short 0     // MinorVersion
 .long IMAGE_DEBUG_TYPE_CODEVIEW  // Type
 .long .Lefi_debug_entry_size   // SizeOfData
 .long 0     // RVA
 .long .Lefi_debug_entry - .L_head  // FileOffset
#endif
#ifdef CONFIG_ARM64_BTI_KERNEL
 .long 0     // Characteristics
 .long 0     // TimeDateStamp
 .short 0     // MajorVersion
 .short 0     // MinorVersion
 .long IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS // Type
 .long 4     // SizeOfData
 .long 0     // RVA
 .long .Lefi_dll_characteristics_ex - .L_head // FileOffset
#endif
 .set .Lefi_debug_table_size, . - .Lefi_debug_table
 .previous
#endif

 // Section table
.Lsection_table:
 .ascii ".text\0\0\0"
 .long __initdata_begin - .Lefi_header_end // VirtualSize
 .long .Lefi_header_end - .L_head  // VirtualAddress
 .long __initdata_begin - .Lefi_header_end // SizeOfRawData
 .long .Lefi_header_end - .L_head  // PointerToRawData

 .long 0     // PointerToRelocations
 .long 0     // PointerToLineNumbers
 .short 0     // NumberOfRelocations
 .short 0     // NumberOfLineNumbers
 .long IMAGE_SCN_CNT_CODE | \
  IMAGE_SCN_MEM_READ | \
  IMAGE_SCN_MEM_EXECUTE   // Characteristics

 .ascii ".data\0\0\0"
 .long __pecoff_data_size   // VirtualSize
 .long __initdata_begin - .L_head  // VirtualAddress
 .long __pecoff_data_rawsize   // SizeOfRawData
 .long __initdata_begin - .L_head  // PointerToRawData

 .long 0     // PointerToRelocations
 .long 0     // PointerToLineNumbers
 .short 0     // NumberOfRelocations
 .short 0     // NumberOfLineNumbers
 .long IMAGE_SCN_CNT_INITIALIZED_DATA | \
  IMAGE_SCN_MEM_READ | \
  IMAGE_SCN_MEM_WRITE   // Characteristics

 .set .Lsection_count, (. - .Lsection_table) / 40

#ifdef CONFIG_DEBUG_EFI
.Lefi_debug_entry:
 // EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY
 .ascii "NB10"     // Signature
 .long 0     // Unknown
 .long 0     // Unknown2
 .long 0     // Unknown3

 .asciz VMLINUX_PATH

 .set .Lefi_debug_entry_size, . - .Lefi_debug_entry
#endif
#ifdef CONFIG_ARM64_BTI_KERNEL
.Lefi_dll_characteristics_ex:
 .long IMAGE_DLLCHARACTERISTICS_EX_FORWARD_CFI_COMPAT
#endif

 .balign SEGMENT_ALIGN
.Lefi_header_end:
#else
 .set .Lpe_header_offset, 0x0
#endif
 .endm

Messung V0.5
C=98 H=100 G=98

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.