Skip to content

Commit 979e62a

Browse files
committed
runtime: add tstart_sysvicall
Fixes golang#15. Change-Id: Ifd91b46b96ba57cb1b23d4caf3257be2a2c49cd5
1 parent 012dc42 commit 979e62a

File tree

2 files changed

+34
-10
lines changed

2 files changed

+34
-10
lines changed

src/runtime/asm_sparc64.s

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,21 @@ TEXT setg_gcc<>(SB),NOSPLIT,$16
699699
MOVD savedRT1-8(SP), RT1
700700
RET
701701

702+
// check that SP is in range [g->stack.lo, g->stack.hi)
703+
TEXT runtime·stackcheck(SB), NOSPLIT, $0
704+
MOVD BSP, R28
705+
MOVD (g_stack+stack_hi)(g), R27
706+
CMP R28, R27
707+
BGD 2(PC);
708+
UNDEF
709+
710+
MOVD (g_stack+stack_lo)(g), R27
711+
CMP R27, R28
712+
BGD 2(PC);
713+
UNDEF
714+
715+
RET
716+
702717
TEXT runtime·getcallerpc(SB),NOSPLIT,$16-16
703718
MOVD FIXED_FRAME+8*15(BFP), R25 // LR saved by caller
704719
MOVD runtime·stackBarrierPC(SB), R28

src/runtime/sys_solaris_sparc64.s

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -112,16 +112,25 @@ skiperrno2:
112112

113113
// uint32 tstart_sysvicall(M *newm);
114114
TEXT runtime·tstart_sysvicall(SB),NOSPLIT,$0
115-
// TODO(aram):
116-
MOVD $74, R27
117-
ADD $'!', R27, R27
118-
MOVB R27, dbgbuf(SB)
119-
MOVD $2, R8
120-
MOVD $dbgbuf(SB), R9
121-
MOVD $2, R10
122-
MOVD $libc_write(SB), R27
123-
CALL R27
124-
UNDEF
115+
// I0 contains first arg newm
116+
MOVD m_g0(I0), g // g
117+
MOVD I0, g_m(g)
118+
119+
CALL runtime·save_g(SB)
120+
121+
// Layout new m scheduler stack on os stack.
122+
MOVD BSP, R27
123+
MOVD R27, (g_stack+stack_hi)(g)
124+
SUB $(0x100000), R27 // stack size
125+
MOVD R27, (g_stack+stack_lo)(g)
126+
ADD $const__StackGuard, R27
127+
MOVD R27, g_stackguard0(g)
128+
MOVD R27, g_stackguard1(g)
129+
130+
CALL runtime·stackcheck(SB)
131+
CALL runtime·mstart(SB)
132+
133+
MOVW ZR, ret+8(FP)
125134
RET
126135

127136
// Careful, this is called by __sighndlr, a libc function. We must preserve

0 commit comments

Comments
 (0)