| | |
| | |
| | |
| |
|
| | #include "go_asm.h" |
| | #include "go_tls.h" |
| | #include "funcdata.h" |
| | #include "textflag.h" |
| |
|
| | |
| | |
| | |
| | |
| | TEXT _rt0_arm(SB),NOSPLIT|NOFRAME,$0 |
| | MOVW (R13), R0 |
| | MOVW $4(R13), R1 |
| | B runtime路rt0_go(SB) |
| |
|
| | |
| | |
| | |
| | TEXT main(SB),NOSPLIT|NOFRAME,$0 |
| | B runtime路rt0_go(SB) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT _rt0_arm_lib(SB),NOSPLIT,$104 |
| | |
| | |
| | MOVW R4, 12(R13) |
| | MOVW R5, 16(R13) |
| | MOVW R6, 20(R13) |
| | MOVW R7, 24(R13) |
| | MOVW R8, 28(R13) |
| | MOVW g, 32(R13) |
| | MOVW R11, 36(R13) |
| |
|
| | |
| | MOVB runtime路goarmsoftfp(SB), R11 |
| | CMP $0, R11 |
| | BNE skipfpsave |
| | MOVD F8, (40+8*0)(R13) |
| | MOVD F9, (40+8*1)(R13) |
| | MOVD F10, (40+8*2)(R13) |
| | MOVD F11, (40+8*3)(R13) |
| | MOVD F12, (40+8*4)(R13) |
| | MOVD F13, (40+8*5)(R13) |
| | MOVD F14, (40+8*6)(R13) |
| | MOVD F15, (40+8*7)(R13) |
| | skipfpsave: |
| | |
| | MOVW R0, _rt0_arm_lib_argc<>(SB) |
| | MOVW R1, _rt0_arm_lib_argv<>(SB) |
| |
|
| | MOVW $0, g |
| |
|
| | |
| | CALL runtime路libpreinit(SB) |
| |
|
| | |
| | MOVW _cgo_sys_thread_create(SB), R2 |
| | CMP $0, R2 |
| | BEQ nocgo |
| | MOVW $_rt0_arm_lib_go<>(SB), R0 |
| | MOVW $0, R1 |
| | BL (R2) |
| | B rr |
| | nocgo: |
| | MOVW $0x800000, R0 |
| | MOVW $_rt0_arm_lib_go<>(SB), R1 |
| | MOVW R0, 4(R13) |
| | MOVW R1, 8(R13) |
| | BL runtime路newosproc0(SB) |
| | rr: |
| | |
| | MOVB runtime路goarmsoftfp(SB), R11 |
| | CMP $0, R11 |
| | BNE skipfprest |
| | MOVD (40+8*0)(R13), F8 |
| | MOVD (40+8*1)(R13), F9 |
| | MOVD (40+8*2)(R13), F10 |
| | MOVD (40+8*3)(R13), F11 |
| | MOVD (40+8*4)(R13), F12 |
| | MOVD (40+8*5)(R13), F13 |
| | MOVD (40+8*6)(R13), F14 |
| | MOVD (40+8*7)(R13), F15 |
| | skipfprest: |
| | MOVW 12(R13), R4 |
| | MOVW 16(R13), R5 |
| | MOVW 20(R13), R6 |
| | MOVW 24(R13), R7 |
| | MOVW 28(R13), R8 |
| | MOVW 32(R13), g |
| | MOVW 36(R13), R11 |
| | RET |
| |
|
| | |
| | |
| | TEXT _rt0_arm_lib_go<>(SB),NOSPLIT,$8 |
| | MOVW _rt0_arm_lib_argc<>(SB), R0 |
| | MOVW _rt0_arm_lib_argv<>(SB), R1 |
| | B runtime路rt0_go(SB) |
| |
|
| | DATA _rt0_arm_lib_argc<>(SB)/4,$0 |
| | GLOBL _rt0_arm_lib_argc<>(SB),NOPTR,$4 |
| | DATA _rt0_arm_lib_argv<>(SB)/4,$0 |
| | GLOBL _rt0_arm_lib_argv<>(SB),NOPTR,$4 |
| |
|
| | |
| | |
| | TEXT runtime路rt0_go(SB),NOSPLIT|NOFRAME|TOPFRAME,$0 |
| | MOVW $0xcafebabe, R12 |
| |
|
| | |
| | |
| | SUB $64, R13 |
| | AND $~7, R13 |
| | MOVW R0, 60(R13) |
| | MOVW R1, 64(R13) |
| |
|
| | |
| | |
| | MOVW $runtime路g0(SB), g |
| | MOVW $runtime路m0(SB), R8 |
| |
|
| | |
| | MOVW g, m_g0(R8) |
| | |
| | MOVW R8, g_m(g) |
| |
|
| | |
| | |
| | MOVW $(-64*1024+104)(R13), R0 |
| | MOVW R0, g_stackguard0(g) |
| | MOVW R0, g_stackguard1(g) |
| | MOVW R0, (g_stack+stack_lo)(g) |
| | MOVW R13, (g_stack+stack_hi)(g) |
| |
|
| | BL runtime路emptyfunc(SB) |
| |
|
| | #ifdef GOOS_openbsd |
| | |
| | BL runtime路save_g(SB) |
| | #endif |
| |
|
| | BL runtime路_initcgo(SB) |
| |
|
| | |
| | MOVW (g_stack+stack_lo)(g), R0 |
| | ADD $const_stackGuard, R0 |
| | MOVW R0, g_stackguard0(g) |
| | MOVW R0, g_stackguard1(g) |
| |
|
| | BL runtime路check(SB) |
| |
|
| | |
| | MOVW 60(R13), R0 |
| | MOVW R0, 4(R13) |
| | MOVW 64(R13), R1 |
| | MOVW R1, 8(R13) |
| | BL runtime路args(SB) |
| | BL runtime路checkgoarm(SB) |
| | BL runtime路osinit(SB) |
| | BL runtime路schedinit(SB) |
| |
|
| | |
| | SUB $8, R13 |
| | MOVW $runtime路mainPC(SB), R0 |
| | MOVW R0, 4(R13) |
| | MOVW $0, R0 |
| | MOVW R0, 0(R13) |
| | BL runtime路newproc(SB) |
| | ADD $8, R13 |
| |
|
| | |
| | BL runtime路mstart(SB) |
| |
|
| | MOVW $1234, R0 |
| | MOVW $1000, R1 |
| | MOVW R0, (R1) |
| |
|
| | DATA runtime路mainPC+0(SB)/4,$runtime路main(SB) |
| | GLOBL runtime路mainPC(SB),RODATA,$4 |
| |
|
| | TEXT runtime路breakpoint(SB),NOSPLIT,$0-0 |
| | |
| | |
| | #ifdef GOOS_plan9 |
| | WORD $0xD1200070 |
| | #else |
| | WORD $0xe7f001f0 |
| | #endif |
| | RET |
| |
|
| | TEXT runtime路asminit(SB),NOSPLIT,$0-0 |
| | |
| | MOVB runtime路goarmsoftfp(SB), R11 |
| | CMP $0, R11 |
| | BNE 4(PC) |
| | WORD $0xeef1ba10 |
| | BIC $(1<<24), R11 |
| | WORD $0xeee1ba10 |
| | RET |
| |
|
| | TEXT runtime路mstart(SB),NOSPLIT|TOPFRAME,$0 |
| | BL runtime路mstart0(SB) |
| | RET |
| |
|
| | |
| | |
| | |
| |
|
| | |
| | |
| | TEXT runtime路gogo(SB),NOSPLIT|NOFRAME,$0-4 |
| | MOVW buf+0(FP), R1 |
| | MOVW gobuf_g(R1), R0 |
| | MOVW 0(R0), R2 |
| | B gogo<>(SB) |
| |
|
| | TEXT gogo<>(SB),NOSPLIT|NOFRAME,$0 |
| | BL setg<>(SB) |
| | MOVW gobuf_sp(R1), R13 |
| | MOVW gobuf_lr(R1), LR |
| | MOVW gobuf_ctxt(R1), R7 |
| | MOVW $0, R11 |
| | MOVW R11, gobuf_sp(R1) |
| | MOVW R11, gobuf_lr(R1) |
| | MOVW R11, gobuf_ctxt(R1) |
| | MOVW gobuf_pc(R1), R11 |
| | CMP R11, R11 |
| | B (R11) |
| |
|
| | |
| | |
| | |
| | |
| | TEXT runtime路mcall(SB),NOSPLIT|NOFRAME,$0-4 |
| | |
| | MOVW R13, (g_sched+gobuf_sp)(g) |
| | MOVW LR, (g_sched+gobuf_pc)(g) |
| | MOVW $0, R11 |
| | MOVW R11, (g_sched+gobuf_lr)(g) |
| |
|
| | |
| | MOVW g, R1 |
| | MOVW g_m(g), R8 |
| | MOVW m_g0(R8), R0 |
| | BL setg<>(SB) |
| | CMP g, R1 |
| | B.NE 2(PC) |
| | B runtime路badmcall(SB) |
| | MOVW fn+0(FP), R0 |
| | MOVW (g_sched+gobuf_sp)(g), R13 |
| | SUB $8, R13 |
| | MOVW R1, 4(R13) |
| | MOVW R0, R7 |
| | MOVW 0(R0), R0 |
| | BL (R0) |
| | B runtime路badmcall2(SB) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | TEXT runtime路systemstack_switch(SB),NOSPLIT,$0-0 |
| | MOVW $0, R0 |
| | BL (R0) |
| | RET |
| |
|
| | |
| | TEXT runtime路systemstack(SB),NOSPLIT,$0-4 |
| | MOVW fn+0(FP), R0 |
| | MOVW g_m(g), R1 |
| |
|
| | MOVW m_gsignal(R1), R2 |
| | CMP g, R2 |
| | B.EQ noswitch |
| |
|
| | MOVW m_g0(R1), R2 |
| | CMP g, R2 |
| | B.EQ noswitch |
| |
|
| | MOVW m_curg(R1), R3 |
| | CMP g, R3 |
| | B.EQ switch |
| |
|
| | |
| | |
| | MOVW $runtime路badsystemstack(SB), R0 |
| | BL (R0) |
| | B runtime路abort(SB) |
| |
|
| | switch: |
| | |
| | |
| | BL gosave_systemstack_switch<>(SB) |
| |
|
| | |
| | MOVW R0, R5 |
| | MOVW R2, R0 |
| | BL setg<>(SB) |
| | MOVW R5, R0 |
| | MOVW (g_sched+gobuf_sp)(R2), R13 |
| |
|
| | |
| | MOVW R0, R7 |
| | MOVW 0(R0), R0 |
| | BL (R0) |
| |
|
| | |
| | MOVW g_m(g), R1 |
| | MOVW m_curg(R1), R0 |
| | BL setg<>(SB) |
| | MOVW (g_sched+gobuf_sp)(g), R13 |
| | MOVW $0, R3 |
| | MOVW R3, (g_sched+gobuf_sp)(g) |
| | RET |
| |
|
| | noswitch: |
| | |
| | |
| | MOVW R0, R7 |
| | MOVW 0(R0), R0 |
| | MOVW.P 4(R13), R14 |
| | B (R0) |
| |
|
| | |
| | TEXT runtime路switchToCrashStack0(SB), NOSPLIT, $0-4 |
| | MOVW fn+0(FP), R7 |
| | MOVW g_m(g), R1 |
| |
|
| | |
| | MOVW $runtime路gcrash(SB), R0 |
| | BL setg<>(SB) |
| | MOVW R1, g_m(g) |
| | MOVW g, m_g0(R1) |
| |
|
| | |
| | MOVW (g_stack+stack_hi)(g), R1 |
| | SUB $(4*8), R1 |
| | MOVW R1, R13 |
| |
|
| | |
| | MOVW 0(R7), R0 |
| | BL (R0) |
| |
|
| | |
| | CALL runtime路abort(SB) |
| | UNDEF |
| |
|
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT runtime路morestack(SB),NOSPLIT|NOFRAME,$0-0 |
| | |
| | MOVW g_m(g), R8 |
| | MOVW m_g0(R8), R4 |
| |
|
| | |
| | |
| | MOVW R13, (g_sched+gobuf_sp)(g) |
| | MOVW LR, (g_sched+gobuf_pc)(g) |
| | MOVW R3, (g_sched+gobuf_lr)(g) |
| | MOVW R7, (g_sched+gobuf_ctxt)(g) |
| |
|
| | CMP g, R4 |
| | BNE 3(PC) |
| | BL runtime路badmorestackg0(SB) |
| | B runtime路abort(SB) |
| |
|
| | |
| | MOVW m_gsignal(R8), R4 |
| | CMP g, R4 |
| | BNE 3(PC) |
| | BL runtime路badmorestackgsignal(SB) |
| | B runtime路abort(SB) |
| |
|
| | |
| | |
| | MOVW R3, (m_morebuf+gobuf_pc)(R8) |
| | MOVW R13, (m_morebuf+gobuf_sp)(R8) |
| | MOVW g, (m_morebuf+gobuf_g)(R8) |
| |
|
| | |
| | MOVW m_g0(R8), R0 |
| | BL setg<>(SB) |
| | MOVW (g_sched+gobuf_sp)(g), R13 |
| | MOVW $0, R0 |
| | MOVW.W R0, -4(R13) |
| | BL runtime路newstack(SB) |
| |
|
| | |
| | |
| | RET |
| |
|
| | TEXT runtime路morestack_noctxt(SB),NOSPLIT|NOFRAME,$0-0 |
| | |
| | |
| | |
| | |
| | |
| | MOVW R13, R13 |
| |
|
| | MOVW $0, R7 |
| | B runtime路morestack(SB) |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | #define DISPATCH(NAME,MAXSIZE) \ |
| | CMP $MAXSIZE, R0; \ |
| | B.HI 3(PC); \ |
| | MOVW $NAME(SB), R1; \ |
| | B (R1) |
| |
|
| | TEXT 路reflectcall(SB),NOSPLIT|NOFRAME,$0-28 |
| | MOVW frameSize+20(FP), R0 |
| | 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) |
| | MOVW $runtime路badreflectcall(SB), R1 |
| | B (R1) |
| |
|
| | #define CALLFN(NAME,MAXSIZE) \ |
| | TEXT NAME(SB), WRAPPER, $MAXSIZE-28; \ |
| | NO_LOCAL_POINTERS; \ |
| | \ |
| | MOVW stackArgs+8(FP), R0; \ |
| | MOVW stackArgsSize+12(FP), R2; \ |
| | ADD $4, R13, R1; \ |
| | CMP $0, R2; \ |
| | B.EQ 5(PC); \ |
| | MOVBU.P 1(R0), R5; \ |
| | MOVBU.P R5, 1(R1); \ |
| | SUB $1, R2, R2; \ |
| | B -5(PC); \ |
| | \ |
| | MOVW f+4(FP), R7; \ |
| | MOVW (R7), R0; \ |
| | PCDATA $PCDATA_StackMapIndex, $0; \ |
| | BL (R0); \ |
| | \ |
| | MOVW stackArgsType+0(FP), R4; \ |
| | MOVW stackArgs+8(FP), R0; \ |
| | MOVW stackArgsSize+12(FP), R2; \ |
| | MOVW stackArgsRetOffset+16(FP), R3; \ |
| | ADD $4, R13, R1; \ |
| | ADD R3, R1; \ |
| | ADD R3, R0; \ |
| | SUB R3, R2; \ |
| | BL callRet<>(SB); \ |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | TEXT callRet<>(SB), NOSPLIT, $20-0 |
| | MOVW R4, 4(R13) |
| | MOVW R0, 8(R13) |
| | MOVW R1, 12(R13) |
| | MOVW R2, 16(R13) |
| | MOVW $0, R7 |
| | MOVW R7, 20(R13) |
| | 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 gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0 |
| | MOVW $runtime路systemstack_switch(SB), R11 |
| | ADD $4, R11 |
| | MOVW R11, (g_sched+gobuf_pc)(g) |
| | MOVW R13, (g_sched+gobuf_sp)(g) |
| | MOVW $0, R11 |
| | MOVW R11, (g_sched+gobuf_lr)(g) |
| | |
| | MOVW (g_sched+gobuf_ctxt)(g), R11 |
| | TST R11, R11 |
| | B.EQ 2(PC) |
| | BL runtime路abort(SB) |
| | RET |
| |
|
| | |
| | |
| | |
| | TEXT 路asmcgocall_no_g(SB),NOSPLIT,$0-8 |
| | MOVW fn+0(FP), R1 |
| | MOVW arg+4(FP), R0 |
| | MOVW R13, R2 |
| | SUB $32, R13 |
| | BIC $0x7, R13 |
| | MOVW R2, 8(R13) |
| | BL (R1) |
| | MOVW 8(R13), R2 |
| | MOVW R2, R13 |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | TEXT 路asmcgocall(SB),NOSPLIT,$0-12 |
| | MOVW fn+0(FP), R1 |
| | MOVW arg+4(FP), R0 |
| |
|
| | MOVW R13, R2 |
| | CMP $0, g |
| | BEQ nosave |
| | MOVW g, R4 |
| |
|
| | |
| | |
| | |
| | |
| | MOVW g_m(g), R8 |
| | MOVW m_gsignal(R8), R3 |
| | CMP R3, g |
| | BEQ nosave |
| | MOVW m_g0(R8), R3 |
| | CMP R3, g |
| | BEQ nosave |
| | BL gosave_systemstack_switch<>(SB) |
| | MOVW R0, R5 |
| | MOVW R3, R0 |
| | BL setg<>(SB) |
| | MOVW R5, R0 |
| | MOVW (g_sched+gobuf_sp)(g), R13 |
| |
|
| | |
| | SUB $24, R13 |
| | BIC $0x7, R13 |
| | MOVW R4, 20(R13) |
| | MOVW (g_stack+stack_hi)(R4), R4 |
| | SUB R2, R4 |
| | MOVW R4, 16(R13) |
| | BL (R1) |
| |
|
| | |
| | MOVW R0, R5 |
| | MOVW 20(R13), R0 |
| | BL setg<>(SB) |
| | MOVW (g_stack+stack_hi)(g), R1 |
| | MOVW 16(R13), R2 |
| | SUB R2, R1 |
| | MOVW R5, R0 |
| | MOVW R1, R13 |
| |
|
| | MOVW R0, ret+8(FP) |
| | RET |
| |
|
| | nosave: |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | SUB $24, R13 |
| | BIC $0x7, R13 |
| | |
| | MOVW $0, R4 |
| | MOVW R4, 20(R13) |
| | MOVW R2, 16(R13) |
| | BL (R1) |
| | |
| | MOVW 16(R13), R2 |
| | MOVW R2, R13 |
| | MOVW R0, ret+8(FP) |
| | RET |
| |
|
| | |
| | |
| | TEXT 路cgocallback(SB),NOSPLIT,$12-12 |
| | NO_LOCAL_POINTERS |
| |
|
| | |
| | |
| | MOVW fn+0(FP), R1 |
| | CMP $0, R1 |
| | B.NE loadg |
| | |
| | MOVW frame+4(FP), g |
| | B dropm |
| |
|
| | loadg: |
| | |
| | #ifdef GOOS_openbsd |
| | BL runtime路load_g(SB) |
| | #else |
| | MOVB runtime路iscgo(SB), R0 |
| | CMP $0, R0 |
| | BL.NE runtime路load_g(SB) |
| | #endif |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | CMP $0, g |
| | B.EQ needm |
| |
|
| | MOVW g_m(g), R8 |
| | MOVW R8, savedm-4(SP) |
| | B havem |
| |
|
| | needm: |
| | MOVW g, savedm-4(SP) |
| | MOVW $runtime路needAndBindM(SB), R0 |
| | BL (R0) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | MOVW g_m(g), R8 |
| | MOVW m_g0(R8), R3 |
| | MOVW R13, (g_sched+gobuf_sp)(R3) |
| |
|
| | havem: |
| | |
| | |
| | |
| | |
| | |
| | MOVW m_g0(R8), R3 |
| | MOVW (g_sched+gobuf_sp)(R3), R4 |
| | MOVW R4, savedsp-12(SP) |
| | MOVW R13, (g_sched+gobuf_sp)(R3) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | MOVW m_curg(R8), R0 |
| | BL setg<>(SB) |
| | MOVW (g_sched+gobuf_sp)(g), R4 |
| | MOVW (g_sched+gobuf_pc)(g), R5 |
| | MOVW R5, -(12+4)(R4) |
| | |
| | MOVW fn+0(FP), R1 |
| | MOVW frame+4(FP), R2 |
| | MOVW ctxt+8(FP), R3 |
| | MOVW $-(12+4)(R4), R13 |
| | MOVW R1, 4(R13) |
| | MOVW R2, 8(R13) |
| | MOVW R3, 12(R13) |
| | BL runtime路cgocallbackg(SB) |
| |
|
| | |
| | MOVW 0(R13), R5 |
| | MOVW R5, (g_sched+gobuf_pc)(g) |
| | MOVW $(12+4)(R13), R4 |
| | MOVW R4, (g_sched+gobuf_sp)(g) |
| |
|
| | |
| | |
| | |
| | MOVW g_m(g), R8 |
| | MOVW m_g0(R8), R0 |
| | BL setg<>(SB) |
| | MOVW (g_sched+gobuf_sp)(g), R13 |
| | MOVW savedsp-12(SP), R4 |
| | MOVW R4, (g_sched+gobuf_sp)(g) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | MOVW savedm-4(SP), R6 |
| | CMP $0, R6 |
| | B.NE done |
| |
|
| | |
| | MOVW _cgo_pthread_key_created(SB), R6 |
| | |
| | CMP $0, R6 |
| | B.EQ dropm |
| | MOVW (R6), R6 |
| | CMP $0, R6 |
| | B.NE done |
| |
|
| | dropm: |
| | MOVW $runtime路dropm(SB), R0 |
| | BL (R0) |
| |
|
| | done: |
| | |
| | RET |
| |
|
| | |
| | TEXT runtime路setg(SB),NOSPLIT|NOFRAME,$0-4 |
| | MOVW gg+0(FP), R0 |
| | B setg<>(SB) |
| |
|
| | TEXT setg<>(SB),NOSPLIT|NOFRAME,$0-0 |
| | MOVW R0, g |
| |
|
| | |
| | #ifdef GOOS_openbsd |
| | B runtime路save_g(SB) |
| | #else |
| | MOVB runtime路iscgo(SB), R0 |
| | CMP $0, R0 |
| | B.EQ 2(PC) |
| | B runtime路save_g(SB) |
| |
|
| | MOVW g, R0 |
| | RET |
| | #endif |
| |
|
| | TEXT runtime路emptyfunc(SB),0,$0-0 |
| | RET |
| |
|
| | TEXT runtime路abort(SB),NOSPLIT|NOFRAME,$0-0 |
| | MOVW $0, R0 |
| | MOVW (R0), R1 |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT runtime路armPublicationBarrier(SB),NOSPLIT|NOFRAME,$0-0 |
| | MOVB runtime路goarm(SB), R11 |
| | CMP $7, R11 |
| | BLT 2(PC) |
| | DMB MB_ST |
| | RET |
| |
|
| | |
| | TEXT runtime路memhash(SB),NOSPLIT|NOFRAME,$0-16 |
| | JMP runtime路memhashFallback(SB) |
| | TEXT runtime路strhash(SB),NOSPLIT|NOFRAME,$0-12 |
| | JMP runtime路strhashFallback(SB) |
| | TEXT runtime路memhash32(SB),NOSPLIT|NOFRAME,$0-12 |
| | JMP runtime路memhash32Fallback(SB) |
| | TEXT runtime路memhash64(SB),NOSPLIT|NOFRAME,$0-12 |
| | JMP runtime路memhash64Fallback(SB) |
| |
|
| | TEXT runtime路procyieldAsm(SB),NOSPLIT|NOFRAME,$0 |
| | MOVW cycles+0(FP), R1 |
| | MOVW $0, R0 |
| | yieldloop: |
| | WORD $0xe320f001 |
| | CMP R0, R1 |
| | B.NE 2(PC) |
| | RET |
| | SUB $1, R1 |
| | B yieldloop |
| |
|
| | |
| | |
| | TEXT _cgo_topofstack(SB),NOSPLIT,$8 |
| | |
| | |
| | MOVW R11, saveR11-4(SP) |
| | MOVW g, saveG-8(SP) |
| |
|
| | BL runtime路load_g(SB) |
| | MOVW g_m(g), R0 |
| | MOVW m_curg(R0), R0 |
| | MOVW (g_stack+stack_hi)(R0), R0 |
| |
|
| | MOVW saveG-8(SP), g |
| | MOVW saveR11-4(SP), R11 |
| | RET |
| |
|
| | |
| | |
| | TEXT runtime路goexit(SB),NOSPLIT|NOFRAME|TOPFRAME,$0-0 |
| | MOVW R0, R0 |
| | BL runtime路goexit1(SB) |
| | |
| | MOVW R0, R0 |
| |
|
| | |
| | TEXT runtime路usplit(SB),NOSPLIT,$0-12 |
| | MOVW x+0(FP), R0 |
| | CALL runtime路usplitR0(SB) |
| | MOVW R0, q+4(FP) |
| | MOVW R1, r+8(FP) |
| | RET |
| |
|
| | |
| | TEXT runtime路usplitR0(SB),NOSPLIT,$0 |
| | |
| | |
| | MOVW R0, R3 |
| | MOVW $1125899907, R1 |
| | MULLU R1, R0, (R0, R1) |
| | MOVW R0>>18, R0 |
| | MOVW $1000000, R1 |
| | MULU R0, R1 |
| | SUB R1, R3, R1 |
| | RET |
| |
|
| | |
| | TEXT runtime路addmoduledata(SB),NOSPLIT,$0-0 |
| | MOVW R9, saver9-4(SP) |
| | MOVW R11, saver11-8(SP) |
| | MOVW runtime路lastmoduledatap(SB), R1 |
| | MOVW R0, moduledata_next(R1) |
| | MOVW R0, runtime路lastmoduledatap(SB) |
| | MOVW saver11-8(SP), R11 |
| | MOVW saver9-4(SP), R9 |
| | RET |
| |
|
| | TEXT 路checkASM(SB),NOSPLIT,$0-1 |
| | MOVW $1, R3 |
| | MOVB R3, ret+0(FP) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT gcWriteBarrier<>(SB),NOSPLIT|NOFRAME,$0 |
| | |
| | MOVM.DB.W [R0,R1], (R13) |
| | retry: |
| | MOVW g_m(g), R0 |
| | MOVW m_p(R0), R0 |
| | MOVW (p_wbBuf+wbBuf_next)(R0), R1 |
| | MOVW (p_wbBuf+wbBuf_end)(R0), R11 |
| | |
| | ADD R8, R1 |
| | |
| | CMP R11, R1 |
| | BHI flush |
| | |
| | MOVW R1, (p_wbBuf+wbBuf_next)(R0) |
| | |
| | SUB R8, R1, R8 |
| | |
| | MOVM.IA.W (R13), [R0,R1] |
| | RET |
| |
|
| | flush: |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | MOVM.DB.W [R2-R9,R12], (R13) |
| | |
| | |
| | MOVM.DB.W [R14], (R13) |
| |
|
| | CALL runtime路wbBufFlush(SB) |
| |
|
| | MOVM.IA.W (R13), [R14] |
| | MOVM.IA.W (R13), [R2-R9,R12] |
| | JMP retry |
| |
|
| | TEXT runtime路gcWriteBarrier1<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVW $4, R8 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier2<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVW $8, R8 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier3<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVW $12, R8 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier4<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVW $16, R8 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier5<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVW $20, R8 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier6<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVW $24, R8 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier7<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVW $28, R8 |
| | JMP gcWriteBarrier<>(SB) |
| | TEXT runtime路gcWriteBarrier8<ABIInternal>(SB),NOSPLIT,$0 |
| | MOVW $32, R8 |
| | JMP gcWriteBarrier<>(SB) |
| |
|
| | TEXT runtime路panicBounds<ABIInternal>(SB),NOSPLIT,$72-0 |
| | NO_LOCAL_POINTERS |
| | |
| | |
| | MOVW R0, 12(R13) |
| | MOVW R1, 16(R13) |
| | MOVW R2, 20(R13) |
| | MOVW R3, 24(R13) |
| | MOVW R4, 28(R13) |
| | MOVW R5, 32(R13) |
| | MOVW R6, 36(R13) |
| | MOVW R7, 40(R13) |
| | MOVW R8, 44(R13) |
| | MOVW R9, 48(R13) |
| | |
| | |
| | MOVW R12, 60(R13) |
| | |
| | MOVW R14, 68(R13) |
| | |
| |
|
| | MOVW R14, 4(R13) |
| | ADD $12, R13, R0 |
| | MOVW R0, 8(R13) |
| | CALL runtime路panicBounds32<ABIInternal>(SB) |
| | RET |
| |
|
| | TEXT runtime路panicExtend<ABIInternal>(SB),NOSPLIT,$72-0 |
| | NO_LOCAL_POINTERS |
| | |
| | |
| | MOVW R0, 12(R13) |
| | MOVW R1, 16(R13) |
| | MOVW R2, 20(R13) |
| | MOVW R3, 24(R13) |
| | MOVW R4, 28(R13) |
| | MOVW R5, 32(R13) |
| | MOVW R6, 36(R13) |
| | MOVW R7, 40(R13) |
| | MOVW R8, 44(R13) |
| | MOVW R9, 48(R13) |
| | |
| | |
| | MOVW R12, 60(R13) |
| | |
| | |
| | |
| |
|
| | MOVW R14, 4(R13) |
| | ADD $12, R13, R0 |
| | MOVW R0, 8(R13) |
| | CALL runtime路panicBounds32X<ABIInternal>(SB) |
| | RET |
| |
|