diff options
Diffstat (limited to 'include/asm-powerpc/io.h')
-rw-r--r-- | include/asm-powerpc/io.h | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h index bb8d965f96c6..affba7052fb6 100644 --- a/include/asm-powerpc/io.h +++ b/include/asm-powerpc/io.h | |||
@@ -86,7 +86,7 @@ extern unsigned long pci_dram_offset; | |||
86 | */ | 86 | */ |
87 | 87 | ||
88 | #ifdef CONFIG_PPC64 | 88 | #ifdef CONFIG_PPC64 |
89 | #define IO_SET_SYNC_FLAG() do { get_paca()->io_sync = 1; } while(0) | 89 | #define IO_SET_SYNC_FLAG() do { local_paca->io_sync = 1; } while(0) |
90 | #else | 90 | #else |
91 | #define IO_SET_SYNC_FLAG() | 91 | #define IO_SET_SYNC_FLAG() |
92 | #endif | 92 | #endif |
@@ -734,6 +734,32 @@ static inline void * bus_to_virt(unsigned long address) | |||
734 | #define setbits16(_addr, _v) out_be16((_addr), in_be16(_addr) | (_v)) | 734 | #define setbits16(_addr, _v) out_be16((_addr), in_be16(_addr) | (_v)) |
735 | #define clrbits16(_addr, _v) out_be16((_addr), in_be16(_addr) & ~(_v)) | 735 | #define clrbits16(_addr, _v) out_be16((_addr), in_be16(_addr) & ~(_v)) |
736 | 736 | ||
737 | #define setbits8(_addr, _v) out_8((_addr), in_8(_addr) | (_v)) | ||
738 | #define clrbits8(_addr, _v) out_8((_addr), in_8(_addr) & ~(_v)) | ||
739 | |||
740 | /* Clear and set bits in one shot. These macros can be used to clear and | ||
741 | * set multiple bits in a register using a single read-modify-write. These | ||
742 | * macros can also be used to set a multiple-bit bit pattern using a mask, | ||
743 | * by specifying the mask in the 'clear' parameter and the new bit pattern | ||
744 | * in the 'set' parameter. | ||
745 | */ | ||
746 | |||
747 | #define clrsetbits(type, addr, clear, set) \ | ||
748 | out_##type((addr), (in_##type(addr) & ~(clear)) | (set)) | ||
749 | |||
750 | #ifdef __powerpc64__ | ||
751 | #define clrsetbits_be64(addr, clear, set) clrsetbits(be64, addr, clear, set) | ||
752 | #define clrsetbits_le64(addr, clear, set) clrsetbits(le64, addr, clear, set) | ||
753 | #endif | ||
754 | |||
755 | #define clrsetbits_be32(addr, clear, set) clrsetbits(be32, addr, clear, set) | ||
756 | #define clrsetbits_le32(addr, clear, set) clrsetbits(le32, addr, clear, set) | ||
757 | |||
758 | #define clrsetbits_be16(addr, clear, set) clrsetbits(be16, addr, clear, set) | ||
759 | #define clrsetbits_le16(addr, clear, set) clrsetbits(le32, addr, clear, set) | ||
760 | |||
761 | #define clrsetbits_8(addr, clear, set) clrsetbits(8, addr, clear, set) | ||
762 | |||
737 | #endif /* __KERNEL__ */ | 763 | #endif /* __KERNEL__ */ |
738 | 764 | ||
739 | #endif /* _ASM_POWERPC_IO_H */ | 765 | #endif /* _ASM_POWERPC_IO_H */ |