|
@@ -268,19 +268,13 @@ extern void _memcpy_toio(volatile void __iomem *dest, const void *src,
|
|
|
* their hooks, a bitfield is reserved for use by the platform near the
|
|
|
* top of MMIO addresses (not PIO, those have to cope the hard way).
|
|
|
*
|
|
|
- * This bit field is 12 bits and is at the top of the IO virtual
|
|
|
- * addresses PCI_IO_INDIRECT_TOKEN_MASK.
|
|
|
+ * The highest address in the kernel virtual space are:
|
|
|
*
|
|
|
- * The kernel virtual space is thus:
|
|
|
+ * d0003fffffffffff # with Hash MMU
|
|
|
+ * c00fffffffffffff # with Radix MMU
|
|
|
*
|
|
|
- * 0xD000000000000000 : vmalloc
|
|
|
- * 0xD000080000000000 : PCI PHB IO space
|
|
|
- * 0xD000080080000000 : ioremap
|
|
|
- * 0xD0000fffffffffff : end of ioremap region
|
|
|
- *
|
|
|
- * Since the top 4 bits are reserved as the region ID, we use thus
|
|
|
- * the next 12 bits and keep 4 bits available for the future if the
|
|
|
- * virtual address space is ever to be extended.
|
|
|
+ * The top 4 bits are reserved as the region ID on hash, leaving us 8 bits
|
|
|
+ * that can be used for the field.
|
|
|
*
|
|
|
* The direct IO mapping operations will then mask off those bits
|
|
|
* before doing the actual access, though that only happen when
|
|
@@ -292,8 +286,8 @@ extern void _memcpy_toio(volatile void __iomem *dest, const void *src,
|
|
|
*/
|
|
|
|
|
|
#ifdef CONFIG_PPC_INDIRECT_MMIO
|
|
|
-#define PCI_IO_IND_TOKEN_MASK 0x0fff000000000000ul
|
|
|
-#define PCI_IO_IND_TOKEN_SHIFT 48
|
|
|
+#define PCI_IO_IND_TOKEN_SHIFT 52
|
|
|
+#define PCI_IO_IND_TOKEN_MASK (0xfful << PCI_IO_IND_TOKEN_SHIFT)
|
|
|
#define PCI_FIX_ADDR(addr) \
|
|
|
((PCI_IO_ADDR)(((unsigned long)(addr)) & ~PCI_IO_IND_TOKEN_MASK))
|
|
|
#define PCI_GET_ADDR_TOKEN(addr) \
|