LCOV - code coverage report
Current view: top level - arch/x86/include/asm - setup.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 4 4 100.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _ASM_X86_SETUP_H
       3             : #define _ASM_X86_SETUP_H
       4             : 
       5             : #include <uapi/asm/setup.h>
       6             : 
       7             : #define COMMAND_LINE_SIZE 2048
       8             : 
       9             : #include <linux/linkage.h>
      10             : #include <asm/page_types.h>
      11             : 
      12             : #ifdef __i386__
      13             : 
      14             : #include <linux/pfn.h>
      15             : /*
      16             :  * Reserved space for vmalloc and iomap - defined in asm/page.h
      17             :  */
      18             : #define MAXMEM_PFN      PFN_DOWN(MAXMEM)
      19             : #define MAX_NONPAE_PFN  (1 << 20)
      20             : 
      21             : #endif /* __i386__ */
      22             : 
      23             : #define PARAM_SIZE 4096         /* sizeof(struct boot_params) */
      24             : 
      25             : #define OLD_CL_MAGIC            0xA33F
      26             : #define OLD_CL_ADDRESS          0x020   /* Relative to real mode data */
      27             : #define NEW_CL_POINTER          0x228   /* Relative to real mode data */
      28             : 
      29             : #ifndef __ASSEMBLY__
      30             : #include <asm/bootparam.h>
      31             : #include <asm/x86_init.h>
      32             : 
      33             : extern u64 relocated_ramdisk;
      34             : 
      35             : /* Interrupt control for vSMPowered x86_64 systems */
      36             : #ifdef CONFIG_X86_64
      37             : void vsmp_init(void);
      38             : #else
      39             : static inline void vsmp_init(void) { }
      40             : #endif
      41             : 
      42             : struct pt_regs;
      43             : 
      44             : void setup_bios_corruption_check(void);
      45             : void early_platform_quirks(void);
      46             : 
      47             : extern unsigned long saved_video_mode;
      48             : 
      49             : extern void reserve_standard_io_resources(void);
      50             : extern void i386_reserve_resources(void);
      51             : extern unsigned long __startup_64(unsigned long physaddr, struct boot_params *bp);
      52             : extern unsigned long __startup_secondary_64(void);
      53             : extern void startup_64_setup_env(unsigned long physbase);
      54             : extern void early_setup_idt(void);
      55             : extern void __init do_early_exception(struct pt_regs *regs, int trapnr);
      56             : 
      57             : #ifdef CONFIG_X86_INTEL_MID
      58             : extern void x86_intel_mid_early_setup(void);
      59             : #else
      60             : static inline void x86_intel_mid_early_setup(void) { }
      61             : #endif
      62             : 
      63             : #ifdef CONFIG_X86_INTEL_CE
      64             : extern void x86_ce4100_early_setup(void);
      65             : #else
      66             : static inline void x86_ce4100_early_setup(void) { }
      67             : #endif
      68             : 
      69             : #ifndef _SETUP
      70             : 
      71             : #include <asm/espfix.h>
      72             : #include <linux/kernel.h>
      73             : 
      74             : /*
      75             :  * This is set up by the setup-routine at boot-time
      76             :  */
      77             : extern struct boot_params boot_params;
      78             : extern char _text[];
      79             : 
      80           1 : static inline bool kaslr_enabled(void)
      81             : {
      82           1 :         return IS_ENABLED(CONFIG_RANDOMIZE_MEMORY) &&
      83             :                 !!(boot_params.hdr.loadflags & KASLR_FLAG);
      84             : }
      85             : 
      86             : /*
      87             :  * Apply no randomization if KASLR was disabled at boot or if KASAN
      88             :  * is enabled. KASAN shadow mappings rely on regions being PGD aligned.
      89             :  */
      90           1 : static inline bool kaslr_memory_enabled(void)
      91             : {
      92           1 :         return kaslr_enabled() && !IS_ENABLED(CONFIG_KASAN);
      93             : }
      94             : 
      95             : static inline unsigned long kaslr_offset(void)
      96             : {
      97             :         return (unsigned long)&_text - __START_KERNEL;
      98             : }
      99             : 
     100             : /*
     101             :  * Do NOT EVER look at the BIOS memory size location.
     102             :  * It does not work on many machines.
     103             :  */
     104             : #define LOWMEMSIZE()    (0x9f000)
     105             : 
     106             : /* exceedingly early brk-like allocator */
     107             : extern unsigned long _brk_end;
     108             : void *extend_brk(size_t size, size_t align);
     109             : 
     110             : /*
     111             :  * Reserve space in the brk section.  The name must be unique within
     112             :  * the file, and somewhat descriptive.  The size is in bytes.  Must be
     113             :  * used at file scope.
     114             :  *
     115             :  * (This uses a temp function to wrap the asm so we can pass it the
     116             :  * size parameter; otherwise we wouldn't be able to.  We can't use a
     117             :  * "section" attribute on a normal variable because it always ends up
     118             :  * being @progbits, which ends up allocating space in the vmlinux
     119             :  * executable.)
     120             :  */
     121             : #define RESERVE_BRK(name,sz)                                            \
     122             :         static void __section(".discard.text") __used notrace         \
     123             :         __brk_reservation_fn_##name##__(void) {                         \
     124             :                 asm volatile (                                          \
     125             :                         ".pushsection .brk_reservation,\"aw\",@nobits;" \
     126             :                         ".brk." #name ":"                           \
     127             :                         " 1:.skip %c0;"                                       \
     128             :                         " .size .brk." #name ", . - 1b;"            \
     129             :                         " .popsection"                                        \
     130             :                         : : "i" (sz));                                        \
     131             :         }
     132             : 
     133             : /* Helper for reserving space for arrays of things */
     134             : #define RESERVE_BRK_ARRAY(type, name, entries)          \
     135             :         type *name;                                     \
     136             :         RESERVE_BRK(name, sizeof(type) * entries)
     137             : 
     138             : extern void probe_roms(void);
     139             : #ifdef __i386__
     140             : 
     141             : asmlinkage void __init i386_start_kernel(void);
     142             : 
     143             : #else
     144             : asmlinkage void __init x86_64_start_kernel(char *real_mode);
     145             : asmlinkage void __init x86_64_start_reservations(char *real_mode_data);
     146             : 
     147             : #endif /* __i386__ */
     148             : #endif /* _SETUP */
     149             : #else
     150             : #define RESERVE_BRK(name,sz)                            \
     151             :         .pushsection .brk_reservation,"aw",@nobits;   \
     152             : .brk.name:                                              \
     153             : 1:      .skip sz;                                       \
     154             :         .size .brk.name,.-1b;                           \
     155             :         .popsection
     156             : #endif /* __ASSEMBLY__ */
     157             : #endif /* _ASM_X86_SETUP_H */

Generated by: LCOV version 1.14