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); }