Subversion Repositories HelenOS

Rev

Rev 4345 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4345 Rev 4348
Line 51... Line 51...
51
 
51
 
52
static inline void pio_write_8(ioport8_t *port, uint8_t v)
52
static inline void pio_write_8(ioport8_t *port, uint8_t v)
53
{
53
{
54
    uintptr_t prt = (uintptr_t) port;
54
    uintptr_t prt = (uintptr_t) port;
55
 
55
 
56
    *((uint8_t *)(IA64_IOSPACE_ADDRESS +
56
    *((ioport8_t *)(IA64_IOSPACE_ADDRESS +
57
        ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
57
        ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
58
 
58
 
59
    asm volatile ("mf\n" ::: "memory");
59
    asm volatile ("mf\n" ::: "memory");
60
}
60
}
61
 
61
 
62
static inline void pio_write_16(ioport16_t *port, uint16_t v)
62
static inline void pio_write_16(ioport16_t *port, uint16_t v)
63
{
63
{
64
    uintptr_t prt = (uintptr_t) port;
64
    uintptr_t prt = (uintptr_t) port;
65
 
65
 
66
    *((uint16_t *)(IA64_IOSPACE_ADDRESS +
66
    *((ioport16_t *)(IA64_IOSPACE_ADDRESS +
67
        ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
67
        ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
68
 
68
 
69
    asm volatile ("mf\n" ::: "memory");
69
    asm volatile ("mf\n" ::: "memory");
70
}
70
}
71
 
71
 
72
static inline void pio_write_32(ioport32_t *port, uint32_t v)
72
static inline void pio_write_32(ioport32_t *port, uint32_t v)
73
{
73
{
74
    uintptr_t prt = (uintptr_t) port;
74
    uintptr_t prt = (uintptr_t) port;
75
 
75
 
76
    *((uint32_t *)(IA64_IOSPACE_ADDRESS +
76
    *((ioport32_t *)(IA64_IOSPACE_ADDRESS +
77
        ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
77
        ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
78
 
78
 
79
    asm volatile ("mf\n" ::: "memory");
79
    asm volatile ("mf\n" ::: "memory");
80
}
80
}
81
 
81
 
Line 83... Line 83...
83
{
83
{
84
    uintptr_t prt = (uintptr_t) port;
84
    uintptr_t prt = (uintptr_t) port;
85
 
85
 
86
    asm volatile ("mf\n" ::: "memory");
86
    asm volatile ("mf\n" ::: "memory");
87
 
87
 
88
    return *((uint8_t *)(IA64_IOSPACE_ADDRESS +
88
    return *((ioport8_t *)(IA64_IOSPACE_ADDRESS +
89
        ((prt & 0xfff) | ((prt >> 2) << 12))));
89
        ((prt & 0xfff) | ((prt >> 2) << 12))));
90
}
90
}
91
 
91
 
92
static inline uint16_t pio_read_16(ioport16_t *port)
92
static inline uint16_t pio_read_16(ioport16_t *port)
93
{
93
{
94
    uintptr_t prt = (uintptr_t) port;
94
    uintptr_t prt = (uintptr_t) port;
95
 
95
 
96
    asm volatile ("mf\n" ::: "memory");
96
    asm volatile ("mf\n" ::: "memory");
97
 
97
 
98
    return *((uint16_t *)(IA64_IOSPACE_ADDRESS +
98
    return *((ioport16_t *)(IA64_IOSPACE_ADDRESS +
99
        ((prt & 0xfff) | ((prt >> 2) << 12))));
99
        ((prt & 0xfff) | ((prt >> 2) << 12))));
100
}
100
}
101
 
101
 
102
static inline uint32_t pio_read_32(ioport32_t *port)
102
static inline uint32_t pio_read_32(ioport32_t *port)
103
{
103
{
104
    uintptr_t prt = (uintptr_t) port;
104
    uintptr_t prt = (uintptr_t) port;
105
 
105
 
106
    asm volatile ("mf\n" ::: "memory");
106
    asm volatile ("mf\n" ::: "memory");
107
 
107
 
108
    return *((uint32_t *)(IA64_IOSPACE_ADDRESS +
108
    return *((ioport32_t *)(IA64_IOSPACE_ADDRESS +
109
        ((prt & 0xfff) | ((prt >> 2) << 12))));
109
        ((prt & 0xfff) | ((prt >> 2) << 12))));
110
}
110
}
111
 
111
 
112
#endif
112
#endif
113
 
113