mirror of
https://github.com/golang/go
synced 2024-11-23 09:20:05 -07:00
runtime: fix nacl/386 build
I changed all the NACL_SYSJMP to NACL_SYSCALL in an earlier CL, but I missed the fact that NACL_SYSCALL will push another return PC on the stack, so that the arguments will no longer be in the right place. Since we have to make our own call, we also have to copy the arguments. Do that. Fixes nacl/386 build. TBR=minux CC=golang-codereviews https://golang.org/cl/135050044
This commit is contained in:
parent
948bb9150e
commit
add7b22010
@ -9,25 +9,43 @@
|
||||
#define NACL_SYSCALL(code) \
|
||||
MOVL $(0x10000 + ((code)<<5)), AX; CALL AX
|
||||
|
||||
TEXT runtime·exit(SB),NOSPLIT,$0
|
||||
TEXT runtime·exit(SB),NOSPLIT,$4
|
||||
MOVL code+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_exit)
|
||||
JMP 0(PC)
|
||||
|
||||
TEXT runtime·exit1(SB),NOSPLIT,$0
|
||||
TEXT runtime·exit1(SB),NOSPLIT,$4
|
||||
MOVL code+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_thread_exit)
|
||||
RET
|
||||
|
||||
TEXT runtime·open(SB),NOSPLIT,$0
|
||||
TEXT runtime·open(SB),NOSPLIT,$12
|
||||
MOVL name+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL mode+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
MOVL perm+8(FP), AX
|
||||
MOVL AX, 8(SP)
|
||||
NACL_SYSCALL(SYS_open)
|
||||
MOVL AX, ret+12(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·close(SB),NOSPLIT,$0
|
||||
TEXT runtime·close(SB),NOSPLIT,$4
|
||||
MOVL fd+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_close)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·read(SB),NOSPLIT,$0
|
||||
TEXT runtime·read(SB),NOSPLIT,$12
|
||||
MOVL fd+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL p+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
MOVL n+8(FP), AX
|
||||
MOVL AX, 8(SP)
|
||||
NACL_SYSCALL(SYS_read)
|
||||
MOVL AX, ret+12(FP)
|
||||
RET
|
||||
@ -43,82 +61,134 @@ TEXT syscall·naclWrite(SB), NOSPLIT, $16-16
|
||||
MOVL AX, ret+16(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·write(SB),NOSPLIT,$0
|
||||
TEXT runtime·write(SB),NOSPLIT,$12
|
||||
MOVL fd+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL p+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
MOVL n+8(FP), AX
|
||||
MOVL AX, 8(SP)
|
||||
NACL_SYSCALL(SYS_write)
|
||||
MOVL AX, ret+12(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_exception_stack(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_exception_stack(SB),NOSPLIT,$8
|
||||
MOVL p+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL size+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
NACL_SYSCALL(SYS_exception_stack)
|
||||
MOVL AX, ret+8(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_exception_handler(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_exception_handler(SB),NOSPLIT,$8
|
||||
MOVL fn+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL arg+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
NACL_SYSCALL(SYS_exception_handler)
|
||||
MOVL AX, ret+8(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_sem_create(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_sem_create(SB),NOSPLIT,$4
|
||||
MOVL flag+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_sem_create)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_sem_wait(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_sem_wait(SB),NOSPLIT,$4
|
||||
MOVL sem+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_sem_wait)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_sem_post(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_sem_post(SB),NOSPLIT,$4
|
||||
MOVL sem+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_sem_post)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_mutex_create(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_mutex_create(SB),NOSPLIT,$4
|
||||
MOVL flag+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_mutex_create)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_mutex_lock(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_mutex_lock(SB),NOSPLIT,$4
|
||||
MOVL mutex+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_mutex_lock)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_mutex_trylock(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_mutex_trylock(SB),NOSPLIT,$4
|
||||
MOVL mutex+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_mutex_trylock)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_mutex_unlock(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_mutex_unlock(SB),NOSPLIT,$4
|
||||
MOVL mutex+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_mutex_unlock)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_cond_create(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_cond_create(SB),NOSPLIT,$4
|
||||
MOVL flag+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_cond_create)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_cond_wait(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_cond_wait(SB),NOSPLIT,$8
|
||||
MOVL cond+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL n+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
NACL_SYSCALL(SYS_cond_wait)
|
||||
MOVL AX, ret+8(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_cond_signal(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_cond_signal(SB),NOSPLIT,$4
|
||||
MOVL cond+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_cond_signal)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_cond_broadcast(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_cond_broadcast(SB),NOSPLIT,$4
|
||||
MOVL cond+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
NACL_SYSCALL(SYS_cond_broadcast)
|
||||
MOVL AX, ret+4(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_cond_timed_wait_abs(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_cond_timed_wait_abs(SB),NOSPLIT,$12
|
||||
MOVL cond+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL lock+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
MOVL ts+8(FP), AX
|
||||
MOVL AX, 8(SP)
|
||||
NACL_SYSCALL(SYS_cond_timed_wait_abs)
|
||||
MOVL AX, ret+12(FP)
|
||||
RET
|
||||
|
||||
TEXT runtime·nacl_thread_create(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_thread_create(SB),NOSPLIT,$16
|
||||
MOVL fn+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL stk+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
MOVL tls+8(FP), AX
|
||||
MOVL AX, 8(SP)
|
||||
MOVL xx+12(FP), AX
|
||||
MOVL AX, 12(SP)
|
||||
NACL_SYSCALL(SYS_thread_create)
|
||||
MOVL AX, ret+16(FP)
|
||||
RET
|
||||
@ -126,7 +196,11 @@ TEXT runtime·nacl_thread_create(SB),NOSPLIT,$0
|
||||
TEXT runtime·mstart_nacl(SB),NOSPLIT,$0
|
||||
JMP runtime·mstart(SB)
|
||||
|
||||
TEXT runtime·nacl_nanosleep(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_nanosleep(SB),NOSPLIT,$8
|
||||
MOVL ts+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL extra+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
NACL_SYSCALL(SYS_nanosleep)
|
||||
MOVL AX, ret+8(FP)
|
||||
RET
|
||||
@ -173,7 +247,11 @@ TEXT time·now(SB),NOSPLIT,$20
|
||||
TEXT syscall·now(SB),NOSPLIT,$0
|
||||
JMP time·now(SB)
|
||||
|
||||
TEXT runtime·nacl_clock_gettime(SB),NOSPLIT,$0
|
||||
TEXT runtime·nacl_clock_gettime(SB),NOSPLIT,$8
|
||||
MOVL arg1+0(FP), AX
|
||||
MOVL AX, 0(SP)
|
||||
MOVL arg2+4(FP), AX
|
||||
MOVL AX, 4(SP)
|
||||
NACL_SYSCALL(SYS_clock_gettime)
|
||||
MOVL AX, ret+8(FP)
|
||||
RET
|
||||
|
Loading…
Reference in New Issue
Block a user