blob: 6c6774af76c8142d6aaf5af16bcd4c38c5fa1bb2 [file] [log] [blame]
/*
* 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