diff options
Diffstat (limited to 'src/pkg/runtime/nacl/386/sys.s')
-rw-r--r-- | src/pkg/runtime/nacl/386/sys.s | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/src/pkg/runtime/nacl/386/sys.s b/src/pkg/runtime/nacl/386/sys.s deleted file mode 100644 index e855351b9..000000000 --- a/src/pkg/runtime/nacl/386/sys.s +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// -// System calls and other sys.stuff for 386, Linux -// - -#include "386/asm.h" - -// http://code.google.com/p/nativeclient/source/browse/trunk/src/native_client/src/trusted/service_runtime/include/bits/nacl_syscalls.h -#define SYS_exit 30 -#define SYS_mmap 21 -#define SYS_thread_create 80 -#define SYS_thread_exit 81 -#define SYS_tls_init 82 -#define SYS_write 13 -#define SYS_close 11 -#define SYS_mutex_create 70 -#define SYS_mutex_lock 71 -#define SYS_mutex_unlock 73 -#define SYS_gettimeofday 40 -#define SYS_dyncode_copy 104 - - -#define SYSCALL(x) $(0x10000+SYS_/**/x * 32) - -TEXT exit(SB),7,$4 - MOVL code+0(FP), AX - MOVL AX, 0(SP) - CALL SYSCALL(exit) - INT $3 // not reached - RET - -TEXT exit1(SB),7,$4 - MOVL code+0(FP), AX - MOVL AX, 0(SP) - CALL SYSCALL(thread_exit) - INT $3 // not reached - RET - -TEXT write(SB),7,$0 - JMP SYSCALL(write) - -TEXT close(SB),7,$0 - JMP SYSCALL(close) - -TEXT mutex_create(SB),7,$0 - JMP SYSCALL(mutex_create) - -TEXT mutex_lock(SB),7,$0 - JMP SYSCALL(mutex_lock) - -TEXT mutex_unlock(SB),7,$0 - JMP SYSCALL(mutex_unlock) - -TEXT thread_create(SB),7,$0 - JMP SYSCALL(thread_create) - -TEXT dyncode_copy(SB),7,$0 - JMP SYSCALL(dyncode_copy) - -// For Native Client: a simple no-op function. -// Inserting a call to this no-op is a simple way -// to trigger an alignment. -TEXT ·naclnop(SB),7,$0 - RET - -TEXT ·mmap(SB),7,$24 - MOVL a1+0(FP), BX - MOVL a2+4(FP), CX // round up to 64 kB boundary; silences nacl warning - ADDL $(64*1024-1), CX - ANDL $~(64*1024-1), CX - MOVL a3+8(FP), DX - MOVL a4+12(FP), SI - MOVL a5+16(FP), DI - MOVL a6+20(FP), BP - MOVL BX, 0(SP) - MOVL CX, 4(SP) - MOVL DX, 8(SP) - MOVL SI, 12(SP) - MOVL DI, 16(SP) - MOVL BP, 20(SP) - CALL SYSCALL(mmap) - CMPL AX, $0xfffff001 - JLS 6(PC) - MOVL $1, 0(SP) - MOVL $mmap_failed(SB), 4(SP) - MOVL $12, 8(SP) // "mmap failed\n" - CALL SYSCALL(write) - INT $3 - RET - -TEXT gettime(SB),7,$32 - LEAL 8(SP), BX - MOVL BX, 0(SP) - MOVL $0, 4(SP) - CALL SYSCALL(gettimeofday) - - MOVL 8(SP), BX // sec - MOVL sec+0(FP), DI - MOVL BX, (DI) - MOVL $0, 4(DI) // zero extend 32 -> 64 bits - - MOVL 12(SP), BX // usec - MOVL usec+4(FP), DI - MOVL BX, (DI) - RET - -// setldt(int entry, int address, int limit) -TEXT setldt(SB),7,$32 - // entry is ignored - nacl tells us the - // segment selector to use and stores it in GS. - MOVL address+4(FP), BX - MOVL limit+8(FP), CX - MOVL BX, 0(SP) - MOVL CX, 4(SP) - CALL SYSCALL(tls_init) - CMPL AX, $0xfffff001 - JLS 6(PC) - MOVL $1, 0(SP) - MOVL $tls_init_failed(SB), 4(SP) - MOVL $16, 8(SP) // "tls_init failed\n" - CALL SYSCALL(write) - INT $3 - RET - -// There's no good way (yet?) to get stack traces out of a -// broken NaCl process, so if something goes wrong, -// print an error string before dying. - -DATA mmap_failed(SB)/8, $"mmap fai" -DATA mmap_failed+8(SB)/4, $"led\n" -GLOBL mmap_failed(SB), $12 - -DATA tls_init_failed(SB)/8, $"tls_init" -DATA tls_init_failed+8(SB)/8, $" failed\n" -GLOBL tls_init_failed(SB), $16 |