1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #include <sys/cpu_module.h> 28 #include <vm/page.h> 29 #include <vm/seg_map.h> 30 31 /*ARGSUSED*/ 32 void 33 cpu_fiximp(struct cpu_node *cpunode) 34 {} 35 36 /*ARGSUSED*/ 37 void 38 cpu_map_exec_units(struct cpu *cp) 39 {} 40 41 void 42 cpu_flush_ecache(void) 43 {} 44 45 /*ARGSUSED*/ 46 void 47 cpu_faulted_enter(struct cpu *cp) 48 {} 49 50 /*ARGSUSED*/ 51 void 52 cpu_faulted_exit(struct cpu *cp) 53 {} 54 55 /* 56 * Ecache scrub operations 57 */ 58 void 59 cpu_init_cache_scrub(void) 60 {} 61 62 /* ARGSUSED */ 63 void 64 prefetch_page_w(void *pp) 65 { 66 #define ECACHE_SUBBLOCKS_PER_PAGE 2 67 #define ECACHE_SUBBLOCK_SIZE_BYTES 64 68 #define ECACHE_PAGE_BYTE_MAX \ 69 (ECACHE_SUBBLOCKS_PER_PAGE*ECACHE_SUBBLOCK_SIZE_BYTES+1) 70 71 /* 72 * The following line is intended to cause an error 73 * whenever the sun4u page_t grows beyond 128 74 * bytes. 75 * 76 * If you get an error here, you'll need to change 77 * the 'prefetch_page_w' assembly language code 78 * (see also prefetch_page_w prologue comment) 79 */ 80 /*LINTED*/ 81 volatile int garbage[ECACHE_PAGE_BYTE_MAX - sizeof (page_t)]; 82 } 83 84 /* ARGSUSED */ 85 void 86 prefetch_page_r(void *pp) 87 { 88 #define ECACHE_SUBBLOCKS_PER_PAGE 2 89 #define ECACHE_SUBBLOCK_SIZE_BYTES 64 90 #define ECACHE_PAGE_BYTE_MAX \ 91 (ECACHE_SUBBLOCKS_PER_PAGE*ECACHE_SUBBLOCK_SIZE_BYTES+1) 92 93 /* 94 * The following line is intended to cause an error 95 * whenever the sun4u page_t grows beyond 128 96 * bytes. 97 * 98 * If you get an error here, you'll need to change 99 * the 'prefetch_page_r' assembly language code 100 * (see also prefetch_page_w prologue comment) 101 */ 102 /*LINTED*/ 103 volatile int garbage[ECACHE_PAGE_BYTE_MAX - sizeof (page_t)]; 104 } 105 106 107 #ifdef SEGKPM_SUPPORT 108 #define SMAP_SIZE 80 109 #else 110 #define SMAP_SIZE 56 111 #endif 112 113 /* ARGSUSED */ 114 void 115 prefetch_smap_w(void *smp) 116 { 117 118 /* 119 * The following lines are intended to cause an error 120 * whenever the smap object size changes from the current 121 * size of 48 bytes. If you get an error here, you'll 122 * need to update the code in the 'prefetch_smap_w' assembly 123 * language code. 124 */ 125 /*LINTED*/ 126 volatile int smap_size_changed [SMAP_SIZE - sizeof (struct smap) + 1]; 127 volatile int smap_size_changed2 [sizeof (struct smap) - SMAP_SIZE + 1]; 128 } 129 130 void 131 kdi_flush_caches(void) 132 {} 133 134 /*ARGSUSED*/ 135 int 136 kzero(void *addr, size_t count) 137 { return (0); } 138 139 /*ARGSUSED*/ 140 void 141 uzero(void *addr, size_t count) 142 {} 143 144 /*ARGSUSED*/ 145 void 146 bzero(void *addr, size_t count) 147 {} 148 149 /*ARGSUSED*/ 150 void 151 cpu_inv_tsb(caddr_t tsb_base, uint_t tsb_bytes) 152 {} 153 154 /* 155 * Atomic Function Stubs 156 */ 157 158 uint8_t 159 cas8(uint8_t *target, uint8_t value1, uint8_t value2) 160 { return (0); } 161 162 /* ARGSUSED */ 163 uint32_t 164 cas32(uint32_t *target, uint32_t value1, uint32_t value2) 165 { return (0); } 166 167 /* ARGSUSED */ 168 uint64_t 169 cas64(uint64_t *target, uint64_t value1, uint64_t value2) 170 { return (0); } 171 172 /* ARGSUSED */ 173 ulong_t 174 caslong(ulong_t *target, ulong_t value1, ulong_t value2) 175 { return (0); } 176 177 /* ARGSUSED */ 178 void * 179 casptr(void *ptr1, void *ptr2, void *ptr3) 180 { return (0); } 181 182 /* ARGSUSED */ 183 void 184 atomic_and_long(ulong_t *target, ulong_t value) 185 {} 186 187 /* ARGSUSED */ 188 void 189 atomic_or_long(ulong_t *target, ulong_t value) 190 {} 191 192 /* ARGSUSED */ 193 void 194 atomic_inc_8(volatile uint8_t *target) 195 {} 196 197 /* ARGSUSED */ 198 void 199 atomic_inc_uchar(volatile uchar_t *target) 200 {} 201 202 /* ARGSUSED */ 203 void 204 atomic_inc_16(volatile uint16_t *target) 205 {} 206 207 /* ARGSUSED */ 208 void 209 atomic_inc_ushort(volatile ushort_t *target) 210 {} 211 212 /* ARGSUSED */ 213 void 214 atomic_inc_32(volatile uint32_t *target) 215 {} 216 217 /* ARGSUSED */ 218 void 219 atomic_inc_uint(volatile uint_t *target) 220 {} 221 222 /* ARGSUSED */ 223 void 224 atomic_inc_ulong(volatile ulong_t *target) 225 {} 226 227 /* ARGSUSED */ 228 void 229 atomic_inc_64(volatile uint64_t *target) 230 {} 231 232 /* ARGSUSED */ 233 void 234 atomic_dec_8(volatile uint8_t *target) 235 {} 236 237 /* ARGSUSED */ 238 void 239 atomic_dec_uchar(volatile uchar_t *target) 240 {} 241 242 /* ARGSUSED */ 243 void 244 atomic_dec_16(volatile uint16_t *target) 245 {} 246 247 /* ARGSUSED */ 248 void 249 atomic_dec_ushort(volatile ushort_t *target) 250 {} 251 252 /* ARGSUSED */ 253 void 254 atomic_dec_32(volatile uint32_t *target) 255 {} 256 257 /* ARGSUSED */ 258 void 259 atomic_dec_uint(volatile uint_t *target) 260 {} 261 262 /* ARGSUSED */ 263 void 264 atomic_dec_ulong(volatile ulong_t *target) 265 {} 266 267 /* ARGSUSED */ 268 void 269 atomic_dec_64(volatile uint64_t *target) 270 {} 271 272 /* ARGSUSED */ 273 void 274 atomic_add_8(volatile uint8_t *target, int8_t value) 275 {} 276 277 /* ARGSUSED */ 278 void 279 atomic_add_char(volatile uchar_t *target, signed char value) 280 {} 281 282 /* ARGSUSED */ 283 void 284 atomic_add_16(volatile uint16_t *target, int16_t delta) 285 {} 286 287 /* ARGSUSED */ 288 void 289 atomic_add_ushort(volatile ushort_t *target, short value) 290 {} 291 292 /* ARGSUSED */ 293 void 294 atomic_add_32(volatile uint32_t *target, int32_t delta) 295 {} 296 297 /* ARGSUSED */ 298 void 299 atomic_add_ptr(volatile void *target, ssize_t value) 300 {} 301 302 /* ARGSUSED */ 303 void 304 atomic_add_long(volatile ulong_t *target, long delta) 305 {} 306 307 /* ARGSUSED */ 308 void 309 atomic_add_64(volatile uint64_t *target, int64_t delta) 310 {} 311 312 /* ARGSUSED */ 313 void 314 atomic_or_8(volatile uint8_t *target, uint8_t bits) 315 {} 316 317 /* ARGSUSED */ 318 void 319 atomic_or_uchar(volatile uchar_t *target, uchar_t bits) 320 {} 321 322 /* ARGSUSED */ 323 void 324 atomic_or_16(volatile uint16_t *target, uint16_t bits) 325 {} 326 327 /* ARGSUSED */ 328 void 329 atomic_or_ushort(volatile ushort_t *target, ushort_t bits) 330 {} 331 332 /* ARGSUSED */ 333 void 334 atomic_or_32(volatile uint32_t *target, uint32_t bits) 335 {} 336 337 /* ARGSUSED */ 338 void 339 atomic_or_uint(volatile uint_t *target, uint_t bits) 340 {} 341 342 /* ARGSUSED */ 343 void 344 atomic_or_ulong(volatile ulong_t *target, ulong_t bits) 345 {} 346 347 /* ARGSUSED */ 348 void 349 atomic_or_64(volatile uint64_t *target, uint64_t bits) 350 {} 351 352 /* ARGSUSED */ 353 void 354 atomic_and_8(volatile uint8_t *target, uint8_t bits) 355 {} 356 357 /* ARGSUSED */ 358 void 359 atomic_and_uchar(volatile uchar_t *target, uchar_t bits) 360 {} 361 362 /* ARGSUSED */ 363 void 364 atomic_and_16(volatile uint16_t *target, uint16_t bits) 365 {} 366 367 /* ARGSUSED */ 368 void 369 atomic_and_ushort(volatile ushort_t *target, ushort_t bits) 370 {} 371 372 /* ARGSUSED */ 373 void 374 atomic_and_32(volatile uint32_t *target, uint32_t bits) 375 {} 376 377 /* ARGSUSED */ 378 void 379 atomic_and_uint(volatile uint_t *target, uint_t bits) 380 {} 381 382 /* ARGSUSED */ 383 void 384 atomic_and_ulong(volatile ulong_t *target, ulong_t bits) 385 {} 386 387 /* ARGSUSED */ 388 void 389 atomic_and_64(volatile uint64_t *target, uint64_t bits) 390 {} 391 392 /* ARGSUSED */ 393 uint8_t 394 atomic_inc_8_nv(volatile uint8_t *target) 395 { return (0); } 396 397 /* ARGSUSED */ 398 uchar_t 399 atomic_inc_uchar_nv(volatile uchar_t *target) 400 { return (0); } 401 402 /* ARGSUSED */ 403 uint16_t 404 atomic_inc_16_nv(volatile uint16_t *target) 405 { return (0); } 406 407 /* ARGSUSED */ 408 ushort_t 409 atomic_inc_ushort_nv(volatile ushort_t *target) 410 { return (0); } 411 412 /* ARGSUSED */ 413 uint32_t 414 atomic_inc_32_nv(volatile uint32_t *target) 415 { return (0); } 416 417 /* ARGSUSED */ 418 uint_t 419 atomic_inc_uint_nv(volatile uint_t *target) 420 { return (0); } 421 422 /* ARGSUSED */ 423 ulong_t 424 atomic_inc_ulong_nv(volatile ulong_t *target) 425 { return (0); } 426 427 /* ARGSUSED */ 428 uint64_t 429 atomic_inc_64_nv(volatile uint64_t *target) 430 { return (0); } 431 432 /* ARGSUSED */ 433 uint8_t 434 atomic_dec_8_nv(volatile uint8_t *target) 435 { return (0); } 436 437 /* ARGSUSED */ 438 uchar_t 439 atomic_dec_uchar_nv(volatile uchar_t *target) 440 { return (0); } 441 442 /* ARGSUSED */ 443 uint16_t 444 atomic_dec_16_nv(volatile uint16_t *target) 445 { return (0); } 446 447 /* ARGSUSED */ 448 ushort_t 449 atomic_dec_ushort_nv(volatile ushort_t *target) 450 { return (0); } 451 452 /* ARGSUSED */ 453 uint32_t 454 atomic_dec_32_nv(volatile uint32_t *target) 455 { return (0); } 456 457 /* ARGSUSED */ 458 uint_t 459 atomic_dec_uint_nv(volatile uint_t *target) 460 { return (0); } 461 462 /* ARGSUSED */ 463 ulong_t 464 atomic_dec_ulong_nv(volatile ulong_t *target) 465 { return (0); } 466 467 /* ARGSUSED */ 468 uint64_t 469 atomic_dec_64_nv(volatile uint64_t *target) 470 { return (0); } 471 472 /* ARGSUSED */ 473 uint8_t 474 atomic_add_8_nv(volatile uint8_t *target, int8_t value) 475 { return (0); } 476 477 /* ARGSUSED */ 478 uchar_t 479 atomic_add_char_nv(volatile uchar_t *target, signed char value) 480 { return (0); } 481 482 /* ARGSUSED */ 483 uint16_t 484 atomic_add_16_nv(volatile uint16_t *target, int16_t delta) 485 { return (0); } 486 487 /* ARGSUSED */ 488 ushort_t 489 atomic_add_short_nv(volatile ushort_t *target, short value) 490 { return (0); } 491 492 /* ARGSUSED */ 493 uint32_t 494 atomic_add_32_nv(volatile uint32_t *target, int32_t delta) 495 { return (0); } 496 497 /* ARGSUSED */ 498 uint_t 499 atomic_add_int_nv(volatile uint_t *target, int delta) 500 { return (0); } 501 502 /* ARGSUSED */ 503 void * 504 atomic_add_ptr_nv(volatile void *target, ssize_t value) 505 { return (NULL); } 506 507 /* ARGSUSED */ 508 ulong_t 509 atomic_add_long_nv(volatile ulong_t *target, long delta) 510 { return (0); } 511 512 /* ARGSUSED */ 513 uint64_t 514 atomic_add_64_nv(volatile uint64_t *target, int64_t delta) 515 { return (0); } 516 517 /* ARGSUSED */ 518 uint8_t 519 atomic_or_8_nv(volatile uint8_t *target, uint8_t value) 520 { return (0); } 521 522 /* ARGSUSED */ 523 uchar_t 524 atomic_or_uchar_nv(volatile uchar_t *target, uchar_t value) 525 { return (0); } 526 527 /* ARGSUSED */ 528 uint16_t 529 atomic_or_16_nv(volatile uint16_t *target, uint16_t value) 530 { return (0); } 531 532 /* ARGSUSED */ 533 ushort_t 534 atomic_or_ushort_nv(volatile ushort_t *target, ushort_t value) 535 { return (0); } 536 537 /* ARGSUSED */ 538 uint32_t 539 atomic_or_32_nv(volatile uint32_t *target, uint32_t value) 540 { return (0); } 541 542 /* ARGSUSED */ 543 uint_t 544 atomic_or_uint_nv(volatile uint_t *target, uint_t value) 545 { return (0); } 546 547 /* ARGSUSED */ 548 ulong_t 549 atomic_or_ulong_nv(volatile ulong_t *target, ulong_t value) 550 { return (0); } 551 552 /* ARGSUSED */ 553 uint64_t 554 atomic_or_64_nv(volatile uint64_t *target, uint64_t value) 555 { return (0); } 556 557 /* ARGSUSED */ 558 uint8_t 559 atomic_and_8_nv(volatile uint8_t *target, uint8_t value) 560 { return (0); } 561 562 /* ARGSUSED */ 563 uchar_t 564 atomic_and_uchar_nv(volatile uchar_t *target, uchar_t value) 565 { return (0); } 566 567 /* ARGSUSED */ 568 uint16_t 569 atomic_and_16_nv(volatile uint16_t *target, uint16_t value) 570 { return (0); } 571 572 /* ARGSUSED */ 573 ushort_t 574 atomic_and_ushort_nv(volatile ushort_t *target, ushort_t value) 575 { return (0); } 576 577 /* ARGSUSED */ 578 uint32_t 579 atomic_and_32_nv(volatile uint32_t *target, uint32_t value) 580 { return (0); } 581 582 /* ARGSUSED */ 583 uint_t 584 atomic_and_uint_nv(volatile uint_t *target, uint_t value) 585 { return (0); } 586 587 /* ARGSUSED */ 588 ulong_t 589 atomic_and_ulong_nv(volatile ulong_t *target, ulong_t value) 590 { return (0); } 591 592 /* ARGSUSED */ 593 uint64_t 594 atomic_and_64_nv(volatile uint64_t *target, uint64_t value) 595 { return (0); } 596 597 /* ARGSUSED */ 598 uint8_t 599 atomic_cas_8(volatile uint8_t *target, uint8_t cmp, uint8_t new) 600 { return (0); } 601 602 /* ARGSUSED */ 603 uchar_t 604 atomic_cas_uchar(volatile uchar_t *target, uchar_t cmp, uchar_t new) 605 { return (0); } 606 607 /* ARGSUSED */ 608 uint16_t 609 atomic_cas_16(volatile uint16_t *target, uint16_t cmp, uint16_t new) 610 { return (0); } 611 612 /* ARGSUSED */ 613 ushort_t 614 atomic_cas_ushort(volatile ushort_t *target, ushort_t cmp, ushort_t new) 615 { return (0); } 616 617 /* ARGSUSED */ 618 uint32_t 619 atomic_cas_32(volatile uint32_t *target, uint32_t cmp, uint32_t new) 620 { return (0); } 621 622 /* ARGSUSED */ 623 uint_t 624 atomic_cas_uint(volatile uint_t *target, uint_t cmp, uint_t new) 625 { return (0); } 626 627 /* ARGSUSED */ 628 ulong_t 629 atomic_cas_ulong(volatile ulong_t *target, ulong_t cmp, ulong_t new) 630 { return (0); } 631 632 /* ARGSUSED */ 633 uint64_t 634 atomic_cas_uint64(volatile uint64_t *target, ulong_t cmp, uint64_t new) 635 { return (0); } 636 637 /* ARGSUSED */ 638 void * 639 atomic_cas_ptr(volatile void *target, void *cmp, void *new) 640 { return (NULL); } 641 642 /* ARGSUSED */ 643 uint8_t 644 atomic_swap_8(volatile uint8_t *target, uint8_t new) 645 { return (0); } 646 647 /* ARGSUSED */ 648 uchar_t 649 atomic_swap_char(volatile uchar_t *target, uchar_t new) 650 { return (0); } 651 652 /* ARGSUSED */ 653 uint16_t 654 atomic_swap_16(volatile uint16_t *target, uint16_t new) 655 { return (0); } 656 657 /* ARGSUSED */ 658 ushort_t 659 atomic_swap_ushort(volatile ushort_t *target, ushort_t new) 660 { return (0); } 661 662 /* ARGSUSED */ 663 uint32_t 664 atomic_swap_32(volatile uint32_t *target, uint32_t new) 665 { return (0); } 666 667 /* ARGSUSED */ 668 uint_t 669 atomic_swap_uint(volatile uint_t *target, uint_t new) 670 { return (0); } 671 672 /* ARGSUSED */ 673 uint64_t 674 atomic_swap_64(volatile uint64_t *target, uint64_t new) 675 { return (0); } 676 677 /* ARGSUSED */ 678 void * 679 atomic_swap_ptr(volatile void *target, void *new) 680 { return (NULL); } 681 682 /* ARGSUSED */ 683 ulong_t 684 atomic_swap_ulong(volatile ulong_t *target, ulong_t new) 685 { return (0); } 686 687 /* ARGSUSED */ 688 int 689 atomic_set_long_excl(volatile ulong_t *target, uint_t value) 690 { return (0); } 691 692 /* ARGSUSED */ 693 int 694 atomic_clear_long_excl(volatile ulong_t *target, uint_t value) 695 { return (0); } 696 697 void 698 fp_zero(void) 699 {} 700 701 uint64_t 702 gettick_npt(void) 703 { return (0); } 704 705 uint64_t 706 getstick_npt(void) 707 { return (0); } 708