Rev 1852 | Rev 1856 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1852 | Rev 1855 | ||
|---|---|---|---|
| Line 410... | Line 410... | ||
| 410 | bz 0f ! CWP is ok |
410 | bz 0f ! CWP is ok |
| 411 | nop |
411 | nop |
| 412 | 412 | ||
| 413 | /* |
413 | /* |
| 414 | * Fix CWP. |
414 | * Fix CWP. |
| - | 415 | * Just for reminder, the input registers in the current window |
|
| - | 416 | * are the output registers of the window to which we want to |
|
| - | 417 | * restore. Because the fill trap fills only input and local |
|
| - | 418 | * registers of a window, we need to preserve those output |
|
| - | 419 | * registers manually. |
|
| 415 | */ |
420 | */ |
| 416 | mov %fp, %g1 |
- | |
| 417 | flushw |
421 | flushw |
| - | 422 | mov %sp, %g1 |
|
| - | 423 | stx %i0, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I0] |
|
| - | 424 | stx %i1, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I1] |
|
| - | 425 | stx %i2, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I2] |
|
| - | 426 | stx %i3, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I3] |
|
| - | 427 | stx %i4, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I4] |
|
| - | 428 | stx %i5, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I5] |
|
| - | 429 | stx %i6, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I6] |
|
| - | 430 | stx %i7, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I7] |
|
| 418 | wrpr %l0, 0, %cwp |
431 | wrpr %l0, 0, %cwp |
| 419 | mov %g1, %fp |
432 | mov %g1, %sp |
| - | 433 | ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I0], %i0 |
|
| - | 434 | ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I1], %i1 |
|
| - | 435 | ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I2], %i2 |
|
| - | 436 | ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I3], %i3 |
|
| - | 437 | ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I4], %i4 |
|
| - | 438 | ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I5], %i5 |
|
| - | 439 | ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I6], %i6 |
|
| - | 440 | ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I7], %i7 |
|
| 420 | 441 | ||
| 421 | /* |
442 | /* |
| 422 | * OTHERWIN != 0 or fall-through from the OTHERWIN == 0 case. |
443 | * OTHERWIN != 0 or fall-through from the OTHERWIN == 0 case. |
| 423 | */ |
444 | */ |
| 424 | 0: |
445 | 0: |
| 425 | ! TODO: restore register windows from register window memory buffer |
446 | ! TODO: restore register windows from register window memory buffer |