io.h 1.4 KB
Newer Older
Y
Yoshinori Sato 已提交
1 2 3 4 5 6
#ifndef _H8300_IO_H
#define _H8300_IO_H

#ifdef __KERNEL__

/* H8/300 internal I/O functions */
7 8 9

#define __raw_readb __raw_readb
static inline u8 __raw_readb(const volatile void __iomem *addr)
Y
Yoshinori Sato 已提交
10
{
11
	return *(volatile u8 *)addr;
Y
Yoshinori Sato 已提交
12 13
}

14 15
#define __raw_readw __raw_readw
static inline u16 __raw_readw(const volatile void __iomem *addr)
Y
Yoshinori Sato 已提交
16
{
17
	return *(volatile u16 *)addr;
Y
Yoshinori Sato 已提交
18 19
}

20 21
#define __raw_readl __raw_readl
static inline u32  __raw_readl(const volatile void __iomem *addr)
Y
Yoshinori Sato 已提交
22
{
23
	return *(volatile u32 *)addr;
Y
Yoshinori Sato 已提交
24 25
}

26 27
#define __raw_writeb __raw_writeb
static inline void __raw_writeb(u8 b, const volatile void __iomem *addr)
Y
Yoshinori Sato 已提交
28
{
29
	*(volatile u8 *)addr = b;
Y
Yoshinori Sato 已提交
30 31
}

32 33
#define __raw_writew __raw_writew
static inline void __raw_writew(u16 b, const volatile void __iomem *addr)
Y
Yoshinori Sato 已提交
34
{
35
	*(volatile u16 *)addr = b;
Y
Yoshinori Sato 已提交
36 37
}

38 39
#define __raw_writel __raw_writel
static inline void __raw_writel(u32 b, const volatile void __iomem *addr)
Y
Yoshinori Sato 已提交
40
{
41
	*(volatile u32 *)addr = b;
Y
Yoshinori Sato 已提交
42 43
}

44
static inline void ctrl_bclr(int b, void __iomem *addr)
Y
Yoshinori Sato 已提交
45 46
{
	if (__builtin_constant_p(b))
Y
Yoshinori Sato 已提交
47
		__asm__("bclr %1,%0" : "+WU"(*addr): "i"(b));
Y
Yoshinori Sato 已提交
48
	else
Y
Yoshinori Sato 已提交
49
		__asm__("bclr %w1,%0" : "+WU"(*addr): "r"(b));
Y
Yoshinori Sato 已提交
50 51
}

52
static inline void ctrl_bset(int b, void __iomem *addr)
Y
Yoshinori Sato 已提交
53 54
{
	if (__builtin_constant_p(b))
Y
Yoshinori Sato 已提交
55
		__asm__("bset %1,%0" : "+WU"(*addr): "i"(b));
Y
Yoshinori Sato 已提交
56
	else
Y
Yoshinori Sato 已提交
57
		__asm__("bset %w1,%0" : "+WU"(*addr): "r"(b));
Y
Yoshinori Sato 已提交
58 59
}

60 61
#include <asm-generic/io.h>

Y
Yoshinori Sato 已提交
62 63 64
#endif /* __KERNEL__ */

#endif /* _H8300_IO_H */