| /* |
| * Copyright (c) 2014 The Chromium OS Authors. |
| * |
| * SPDX-License-Identifier: GPL-2.0+ |
| */ |
| |
| #ifndef __X86_CPU_H |
| #define __X86_CPU_H |
| |
| /** |
| * cpu_enable_paging_pae() - Enable PAE-paging |
| * |
| * @pdpt: Value to set in cr3 (PDPT or PML4T) |
| */ |
| void cpu_enable_paging_pae(ulong cr3); |
| |
| /** |
| * cpu_disable_paging_pae() - Disable paging and PAE |
| */ |
| void cpu_disable_paging_pae(void); |
| |
| /** |
| * cpu_has_64bit() - Check if the CPU has 64-bit support |
| * |
| * @return 1 if this CPU supports long mode (64-bit), 0 if not |
| */ |
| int cpu_has_64bit(void); |
| |
| /** |
| * cpu_call64() - Jump to a 64-bit Linux kernel (internal function) |
| * |
| * The kernel is uncompressed and the 64-bit entry point is expected to be |
| * at @target. |
| * |
| * This function is used internally - see cpu_jump_to_64bit() for a more |
| * useful function. |
| * |
| * @pgtable: Address of 24KB area containing the page table |
| * @setup_base: Pointer to the setup.bin information for the kernel |
| * @target: Pointer to the start of the kernel image |
| */ |
| void cpu_call64(ulong pgtable, ulong setup_base, ulong target); |
| |
| /** |
| * cpu_jump_to_64bit() - Jump to a 64-bit Linux kernel |
| * |
| * The kernel is uncompressed and the 64-bit entry point is expected to be |
| * at @target. |
| * |
| * @setup_base: Pointer to the setup.bin information for the kernel |
| * @target: Pointer to the start of the kernel image |
| */ |
| int cpu_jump_to_64bit(ulong setup_base, ulong target); |
| |
| #endif |