OLD | NEW |
1 // Copyright 2013 The Go Authors. All rights reserved. | 1 // Copyright 2013 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 #include "zasm_GOOS_GOARCH.h" | 5 #include "zasm_GOOS_GOARCH.h" |
6 #include "../../cmd/ld/textflag.h" | 6 #include "../../cmd/ld/textflag.h" |
7 #include "syscall_nacl.h" | 7 #include "syscall_nacl.h" |
8 | 8 |
9 #define NACL_SYSCALL(code) \ | 9 #define NACL_SYSCALL(code) \ |
10 MOVL $(0x10000 + ((code)<<5)), AX; CALL AX | 10 MOVL $(0x10000 + ((code)<<5)), AX; CALL AX |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 TEXT runtime·mstart_nacl(SB),NOSPLIT,$0 | 89 TEXT runtime·mstart_nacl(SB),NOSPLIT,$0 |
90 JMP runtime·mstart(SB) | 90 JMP runtime·mstart(SB) |
91 | 91 |
92 TEXT runtime·nacl_nanosleep(SB),NOSPLIT,$0 | 92 TEXT runtime·nacl_nanosleep(SB),NOSPLIT,$0 |
93 NACL_SYSJMP(SYS_nanosleep) | 93 NACL_SYSJMP(SYS_nanosleep) |
94 | 94 |
95 TEXT runtime·osyield(SB),NOSPLIT,$0 | 95 TEXT runtime·osyield(SB),NOSPLIT,$0 |
96 NACL_SYSJMP(SYS_sched_yield) | 96 NACL_SYSJMP(SYS_sched_yield) |
97 | 97 |
98 TEXT runtime·mmap(SB),NOSPLIT,$32 | 98 TEXT runtime·mmap(SB),NOSPLIT,$32 |
99 » MOVL» arg1+0(FP), AX | 99 » MOVL» addr+0(FP), AX |
100 MOVL AX, 0(SP) | 100 MOVL AX, 0(SP) |
101 » MOVL» arg2+4(FP), AX | 101 » MOVL» n+4(FP), AX |
102 MOVL AX, 4(SP) | 102 MOVL AX, 4(SP) |
103 » MOVL» arg3+8(FP), AX | 103 » MOVL» prot+8(FP), AX |
104 MOVL AX, 8(SP) | 104 MOVL AX, 8(SP) |
105 » MOVL» arg4+12(FP), AX | 105 » MOVL» flags+12(FP), AX |
106 MOVL AX, 12(SP) | 106 MOVL AX, 12(SP) |
107 » MOVL» arg5+16(FP), AX | 107 » MOVL» fd+16(FP), AX |
108 MOVL AX, 16(SP) | 108 MOVL AX, 16(SP) |
109 » MOVL» arg6+20(FP), AX | 109 » MOVL» off+20(FP), AX |
110 MOVL AX, 24(SP) | 110 MOVL AX, 24(SP) |
111 MOVL $0, 28(SP) | 111 MOVL $0, 28(SP) |
112 LEAL 24(SP), AX | 112 LEAL 24(SP), AX |
113 MOVL AX, 20(SP) | 113 MOVL AX, 20(SP) |
114 NACL_SYSCALL(SYS_mmap) | 114 NACL_SYSCALL(SYS_mmap) |
| 115 MOVL AX, ret+24(FP) |
115 RET | 116 RET |
116 | 117 |
117 TEXT time·now(SB),NOSPLIT,$20 | 118 TEXT time·now(SB),NOSPLIT,$20 |
118 MOVL $0, 0(SP) // real time clock | 119 MOVL $0, 0(SP) // real time clock |
119 LEAL 8(SP), AX | 120 LEAL 8(SP), AX |
120 MOVL AX, 4(SP) // timespec | 121 MOVL AX, 4(SP) // timespec |
121 NACL_SYSCALL(SYS_clock_gettime) | 122 NACL_SYSCALL(SYS_clock_gettime) |
122 MOVL 8(SP), AX // low 32 sec | 123 MOVL 8(SP), AX // low 32 sec |
123 MOVL 12(SP), CX // high 32 sec | 124 MOVL 12(SP), CX // high 32 sec |
124 MOVL 16(SP), BX // nsec | 125 MOVL 16(SP), BX // nsec |
(...skipping 18 matching lines...) Expand all Loading... |
143 MOVL 8(SP), AX // low 32 sec | 144 MOVL 8(SP), AX // low 32 sec |
144 MOVL 16(SP), BX // nsec | 145 MOVL 16(SP), BX // nsec |
145 | 146 |
146 // sec is in AX, nsec in BX | 147 // sec is in AX, nsec in BX |
147 // convert to DX:AX nsec | 148 // convert to DX:AX nsec |
148 MOVL $1000000000, CX | 149 MOVL $1000000000, CX |
149 MULL CX | 150 MULL CX |
150 ADDL BX, AX | 151 ADDL BX, AX |
151 ADCL $0, DX | 152 ADCL $0, DX |
152 | 153 |
153 » MOVL» ret+0(FP), DI | 154 » MOVL» AX, ret_lo+0(FP) |
154 » MOVL» AX, 0(DI) | 155 » MOVL» DX, ret_hi+4(FP) |
155 » MOVL» DX, 4(DI) | |
156 RET | 156 RET |
157 | 157 |
158 TEXT runtime·setldt(SB),NOSPLIT,$8 | 158 TEXT runtime·setldt(SB),NOSPLIT,$8 |
159 MOVL addr+4(FP), BX // aka base | 159 MOVL addr+4(FP), BX // aka base |
160 ADDL $0x8, BX | 160 ADDL $0x8, BX |
161 MOVL BX, 0(SP) | 161 MOVL BX, 0(SP) |
162 NACL_SYSCALL(SYS_tls_init) | 162 NACL_SYSCALL(SYS_tls_init) |
163 RET | 163 RET |
164 | 164 |
165 TEXT runtime·sigtramp(SB),NOSPLIT,$0 | 165 TEXT runtime·sigtramp(SB),NOSPLIT,$0 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 MOVL 4(BP), CX | 234 MOVL 4(BP), CX |
235 MOVL 8(BP), DX | 235 MOVL 8(BP), DX |
236 MOVL 12(BP), BX | 236 MOVL 12(BP), BX |
237 MOVL 16(BP), SP | 237 MOVL 16(BP), SP |
238 // 20(BP) is saved BP, never to be seen again | 238 // 20(BP) is saved BP, never to be seen again |
239 MOVL 24(BP), SI | 239 MOVL 24(BP), SI |
240 MOVL 28(BP), DI | 240 MOVL 28(BP), DI |
241 // 36(BP) is saved EFLAGS, never to be seen again | 241 // 36(BP) is saved EFLAGS, never to be seen again |
242 MOVL 32(BP), BP // saved PC | 242 MOVL 32(BP), BP // saved PC |
243 JMP BP | 243 JMP BP |
OLD | NEW |