aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-powerpc/io.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-powerpc/io.h')
-rw-r--r--include/asm-powerpc/io.h28
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 */