1 /* 2 * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. 3 */ 4 5 /* $OpenBSD: busop.c,v 1.1 2003/02/17 01:29:20 henric Exp $ */ 6 7 /* 8 * Copyright (c) 2003 Henric Jungheim 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions and the following disclaimer. 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in the 18 * documentation and/or other materials provided with the distribution. 19 * 3. The name of the author may not be used to endorse or promote products 20 * derived from this software without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 #include <sys/param.h> 35 #include <sys/systm.h> 36 #include <sys/kernel.h> 37 38 #include <machine/bus.h> 39 40 /* 41 * Implementing u_int16_t 42 */ 43 44 45 void 46 bus_space_read_multi_2(bus_space_tag_t t, bus_space_handle_t h, 47 bus_size_t o, 48 u_int16_t *a, bus_size_t c) 49 { 50 u_int16_t *p = a; 51 52 BUS_SPACE_ASSERT(t, h, o, 2); 53 BUS_SPACE_TRACE(t, h, 54 ("bsrm2(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, 55 (long long)o, t->asi, c)); 56 57 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 58 asi_set(t->asi); 59 while (--c > 0) { 60 u_int16_t r = lduha_asi(h.bh_ptr + o); 61 BUS_SPACE_TRACE(t, h, (" %4.4x", r)); 62 *p++ = r; 63 } 64 65 BUS_SPACE_TRACE(t, h, ("\n")); 66 } 67 68 void 69 bus_space_write_multi_2(bus_space_tag_t t, bus_space_handle_t h, 70 bus_size_t o, 71 const u_int16_t *a, bus_size_t c) 72 { 73 const u_int16_t *p = a; 74 75 BUS_SPACE_ASSERT(t, h, o, 2); 76 BUS_SPACE_TRACE(t, h, 77 ("bswm2(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 78 (long long)o, t->asi, c)); 79 80 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 81 asi_set(t->asi); 82 while (--c > 0) { 83 u_int16_t r = *p++; 84 BUS_SPACE_TRACE(t, h, (" %4.4x", r)); 85 stha_asi(h.bh_ptr + o, r); 86 } 87 88 BUS_SPACE_TRACE(t, h, ("\n")); 89 } 90 91 void 92 bus_space_set_multi_2(bus_space_tag_t t, bus_space_handle_t h, 93 bus_size_t o, u_int16_t v, 94 bus_size_t c) 95 { 96 BUS_SPACE_ASSERT(t, h, o, 2); 97 BUS_SPACE_TRACE(t, h, 98 ("bssm2(%llx + %llx, %x, %x) <- %4.4x\n", (long long)h.bh_ptr, 99 (long long)o, t->asi, c, v)); 100 101 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 102 asi_set(t->asi); 103 while (--c > 0) 104 stha_asi(h.bh_ptr + o, v); 105 } 106 107 void 108 bus_space_read_region_2(bus_space_tag_t t, bus_space_handle_t h, 109 bus_size_t o, 110 u_int16_t *a, bus_size_t c) 111 { 112 u_int16_t *p = a; 113 paddr_t ptr = h.bh_ptr + o; 114 115 BUS_SPACE_ASSERT(t, h, o, 2); 116 BUS_SPACE_TRACE(t, h, 117 ("bsrr2(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, 118 (long long)o, t->asi, c)); 119 120 asi_set(t->asi); 121 for (; c; p++, c--, ptr += 2) { 122 u_int16_t r = lduha_asi(ptr); 123 BUS_SPACE_TRACE(t, h, (" %4.4x", r)); 124 *p = r; 125 } 126 127 BUS_SPACE_TRACE(t, h, ("\n")); 128 } 129 130 void 131 bus_space_write_region_2(bus_space_tag_t t, bus_space_handle_t h, 132 bus_size_t o, 133 const u_int16_t *a, bus_size_t c) 134 { 135 const u_int16_t *p = a; 136 paddr_t ptr = h.bh_ptr + o; 137 138 BUS_SPACE_ASSERT(t, h, o, 2); 139 BUS_SPACE_TRACE(t, h, 140 ("bswr2(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 141 (long long)o, t->asi, c)); 142 143 asi_set(t->asi); 144 for (; c; p++, c--, ptr += 2) { 145 u_int16_t r = *p; 146 BUS_SPACE_TRACE(t, h, (" %4.4x", r)); 147 stha_asi(ptr, r); 148 } 149 150 BUS_SPACE_TRACE(t, h, ("\n")); 151 } 152 153 void 154 bus_space_set_region_2(bus_space_tag_t t, bus_space_handle_t h, 155 bus_size_t o, u_int16_t v, 156 bus_size_t c) 157 { 158 paddr_t ptr = h.bh_ptr + o; 159 160 BUS_SPACE_ASSERT(t, h, o, 2); 161 BUS_SPACE_TRACE(t, h, 162 ("bssr2(%llx + %llx, %x, %x) <- %4.4x\n", (long long)h.bh_ptr, 163 (long long)o, t->asi, c, v)); 164 165 asi_set(t->asi); 166 for (; c; c--, ptr += 2) 167 stha_asi(ptr, v); 168 } 169 170 void 171 bus_space_copy_region_2(bus_space_tag_t t, bus_space_handle_t h1, 172 bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, 173 bus_size_t c) 174 { 175 paddr_t ptr1 = h1.bh_ptr + o1; 176 paddr_t ptr2 = h2.bh_ptr + o2; 177 178 BUS_SPACE_ASSERT(t, h1, o2, 2); 179 BUS_SPACE_ASSERT(t, h2, o2, 2); 180 BUS_SPACE_TRACE(t, h1, 181 ("bscr2(%llx + %llx, %llx + %llx, %x, %x) <-> \n", 182 (long long)h1.bh_ptr, (long long)o1, 183 (long long)h2.bh_ptr, (long long)o2, 184 t->asi, c)); 185 186 asi_set(t->asi); 187 for (; c; c--, ptr1 += 2, ptr2 += 2) { 188 u_int16_t r = lduha_asi(ptr2); 189 BUS_SPACE_TRACE(t, h1, (" %4.4x", r)); 190 stha_asi(ptr1, r); 191 } 192 BUS_SPACE_TRACE(t, h1, ("\n")); 193 } 194 195 196 /* 197 * Implementing u_int32_t 198 */ 199 200 201 void 202 bus_space_read_multi_4(bus_space_tag_t t, bus_space_handle_t h, 203 bus_size_t o, 204 u_int32_t *a, bus_size_t c) 205 { 206 u_int32_t *p = a; 207 208 BUS_SPACE_ASSERT(t, h, o, 4); 209 BUS_SPACE_TRACE(t, h, 210 ("bsrm4(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, 211 (long long)o, t->asi, c)); 212 213 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 214 asi_set(t->asi); 215 while (--c > 0) { 216 u_int32_t r = lduwa_asi(h.bh_ptr + o); 217 BUS_SPACE_TRACE(t, h, (" %8.8x", r)); 218 *p++ = r; 219 } 220 221 BUS_SPACE_TRACE(t, h, ("\n")); 222 } 223 224 void 225 bus_space_write_multi_4(bus_space_tag_t t, bus_space_handle_t h, 226 bus_size_t o, 227 const u_int32_t *a, bus_size_t c) 228 { 229 const u_int32_t *p = a; 230 231 BUS_SPACE_ASSERT(t, h, o, 4); 232 BUS_SPACE_TRACE(t, h, 233 ("bswm4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 234 (long long)o, t->asi, c)); 235 236 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 237 asi_set(t->asi); 238 while (--c > 0) { 239 u_int32_t r = *p++; 240 BUS_SPACE_TRACE(t, h, (" %8.8x", r)); 241 stwa_asi(h.bh_ptr + o, r); 242 } 243 244 BUS_SPACE_TRACE(t, h, ("\n")); 245 } 246 247 void 248 bus_space_set_multi_4(bus_space_tag_t t, bus_space_handle_t h, 249 bus_size_t o, u_int32_t v, 250 bus_size_t c) 251 { 252 BUS_SPACE_ASSERT(t, h, o, 4); 253 BUS_SPACE_TRACE(t, h, 254 ("bssm4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr, 255 (long long)o, t->asi, c, v)); 256 257 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 258 asi_set(t->asi); 259 while (--c > 0) 260 stwa_asi(h.bh_ptr + o, v); 261 } 262 263 void 264 bus_space_read_region_4(bus_space_tag_t t, bus_space_handle_t h, 265 bus_size_t o, 266 u_int32_t *a, bus_size_t c) 267 { 268 u_int32_t *p = a; 269 paddr_t ptr = h.bh_ptr + o; 270 271 BUS_SPACE_ASSERT(t, h, o, 4); 272 BUS_SPACE_TRACE(t, h, 273 ("bsrr4(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, 274 (long long)o, t->asi, c)); 275 276 asi_set(t->asi); 277 for (; c; p++, c--, ptr += 4) { 278 u_int32_t r = lduwa_asi(ptr); 279 BUS_SPACE_TRACE(t, h, (" %8.8x", r)); 280 *p = r; 281 } 282 283 BUS_SPACE_TRACE(t, h, ("\n")); 284 } 285 286 void 287 bus_space_write_region_4(bus_space_tag_t t, bus_space_handle_t h, 288 bus_size_t o, 289 const u_int32_t *a, bus_size_t c) 290 { 291 const u_int32_t *p = a; 292 paddr_t ptr = h.bh_ptr + o; 293 294 BUS_SPACE_ASSERT(t, h, o, 4); 295 BUS_SPACE_TRACE(t, h, 296 ("bswr4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 297 (long long)o, t->asi, c)); 298 299 asi_set(t->asi); 300 for (; c; p++, c--, ptr += 4) { 301 u_int32_t r = *p; 302 BUS_SPACE_TRACE(t, h, (" %8.8x", r)); 303 stwa_asi(ptr, r); 304 } 305 306 BUS_SPACE_TRACE(t, h, ("\n")); 307 } 308 309 void 310 bus_space_set_region_4(bus_space_tag_t t, bus_space_handle_t h, 311 bus_size_t o, u_int32_t v, 312 bus_size_t c) 313 { 314 paddr_t ptr = h.bh_ptr + o; 315 316 BUS_SPACE_ASSERT(t, h, o, 4); 317 BUS_SPACE_TRACE(t, h, 318 ("bssr4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr, 319 (long long)o, t->asi, c, v)); 320 321 asi_set(t->asi); 322 for (; c; c--, ptr += 4) 323 stwa_asi(ptr, v); 324 } 325 326 void 327 bus_space_copy_region_4(bus_space_tag_t t, bus_space_handle_t h1, 328 bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, 329 bus_size_t c) 330 { 331 paddr_t ptr1 = h1.bh_ptr + o1; 332 paddr_t ptr2 = h2.bh_ptr + o2; 333 334 BUS_SPACE_ASSERT(t, h1, o2, 4); 335 BUS_SPACE_ASSERT(t, h2, o2, 4); 336 BUS_SPACE_TRACE(t, h1, 337 ("bscr4(%llx + %llx, %llx + %llx, %x, %x) <-> \n", 338 (long long)h1.bh_ptr, (long long)o1, 339 (long long)h2.bh_ptr, (long long)o2, 340 t->asi, c)); 341 342 asi_set(t->asi); 343 for (; c; c--, ptr1 += 4, ptr2 += 4) { 344 u_int32_t r = lduwa_asi(ptr2); 345 BUS_SPACE_TRACE(t, h1, (" %8.8x", r)); 346 stwa_asi(ptr1, r); 347 } 348 BUS_SPACE_TRACE(t, h1, ("\n")); 349 } 350 351 352 /* 353 * Implementing u_int64_t 354 */ 355 356 357 void 358 bus_space_read_multi_8(bus_space_tag_t t, bus_space_handle_t h, 359 bus_size_t o, 360 u_int64_t *a, bus_size_t c) 361 { 362 u_int64_t *p = a; 363 364 BUS_SPACE_ASSERT(t, h, o, 8); 365 BUS_SPACE_TRACE(t, h, 366 ("bsrm8(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, 367 (long long)o, t->asi, c)); 368 369 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 370 asi_set(t->asi); 371 while (--c > 0) { 372 u_int64_t r = ldxa_asi(h.bh_ptr + o); 373 BUS_SPACE_TRACE(t, h, (" %16.16llx", r)); 374 *p++ = r; 375 } 376 377 BUS_SPACE_TRACE(t, h, ("\n")); 378 } 379 380 void 381 bus_space_write_multi_8(bus_space_tag_t t, bus_space_handle_t h, 382 bus_size_t o, 383 const u_int64_t *a, bus_size_t c) 384 { 385 const u_int64_t *p = a; 386 387 BUS_SPACE_ASSERT(t, h, o, 8); 388 BUS_SPACE_TRACE(t, h, 389 ("bswm8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 390 (long long)o, t->asi, c)); 391 392 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 393 asi_set(t->asi); 394 while (--c > 0) { 395 u_int64_t r = *p++; 396 BUS_SPACE_TRACE(t, h, (" %16.16llx", r)); 397 stxa_asi(h.bh_ptr + o, r); 398 } 399 400 BUS_SPACE_TRACE(t, h, ("\n")); 401 } 402 403 void 404 bus_space_set_multi_8(bus_space_tag_t t, bus_space_handle_t h, 405 bus_size_t o, u_int64_t v, 406 bus_size_t c) 407 { 408 BUS_SPACE_ASSERT(t, h, o, 8); 409 BUS_SPACE_TRACE(t, h, 410 ("bssm8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr, 411 (long long)o, t->asi, c, v)); 412 413 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 414 asi_set(t->asi); 415 while (--c > 0) 416 stxa_asi(h.bh_ptr + o, v); 417 } 418 419 void 420 bus_space_read_region_8(bus_space_tag_t t, bus_space_handle_t h, 421 bus_size_t o, 422 u_int64_t *a, bus_size_t c) 423 { 424 u_int64_t *p = a; 425 paddr_t ptr = h.bh_ptr + o; 426 427 BUS_SPACE_ASSERT(t, h, o, 8); 428 BUS_SPACE_TRACE(t, h, 429 ("bsrr8(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, 430 (long long)o, t->asi, c)); 431 432 asi_set(t->asi); 433 for (; c; p++, c--, ptr += 8) { 434 u_int64_t r = ldxa_asi(ptr); 435 BUS_SPACE_TRACE(t, h, (" %16.16llx", r)); 436 *p = r; 437 } 438 439 BUS_SPACE_TRACE(t, h, ("\n")); 440 } 441 442 void 443 bus_space_write_region_8(bus_space_tag_t t, bus_space_handle_t h, 444 bus_size_t o, 445 const u_int64_t *a, bus_size_t c) 446 { 447 const u_int64_t *p = a; 448 paddr_t ptr = h.bh_ptr + o; 449 450 BUS_SPACE_ASSERT(t, h, o, 8); 451 BUS_SPACE_TRACE(t, h, 452 ("bswr8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 453 (long long)o, t->asi, c)); 454 455 asi_set(t->asi); 456 for (; c; p++, c--, ptr += 8) { 457 u_int64_t r = *p; 458 BUS_SPACE_TRACE(t, h, (" %16.16llx", r)); 459 stxa_asi(ptr, r); 460 } 461 462 BUS_SPACE_TRACE(t, h, ("\n")); 463 } 464 465 void 466 bus_space_set_region_8(bus_space_tag_t t, bus_space_handle_t h, 467 bus_size_t o, u_int64_t v, 468 bus_size_t c) 469 { 470 paddr_t ptr = h.bh_ptr + o; 471 472 BUS_SPACE_ASSERT(t, h, o, 8); 473 BUS_SPACE_TRACE(t, h, 474 ("bssr8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr, 475 (long long)o, t->asi, c, v)); 476 477 asi_set(t->asi); 478 for (; c; c--, ptr += 8) 479 stxa_asi(ptr, v); 480 } 481 482 void 483 bus_space_copy_region_8(bus_space_tag_t t, bus_space_handle_t h1, 484 bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, 485 bus_size_t c) 486 { 487 paddr_t ptr1 = h1.bh_ptr + o1; 488 paddr_t ptr2 = h2.bh_ptr + o2; 489 490 BUS_SPACE_ASSERT(t, h1, o2, 8); 491 BUS_SPACE_ASSERT(t, h2, o2, 8); 492 BUS_SPACE_TRACE(t, h1, 493 ("bscr8(%llx + %llx, %llx + %llx, %x, %x) <-> \n", 494 (long long)h1.bh_ptr, (long long)o1, 495 (long long)h2.bh_ptr, (long long)o2, 496 t->asi, c)); 497 498 asi_set(t->asi); 499 for (; c; c--, ptr1 += 8, ptr2 += 8) { 500 u_int64_t r = ldxa_asi(ptr2); 501 BUS_SPACE_TRACE(t, h1, (" %16.16llx", r)); 502 stxa_asi(ptr1, r); 503 } 504 BUS_SPACE_TRACE(t, h1, ("\n")); 505 } 506 507 508 /* 509 * Implementing u_int8_t 510 */ 511 512 513 void 514 bus_space_read_multi_1(bus_space_tag_t t, bus_space_handle_t h, 515 bus_size_t o, 516 u_int8_t *a, bus_size_t c) 517 { 518 u_int8_t *p = a; 519 520 BUS_SPACE_ASSERT(t, h, o, 1); 521 BUS_SPACE_TRACE(t, h, 522 ("bsrm1(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, 523 (long long)o, t->asi, c)); 524 525 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 526 asi_set(t->asi); 527 while (--c > 0) { 528 u_int8_t r = lduba_asi(h.bh_ptr + o); 529 BUS_SPACE_TRACE(t, h, (" %2.2x", r)); 530 *p++ = r; 531 } 532 533 BUS_SPACE_TRACE(t, h, ("\n")); 534 } 535 536 void 537 bus_space_write_multi_1(bus_space_tag_t t, bus_space_handle_t h, 538 bus_size_t o, 539 const u_int8_t *a, bus_size_t c) 540 { 541 const u_int8_t *p = a; 542 543 BUS_SPACE_ASSERT(t, h, o, 1); 544 BUS_SPACE_TRACE(t, h, 545 ("bswm1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 546 (long long)o, t->asi, c)); 547 548 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 549 asi_set(t->asi); 550 while (--c > 0) { 551 u_int8_t r = *p++; 552 BUS_SPACE_TRACE(t, h, (" %2.2x", r)); 553 stba_asi(h.bh_ptr + o, r); 554 } 555 556 BUS_SPACE_TRACE(t, h, ("\n")); 557 } 558 559 void 560 bus_space_set_multi_1(bus_space_tag_t t, bus_space_handle_t h, 561 bus_size_t o, u_int8_t v, 562 bus_size_t c) 563 { 564 BUS_SPACE_ASSERT(t, h, o, 1); 565 BUS_SPACE_TRACE(t, h, 566 ("bssm1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr, 567 (long long)o, t->asi, c, v)); 568 569 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 570 asi_set(t->asi); 571 while (--c > 0) 572 stba_asi(h.bh_ptr + o, v); 573 } 574 575 void 576 bus_space_read_region_1(bus_space_tag_t t, bus_space_handle_t h, 577 bus_size_t o, 578 u_int8_t *a, bus_size_t c) 579 { 580 u_int8_t *p = a; 581 paddr_t ptr = h.bh_ptr + o; 582 583 BUS_SPACE_ASSERT(t, h, o, 1); 584 BUS_SPACE_TRACE(t, h, 585 ("bsrr1(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, 586 (long long)o, t->asi, c)); 587 588 asi_set(t->asi); 589 for (; c; p++, c--, ptr += 1) { 590 u_int8_t r = lduba_asi(ptr); 591 BUS_SPACE_TRACE(t, h, (" %2.2x", r)); 592 *p = r; 593 } 594 595 BUS_SPACE_TRACE(t, h, ("\n")); 596 } 597 598 void 599 bus_space_write_region_1(bus_space_tag_t t, bus_space_handle_t h, 600 bus_size_t o, 601 const u_int8_t *a, bus_size_t c) 602 { 603 const u_int8_t *p = a; 604 paddr_t ptr = h.bh_ptr + o; 605 606 BUS_SPACE_ASSERT(t, h, o, 1); 607 BUS_SPACE_TRACE(t, h, 608 ("bswr1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 609 (long long)o, t->asi, c)); 610 611 asi_set(t->asi); 612 for (; c; p++, c--, ptr += 1) { 613 u_int8_t r = *p; 614 BUS_SPACE_TRACE(t, h, (" %2.2x", r)); 615 stba_asi(ptr, r); 616 } 617 618 BUS_SPACE_TRACE(t, h, ("\n")); 619 } 620 621 void 622 bus_space_set_region_1(bus_space_tag_t t, bus_space_handle_t h, 623 bus_size_t o, u_int8_t v, 624 bus_size_t c) 625 { 626 paddr_t ptr = h.bh_ptr + o; 627 628 BUS_SPACE_ASSERT(t, h, o, 1); 629 BUS_SPACE_TRACE(t, h, 630 ("bssr1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr, 631 (long long)o, t->asi, c, v)); 632 633 asi_set(t->asi); 634 for (; c; c--, ptr += 1) 635 stba_asi(ptr, v); 636 } 637 638 void 639 bus_space_copy_region_1(bus_space_tag_t t, bus_space_handle_t h1, 640 bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, 641 bus_size_t c) 642 { 643 paddr_t ptr1 = h1.bh_ptr + o1; 644 paddr_t ptr2 = h2.bh_ptr + o2; 645 646 BUS_SPACE_ASSERT(t, h1, o2, 1); 647 BUS_SPACE_ASSERT(t, h2, o2, 1); 648 BUS_SPACE_TRACE(t, h1, 649 ("bscr1(%llx + %llx, %llx + %llx, %x, %x) <-> \n", 650 (long long)h1.bh_ptr, (long long)o1, 651 (long long)h2.bh_ptr, (long long)o2, 652 t->asi, c)); 653 654 asi_set(t->asi); 655 for (; c; c--, ptr1 += 1, ptr2 += 1) { 656 u_int8_t r = lduba_asi(ptr2); 657 BUS_SPACE_TRACE(t, h1, (" %2.2x", r)); 658 stba_asi(ptr1, r); 659 } 660 BUS_SPACE_TRACE(t, h1, ("\n")); 661 } 662 663 664 /* 665 * Implementing u_int16_t 666 */ 667 668 669 void 670 bus_space_read_raw_multi_2(bus_space_tag_t t, bus_space_handle_t h, 671 bus_size_t o, 672 void *a, size_t c) 673 { 674 u_int16_t *p = a; 675 676 BUS_SPACE_ASSERT(t, h, o, 2); 677 BUS_SPACE_TRACE(t, h, 678 ("bsrm2(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, 679 (long long)o, t->sasi, c)); 680 c /= sizeof(u_int16_t); 681 682 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 683 asi_set(t->sasi); 684 while (--c > 0) { 685 u_int16_t r = lduha_asi(h.bh_ptr + o); 686 BUS_SPACE_TRACE(t, h, (" %4.4x", r)); 687 *p++ = r; 688 } 689 690 BUS_SPACE_TRACE(t, h, ("\n")); 691 } 692 693 void 694 bus_space_write_raw_multi_2(bus_space_tag_t t, bus_space_handle_t h, 695 bus_size_t o, 696 const void *a, size_t c) 697 { 698 const u_int16_t *p = a; 699 700 BUS_SPACE_ASSERT(t, h, o, 2); 701 BUS_SPACE_TRACE(t, h, 702 ("bswm2(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 703 (long long)o, t->sasi, c)); 704 c /= sizeof(u_int16_t); 705 706 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 707 asi_set(t->sasi); 708 while (--c > 0) { 709 u_int16_t r = *p++; 710 BUS_SPACE_TRACE(t, h, (" %4.4x", r)); 711 stha_asi(h.bh_ptr + o, r); 712 } 713 714 BUS_SPACE_TRACE(t, h, ("\n")); 715 } 716 717 void 718 bus_space_set_raw_multi_2(bus_space_tag_t t, bus_space_handle_t h, 719 bus_size_t o, u_int16_t v, 720 size_t c) 721 { 722 BUS_SPACE_ASSERT(t, h, o, 2); 723 BUS_SPACE_TRACE(t, h, 724 ("bssm2(%llx + %llx, %x, %x) <- %4.4x\n", (long long)h.bh_ptr, 725 (long long)o, t->sasi, c, v)); 726 c /= sizeof(u_int16_t); 727 728 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 729 asi_set(t->sasi); 730 while (--c > 0) 731 stha_asi(h.bh_ptr + o, v); 732 } 733 734 void 735 bus_space_read_raw_region_2(bus_space_tag_t t, bus_space_handle_t h, 736 bus_size_t o, 737 void *a, size_t c) 738 { 739 u_int16_t *p = a; 740 paddr_t ptr = h.bh_ptr + o; 741 742 BUS_SPACE_ASSERT(t, h, o, 2); 743 BUS_SPACE_TRACE(t, h, 744 ("bsrr2(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, 745 (long long)o, t->sasi, c)); 746 c /= sizeof(u_int16_t); 747 748 asi_set(t->sasi); 749 for (; c; p++, c--, ptr += 2) { 750 u_int16_t r = lduha_asi(ptr); 751 BUS_SPACE_TRACE(t, h, (" %4.4x", r)); 752 *p = r; 753 } 754 755 BUS_SPACE_TRACE(t, h, ("\n")); 756 } 757 758 void 759 bus_space_write_raw_region_2(bus_space_tag_t t, bus_space_handle_t h, 760 bus_size_t o, 761 const void *a, size_t c) 762 { 763 const u_int16_t *p = a; 764 paddr_t ptr = h.bh_ptr + o; 765 766 BUS_SPACE_ASSERT(t, h, o, 2); 767 BUS_SPACE_TRACE(t, h, 768 ("bswr2(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 769 (long long)o, t->sasi, c)); 770 c /= sizeof(u_int16_t); 771 772 asi_set(t->sasi); 773 for (; c; p++, c--, ptr += 2) { 774 u_int16_t r = *p; 775 BUS_SPACE_TRACE(t, h, (" %4.4x", r)); 776 stha_asi(ptr, r); 777 } 778 779 BUS_SPACE_TRACE(t, h, ("\n")); 780 } 781 782 void 783 bus_space_set_raw_region_2(bus_space_tag_t t, bus_space_handle_t h, 784 bus_size_t o, u_int16_t v, 785 size_t c) 786 { 787 paddr_t ptr = h.bh_ptr + o; 788 789 BUS_SPACE_ASSERT(t, h, o, 2); 790 BUS_SPACE_TRACE(t, h, 791 ("bssr2(%llx + %llx, %x, %x) <- %4.4x\n", (long long)h.bh_ptr, 792 (long long)o, t->sasi, c, v)); 793 c /= sizeof(u_int16_t); 794 795 asi_set(t->sasi); 796 for (; c; c--, ptr += 2) 797 stha_asi(ptr, v); 798 } 799 800 void 801 bus_space_copy_raw_region_2(bus_space_tag_t t, bus_space_handle_t h1, 802 bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, 803 size_t c) 804 { 805 paddr_t ptr1 = h1.bh_ptr + o1; 806 paddr_t ptr2 = h2.bh_ptr + o2; 807 808 BUS_SPACE_ASSERT(t, h1, o2, 2); 809 BUS_SPACE_ASSERT(t, h2, o2, 2); 810 BUS_SPACE_TRACE(t, h1, 811 ("bscr2(%llx + %llx, %llx + %llx, %x, %x) <-> \n", 812 (long long)h1.bh_ptr, (long long)o1, 813 (long long)h2.bh_ptr, (long long)o2, 814 t->sasi, c)); 815 c /= sizeof(u_int16_t); 816 817 asi_set(t->sasi); 818 for (; c; c--, ptr1 += 2, ptr2 += 2) { 819 u_int16_t r = lduha_asi(ptr2); 820 BUS_SPACE_TRACE(t, h1, (" %4.4x", r)); 821 stha_asi(ptr1, r); 822 } 823 BUS_SPACE_TRACE(t, h1, ("\n")); 824 } 825 826 827 /* 828 * Implementing u_int32_t 829 */ 830 831 832 void 833 bus_space_read_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h, 834 bus_size_t o, 835 void *a, size_t c) 836 { 837 u_int32_t *p = a; 838 839 BUS_SPACE_ASSERT(t, h, o, 4); 840 BUS_SPACE_TRACE(t, h, 841 ("bsrm4(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, 842 (long long)o, t->sasi, c)); 843 c /= sizeof(u_int32_t); 844 845 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 846 asi_set(t->sasi); 847 while (--c > 0) { 848 u_int32_t r = lduwa_asi(h.bh_ptr + o); 849 BUS_SPACE_TRACE(t, h, (" %8.8x", r)); 850 *p++ = r; 851 } 852 853 BUS_SPACE_TRACE(t, h, ("\n")); 854 } 855 856 void 857 bus_space_write_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h, 858 bus_size_t o, 859 const void *a, size_t c) 860 { 861 const u_int32_t *p = a; 862 863 BUS_SPACE_ASSERT(t, h, o, 4); 864 BUS_SPACE_TRACE(t, h, 865 ("bswm4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 866 (long long)o, t->sasi, c)); 867 c /= sizeof(u_int32_t); 868 869 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 870 asi_set(t->sasi); 871 while (--c > 0) { 872 u_int32_t r = *p++; 873 BUS_SPACE_TRACE(t, h, (" %8.8x", r)); 874 stwa_asi(h.bh_ptr + o, r); 875 } 876 877 BUS_SPACE_TRACE(t, h, ("\n")); 878 } 879 880 void 881 bus_space_set_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h, 882 bus_size_t o, u_int32_t v, 883 size_t c) 884 { 885 BUS_SPACE_ASSERT(t, h, o, 4); 886 BUS_SPACE_TRACE(t, h, 887 ("bssm4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr, 888 (long long)o, t->sasi, c, v)); 889 c /= sizeof(u_int32_t); 890 891 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 892 asi_set(t->sasi); 893 while (--c > 0) 894 stwa_asi(h.bh_ptr + o, v); 895 } 896 897 void 898 bus_space_read_raw_region_4(bus_space_tag_t t, bus_space_handle_t h, 899 bus_size_t o, 900 void *a, size_t c) 901 { 902 u_int32_t *p = a; 903 paddr_t ptr = h.bh_ptr + o; 904 905 BUS_SPACE_ASSERT(t, h, o, 4); 906 BUS_SPACE_TRACE(t, h, 907 ("bsrr4(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, 908 (long long)o, t->sasi, c)); 909 c /= sizeof(u_int32_t); 910 911 asi_set(t->sasi); 912 for (; c; p++, c--, ptr += 4) { 913 u_int32_t r = lduwa_asi(ptr); 914 BUS_SPACE_TRACE(t, h, (" %8.8x", r)); 915 *p = r; 916 } 917 918 BUS_SPACE_TRACE(t, h, ("\n")); 919 } 920 921 void 922 bus_space_write_raw_region_4(bus_space_tag_t t, bus_space_handle_t h, 923 bus_size_t o, 924 const void *a, size_t c) 925 { 926 const u_int32_t *p = a; 927 paddr_t ptr = h.bh_ptr + o; 928 929 BUS_SPACE_ASSERT(t, h, o, 4); 930 BUS_SPACE_TRACE(t, h, 931 ("bswr4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 932 (long long)o, t->sasi, c)); 933 c /= sizeof(u_int32_t); 934 935 asi_set(t->sasi); 936 for (; c; p++, c--, ptr += 4) { 937 u_int32_t r = *p; 938 BUS_SPACE_TRACE(t, h, (" %8.8x", r)); 939 stwa_asi(ptr, r); 940 } 941 942 BUS_SPACE_TRACE(t, h, ("\n")); 943 } 944 945 void 946 bus_space_set_raw_region_4(bus_space_tag_t t, bus_space_handle_t h, 947 bus_size_t o, u_int32_t v, 948 size_t c) 949 { 950 paddr_t ptr = h.bh_ptr + o; 951 952 BUS_SPACE_ASSERT(t, h, o, 4); 953 BUS_SPACE_TRACE(t, h, 954 ("bssr4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr, 955 (long long)o, t->sasi, c, v)); 956 c /= sizeof(u_int32_t); 957 958 asi_set(t->sasi); 959 for (; c; c--, ptr += 4) 960 stwa_asi(ptr, v); 961 } 962 963 void 964 bus_space_copy_raw_region_4(bus_space_tag_t t, bus_space_handle_t h1, 965 bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, 966 size_t c) 967 { 968 paddr_t ptr1 = h1.bh_ptr + o1; 969 paddr_t ptr2 = h2.bh_ptr + o2; 970 971 BUS_SPACE_ASSERT(t, h1, o2, 4); 972 BUS_SPACE_ASSERT(t, h2, o2, 4); 973 BUS_SPACE_TRACE(t, h1, 974 ("bscr4(%llx + %llx, %llx + %llx, %x, %x) <-> \n", 975 (long long)h1.bh_ptr, (long long)o1, 976 (long long)h2.bh_ptr, (long long)o2, 977 t->sasi, c)); 978 c /= sizeof(u_int32_t); 979 980 asi_set(t->sasi); 981 for (; c; c--, ptr1 += 4, ptr2 += 4) { 982 u_int32_t r = lduwa_asi(ptr2); 983 BUS_SPACE_TRACE(t, h1, (" %8.8x", r)); 984 stwa_asi(ptr1, r); 985 } 986 BUS_SPACE_TRACE(t, h1, ("\n")); 987 } 988 989 990 /* 991 * Implementing u_int64_t 992 */ 993 994 995 void 996 bus_space_read_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h, 997 bus_size_t o, 998 void *a, size_t c) 999 { 1000 u_int64_t *p = a; 1001 1002 BUS_SPACE_ASSERT(t, h, o, 8); 1003 BUS_SPACE_TRACE(t, h, 1004 ("bsrm8(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, 1005 (long long)o, t->sasi, c)); 1006 c /= sizeof(u_int64_t); 1007 1008 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 1009 asi_set(t->sasi); 1010 while (--c > 0) { 1011 u_int64_t r = ldxa_asi(h.bh_ptr + o); 1012 BUS_SPACE_TRACE(t, h, (" %16.16llx", r)); 1013 *p++ = r; 1014 } 1015 1016 BUS_SPACE_TRACE(t, h, ("\n")); 1017 } 1018 1019 void 1020 bus_space_write_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h, 1021 bus_size_t o, 1022 const void *a, size_t c) 1023 { 1024 const u_int64_t *p = a; 1025 1026 BUS_SPACE_ASSERT(t, h, o, 8); 1027 BUS_SPACE_TRACE(t, h, 1028 ("bswm8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 1029 (long long)o, t->sasi, c)); 1030 c /= sizeof(u_int64_t); 1031 1032 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 1033 asi_set(t->sasi); 1034 while (--c > 0) { 1035 u_int64_t r = *p++; 1036 BUS_SPACE_TRACE(t, h, (" %16.16llx", r)); 1037 stxa_asi(h.bh_ptr + o, r); 1038 } 1039 1040 BUS_SPACE_TRACE(t, h, ("\n")); 1041 } 1042 1043 void 1044 bus_space_set_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h, 1045 bus_size_t o, u_int64_t v, 1046 size_t c) 1047 { 1048 BUS_SPACE_ASSERT(t, h, o, 8); 1049 BUS_SPACE_TRACE(t, h, 1050 ("bssm8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr, 1051 (long long)o, t->sasi, c, v)); 1052 c /= sizeof(u_int64_t); 1053 1054 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 1055 asi_set(t->sasi); 1056 while (--c > 0) 1057 stxa_asi(h.bh_ptr + o, v); 1058 } 1059 1060 void 1061 bus_space_read_raw_region_8(bus_space_tag_t t, bus_space_handle_t h, 1062 bus_size_t o, 1063 void *a, size_t c) 1064 { 1065 u_int64_t *p = a; 1066 paddr_t ptr = h.bh_ptr + o; 1067 1068 BUS_SPACE_ASSERT(t, h, o, 8); 1069 BUS_SPACE_TRACE(t, h, 1070 ("bsrr8(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, 1071 (long long)o, t->sasi, c)); 1072 c /= sizeof(u_int64_t); 1073 1074 asi_set(t->sasi); 1075 for (; c; p++, c--, ptr += 8) { 1076 u_int64_t r = ldxa_asi(ptr); 1077 BUS_SPACE_TRACE(t, h, (" %16.16llx", r)); 1078 *p = r; 1079 } 1080 1081 BUS_SPACE_TRACE(t, h, ("\n")); 1082 } 1083 1084 void 1085 bus_space_write_raw_region_8(bus_space_tag_t t, bus_space_handle_t h, 1086 bus_size_t o, 1087 const void *a, size_t c) 1088 { 1089 const u_int64_t *p = a; 1090 paddr_t ptr = h.bh_ptr + o; 1091 1092 BUS_SPACE_ASSERT(t, h, o, 8); 1093 BUS_SPACE_TRACE(t, h, 1094 ("bswr8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 1095 (long long)o, t->sasi, c)); 1096 c /= sizeof(u_int64_t); 1097 1098 asi_set(t->sasi); 1099 for (; c; p++, c--, ptr += 8) { 1100 u_int64_t r = *p; 1101 BUS_SPACE_TRACE(t, h, (" %16.16llx", r)); 1102 stxa_asi(ptr, r); 1103 } 1104 1105 BUS_SPACE_TRACE(t, h, ("\n")); 1106 } 1107 1108 void 1109 bus_space_set_raw_region_8(bus_space_tag_t t, bus_space_handle_t h, 1110 bus_size_t o, u_int64_t v, 1111 size_t c) 1112 { 1113 paddr_t ptr = h.bh_ptr + o; 1114 1115 BUS_SPACE_ASSERT(t, h, o, 8); 1116 BUS_SPACE_TRACE(t, h, 1117 ("bssr8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr, 1118 (long long)o, t->sasi, c, v)); 1119 c /= sizeof(u_int64_t); 1120 1121 asi_set(t->sasi); 1122 for (; c; c--, ptr += 8) 1123 stxa_asi(ptr, v); 1124 } 1125 1126 void 1127 bus_space_copy_raw_region_8(bus_space_tag_t t, bus_space_handle_t h1, 1128 bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, 1129 size_t c) 1130 { 1131 paddr_t ptr1 = h1.bh_ptr + o1; 1132 paddr_t ptr2 = h2.bh_ptr + o2; 1133 1134 BUS_SPACE_ASSERT(t, h1, o2, 8); 1135 BUS_SPACE_ASSERT(t, h2, o2, 8); 1136 BUS_SPACE_TRACE(t, h1, 1137 ("bscr8(%llx + %llx, %llx + %llx, %x, %x) <-> \n", 1138 (long long)h1.bh_ptr, (long long)o1, 1139 (long long)h2.bh_ptr, (long long)o2, 1140 t->sasi, c)); 1141 c /= sizeof(u_int64_t); 1142 1143 asi_set(t->sasi); 1144 for (; c; c--, ptr1 += 8, ptr2 += 8) { 1145 u_int64_t r = ldxa_asi(ptr2); 1146 BUS_SPACE_TRACE(t, h1, (" %16.16llx", r)); 1147 stxa_asi(ptr1, r); 1148 } 1149 BUS_SPACE_TRACE(t, h1, ("\n")); 1150 } 1151 1152 1153 /* 1154 * Implementing u_int8_t 1155 */ 1156 1157 1158 void 1159 bus_space_read_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h, 1160 bus_size_t o, 1161 void *a, size_t c) 1162 { 1163 u_int8_t *p = a; 1164 1165 BUS_SPACE_ASSERT(t, h, o, 1); 1166 BUS_SPACE_TRACE(t, h, 1167 ("bsrm1(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, 1168 (long long)o, t->sasi, c)); 1169 c /= sizeof(u_int8_t); 1170 1171 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 1172 asi_set(t->sasi); 1173 while (--c > 0) { 1174 u_int8_t r = lduba_asi(h.bh_ptr + o); 1175 BUS_SPACE_TRACE(t, h, (" %2.2x", r)); 1176 *p++ = r; 1177 } 1178 1179 BUS_SPACE_TRACE(t, h, ("\n")); 1180 } 1181 1182 void 1183 bus_space_write_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h, 1184 bus_size_t o, 1185 const void *a, size_t c) 1186 { 1187 const u_int8_t *p = a; 1188 1189 BUS_SPACE_ASSERT(t, h, o, 1); 1190 BUS_SPACE_TRACE(t, h, 1191 ("bswm1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 1192 (long long)o, t->sasi, c)); 1193 c /= sizeof(u_int8_t); 1194 1195 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 1196 asi_set(t->sasi); 1197 while (--c > 0) { 1198 u_int8_t r = *p++; 1199 BUS_SPACE_TRACE(t, h, (" %2.2x", r)); 1200 stba_asi(h.bh_ptr + o, r); 1201 } 1202 1203 BUS_SPACE_TRACE(t, h, ("\n")); 1204 } 1205 1206 void 1207 bus_space_set_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h, 1208 bus_size_t o, u_int8_t v, 1209 size_t c) 1210 { 1211 BUS_SPACE_ASSERT(t, h, o, 1); 1212 BUS_SPACE_TRACE(t, h, 1213 ("bssm1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr, 1214 (long long)o, t->sasi, c, v)); 1215 c /= sizeof(u_int8_t); 1216 1217 ++c; /* Looping on "--c" is slightly faster than on "c--" */ 1218 asi_set(t->sasi); 1219 while (--c > 0) 1220 stba_asi(h.bh_ptr + o, v); 1221 } 1222 1223 void 1224 bus_space_read_raw_region_1(bus_space_tag_t t, bus_space_handle_t h, 1225 bus_size_t o, 1226 void *a, size_t c) 1227 { 1228 u_int8_t *p = a; 1229 paddr_t ptr = h.bh_ptr + o; 1230 1231 BUS_SPACE_ASSERT(t, h, o, 1); 1232 BUS_SPACE_TRACE(t, h, 1233 ("bsrr1(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, 1234 (long long)o, t->sasi, c)); 1235 c /= sizeof(u_int8_t); 1236 1237 asi_set(t->sasi); 1238 for (; c; p++, c--, ptr += 1) { 1239 u_int8_t r = lduba_asi(ptr); 1240 BUS_SPACE_TRACE(t, h, (" %2.2x", r)); 1241 *p = r; 1242 } 1243 1244 BUS_SPACE_TRACE(t, h, ("\n")); 1245 } 1246 1247 void 1248 bus_space_write_raw_region_1(bus_space_tag_t t, bus_space_handle_t h, 1249 bus_size_t o, 1250 const void *a, size_t c) 1251 { 1252 const u_int8_t *p = a; 1253 paddr_t ptr = h.bh_ptr + o; 1254 1255 BUS_SPACE_ASSERT(t, h, o, 1); 1256 BUS_SPACE_TRACE(t, h, 1257 ("bswr1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, 1258 (long long)o, t->sasi, c)); 1259 c /= sizeof(u_int8_t); 1260 1261 asi_set(t->sasi); 1262 for (; c; p++, c--, ptr += 1) { 1263 u_int8_t r = *p; 1264 BUS_SPACE_TRACE(t, h, (" %2.2x", r)); 1265 stba_asi(ptr, r); 1266 } 1267 1268 BUS_SPACE_TRACE(t, h, ("\n")); 1269 } 1270 1271 void 1272 bus_space_set_raw_region_1(bus_space_tag_t t, bus_space_handle_t h, 1273 bus_size_t o, u_int8_t v, 1274 size_t c) 1275 { 1276 paddr_t ptr = h.bh_ptr + o; 1277 1278 BUS_SPACE_ASSERT(t, h, o, 1); 1279 BUS_SPACE_TRACE(t, h, 1280 ("bssr1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr, 1281 (long long)o, t->sasi, c, v)); 1282 c /= sizeof(u_int8_t); 1283 1284 asi_set(t->sasi); 1285 for (; c; c--, ptr += 1) 1286 stba_asi(ptr, v); 1287 } 1288 1289 void 1290 bus_space_copy_raw_region_1(bus_space_tag_t t, bus_space_handle_t h1, 1291 bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, 1292 size_t c) 1293 { 1294 paddr_t ptr1 = h1.bh_ptr + o1; 1295 paddr_t ptr2 = h2.bh_ptr + o2; 1296 1297 BUS_SPACE_ASSERT(t, h1, o2, 1); 1298 BUS_SPACE_ASSERT(t, h2, o2, 1); 1299 BUS_SPACE_TRACE(t, h1, 1300 ("bscr1(%llx + %llx, %llx + %llx, %x, %x) <-> \n", 1301 (long long)h1.bh_ptr, (long long)o1, 1302 (long long)h2.bh_ptr, (long long)o2, 1303 t->sasi, c)); 1304 c /= sizeof(u_int8_t); 1305 1306 asi_set(t->sasi); 1307 for (; c; c--, ptr1 += 1, ptr2 += 1) { 1308 u_int8_t r = lduba_asi(ptr2); 1309 BUS_SPACE_TRACE(t, h1, (" %2.2x", r)); 1310 stba_asi(ptr1, r); 1311 } 1312 BUS_SPACE_TRACE(t, h1, ("\n")); 1313 } 1314 1315 1316