]> err.no Git - linux-2.6/blobdiff - include/asm-sh/addrspace.h
sh: intc - remove default interrupt priority tables
[linux-2.6] / include / asm-sh / addrspace.h
index cb9da9992fa06793de0bacfc81c7da6995495462..fa544fc38c233cc546a51c309e203dcd93570cf7 100644 (file)
 /* If this CPU supports segmentation, hook up the helpers */
 #ifdef P1SEG
 
+/*
+   [ P0/U0 (virtual) ]         0x00000000     <------ User space
+   [ P1 (fixed)   cached ]     0x80000000     <------ Kernel space
+   [ P2 (fixed)  non-cachable] 0xA0000000     <------ Physical access
+   [ P3 (virtual) cached]      0xC0000000     <------ vmalloced area
+   [ P4 control   ]            0xE0000000
+ */
+
 /* Returns the privileged segment base of a given address  */
 #define PXSEG(a)       (((unsigned long)(a)) & 0xe0000000)
 
 /* Returns the physical address of a PnSEG (n=1,2) address   */
 #define PHYSADDR(a)    (((unsigned long)(a)) & 0x1fffffff)
 
+#ifdef CONFIG_29BIT
 /*
  * Map an address to a certain privileged segment
  */
        ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P3SEG))
 #define P4SEGADDR(a)   \
        ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P4SEG))
-
+#endif /* 29BIT */
 #endif /* P1SEG */
 
+/* Check if an address can be reached in 29 bits */
+#define IS_29BIT(a)    (((unsigned long)(a)) < 0x20000000)
+
 #endif /* __KERNEL__ */
 #endif /* __ASM_SH_ADDRSPACE_H */