arm64: fix phys_to_virt() calculation to be the same as Linux.

Change-Id: Ibbe17d33fd80eacff990b053fa17d8d320c227f1
This commit is contained in:
Shiratori, Takehiro
2019-03-07 16:51:18 +09:00
parent 8880710fad
commit ac18a24a27
3 changed files with 6 additions and 3 deletions

View File

@@ -3335,14 +3335,14 @@ unsigned long virt_to_phys(void *v)
unsigned long va = (unsigned long)v; unsigned long va = (unsigned long)v;
if (va >= MAP_ST_START) { if (va >= MAP_ST_START) {
return va - MAP_ST_START; return va - MAP_ST_START + arm64_st_phys_base;
} }
return va - MAP_KERNEL_START + arm64_kernel_phys_base; return va - MAP_KERNEL_START + arm64_kernel_phys_base;
} }
void *phys_to_virt(unsigned long p) void *phys_to_virt(unsigned long p)
{ {
return (void *)(p | MAP_ST_START); return (void *)((p - arm64_st_phys_base) | MAP_ST_START);
} }
int copy_from_user(void *dst, const void *src, size_t siz) int copy_from_user(void *dst, const void *src, size_t siz)

View File

@@ -56,7 +56,7 @@ uintptr_t virt_to_phys(uintptr_t va)
extern uintptr_t kernel_base; extern uintptr_t kernel_base;
if (va >= MAP_ST) { if (va >= MAP_ST) {
return (va - MAP_ST); return (va - MAP_ST + PHYS_OFFSET);
} }
if (va >= MAP_KERNEL) { if (va >= MAP_KERNEL) {

View File

@@ -2,6 +2,9 @@
#ifndef HEADER_USER_ARM64_ECLAIR_H #ifndef HEADER_USER_ARM64_ECLAIR_H
#define HEADER_USER_ARM64_ECLAIR_H #define HEADER_USER_ARM64_ECLAIR_H
/* PHYS_OFFSET needs to be changed according to the environment. */
#define PHYS_OFFSET 0x40000000
#ifdef CONFIG_ARM64_64K_PAGES #ifdef CONFIG_ARM64_64K_PAGES
# #
# if (CONFIG_ARM64_VA_BITS == 42) # if (CONFIG_ARM64_VA_BITS == 42)