Skip to content

Commit 22cd5ed

Browse files
committed
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
1 parent 91cb2c8 commit 22cd5ed

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

arch/arm64/include/asm/memory.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,9 @@ static inline const void *__tag_set(const void *addr, u8 tag)
251251
* lives in the [PAGE_OFFSET, PAGE_END) interval at the bottom of the
252252
* kernel's TTBR1 address range.
253253
*/
254-
#define __is_lm_address(addr) (((u64)(addr) ^ PAGE_OFFSET) < (PAGE_END - PAGE_OFFSET))
254+
#define __is_lm_address(addr) (((u64)(addr) - PAGE_OFFSET) < (PAGE_END - PAGE_OFFSET))
255255

256-
#define __lm_to_phys(addr) (((addr) & ~PAGE_OFFSET) + PHYS_OFFSET)
256+
#define __lm_to_phys(addr) (((addr) - PAGE_OFFSET) + PHYS_OFFSET)
257257
#define __kimg_to_phys(addr) ((addr) - kimage_voffset)
258258

259259
#define __virt_to_phys_nodebug(x) ({ \

0 commit comments

Comments
 (0)