MIPS: spaces: Define a couple of handy macros
authorGregory CLEMENT <gregory.clement@bootlin.com>
Fri, 16 Feb 2024 17:42:10 +0000 (18:42 +0100)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Tue, 20 Feb 2024 11:44:39 +0000 (12:44 +0100)
Define CKSEGX_SIZE to represent the size of each KSEG segment.

Introduce CKSEG0ADDR_OR_64BIT and CKSEG1ADDR_OR_64BIT to get an XPHYS
address in 64bits and CKSEG[01]ADDR() in 32 bits mode.

Co-developed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/include/asm/addrspace.h
arch/mips/include/asm/mach-generic/spaces.h

index 59a48c60a065ce31ea12d7bf6aa833cd4e448020..7e9ef01cb182b3dd71766d1bc43ded45d4d02b34 100644 (file)
  */
 #define KSEGX(a)               ((_ACAST32_(a)) & _ACAST32_(0xe0000000))
 
+/*
+ * Gives the size of each kernel segment
+ */
+#define CSEGX_SIZE             0x20000000
+
 /*
  * Returns the physical address of a CKSEGx / XKPHYS address
  */
index b247575c5e6992ad4629e1cc4100504b8f0814fa..f8783d339fb0d07dcc2ed01703af45799ce9c1c2 100644 (file)
@@ -49,6 +49,8 @@
 #define HIGHMEM_START          _AC(0x20000000, UL)
 #endif
 
+#define CKSEG0ADDR_OR_64BIT(x) CKSEG0ADDR(x)
+#define CKSEG1ADDR_OR_64BIT(x) CKSEG1ADDR(x)
 #endif /* CONFIG_32BIT */
 
 #ifdef CONFIG_64BIT
@@ -82,6 +84,8 @@
 #define TO_CAC(x)              (CAC_BASE   | ((x) & TO_PHYS_MASK))
 #define TO_UNCAC(x)            (UNCAC_BASE | ((x) & TO_PHYS_MASK))
 
+#define CKSEG0ADDR_OR_64BIT(x) TO_CAC(x)
+#define CKSEG1ADDR_OR_64BIT(x) TO_UNCAC(x)
 #endif /* CONFIG_64BIT */
 
 /*