cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

early_32.c (888B)


      1// SPDX-License-Identifier: GPL-2.0
      2
      3/*
      4 * Early init before relocation
      5 */
      6
      7#include <linux/init.h>
      8#include <linux/kernel.h>
      9#include <asm/setup.h>
     10#include <asm/sections.h>
     11
     12/*
     13 * We're called here very early in the boot.
     14 *
     15 * Note that the kernel may be running at an address which is different
     16 * from the address that it was linked at, so we must use RELOC/PTRRELOC
     17 * to access static data (including strings).  -- paulus
     18 */
     19notrace unsigned long __init early_init(unsigned long dt_ptr)
     20{
     21	unsigned long kva, offset = reloc_offset();
     22
     23	kva = *PTRRELOC(&kernstart_virt_addr);
     24
     25	/* First zero the BSS */
     26	if (kva == KERNELBASE)
     27		memset(PTRRELOC(&__bss_start), 0, __bss_stop - __bss_start);
     28
     29	/*
     30	 * Identify the CPU type and fix up code sections
     31	 * that depend on which cpu we have.
     32	 */
     33	identify_cpu(offset, mfspr(SPRN_PVR));
     34
     35	apply_feature_fixups();
     36
     37	return kva + offset;
     38}