x86: Add function to modify CR3 register
Register CR3 holds the physical address of paging-structure hierarchy. Add functions to enable read/write of this register. Change-Id: Icfd8f8e32833d2c80cefc8f930d6eedbfeb5e3ee Signed-off-by: Naresh G Solanki <naresh.solanki@intel.com> Reviewed-on: https://review.coreboot.org/25478 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
65d2d21a04
commit
f92fcabba8
@ -59,6 +59,27 @@ static alwaysinline void write_cr0(CRx_TYPE data)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static alwaysinline CRx_TYPE read_cr3(void)
|
||||||
|
{
|
||||||
|
CRx_TYPE value;
|
||||||
|
__asm__ __volatile__ (
|
||||||
|
"mov %%cr3, %0"
|
||||||
|
: CRx_RET(value)
|
||||||
|
:
|
||||||
|
: COMPILER_BARRIER
|
||||||
|
);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static alwaysinline void write_cr3(CRx_TYPE data)
|
||||||
|
{
|
||||||
|
__asm__ __volatile__ (
|
||||||
|
"mov %0, %%cr3"
|
||||||
|
:
|
||||||
|
: CRx_IN(data)
|
||||||
|
: COMPILER_BARRIER
|
||||||
|
);
|
||||||
|
}
|
||||||
static alwaysinline CRx_TYPE read_cr4(void)
|
static alwaysinline CRx_TYPE read_cr4(void)
|
||||||
{
|
{
|
||||||
CRx_TYPE value;
|
CRx_TYPE value;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user