File tree 2 files changed +13
-2
lines changed 2 files changed +13
-2
lines changed Original file line number Diff line number Diff line change 2
2
3
3
runtime/sys_linux_ppc64x.s: [GOARCH] _sigtramp: function _sigtramp missing Go declaration
4
4
runtime/sys_linux_ppc64x.s: [GOARCH] _cgoSigtramp: function _cgoSigtramp missing Go declaration
5
- runtime/asm_ppc64x.s: [GOARCH] procyield: use of 24(R1) points beyond argument frame
Original file line number Diff line number Diff line change @@ -457,7 +457,19 @@ CALLFN(·call268435456, 268435456)
457
457
CALLFN(·call536870912 , 536870912 )
458
458
CALLFN(·call1073741824 , 1073741824 )
459
459
460
- TEXT runtime·procyield(SB) , NOSPLIT , $ 0 - 0
460
+ TEXT runtime·procyield(SB) , NOSPLIT|NOFRAME , $ 0 - 4
461
+ MOVW cycles + 0 (FP) , R7
462
+ // POWER does not have a pause /yield instruction equivalent.
463
+ // Instead , we can lower the program priority by setting the
464
+ // Program Priority Register prior to the wait loop and set it
465
+ // back to default afterwards. On Linux , the default priority is
466
+ // medium - low. For details , see page 837 of the ISA 3 . 0 .
467
+ OR R1 , R1 , R1 // Set PPR priority to low
468
+ again:
469
+ SUB $ 1 , R7
470
+ CMP $ 0 , R7
471
+ BNE again
472
+ OR R6 , R6 , R6 // Set PPR priority back to medium - low
461
473
RET
462
474
463
475
// void jmpdefer(fv , sp ) ;
You can’t perform that action at this time.
0 commit comments