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 |