Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/firmware/efi/libstub/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 1 kB image not shown  

Quelle  arm64-stub.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2013, 2014 Linaro Ltd;  <roy.franz@linaro.org>
 *
 * This file implements the EFI boot stub for the arm64 kernel.
 * Adapted from ARM version by Mark Salter <msalter@redhat.com>
 */



#include <linux/efi.h>
#include <asm/efi.h>
#include <asm/memory.h>
#include <asm/sections.h>

#include "efistub.h"

efi_status_t handle_kernel_image(unsigned long *image_addr,
     unsigned long *image_size,
     unsigned long *reserve_addr,
     unsigned long *reserve_size,
     efi_loaded_image_t *image,
     efi_handle_t image_handle)
{
 unsigned long kernel_size, kernel_codesize, kernel_memsize;

 if (image->image_base != _text) {
  efi_err("FIRMWARE BUG: efi_loaded_image_t::image_base has bogus value\n");
  image->image_base = _text;
 }

 if (!IS_ALIGNED((u64)_text, SEGMENT_ALIGN))
  efi_err("FIRMWARE BUG: kernel image not aligned on %dk boundary\n",
   SEGMENT_ALIGN >> 10);

 kernel_size = _edata - _text;
 kernel_codesize = __inittext_end - _text;
 kernel_memsize = kernel_size + (_end - _edata);
 *reserve_size = kernel_memsize;
 *image_addr = (unsigned long)_text;

 return efi_kaslr_relocate_kernel(image_addr, reserve_addr, reserve_size,
      kernel_size, kernel_codesize, kernel_memsize,
      efi_kaslr_get_phys_seed(image_handle));
}

asmlinkage void primary_entry(void);

unsigned long primary_entry_offset(void)
{
 /*
 * When built as part of the kernel, the EFI stub cannot branch to the
 * kernel proper via the image header, as the PE/COFF header is
 * strictly not part of the in-memory presentation of the image, only
 * of the file representation. So instead, we need to jump to the
 * actual entrypoint in the .text region of the image.
 */

 return (char *)primary_entry - _text;
}

void efi_icache_sync(unsigned long start, unsigned long end)
{
 caches_clean_inval_pou(start, end);
}

Messung V0.5
C=96 H=92 G=93

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© 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.