File tree 1 file changed +26
-23
lines changed
runtime/druntime/src/core
1 file changed +26
-23
lines changed Original file line number Diff line number Diff line change @@ -744,58 +744,61 @@ fiber_switchContext:
744
744
.cfi_offset 14 , - 48
745
745
.cfi_offset 15 , - 40
746
746
lgr %r1 , % r15
747
- aghi % r15 , - 64
747
+ aghi % r15 , - 224
748
748
/ * we need to tell the debugger th at the current stack offset is:
749
- 64 (frame size) + 160 (parameter area size) * /
750
- .cfi_def_cfa_offset 224
749
+ 64 (frame size , for storing f8 ~ f15 ) + 160 (temp parameter area size) + 160 (last parameter area size) * /
750
+ .cfi_def_cfa_offset 384
751
751
/ * store the (optional) backchain data * /
752
- stg %r1 , 0 (% r15 )
752
+ stg %r1 , 64 (% r15 )
753
753
/ * Save callee - saved floating point registers
754
754
s390x ABI has a very unique way for storing fp registers:
755
755
even - pairs first and odd - pairs last * /
756
756
std %f8 , 0 (% r15 )
757
- .cfi_offset 24 , - 224
757
+ .cfi_offset 24 , - 384
758
758
std %f10 , 8 (% r15 )
759
- .cfi_offset 25 , - 216
759
+ .cfi_offset 25 , - 376
760
760
std %f12 , 16 (% r15 )
761
- .cfi_offset 26 , - 208
761
+ .cfi_offset 26 , - 368
762
762
std %f14 , 24 (% r15 )
763
- .cfi_offset 27 , - 200
763
+ .cfi_offset 27 , - 360
764
764
std %f9 , 32 (% r15 )
765
- .cfi_offset 28 , - 192
765
+ .cfi_offset 28 , - 352
766
766
std %f11 , 40 (% r15 )
767
- .cfi_offset 29 , - 184
767
+ .cfi_offset 29 , - 344
768
768
std %f13 , 48 (% r15 )
769
- .cfi_offset 30 , - 176
769
+ .cfi_offset 30 , - 336
770
770
std %f15 , 56 (% r15 )
771
- .cfi_offset 31 , - 168
771
+ .cfi_offset 31 , - 328
772
772
773
773
/ * Save stack pointer , the stack pointer is adjusted so th at
774
774
GC won't see the float point registers * /
775
- stg % r15 , 0 (%r2)
775
+ la %r1 , 64 (% r15 )
776
+ stg %r1 , 0 (%r2)
776
777
777
778
/ * Load the new context pointer as stack pointer. * /
778
779
lgr % r15 , %r3
779
- .cfi_def_cfa_offset 224
780
+ .cfi_def_cfa_offset 320
781
+ aghi % r15 , - 64
782
+ .cfi_def_cfa_offset 384
780
783
781
784
/ * Restore call - saved floating point registers. * /
782
785
ld %f8 , 0 (% r15 )
783
- .cfi_offset 24 , - 224
786
+ .cfi_offset 24 , - 384
784
787
ld %f10 , 8 (% r15 )
785
- .cfi_offset 25 , - 216
788
+ .cfi_offset 25 , - 376
786
789
ld %f12 , 16 (% r15 )
787
- .cfi_offset 26 , - 208
790
+ .cfi_offset 26 , - 368
788
791
ld %f14 , 24 (% r15 )
789
- .cfi_offset 27 , - 200
792
+ .cfi_offset 27 , - 360
790
793
ld %f9 , 32 (% r15 )
791
- .cfi_offset 28 , - 192
794
+ .cfi_offset 28 , - 352
792
795
ld %f11 , 40 (% r15 )
793
- .cfi_offset 29 , - 184
796
+ .cfi_offset 29 , - 344
794
797
ld %f13 , 48 (% r15 )
795
- .cfi_offset 30 , - 176
798
+ .cfi_offset 30 , - 336
796
799
ld %f15 , 56 (% r15 )
797
- .cfi_offset 31 , - 168
798
- lmg %r6 , % r14 , 112 (% r15 )
800
+ .cfi_offset 31 , - 328
801
+ lmg %r6 , % r14 , 272 (% r15 )
799
802
.cfi_offset 6 , - 112
800
803
.cfi_offset 7 , - 104
801
804
.cfi_offset 8 , - 96
You can’t perform that action at this time.
0 commit comments