diff options
author | Simon Glass <sjg@chromium.org> | 2014-10-10 08:21:52 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2014-10-28 20:42:51 -0600 |
commit | 7bddac947da91431655c9d7be030b94c1c9a8699 (patch) | |
tree | 801fe83586b2aa56a53b97293b2d4eed7d45bd8a /arch/x86/cpu/cpu.c | |
parent | 6c499abe05f93d9f53338b9831196efeede5f2e0 (diff) | |
download | u-boot-imx-7bddac947da91431655c9d7be030b94c1c9a8699.zip u-boot-imx-7bddac947da91431655c9d7be030b94c1c9a8699.tar.gz u-boot-imx-7bddac947da91431655c9d7be030b94c1c9a8699.tar.bz2 |
x86: Move paging functions into cpu.c
These functions really don't belong in physmem as they relate to the
cpu. Move them.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/x86/cpu/cpu.c')
-rw-r--r-- | arch/x86/cpu/cpu.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c index 623e3af..7a4de29 100644 --- a/arch/x86/cpu/cpu.c +++ b/arch/x86/cpu/cpu.c @@ -240,3 +240,38 @@ int icache_status(void) { return 1; } + +void cpu_enable_paging_pae(ulong cr3) +{ + __asm__ __volatile__( + /* Load the page table address */ + "movl %0, %%cr3\n" + /* Enable pae */ + "movl %%cr4, %%eax\n" + "orl $0x00000020, %%eax\n" + "movl %%eax, %%cr4\n" + /* Enable paging */ + "movl %%cr0, %%eax\n" + "orl $0x80000000, %%eax\n" + "movl %%eax, %%cr0\n" + : + : "r" (cr3) + : "eax"); +} + +void cpu_disable_paging_pae(void) +{ + /* Turn off paging */ + __asm__ __volatile__ ( + /* Disable paging */ + "movl %%cr0, %%eax\n" + "andl $0x7fffffff, %%eax\n" + "movl %%eax, %%cr0\n" + /* Disable pae */ + "movl %%cr4, %%eax\n" + "andl $0xffffffdf, %%eax\n" + "movl %%eax, %%cr4\n" + : + : + : "eax"); +} |