aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/sn/pci/pcibr
diff options
context:
space:
mode:
authorMark Maule <maule@sgi.com>2005-09-06 14:03:51 -0400
committerTony Luck <tony.luck@intel.com>2005-09-07 19:23:41 -0400
commit5fbcf9a5c6904bd563f584d12d1f4d3f68a19d7d (patch)
tree2da130b000e5c442345e473b4f53104b92a76e4c /arch/ia64/sn/pci/pcibr
parent4706df3d3c42af802597d82c8b1542c3d52eab23 (diff)
[IA64-SGI] volatile semantics in places where it seems necessary
Resend using accessors instead of volatile qualifiers per hch comments, and easier to understand convenience macros per rja comments. Patch to apply volatile semantics when accessing MMR's in various SN files. Signed-off-by: Mark Maule <maule@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/sn/pci/pcibr')
-rw-r--r--arch/ia64/sn/pci/pcibr/pcibr_reg.c58
1 files changed, 30 insertions, 28 deletions
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_reg.c b/arch/ia64/sn/pci/pcibr/pcibr_reg.c
index 21426d02fbe6..1624b39cb3ec 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_reg.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_reg.c
@@ -29,10 +29,10 @@ void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
29 if (pcibus_info) { 29 if (pcibus_info) {
30 switch (pcibus_info->pbi_bridge_type) { 30 switch (pcibus_info->pbi_bridge_type) {
31 case PCIBR_BRIDGETYPE_TIOCP: 31 case PCIBR_BRIDGETYPE_TIOCP:
32 ptr->tio.cp_control &= ~bits; 32 __sn_clrq_relaxed(&ptr->tio.cp_control, bits);
33 break; 33 break;
34 case PCIBR_BRIDGETYPE_PIC: 34 case PCIBR_BRIDGETYPE_PIC:
35 ptr->pic.p_wid_control &= ~bits; 35 __sn_clrq_relaxed(&ptr->pic.p_wid_control, bits);
36 break; 36 break;
37 default: 37 default:
38 panic 38 panic
@@ -49,10 +49,10 @@ void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
49 if (pcibus_info) { 49 if (pcibus_info) {
50 switch (pcibus_info->pbi_bridge_type) { 50 switch (pcibus_info->pbi_bridge_type) {
51 case PCIBR_BRIDGETYPE_TIOCP: 51 case PCIBR_BRIDGETYPE_TIOCP:
52 ptr->tio.cp_control |= bits; 52 __sn_setq_relaxed(&ptr->tio.cp_control, bits);
53 break; 53 break;
54 case PCIBR_BRIDGETYPE_PIC: 54 case PCIBR_BRIDGETYPE_PIC:
55 ptr->pic.p_wid_control |= bits; 55 __sn_setq_relaxed(&ptr->pic.p_wid_control, bits);
56 break; 56 break;
57 default: 57 default:
58 panic 58 panic
@@ -73,10 +73,10 @@ uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info)
73 if (pcibus_info) { 73 if (pcibus_info) {
74 switch (pcibus_info->pbi_bridge_type) { 74 switch (pcibus_info->pbi_bridge_type) {
75 case PCIBR_BRIDGETYPE_TIOCP: 75 case PCIBR_BRIDGETYPE_TIOCP:
76 ret = ptr->tio.cp_tflush; 76 ret = __sn_readq_relaxed(&ptr->tio.cp_tflush);
77 break; 77 break;
78 case PCIBR_BRIDGETYPE_PIC: 78 case PCIBR_BRIDGETYPE_PIC:
79 ret = ptr->pic.p_wid_tflush; 79 ret = __sn_readq_relaxed(&ptr->pic.p_wid_tflush);
80 break; 80 break;
81 default: 81 default:
82 panic 82 panic
@@ -103,10 +103,10 @@ uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info)
103 if (pcibus_info) { 103 if (pcibus_info) {
104 switch (pcibus_info->pbi_bridge_type) { 104 switch (pcibus_info->pbi_bridge_type) {
105 case PCIBR_BRIDGETYPE_TIOCP: 105 case PCIBR_BRIDGETYPE_TIOCP:
106 ret = ptr->tio.cp_int_status; 106 ret = __sn_readq_relaxed(&ptr->tio.cp_int_status);
107 break; 107 break;
108 case PCIBR_BRIDGETYPE_PIC: 108 case PCIBR_BRIDGETYPE_PIC:
109 ret = ptr->pic.p_int_status; 109 ret = __sn_readq_relaxed(&ptr->pic.p_int_status);
110 break; 110 break;
111 default: 111 default:
112 panic 112 panic
@@ -127,10 +127,10 @@ void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
127 if (pcibus_info) { 127 if (pcibus_info) {
128 switch (pcibus_info->pbi_bridge_type) { 128 switch (pcibus_info->pbi_bridge_type) {
129 case PCIBR_BRIDGETYPE_TIOCP: 129 case PCIBR_BRIDGETYPE_TIOCP:
130 ptr->tio.cp_int_enable &= ~bits; 130 __sn_clrq_relaxed(&ptr->tio.cp_int_enable, bits);
131 break; 131 break;
132 case PCIBR_BRIDGETYPE_PIC: 132 case PCIBR_BRIDGETYPE_PIC:
133 ptr->pic.p_int_enable &= ~bits; 133 __sn_clrq_relaxed(&ptr->pic.p_int_enable, ~bits);
134 break; 134 break;
135 default: 135 default:
136 panic 136 panic
@@ -147,10 +147,10 @@ void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
147 if (pcibus_info) { 147 if (pcibus_info) {
148 switch (pcibus_info->pbi_bridge_type) { 148 switch (pcibus_info->pbi_bridge_type) {
149 case PCIBR_BRIDGETYPE_TIOCP: 149 case PCIBR_BRIDGETYPE_TIOCP:
150 ptr->tio.cp_int_enable |= bits; 150 __sn_setq_relaxed(&ptr->tio.cp_int_enable, bits);
151 break; 151 break;
152 case PCIBR_BRIDGETYPE_PIC: 152 case PCIBR_BRIDGETYPE_PIC:
153 ptr->pic.p_int_enable |= bits; 153 __sn_setq_relaxed(&ptr->pic.p_int_enable, bits);
154 break; 154 break;
155 default: 155 default:
156 panic 156 panic
@@ -171,14 +171,16 @@ void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n,
171 if (pcibus_info) { 171 if (pcibus_info) {
172 switch (pcibus_info->pbi_bridge_type) { 172 switch (pcibus_info->pbi_bridge_type) {
173 case PCIBR_BRIDGETYPE_TIOCP: 173 case PCIBR_BRIDGETYPE_TIOCP:
174 ptr->tio.cp_int_addr[int_n] &= ~TIOCP_HOST_INTR_ADDR; 174 __sn_clrq_relaxed(&ptr->tio.cp_int_addr[int_n],
175 ptr->tio.cp_int_addr[int_n] |= 175 TIOCP_HOST_INTR_ADDR);
176 (addr & TIOCP_HOST_INTR_ADDR); 176 __sn_setq_relaxed(&ptr->tio.cp_int_addr[int_n],
177 (addr & TIOCP_HOST_INTR_ADDR));
177 break; 178 break;
178 case PCIBR_BRIDGETYPE_PIC: 179 case PCIBR_BRIDGETYPE_PIC:
179 ptr->pic.p_int_addr[int_n] &= ~PIC_HOST_INTR_ADDR; 180 __sn_clrq_relaxed(&ptr->pic.p_int_addr[int_n],
180 ptr->pic.p_int_addr[int_n] |= 181 PIC_HOST_INTR_ADDR);
181 (addr & PIC_HOST_INTR_ADDR); 182 __sn_setq_relaxed(&ptr->pic.p_int_addr[int_n],
183 (addr & PIC_HOST_INTR_ADDR));
182 break; 184 break;
183 default: 185 default:
184 panic 186 panic
@@ -198,10 +200,10 @@ void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n)
198 if (pcibus_info) { 200 if (pcibus_info) {
199 switch (pcibus_info->pbi_bridge_type) { 201 switch (pcibus_info->pbi_bridge_type) {
200 case PCIBR_BRIDGETYPE_TIOCP: 202 case PCIBR_BRIDGETYPE_TIOCP:
201 ptr->tio.cp_force_pin[int_n] = 1; 203 writeq(1, &ptr->tio.cp_force_pin[int_n]);
202 break; 204 break;
203 case PCIBR_BRIDGETYPE_PIC: 205 case PCIBR_BRIDGETYPE_PIC:
204 ptr->pic.p_force_pin[int_n] = 1; 206 writeq(1, &ptr->pic.p_force_pin[int_n]);
205 break; 207 break;
206 default: 208 default:
207 panic 209 panic
@@ -222,10 +224,12 @@ uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device)
222 if (pcibus_info) { 224 if (pcibus_info) {
223 switch (pcibus_info->pbi_bridge_type) { 225 switch (pcibus_info->pbi_bridge_type) {
224 case PCIBR_BRIDGETYPE_TIOCP: 226 case PCIBR_BRIDGETYPE_TIOCP:
225 ret = ptr->tio.cp_wr_req_buf[device]; 227 ret =
228 __sn_readq_relaxed(&ptr->tio.cp_wr_req_buf[device]);
226 break; 229 break;
227 case PCIBR_BRIDGETYPE_PIC: 230 case PCIBR_BRIDGETYPE_PIC:
228 ret = ptr->pic.p_wr_req_buf[device]; 231 ret =
232 __sn_readq_relaxed(&ptr->pic.p_wr_req_buf[device]);
229 break; 233 break;
230 default: 234 default:
231 panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", (void *)ptr); 235 panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", (void *)ptr);
@@ -244,10 +248,10 @@ void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index,
244 if (pcibus_info) { 248 if (pcibus_info) {
245 switch (pcibus_info->pbi_bridge_type) { 249 switch (pcibus_info->pbi_bridge_type) {
246 case PCIBR_BRIDGETYPE_TIOCP: 250 case PCIBR_BRIDGETYPE_TIOCP:
247 ptr->tio.cp_int_ate_ram[ate_index] = (uint64_t) val; 251 writeq(val, &ptr->tio.cp_int_ate_ram[ate_index]);
248 break; 252 break;
249 case PCIBR_BRIDGETYPE_PIC: 253 case PCIBR_BRIDGETYPE_PIC:
250 ptr->pic.p_int_ate_ram[ate_index] = (uint64_t) val; 254 writeq(val, &ptr->pic.p_int_ate_ram[ate_index]);
251 break; 255 break;
252 default: 256 default:
253 panic 257 panic
@@ -265,12 +269,10 @@ uint64_t *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index)
265 if (pcibus_info) { 269 if (pcibus_info) {
266 switch (pcibus_info->pbi_bridge_type) { 270 switch (pcibus_info->pbi_bridge_type) {
267 case PCIBR_BRIDGETYPE_TIOCP: 271 case PCIBR_BRIDGETYPE_TIOCP:
268 ret = 272 ret = &ptr->tio.cp_int_ate_ram[ate_index];
269 (uint64_t *) & (ptr->tio.cp_int_ate_ram[ate_index]);
270 break; 273 break;
271 case PCIBR_BRIDGETYPE_PIC: 274 case PCIBR_BRIDGETYPE_PIC:
272 ret = 275 ret = &ptr->pic.p_int_ate_ram[ate_index];
273 (uint64_t *) & (ptr->pic.p_int_ate_ram[ate_index]);
274 break; 276 break;
275 default: 277 default:
276 panic 278 panic