arm64: Use simpler arithmetics for the linear map macros
Because of the tagged addresses, the __is_lm_address() and __lm_to_phys() macros grew to some harder to understand bitwise operations using PAGE_OFFSET. Since these macros only accept untagged addresses, use a simple subtract operation. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Ard Biesheuvel <ardb@kernel.org> Cc: Will Deacon <will@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Link: https://lore.kernel.org/r/20210201190634.22942-3-catalin.marinas@arm.com
This commit is contained in:
parent
91cb2c8b07
commit
22cd5edb2d
|
@ -251,9 +251,9 @@ static inline const void *__tag_set(const void *addr, u8 tag)
|
||||||
* lives in the [PAGE_OFFSET, PAGE_END) interval at the bottom of the
|
* lives in the [PAGE_OFFSET, PAGE_END) interval at the bottom of the
|
||||||
* kernel's TTBR1 address range.
|
* kernel's TTBR1 address range.
|
||||||
*/
|
*/
|
||||||
#define __is_lm_address(addr) (((u64)(addr) ^ PAGE_OFFSET) < (PAGE_END - PAGE_OFFSET))
|
#define __is_lm_address(addr) (((u64)(addr) - PAGE_OFFSET) < (PAGE_END - PAGE_OFFSET))
|
||||||
|
|
||||||
#define __lm_to_phys(addr) (((addr) & ~PAGE_OFFSET) + PHYS_OFFSET)
|
#define __lm_to_phys(addr) (((addr) - PAGE_OFFSET) + PHYS_OFFSET)
|
||||||
#define __kimg_to_phys(addr) ((addr) - kimage_voffset)
|
#define __kimg_to_phys(addr) ((addr) - kimage_voffset)
|
||||||
|
|
||||||
#define __virt_to_phys_nodebug(x) ({ \
|
#define __virt_to_phys_nodebug(x) ({ \
|
||||||
|
|
Loading…
Reference in a new issue