| | |
| | |
| | |
| |
|
| | |
| |
|
| | #include "go_asm.h" |
| | #include "go_tls.h" |
| | #include "funcdata.h" |
| | #include "textflag.h" |
| | #include "asm_ppc64x.h" |
| | #include "cgo/abi_ppc64x.h" |
| |
|
| | |
| | |
| | TEXT _rt0_ppc64x_lib(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | |
| | |
| | |
| | STACK_AND_SAVE_HOST_TO_GO_ABI(32) |
| | |
| | |
| | MOVD R2, 24(R1) |
| |
|
| | MOVD R3, _rt0_ppc64x_lib_argc<>(SB) |
| | MOVD R4, _rt0_ppc64x_lib_argv<>(SB) |
| |
|
| | |
| | MOVD $runtime路reginit(SB), R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| |
|
| | #ifdef GOOS_aix |
| | |
| | MOVBZ runtime路isarchive(SB), R3 |
| | CMP $0, R3 |
| | BEQ done |
| | #endif |
| |
|
| | MOVD $runtime路libpreinit(SB), R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| |
|
| | |
| | |
| | MOVD _cgo_sys_thread_create(SB), R12 |
| | CMP $0, R12 |
| | BEQ nocgo |
| | MOVD $_rt0_ppc64x_lib_go(SB), R3 |
| | MOVD $0, R4 |
| | #ifdef GO_PPC64X_HAS_FUNCDESC |
| | |
| | MOVD 8(R12), R2 |
| | MOVD (R12), R12 |
| | #endif |
| | MOVD R12, CTR |
| | BL (CTR) |
| | MOVD 24(R1), R2 |
| | BR done |
| |
|
| | nocgo: |
| | MOVD $0x800000, R12 |
| | MOVD R12, 8+FIXED_FRAME(R1) |
| | MOVD $_rt0_ppc64x_lib_go(SB), R12 |
| | MOVD R12, 16+FIXED_FRAME(R1) |
| | MOVD $runtime路newosproc0(SB),R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| |
|
| | done: |
| | UNSTACK_AND_RESTORE_GO_TO_HOST_ABI(32) |
| | RET |
| |
|
| | #ifdef GO_PPC64X_HAS_FUNCDESC |
| | DEFINE_PPC64X_FUNCDESC(_rt0_ppc64x_lib_go, __rt0_ppc64x_lib_go) |
| | TEXT __rt0_ppc64x_lib_go(SB),NOSPLIT,$0 |
| | #else |
| | TEXT _rt0_ppc64x_lib_go(SB),NOSPLIT,$0 |
| | #endif |
| | MOVD _rt0_ppc64x_lib_argc<>(SB), R3 |
| | MOVD _rt0_ppc64x_lib_argv<>(SB), R4 |
| | MOVD $runtime路rt0_go(SB), R12 |
| | MOVD R12, CTR |
| | BR (CTR) |
| |
|
| | DATA _rt0_ppc64x_lib_argc<>(SB)/8, $0 |
| | GLOBL _rt0_ppc64x_lib_argc<>(SB),NOPTR, $8 |
| | DATA _rt0_ppc64x_lib_argv<>(SB)/8, $0 |
| | GLOBL _rt0_ppc64x_lib_argv<>(SB),NOPTR, $8 |
| |
|
| |
|
| | #ifdef GOOS_aix |
| | #define cgoCalleeStackSize 48 |
| | #else |
| | #define cgoCalleeStackSize 32 |
| | #endif |
| |
|
| | TEXT runtime路rt0_go(SB),NOSPLIT|TOPFRAME,$0 |
| | |
| |
|
| | |
| | BL runtime路reginit(SB) |
| |
|
| | SUB $(FIXED_FRAME+16), R1 |
| | MOVD R2, 24(R1) |
| | MOVW R3, FIXED_FRAME+0(R1) |
| | MOVD R4, FIXED_FRAME+8(R1) |
| |
|
| | |
| | |
| | MOVD $runtime路g0(SB), g |
| | BL runtime路save_g(SB) |
| | MOVD $(-64*1024), R31 |
| | ADD R31, R1, R3 |
| | MOVD R3, g_stackguard0(g) |
| | MOVD R3, g_stackguard1(g) |
| | MOVD R3, (g_stack+stack_lo)(g) |
| | MOVD R1, (g_stack+stack_hi)(g) |
| |
|
| | |
| | MOVD _cgo_init(SB), R12 |
| | CMP R12, $0 |
| | BEQ nocgo |
| |
|
| | #ifdef GO_PPC64X_HAS_FUNCDESC |
| | |
| | MOVD 8(R12), R2 |
| | MOVD (R12), R12 |
| | #endif |
| | MOVD R12, CTR |
| | MOVD R13, R5 |
| | MOVD $setg_gcc<>(SB), R4 |
| | MOVD g, R3 |
| | |
| | |
| | MOVD R1, R14 |
| | SUB $cgoCalleeStackSize, R1 |
| | RLDCR $0, R1, $~15, R1 |
| | BL (CTR) |
| | MOVD R14, R1 |
| | #ifndef GOOS_aix |
| | MOVD 24(R1), R2 |
| | #endif |
| | XOR R0, R0 |
| |
|
| | nocgo: |
| | |
| | MOVD (g_stack+stack_lo)(g), R3 |
| | ADD $const_stackGuard, R3 |
| | MOVD R3, g_stackguard0(g) |
| | MOVD R3, g_stackguard1(g) |
| |
|
| | |
| | MOVD $runtime路m0(SB), R3 |
| |
|
| | |
| | MOVD g, m_g0(R3) |
| | |
| | MOVD R3, g_m(g) |
| |
|
| | BL runtime路check(SB) |
| |
|
| | |
| | BL runtime路args(SB) |
| | BL runtime路osinit(SB) |
| | BL runtime路schedinit(SB) |
| |
|
| | |
| | MOVD $runtime路mainPC(SB), R3 |
| | MOVDU R3, -8(R1) |
| | MOVDU R0, -8(R1) |
| | MOVDU R0, -8(R1) |
| | MOVDU R0, -8(R1) |
| | MOVDU R0, -8(R1) |
| | BL runtime路newproc(SB) |
| | ADD $(8+FIXED_FRAME), R1 |
| |
|
| | |
| | BL runtime路mstart(SB) |
| | |
| | |
| | #ifdef GOARCH_ppc64le |
| | MOVD $runtime路debugPinnerV1<ABIInternal>(SB), R31 |
| | MOVD $runtime路debugCallV2<ABIInternal>(SB), R31 |
| | #endif |
| | MOVD R0, 0(R0) |
| | RET |
| |
|
| | DATA runtime路mainPC+0(SB)/8,$runtime路main<ABIInternal>(SB) |
| | GLOBL runtime路mainPC(SB),RODATA,$8 |
| |
|
| | TEXT runtime路breakpoint(SB),NOSPLIT|NOFRAME,$0-0 |
| | TW $31, R0, R0 |
| | RET |
| |
|
| | TEXT runtime路asminit(SB),NOSPLIT|NOFRAME,$0-0 |
| | RET |
| |
|
| | |
| | TEXT _cgo_reginit(SB),NOSPLIT|NOFRAME,$0-0 |
| | |
| | |
| | BR runtime路reginit(SB) |
| |
|
| | TEXT runtime路reginit(SB),NOSPLIT|NOFRAME,$0-0 |
| | |
| | XOR R0, R0 |
| | RET |
| |
|
| | TEXT runtime路mstart(SB),NOSPLIT|TOPFRAME,$0 |
| | BL runtime路mstart0(SB) |
| | RET |
| |
|
| | |
| | |
| | |
| |
|
| | |
| | |
| | TEXT runtime路gogo(SB), NOSPLIT|NOFRAME, $0-8 |
| | MOVD buf+0(FP), R5 |
| | MOVD gobuf_g(R5), R6 |
| | MOVD 0(R6), R4 |
| | BR gogo<>(SB) |
| |
|
| | TEXT gogo<>(SB), NOSPLIT|NOFRAME, $0 |
| | MOVD R6, g |
| | BL runtime路save_g(SB) |
| |
|
| | MOVD gobuf_sp(R5), R1 |
| | MOVD gobuf_lr(R5), R31 |
| | #ifndef GOOS_aix |
| | MOVD 24(R1), R2 |
| | #endif |
| | MOVD R31, LR |
| | MOVD gobuf_ctxt(R5), R11 |
| | MOVD R0, gobuf_sp(R5) |
| | MOVD R0, gobuf_lr(R5) |
| | MOVD R0, gobuf_ctxt(R5) |
| | CMP R0, R0 |
| | MOVD gobuf_pc(R5), R12 |
| | MOVD R12, CTR |
| | BR (CTR) |
| |
|
| | |
| | |
| | |
| | |
| | TEXT runtime路mcall<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-8 |
| | |
| | |
| | MOVD R3, R11 |
| | MOVD R1, (g_sched+gobuf_sp)(g) |
| | MOVD LR, R31 |
| | MOVD R31, (g_sched+gobuf_pc)(g) |
| | MOVD R0, (g_sched+gobuf_lr)(g) |
| |
|
| | |
| | MOVD g, R3 |
| | MOVD g_m(g), R8 |
| | MOVD m_g0(R8), g |
| | BL runtime路save_g(SB) |
| | CMP g, R3 |
| | BNE 2(PC) |
| | BR runtime路badmcall(SB) |
| | MOVD 0(R11), R12 |
| | MOVD R12, CTR |
| | MOVD (g_sched+gobuf_sp)(g), R1 |
| | |
| | |
| | MOVDU R3, -8(R1) |
| | MOVDU R0, -8(R1) |
| | MOVDU R0, -8(R1) |
| | MOVDU R0, -8(R1) |
| | MOVDU R0, -8(R1) |
| | BL (CTR) |
| | MOVD 24(R1), R2 |
| | BR runtime路badmcall2(SB) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | TEXT runtime路systemstack_switch(SB), NOSPLIT, $0-0 |
| | |
| | |
| | |
| | UNDEF |
| | UNDEF |
| | UNDEF |
| | BL (LR) |
| | RET |
| |
|
| | |
| | TEXT runtime路systemstack(SB), NOSPLIT, $0-8 |
| | MOVD fn+0(FP), R3 |
| | MOVD R3, R11 |
| | MOVD g_m(g), R4 |
| |
|
| | MOVD m_gsignal(R4), R5 |
| | CMP g, R5 |
| | BEQ noswitch |
| |
|
| | MOVD m_g0(R4), R5 |
| | CMP g, R5 |
| | BEQ noswitch |
| |
|
| | MOVD m_curg(R4), R6 |
| | CMP g, R6 |
| | BEQ switch |
| |
|
| | |
| | |
| | MOVD $runtime路badsystemstack(SB), R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| | BL runtime路abort(SB) |
| |
|
| | switch: |
| | |
| | |
| | BL gosave_systemstack_switch<>(SB) |
| |
|
| | |
| | MOVD R5, g |
| | BL runtime路save_g(SB) |
| | MOVD (g_sched+gobuf_sp)(g), R1 |
| |
|
| | |
| | MOVD 0(R11), R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| |
|
| | |
| | |
| | |
| | MOVD g_m(g), R3 |
| | MOVD m_curg(R3), g |
| | MOVD (g_sched+gobuf_sp)(g), R3 |
| | #ifndef GOOS_aix |
| | MOVD 24(R3), R2 |
| | #endif |
| | |
| | MOVD g_m(g), R3 |
| | MOVD m_curg(R3), g |
| | BL runtime路save_g(SB) |
| | MOVD (g_sched+gobuf_sp)(g), R1 |
| | MOVD R0, (g_sched+gobuf_sp)(g) |
| | RET |
| |
|
| | noswitch: |
| | |
| | |
| | |
| | |
| | MOVD 0(R11), R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| | #ifndef GOOS_aix |
| | MOVD 24(R1), R2 |
| | #endif |
| | RET |
| |
|
| | |
| | TEXT runtime路switchToCrashStack0<ABIInternal>(SB), NOSPLIT, $0-8 |
| | MOVD R3, R11 |
| | MOVD g_m(g), R3 |
| |
|
| | |
| | MOVD $runtime路gcrash(SB), g |
| | CALL runtime路save_g(SB) |
| | MOVD R3, g_m(g) |
| | MOVD g, m_g0(R3) |
| |
|
| | |
| | MOVD (g_stack+stack_hi)(g), R3 |
| | SUB $(4*8), R3 |
| | MOVD R3, R1 |
| |
|
| | |
| | MOVD 0(R11), R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| |
|
| | |
| | CALL runtime路abort(SB) |
| | UNDEF |
| |
|
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT runtime路morestack(SB),NOSPLIT|NOFRAME,$0-0 |
| | |
| | |
| | MOVD R1, (g_sched+gobuf_sp)(g) |
| | MOVD LR, R8 |
| | MOVD R8, (g_sched+gobuf_pc)(g) |
| | MOVD R5, (g_sched+gobuf_lr)(g) |
| | MOVD R11, (g_sched+gobuf_ctxt)(g) |
| |
|
| | |
| | MOVD g_m(g), R7 |
| | MOVD m_g0(R7), R8 |
| | CMP g, R8 |
| | BNE 3(PC) |
| | BL runtime路badmorestackg0(SB) |
| | BL runtime路abort(SB) |
| |
|
| | |
| | MOVD m_gsignal(R7), R8 |
| | CMP g, R8 |
| | BNE 3(PC) |
| | BL runtime路badmorestackgsignal(SB) |
| | BL runtime路abort(SB) |
| |
|
| | |
| | |
| | MOVD R5, (m_morebuf+gobuf_pc)(R7) |
| | MOVD R1, (m_morebuf+gobuf_sp)(R7) |
| | MOVD g, (m_morebuf+gobuf_g)(R7) |
| |
|
| | |
| | MOVD m_g0(R7), g |
| | BL runtime路save_g(SB) |
| | MOVD (g_sched+gobuf_sp)(g), R1 |
| | MOVDU R0, -(FIXED_FRAME+0)(R1) |
| | BL runtime路newstack(SB) |
| |
|
| | |
| | |
| | UNDEF |
| |
|
| | TEXT runtime路morestack_noctxt(SB),NOSPLIT|NOFRAME,$0-0 |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | OR R0, R1 |
| | MOVD R0, R11 |
| | BR runtime路morestack(SB) |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | #define DISPATCH(NAME,MAXSIZE) \ |
| | MOVD $MAXSIZE, R31; \ |
| | CMP R3, R31; \ |
| | BGT 4(PC); \ |
| | MOVD $NAME(SB), R12; \ |
| | MOVD R12, CTR; \ |
| | BR (CTR) |
| | |
| |
|
| | TEXT 路reflectcall(SB), NOSPLIT|NOFRAME, $0-48 |
| | MOVWZ frameSize+32(FP), R3 |
| | DISPATCH(runtime路call16, 16) |
| | DISPATCH(runtime路call32, 32) |
| | DISPATCH(runtime路call64, 64) |
| | DISPATCH(runtime路call128, 128) |
| | DISPATCH(runtime路call256, 256) |
| | DISPATCH(runtime路call512, 512) |
| | DISPATCH(runtime路call1024, 1024) |
| | DISPATCH(runtime路call2048, 2048) |
| | DISPATCH(runtime路call4096, 4096) |
| | DISPATCH(runtime路call8192, 8192) |
| | DISPATCH(runtime路call16384, 16384) |
| | DISPATCH(runtime路call32768, 32768) |
| | DISPATCH(runtime路call65536, 65536) |
| | DISPATCH(runtime路call131072, 131072) |
| | DISPATCH(runtime路call262144, 262144) |
| | DISPATCH(runtime路call524288, 524288) |
| | DISPATCH(runtime路call1048576, 1048576) |
| | DISPATCH(runtime路call2097152, 2097152) |
| | DISPATCH(runtime路call4194304, 4194304) |
| | DISPATCH(runtime路call8388608, 8388608) |
| | DISPATCH(runtime路call16777216, 16777216) |
| | DISPATCH(runtime路call33554432, 33554432) |
| | DISPATCH(runtime路call67108864, 67108864) |
| | DISPATCH(runtime路call134217728, 134217728) |
| | DISPATCH(runtime路call268435456, 268435456) |
| | DISPATCH(runtime路call536870912, 536870912) |
| | DISPATCH(runtime路call1073741824, 1073741824) |
| | MOVD $runtime路badreflectcall(SB), R12 |
| | MOVD R12, CTR |
| | BR (CTR) |
| |
|
| | #define CALLFN(NAME,MAXSIZE) \ |
| | TEXT NAME(SB), WRAPPER, $MAXSIZE-48; \ |
| | NO_LOCAL_POINTERS; \ |
| | \ |
| | MOVD stackArgs+16(FP), R3; \ |
| | MOVWZ stackArgsSize+24(FP), R4; \ |
| | MOVD R1, R5; \ |
| | CMP R4, $8; \ |
| | BLT tailsetup; \ |
| | \ |
| | ADD $(FIXED_FRAME-8), R5; \ |
| | SUB $8, R3; \ |
| | top: \ |
| | MOVDU 8(R3), R7; \ |
| | MOVDU R7, 8(R5); \ |
| | SUB $8, R4; \ |
| | CMP R4, $8; \ |
| | BGE top; \ |
| | \ |
| | CMP $0, R4; \ |
| | BEQ callfn; \ |
| | ADD $7, R3; \ |
| | ADD $7, R5; \ |
| | BR tail; \ |
| | tailsetup: \ |
| | CMP $0, R4; \ |
| | BEQ callfn; \ |
| | ADD $(FIXED_FRAME-1), R5; \ |
| | SUB $1, R3; \ |
| | tail: \ |
| | MOVBU 1(R3), R6; \ |
| | MOVBU R6, 1(R5); \ |
| | SUB $1, R4; \ |
| | CMP $0, R4; \ |
| | BGT tail; \ |
| | callfn: \ |
| | \ |
| | MOVD f+8(FP), R11; \ |
| | #ifdef GOOS_aix \ |
| | \ |
| | \ |
| | CMP R11, $0 \ |
| | BNE 2(PC) \ |
| | MOVD R0, 0(R0) \ |
| | #endif \ |
| | MOVD regArgs+40(FP), R20; \ |
| | BL runtime路unspillArgs(SB); \ |
| | MOVD (R11), R12; \ |
| | MOVD R12, CTR; \ |
| | PCDATA $PCDATA_StackMapIndex, $0; \ |
| | BL (CTR); \ |
| | #ifndef GOOS_aix \ |
| | MOVD 24(R1), R2; \ |
| | #endif \ |
| | \ |
| | MOVD regArgs+40(FP), R20; \ |
| | BL runtime路spillArgs(SB); \ |
| | MOVD stackArgsType+0(FP), R7; \ |
| | MOVD stackArgs+16(FP), R3; \ |
| | MOVWZ stackArgsSize+24(FP), R4; \ |
| | MOVWZ stackRetOffset+28(FP), R6; \ |
| | ADD $FIXED_FRAME, R1, R5; \ |
| | ADD R6, R5; \ |
| | ADD R6, R3; \ |
| | SUB R6, R4; \ |
| | BL callRet<>(SB); \ |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | TEXT callRet<>(SB), NOSPLIT, $40-0 |
| | NO_LOCAL_POINTERS |
| | MOVD R7, FIXED_FRAME+0(R1) |
| | MOVD R3, FIXED_FRAME+8(R1) |
| | MOVD R5, FIXED_FRAME+16(R1) |
| | MOVD R4, FIXED_FRAME+24(R1) |
| | MOVD R20, FIXED_FRAME+32(R1) |
| | BL runtime路reflectcallmove(SB) |
| | RET |
| |
|
| | CALLFN(路call16, 16) |
| | CALLFN(路call32, 32) |
| | CALLFN(路call64, 64) |
| | CALLFN(路call128, 128) |
| | CALLFN(路call256, 256) |
| | CALLFN(路call512, 512) |
| | CALLFN(路call1024, 1024) |
| | CALLFN(路call2048, 2048) |
| | CALLFN(路call4096, 4096) |
| | CALLFN(路call8192, 8192) |
| | CALLFN(路call16384, 16384) |
| | CALLFN(路call32768, 32768) |
| | CALLFN(路call65536, 65536) |
| | CALLFN(路call131072, 131072) |
| | CALLFN(路call262144, 262144) |
| | CALLFN(路call524288, 524288) |
| | CALLFN(路call1048576, 1048576) |
| | CALLFN(路call2097152, 2097152) |
| | CALLFN(路call4194304, 4194304) |
| | CALLFN(路call8388608, 8388608) |
| | CALLFN(路call16777216, 16777216) |
| | CALLFN(路call33554432, 33554432) |
| | CALLFN(路call67108864, 67108864) |
| | CALLFN(路call134217728, 134217728) |
| | CALLFN(路call268435456, 268435456) |
| | CALLFN(路call536870912, 536870912) |
| | CALLFN(路call1073741824, 1073741824) |
| |
|
| | TEXT runtime路procyieldAsm(SB),NOSPLIT|NOFRAME,$0-4 |
| | MOVW cycles+0(FP), R7 |
| | CMP $0, R7 |
| | BEQ done |
| | |
| | |
| | |
| | |
| | |
| | OR R1, R1, R1 |
| | again: |
| | SUB $1, R7 |
| | CMP $0, R7 |
| | BNE again |
| | OR R6, R6, R6 |
| | done: |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0 |
| | MOVD $runtime路systemstack_switch(SB), R31 |
| | ADD $16, R31 |
| | MOVD R31, (g_sched+gobuf_pc)(g) |
| | MOVD R1, (g_sched+gobuf_sp)(g) |
| | MOVD R0, (g_sched+gobuf_lr)(g) |
| | |
| | MOVD (g_sched+gobuf_ctxt)(g), R31 |
| | CMP R31, $0 |
| | BEQ 2(PC) |
| | BL runtime路abort(SB) |
| | RET |
| |
|
| | #ifdef GOOS_aix |
| | #define asmcgocallSaveOffset cgoCalleeStackSize + 8 |
| | #else |
| | #define asmcgocallSaveOffset cgoCalleeStackSize |
| | #endif |
| |
|
| | |
| | |
| | |
| | TEXT 路asmcgocall_no_g(SB),NOSPLIT,$0-16 |
| | MOVD fn+0(FP), R3 |
| | MOVD arg+8(FP), R4 |
| |
|
| | MOVD R1, R15 |
| | SUB $(asmcgocallSaveOffset+8), R1 |
| | RLDCR $0, R1, $~15, R1 |
| | MOVD R15, asmcgocallSaveOffset(R1) |
| |
|
| | MOVD R0, 0(R1) |
| |
|
| | |
| | MOVD R3, R12 |
| |
|
| | #ifdef GO_PPC64X_HAS_FUNCDESC |
| | |
| | MOVD 8(R12), R2 |
| | MOVD (R12), R12 |
| | #endif |
| | MOVD R12, CTR |
| | MOVD R4, R3 |
| | BL (CTR) |
| |
|
| | |
| | |
| | XOR R0, R0 |
| |
|
| | MOVD asmcgocallSaveOffset(R1), R1 |
| | #ifndef GOOS_aix |
| | MOVD 24(R1), R2 |
| | #endif |
| |
|
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | TEXT 路asmcgocall<ABIInternal>(SB),NOSPLIT,$0-20 |
| | |
| | |
| |
|
| | MOVD R1, R7 |
| | CMP $0, g |
| | BEQ nosave |
| | MOVD g, R5 |
| |
|
| | |
| | |
| | |
| | |
| | MOVD g_m(g), R8 |
| | MOVD m_gsignal(R8), R6 |
| | CMP R6, g |
| | BEQ nosave |
| | MOVD m_g0(R8), R6 |
| | CMP R6, g |
| | BEQ nosave |
| |
|
| | BL gosave_systemstack_switch<>(SB) |
| | MOVD R6, g |
| | BL runtime路save_g(SB) |
| | MOVD (g_sched+gobuf_sp)(g), R1 |
| |
|
| | |
| | #ifdef GOOS_aix |
| | |
| | MOVD $runtime路asmcgocall(SB), R6 |
| | MOVD R6, 16(R1) |
| | |
| | SUB $8, R1 |
| | #endif |
| | |
| | |
| | |
| | |
| | |
| | SUB $(asmcgocallSaveOffset+16), R1, R10 |
| | RLDCR $0, R10, $~15, R1 |
| | MOVD R5, (asmcgocallSaveOffset+8)(R1) |
| | MOVD (g_stack+stack_hi)(R5), R5 |
| | SUB R7, R5 |
| | MOVD R5, asmcgocallSaveOffset(R1) |
| | #ifdef GOOS_aix |
| | MOVD R7, 0(R1) |
| | #else |
| | MOVD R0, 0(R1) |
| | #endif |
| | |
| | MOVD R3, R12 |
| |
|
| | #ifdef GO_PPC64X_HAS_FUNCDESC |
| | |
| | MOVD 8(R12), R2 |
| | MOVD (R12), R12 |
| | #endif |
| | MOVD R12, CTR |
| | MOVD R4, R3 |
| | BL (CTR) |
| |
|
| | |
| | XOR R0, R0 |
| |
|
| | |
| | |
| | MOVD (asmcgocallSaveOffset+8)(R1), g |
| | MOVD (g_stack+stack_hi)(g), R5 |
| | MOVD asmcgocallSaveOffset(R1), R6 |
| | SUB R6, R5 |
| | #ifndef GOOS_aix |
| | MOVD 24(R5), R2 |
| | #endif |
| | MOVD R5, R1 |
| | BL runtime路save_g(SB) |
| |
|
| | |
| | RET |
| |
|
| | nosave: |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | SUB $(asmcgocallSaveOffset+8), R1, R10 |
| | RLDCR $0, R10, $~15, R1 |
| | MOVD R7, asmcgocallSaveOffset(R1) |
| |
|
| | MOVD R3, R12 |
| | #ifdef GO_PPC64X_HAS_FUNCDESC |
| | |
| | MOVD 8(R12), R2 |
| | MOVD (R12), R12 |
| | #endif |
| | MOVD R12, CTR |
| | MOVD R4, R3 |
| | BL (CTR) |
| |
|
| | |
| | XOR R0, R0 |
| |
|
| | MOVD asmcgocallSaveOffset(R1), R1 |
| | #ifndef GOOS_aix |
| | MOVD 24(R1), R2 |
| | #endif |
| | |
| | RET |
| |
|
| | |
| | |
| | TEXT 路cgocallback(SB),NOSPLIT,$24-24 |
| | NO_LOCAL_POINTERS |
| |
|
| | |
| | |
| | MOVD fn+0(FP), R5 |
| | CMP R5, $0 |
| | BNE loadg |
| | |
| | MOVD frame+8(FP), g |
| | BR dropm |
| |
|
| | loadg: |
| | |
| | #ifndef GOOS_openbsd |
| | MOVBZ runtime路iscgo(SB), R3 |
| | CMP R3, $0 |
| | BEQ nocgo |
| | #endif |
| | BL runtime路load_g(SB) |
| | nocgo: |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | CMP g, $0 |
| | BEQ needm |
| |
|
| | MOVD g_m(g), R8 |
| | MOVD R8, savedm-8(SP) |
| | BR havem |
| |
|
| | needm: |
| | MOVD g, savedm-8(SP) |
| | MOVD $runtime路needAndBindM(SB), R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | MOVD g_m(g), R8 |
| | MOVD m_g0(R8), R3 |
| | MOVD R1, (g_sched+gobuf_sp)(R3) |
| |
|
| | havem: |
| | |
| | |
| | |
| | |
| | |
| | MOVD m_g0(R8), R3 |
| | MOVD (g_sched+gobuf_sp)(R3), R4 |
| | MOVD R4, savedsp-24(SP) |
| | MOVD R1, (g_sched+gobuf_sp)(R3) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | MOVD m_curg(R8), g |
| | BL runtime路save_g(SB) |
| | MOVD (g_sched+gobuf_sp)(g), R4 |
| | MOVD (g_sched+gobuf_pc)(g), R5 |
| | MOVD R5, -(24+FIXED_FRAME)(R4) |
| | |
| | MOVD fn+0(FP), R5 |
| | MOVD frame+8(FP), R6 |
| | MOVD ctxt+16(FP), R7 |
| | MOVD $-(24+FIXED_FRAME)(R4), R1 |
| | MOVD R5, FIXED_FRAME+0(R1) |
| | MOVD R6, FIXED_FRAME+8(R1) |
| | MOVD R7, FIXED_FRAME+16(R1) |
| |
|
| | MOVD $runtime路cgocallbackg(SB), R12 |
| | MOVD R12, CTR |
| | CALL (CTR) |
| |
|
| | |
| | MOVD 0(R1), R5 |
| | MOVD R5, (g_sched+gobuf_pc)(g) |
| | MOVD $(24+FIXED_FRAME)(R1), R4 |
| | MOVD R4, (g_sched+gobuf_sp)(g) |
| |
|
| | |
| | |
| | |
| | MOVD g_m(g), R8 |
| | MOVD m_g0(R8), g |
| | BL runtime路save_g(SB) |
| | MOVD (g_sched+gobuf_sp)(g), R1 |
| | MOVD savedsp-24(SP), R4 |
| | MOVD R4, (g_sched+gobuf_sp)(g) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | MOVD savedm-8(SP), R6 |
| | CMP R6, $0 |
| | BNE droppedm |
| |
|
| | |
| | MOVD _cgo_pthread_key_created(SB), R6 |
| | |
| | CMP R6, $0 |
| | BEQ dropm |
| | MOVD (R6), R6 |
| | CMP R6, $0 |
| | BNE droppedm |
| |
|
| | dropm: |
| | MOVD $runtime路dropm(SB), R12 |
| | MOVD R12, CTR |
| | BL (CTR) |
| | droppedm: |
| |
|
| | |
| | RET |
| |
|
| | |
| | TEXT runtime路setg(SB), NOSPLIT, $0-8 |
| | MOVD gg+0(FP), g |
| | |
| | BL runtime路save_g(SB) |
| | RET |
| |
|
| | #ifdef GO_PPC64X_HAS_FUNCDESC |
| | DEFINE_PPC64X_FUNCDESC(setg_gcc<>, _setg_gcc<>) |
| | TEXT _setg_gcc<>(SB),NOSPLIT|NOFRAME,$0-0 |
| | #else |
| | TEXT setg_gcc<>(SB),NOSPLIT|NOFRAME,$0-0 |
| | #endif |
| | |
| | |
| | MOVD LR, R4 |
| | |
| | MOVD R31, R5 |
| | MOVD g, R6 |
| |
|
| | MOVD R3, g |
| | BL runtime路save_g(SB) |
| |
|
| | MOVD R6, g |
| | MOVD R5, R31 |
| | MOVD R4, LR |
| | RET |
| |
|
| | TEXT runtime路abort(SB),NOSPLIT|NOFRAME,$0-0 |
| | MOVW (R0), R0 |
| | UNDEF |
| |
|
| | #define TBR 268 |
| |
|
| | |
| | TEXT runtime路cputicks(SB),NOSPLIT,$0-8 |
| | MOVD SPR(TBR), R3 |
| | MOVD R3, ret+0(FP) |
| | RET |
| |
|
| | |
| | TEXT runtime路spillArgs(SB),NOSPLIT,$0-0 |
| | MOVD R3, 0(R20) |
| | MOVD R4, 8(R20) |
| | MOVD R5, 16(R20) |
| | MOVD R6, 24(R20) |
| | MOVD R7, 32(R20) |
| | MOVD R8, 40(R20) |
| | MOVD R9, 48(R20) |
| | MOVD R10, 56(R20) |
| | MOVD R14, 64(R20) |
| | MOVD R15, 72(R20) |
| | MOVD R16, 80(R20) |
| | MOVD R17, 88(R20) |
| | FMOVD F1, 96(R20) |
| | FMOVD F2, 104(R20) |
| | FMOVD F3, 112(R20) |
| | FMOVD F4, 120(R20) |
| | FMOVD F5, 128(R20) |
| | FMOVD F6, 136(R20) |
| | FMOVD F7, 144(R20) |
| | FMOVD F8, 152(R20) |
| | FMOVD F9, 160(R20) |
| | FMOVD F10, 168(R20) |
| | FMOVD F11, 176(R20) |
| | FMOVD F12, 184(R20) |
| | RET |
| |
|
| | |
| | TEXT runtime路unspillArgs(SB),NOSPLIT,$0-0 |
| | MOVD 0(R20), R3 |
| | MOVD 8(R20), R4 |
| | MOVD 16(R20), R5 |
| | MOVD 24(R20), R6 |
| | MOVD 32(R20), R7 |
| | MOVD 40(R20), R8 |
| | MOVD 48(R20), R9 |
| | MOVD 56(R20), R10 |
| | MOVD 64(R20), R14 |
| | MOVD 72(R20), R15 |
| | MOVD 80(R20), R16 |
| | MOVD 88(R20), R17 |
| | FMOVD 96(R20), F1 |
| | FMOVD 104(R20), F2 |
| | FMOVD 112(R20), F3 |
| | FMOVD 120(R20), F4 |
| | FMOVD 128(R20), F5 |
| | FMOVD 136(R20), F6 |
| | FMOVD 144(R20), F7 |
| | FMOVD 152(R20), F8 |
| | FMOVD 160(R20), F9 |
| | FMOVD 168(R20), F10 |
| | FMOVD 176(R20), F11 |
| | FMOVD 184(R20), F12 |
| | RET |
| |
|
| | |
| | TEXT runtime路memhash<ABIInternal>(SB),NOSPLIT|NOFRAME,$0-32 |
| | JMP runtime路memhashFallback<ABIInternal>(SB) |
| | TEXT runtime路strhash<ABIInternal>(SB),NOSPLIT|NOFRAME,$0-24 |
| | JMP runtime路strhashFallback<ABIInternal>(SB) |
| | TEXT runtime路memhash32<ABIInternal>(SB),NOSPLIT|NOFRAME,$0-24 |
| | JMP runtime路memhash32Fallback<ABIInternal>(SB) |
| | TEXT runtime路memhash64<ABIInternal>(SB),NOSPLIT|NOFRAME,$0-24 |
| | JMP runtime路memhash64Fallback<ABIInternal>(SB) |
| |
|
| | |
| | |
| | #ifdef GOOS_aix |
| | |
| | |
| | TEXT __cgo_topofstack(SB),NOSPLIT|NOFRAME,$0 |
| | #else |
| | TEXT _cgo_topofstack(SB),NOSPLIT|NOFRAME,$0 |
| | #endif |
| | |
| | MOVD g, R4 |
| | MOVD R31, R5 |
| | MOVD LR, R6 |
| |
|
| | BL runtime路load_g(SB) |
| | MOVD g_m(g), R3 |
| | MOVD m_curg(R3), R3 |
| | MOVD (g_stack+stack_hi)(R3), R3 |
| |
|
| | MOVD R4, g |
| | MOVD R5, R31 |
| | MOVD R6, LR |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT runtime路goexit(SB),NOSPLIT|NOFRAME|TOPFRAME,$0-0 |
| | MOVD 24(R1), R2 |
| | BL runtime路goexit1(SB) |
| | |
| | MOVD R0, R0 |
| |
|
| | |
| | |
| | |
| | |
| | TEXT runtime路prepGoExitFrame(SB),NOSPLIT,$0-8 |
| | MOVD sp+0(FP), R3 |
| | MOVD R2, 24(R3) |
| | RET |
| |
|
| | TEXT runtime路addmoduledata(SB),NOSPLIT|NOFRAME,$0-0 |
| | ADD $-8, R1 |
| | MOVD R31, 0(R1) |
| | MOVD runtime路lastmoduledatap(SB), R4 |
| | MOVD R3, moduledata_next(R4) |
| | MOVD R3, runtime路lastmoduledatap(SB) |
| | MOVD 0(R1), R31 |
| | ADD $8, R1 |
| | RET |
| |
|
| | TEXT 路checkASM(SB),NOSPLIT,$0-1 |
| | MOVW $1, R3 |
| | MOVB R3, ret+0(FP) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT gcWriteBarrier<>(SB),NOSPLIT,$120 |
| | |
| | |
| | retry: |
| | MOVD g_m(g), R18 |
| | MOVD m_p(R18), R18 |
| | MOVD (p_wbBuf+wbBuf_next)(R18), R19 |
| | MOVD (p_wbBuf+wbBuf_end)(R18), R31 |
| | |
| | ADD R29, R19 |
| | |
| | CMPU R31, R19 |
| | BLT flush |
| | |
| | MOVD R19, (p_wbBuf+wbBuf_next)(R18) |
| | |
| | SUB R29, R19, R29 |
| | RET |
| |
|
| | flush: |
| | |
| | |
| | MOVD R20, (FIXED_FRAME+0)(R1) |
| | MOVD R21, (FIXED_FRAME+8)(R1) |
| | |
| | |
| | |
| | MOVD R3, (FIXED_FRAME+16)(R1) |
| | MOVD R4, (FIXED_FRAME+24)(R1) |
| | MOVD R5, (FIXED_FRAME+32)(R1) |
| | MOVD R6, (FIXED_FRAME+40)(R1) |
| | MOVD R7, (FIXED_FRAME+48)(R1) |
| | MOVD R8, (FIXED_FRAME+56)(R1) |
| | MOVD R9, (FIXED_FRAME+64)(R1) |
| | MOVD R10, (FIXED_FRAME+72)(R1) |
| | |
| | |
| | MOVD R14, (FIXED_FRAME+80)(R1) |
| | MOVD R15, (FIXED_FRAME+88)(R1) |
| | MOVD R16, (FIXED_FRAME+96)(R1) |
| | MOVD R17, (FIXED_FRAME+104)(R1) |
| | MOVD R29, (FIXED_FRAME+112)(R1) |
| |
|
| | CALL runtime路wbBufFlush(SB) |
| |
|
| | MOVD (FIXED_FRAME+0)(R1), R20 |
| | MOVD (FIXED_FRAME+8)(R1), R21 |
| | MOVD (FIXED_FRAME+16)(R1), R3 |
| | MOVD (FIXED_FRAME+24)(R1), R4 |
| | MOVD (FIXED_FRAME+32)(R1), R5 |
| | MOVD (FIXED_FRAME+40)(R1), R6 |
| | MOVD (FIXED_FRAME+48)(R1), R7 |
| | MOVD (FIXED_FRAME+56)(R1), R8 |
| | MOVD (FIXED_FRAME+64)(R1), R9 |
| | MOVD (FIXED_FRAME+72)(R1), R10 |
| | MOVD (FIXED_FRAME+80)(R1), R14 |
| | MOVD (FIXED_FRAME+88)(R1), R15 |
| | MOVD (FIXED_FRAME+96)(R1), R16 |
| | MOVD (FIXED_FRAME+104)(R1), R17 |
| | MOVD (FIXED_FRAME+112)(R1), R29 |
| | JMP retry |
| |
|
| | TEXT runtime路gcWriteBarrier1<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVD $8, R29 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier2<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVD $16, R29 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier3<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVD $24, R29 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier4<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVD $32, R29 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier5<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVD $40, R29 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier6<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVD $48, R29 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier7<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVD $56, R29 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier8<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVD $64, R29 |
| | JMP gcWriteBarrier<>(SB) |
| |
|
| | DATA debugCallFrameTooLarge<>+0x00(SB)/20, $"call frame too large" |
| | GLOBL debugCallFrameTooLarge<>(SB), RODATA, $20 |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | #ifdef GOARCH_ppc64le |
| | TEXT runtime路debugCallV2<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0 |
| | |
| | MOVD R31, -184(R1) |
| | MOVD 0(R1), R31 |
| | |
| | MOVD R31, -304(R1) |
| | MOVD -32(R1), R31 |
| | |
| | MOVD R31, -192(R1) |
| | MOVD LR, R31 |
| | MOVD R31, -320(R1) |
| | ADD $-320, R1 |
| | |
| | |
| | MOVW CR, R31 |
| | MOVD R31, 8(R1) |
| | MOVD R2, 24(R1) |
| | MOVD R3, 56(R1) |
| | MOVD R4, 64(R1) |
| | MOVD R5, 72(R1) |
| | MOVD R6, 80(R1) |
| | MOVD R7, 88(R1) |
| | MOVD R8, 96(R1) |
| | MOVD R9, 104(R1) |
| | MOVD R10, 112(R1) |
| | MOVD R11, 120(R1) |
| | MOVD R12, 144(R1) |
| | MOVD R13, 152(R1) |
| | MOVD R14, 160(R1) |
| | MOVD R15, 168(R1) |
| | MOVD R16, 176(R1) |
| | MOVD R17, 184(R1) |
| | MOVD R18, 192(R1) |
| | MOVD R19, 200(R1) |
| | MOVD R20, 208(R1) |
| | MOVD R21, 216(R1) |
| | MOVD R22, 224(R1) |
| | MOVD R23, 232(R1) |
| | MOVD R24, 240(R1) |
| | MOVD R25, 248(R1) |
| | MOVD R26, 256(R1) |
| | MOVD R27, 264(R1) |
| | MOVD R28, 272(R1) |
| | MOVD R29, 280(R1) |
| | MOVD g, 288(R1) |
| | MOVD LR, R31 |
| | MOVD R31, 32(R1) |
| | CALL runtime路debugCallCheck(SB) |
| | MOVD 40(R1), R22 |
| | XOR R0, R0 |
| | CMP R22, $0 |
| | BEQ good |
| | MOVD 48(R1), R22 |
| | MOVD $8, R20 |
| | TW $31, R0, R0 |
| |
|
| | BR restore |
| |
|
| | good: |
| | #define DEBUG_CALL_DISPATCH(NAME,MAXSIZE) \ |
| | MOVD $MAXSIZE, R23; \ |
| | CMP R26, R23; \ |
| | BGT 5(PC); \ |
| | MOVD $NAME(SB), R26; \ |
| | MOVD R26, 32(R1); \ |
| | CALL runtime路debugCallWrap(SB); \ |
| | BR restore |
| |
|
| | |
| | MOVD 128(R1), R26 |
| |
|
| | DEBUG_CALL_DISPATCH(debugCall32<>, 32) |
| | DEBUG_CALL_DISPATCH(debugCall64<>, 64) |
| | DEBUG_CALL_DISPATCH(debugCall128<>, 128) |
| | DEBUG_CALL_DISPATCH(debugCall256<>, 256) |
| | DEBUG_CALL_DISPATCH(debugCall512<>, 512) |
| | DEBUG_CALL_DISPATCH(debugCall1024<>, 1024) |
| | DEBUG_CALL_DISPATCH(debugCall2048<>, 2048) |
| | DEBUG_CALL_DISPATCH(debugCall4096<>, 4096) |
| | DEBUG_CALL_DISPATCH(debugCall8192<>, 8192) |
| | DEBUG_CALL_DISPATCH(debugCall16384<>, 16384) |
| | DEBUG_CALL_DISPATCH(debugCall32768<>, 32768) |
| | DEBUG_CALL_DISPATCH(debugCall65536<>, 65536) |
| | |
| | MOVD $debugCallFrameTooLarge<>(SB), R22 |
| | MOVD R22, 32(R1) |
| | MOVD $20, R22 |
| | |
| | MOVD R22, 40(R1) |
| | MOVD $8, R20 |
| | TW $31, R0, R0 |
| | BR restore |
| | restore: |
| | MOVD $16, R20 |
| | TW $31, R0, R0 |
| | |
| | |
| | MOVD 8(R1), R31 |
| | MOVW R31, CR |
| | MOVD 24(R1), R2 |
| | MOVD 56(R1), R3 |
| | MOVD 64(R1), R4 |
| | MOVD 72(R1), R5 |
| | MOVD 80(R1), R6 |
| | MOVD 88(R1), R7 |
| | MOVD 96(R1), R8 |
| | MOVD 104(R1), R9 |
| | MOVD 112(R1), R10 |
| | MOVD 120(R1), R11 |
| | MOVD 144(R1), R12 |
| | MOVD 152(R1), R13 |
| | MOVD 160(R1), R14 |
| | MOVD 168(R1), R15 |
| | MOVD 176(R1), R16 |
| | MOVD 184(R1), R17 |
| | MOVD 192(R1), R18 |
| | MOVD 200(R1), R19 |
| | MOVD 208(R1), R20 |
| | MOVD 216(R1), R21 |
| | MOVD 224(R1), R22 |
| | MOVD 232(R1), R23 |
| | MOVD 240(R1), R24 |
| | MOVD 248(R1), R25 |
| | MOVD 256(R1), R26 |
| | MOVD 264(R1), R27 |
| | MOVD 272(R1), R28 |
| | MOVD 280(R1), R29 |
| | MOVD 288(R1), g |
| | MOVD 16(R1), R31 |
| | |
| | MOVD R31, LR |
| | |
| | MOVD 0(R1), CTR |
| | MOVD 136(R1), R31 |
| | |
| | ADD $352, R1 |
| | JMP (CTR) |
| | #endif |
| | #define DEBUG_CALL_FN(NAME,MAXSIZE) \ |
| | TEXT NAME(SB),WRAPPER,$MAXSIZE-0; \ |
| | NO_LOCAL_POINTERS; \ |
| | MOVD $0, R20; \ |
| | TW $31, R0, R0 \ |
| | MOVD $1, R20; \ |
| | TW $31, R0, R0 \ |
| | RET |
| | DEBUG_CALL_FN(debugCall32<>, 32) |
| | DEBUG_CALL_FN(debugCall64<>, 64) |
| | DEBUG_CALL_FN(debugCall128<>, 128) |
| | DEBUG_CALL_FN(debugCall256<>, 256) |
| | DEBUG_CALL_FN(debugCall512<>, 512) |
| | DEBUG_CALL_FN(debugCall1024<>, 1024) |
| | DEBUG_CALL_FN(debugCall2048<>, 2048) |
| | DEBUG_CALL_FN(debugCall4096<>, 4096) |
| | DEBUG_CALL_FN(debugCall8192<>, 8192) |
| | DEBUG_CALL_FN(debugCall16384<>, 16384) |
| | DEBUG_CALL_FN(debugCall32768<>, 32768) |
| | DEBUG_CALL_FN(debugCall65536<>, 65536) |
| |
|
| | #ifdef GOARCH_ppc64le |
| | |
| | TEXT runtime路debugCallPanicked(SB),NOSPLIT,$32-16 |
| | |
| | MOVD val_type+0(FP), R31 |
| | MOVD R31, 32(R1) |
| | MOVD val_data+8(FP), R31 |
| | MOVD R31, 40(R1) |
| | MOVD $2, R20 |
| | TW $31, R0, R0 |
| | RET |
| | #endif |
| |
|
| | TEXT runtime路panicBounds<ABIInternal>(SB),NOSPLIT,$88-0 |
| | |
| | |
| | |
| | NO_LOCAL_POINTERS |
| | |
| | |
| | |
| | MOVD R3, 48(R1) |
| | MOVD R4, 56(R1) |
| | MOVD R5, 64(R1) |
| | MOVD R6, 72(R1) |
| | MOVD R7, 80(R1) |
| | MOVD R8, 88(R1) |
| | MOVD R9, 96(R1) |
| | |
| | |
| |
|
| | MOVD LR, R3 |
| | ADD $48, R1, R4 |
| | CALL runtime路panicBounds64<ABIInternal>(SB) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT runtime路elf_savegpr0(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | MOVD R14, -144(R1) |
| | MOVD R15, -136(R1) |
| | MOVD R16, -128(R1) |
| | MOVD R17, -120(R1) |
| | MOVD R18, -112(R1) |
| | MOVD R19, -104(R1) |
| | MOVD R20, -96(R1) |
| | MOVD R21, -88(R1) |
| | MOVD R22, -80(R1) |
| | MOVD R23, -72(R1) |
| | MOVD R24, -64(R1) |
| | MOVD R25, -56(R1) |
| | MOVD R26, -48(R1) |
| | MOVD R27, -40(R1) |
| | MOVD R28, -32(R1) |
| | MOVD R29, -24(R1) |
| | MOVD g, -16(R1) |
| | MOVD R31, -8(R1) |
| | MOVD R0, 16(R1) |
| | RET |
| | TEXT runtime路elf_restgpr0(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | MOVD -144(R1), R14 |
| | MOVD -136(R1), R15 |
| | MOVD -128(R1), R16 |
| | MOVD -120(R1), R17 |
| | MOVD -112(R1), R18 |
| | MOVD -104(R1), R19 |
| | MOVD -96(R1), R20 |
| | MOVD -88(R1), R21 |
| | MOVD -80(R1), R22 |
| | MOVD -72(R1), R23 |
| | MOVD -64(R1), R24 |
| | MOVD -56(R1), R25 |
| | MOVD -48(R1), R26 |
| | MOVD -40(R1), R27 |
| | MOVD -32(R1), R28 |
| | MOVD -24(R1), R29 |
| | MOVD -16(R1), g |
| | MOVD -8(R1), R31 |
| | MOVD 16(R1), R0 |
| | MOVD R0, LR |
| | RET |
| | TEXT runtime路elf_savegpr1(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | MOVD R14, -144(R12) |
| | MOVD R15, -136(R12) |
| | MOVD R16, -128(R12) |
| | MOVD R17, -120(R12) |
| | MOVD R18, -112(R12) |
| | MOVD R19, -104(R12) |
| | MOVD R20, -96(R12) |
| | MOVD R21, -88(R12) |
| | MOVD R22, -80(R12) |
| | MOVD R23, -72(R12) |
| | MOVD R24, -64(R12) |
| | MOVD R25, -56(R12) |
| | MOVD R26, -48(R12) |
| | MOVD R27, -40(R12) |
| | MOVD R28, -32(R12) |
| | MOVD R29, -24(R12) |
| | MOVD g, -16(R12) |
| | MOVD R31, -8(R12) |
| | RET |
| | TEXT runtime路elf_restgpr1(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | MOVD -144(R12), R14 |
| | MOVD -136(R12), R15 |
| | MOVD -128(R12), R16 |
| | MOVD -120(R12), R17 |
| | MOVD -112(R12), R18 |
| | MOVD -104(R12), R19 |
| | MOVD -96(R12), R20 |
| | MOVD -88(R12), R21 |
| | MOVD -80(R12), R22 |
| | MOVD -72(R12), R23 |
| | MOVD -64(R12), R24 |
| | MOVD -56(R12), R25 |
| | MOVD -48(R12), R26 |
| | MOVD -40(R12), R27 |
| | MOVD -32(R12), R28 |
| | MOVD -24(R12), R29 |
| | MOVD -16(R12), g |
| | MOVD -8(R12), R31 |
| | RET |
| | TEXT runtime路elf_savefpr(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | FMOVD F14, -144(R1) |
| | FMOVD F15, -136(R1) |
| | FMOVD F16, -128(R1) |
| | FMOVD F17, -120(R1) |
| | FMOVD F18, -112(R1) |
| | FMOVD F19, -104(R1) |
| | FMOVD F20, -96(R1) |
| | FMOVD F21, -88(R1) |
| | FMOVD F22, -80(R1) |
| | FMOVD F23, -72(R1) |
| | FMOVD F24, -64(R1) |
| | FMOVD F25, -56(R1) |
| | FMOVD F26, -48(R1) |
| | FMOVD F27, -40(R1) |
| | FMOVD F28, -32(R1) |
| | FMOVD F29, -24(R1) |
| | FMOVD F30, -16(R1) |
| | FMOVD F31, -8(R1) |
| | MOVD R0, 16(R1) |
| | RET |
| | TEXT runtime路elf_restfpr(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | FMOVD -144(R1), F14 |
| | FMOVD -136(R1), F15 |
| | FMOVD -128(R1), F16 |
| | FMOVD -120(R1), F17 |
| | FMOVD -112(R1), F18 |
| | FMOVD -104(R1), F19 |
| | FMOVD -96(R1), F20 |
| | FMOVD -88(R1), F21 |
| | FMOVD -80(R1), F22 |
| | FMOVD -72(R1), F23 |
| | FMOVD -64(R1), F24 |
| | FMOVD -56(R1), F25 |
| | FMOVD -48(R1), F26 |
| | FMOVD -40(R1), F27 |
| | FMOVD -32(R1), F28 |
| | FMOVD -24(R1), F29 |
| | FMOVD -16(R1), F30 |
| | FMOVD -8(R1), F31 |
| | MOVD 16(R1), R0 |
| | MOVD R0, LR |
| | RET |
| | TEXT runtime路elf_savevr(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | MOVD $-192, R12 |
| | STVX V20, (R0+R12) |
| | MOVD $-176, R12 |
| | STVX V21, (R0+R12) |
| | MOVD $-160, R12 |
| | STVX V22, (R0+R12) |
| | MOVD $-144, R12 |
| | STVX V23, (R0+R12) |
| | MOVD $-128, R12 |
| | STVX V24, (R0+R12) |
| | MOVD $-112, R12 |
| | STVX V25, (R0+R12) |
| | MOVD $-96, R12 |
| | STVX V26, (R0+R12) |
| | MOVD $-80, R12 |
| | STVX V27, (R0+R12) |
| | MOVD $-64, R12 |
| | STVX V28, (R0+R12) |
| | MOVD $-48, R12 |
| | STVX V29, (R0+R12) |
| | MOVD $-32, R12 |
| | STVX V30, (R0+R12) |
| | MOVD $-16, R12 |
| | STVX V31, (R0+R12) |
| | RET |
| | TEXT runtime路elf_restvr(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | MOVD $-192, R12 |
| | LVX (R0+R12), V20 |
| | MOVD $-176, R12 |
| | LVX (R0+R12), V21 |
| | MOVD $-160, R12 |
| | LVX (R0+R12), V22 |
| | MOVD $-144, R12 |
| | LVX (R0+R12), V23 |
| | MOVD $-128, R12 |
| | LVX (R0+R12), V24 |
| | MOVD $-112, R12 |
| | LVX (R0+R12), V25 |
| | MOVD $-96, R12 |
| | LVX (R0+R12), V26 |
| | MOVD $-80, R12 |
| | LVX (R0+R12), V27 |
| | MOVD $-64, R12 |
| | LVX (R0+R12), V28 |
| | MOVD $-48, R12 |
| | LVX (R0+R12), V29 |
| | MOVD $-32, R12 |
| | LVX (R0+R12), V30 |
| | MOVD $-16, R12 |
| | LVX (R0+R12), V31 |
| | RET |
| |
|