parisc: Prevent ldil() to sign-extend into upper 32 bits
authorHelge Deller <deller@gmx.de>
Tue, 17 May 2022 14:57:06 +0000 (16:57 +0200)
committerHelge Deller <deller@gmx.de>
Mon, 23 May 2022 11:44:24 +0000 (13:44 +0200)
Add some build time checks to prevent that the various usages of
"ldil L%(TMPALIAS_MAP_START), %reg"
sign-extends into the upper 32 bits when building a 64-bit kernel.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/mm/init.c

index 1dc2e88e7b04fc60eb80c65bc99887e415d2cec0..0a81499dd35e2b49a66f6addf00e9c554b7076de 100644 (file)
@@ -555,6 +555,12 @@ void __init mem_init(void)
        BUILD_BUG_ON(PT_INITIAL > PTRS_PER_PGD);
 #endif
 
+#ifdef CONFIG_64BIT
+       /* avoid ldil_%L() asm statements to sign-extend into upper 32-bits */
+       BUILD_BUG_ON(__PAGE_OFFSET >= 0x80000000);
+       BUILD_BUG_ON(TMPALIAS_MAP_START >= 0x80000000);
+#endif
+
        high_memory = __va((max_pfn << PAGE_SHIFT));
        set_max_mapnr(max_low_pfn);
        memblock_free_all();