Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: src/trusted/service_runtime/arch/x86_64/nacl_text_pad_test.S

Issue 4181005: Fixes some bugs with memory setup and halt-sled allocation and... (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 /*
2 * Copyright 2010 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can
4 * be found in the LICENSE file.
5 */
6 #include "native_client/src/trusted/service_runtime/include/bits/nacl_syscalls.h "
7 #include "native_client/src/trusted/service_runtime/nacl_config.h"
8
9 .text
10 start_of_text:
11
12 .p2align NACLENTRYALIGN
13 write_num_10:
14 /* rdi has descriptor number, rsi has number to be printed */
15 pushq %rbp
16 movq %rsp, %rbp
17 naclspadj $-0x20, %r15 /* buffer[0x20] */
18 movl %ebp, %r8d /* %r8 = &buffer[0x20] (off the end) */
19 xorq %rcx, %rcx /* %ecx = 0; (byte count) */
20
21 movq %rsi, %rax
22
23 movq $10, %r9
24 do_digit_10:
25 xorq %rdx, %rdx
26 divq %r9 /* %rdx:%rax div_mod 10 */
27 addq $'0', %rdx /* *--%r8 = remainder + '0' */
28 subl $1, %r8d
29 movb %dl, (%r15, %r8)
30 addq $1, %rcx /* ++byte_count */
31 andq %rax, %rax
32 jnz do_digit_10
33
34 movq %rcx, %rdx
35 movq %r8, %rsi
36 /* rdi still has descriptor number */
37 call NACL_SYSCALL_ADDR(NACL_sys_write)
38
39 movq %rbp, %rsp
40 popq %r11
41 naclrestbp %r11d, %r15
42 popq %r11
43 nacljmp %r11d, %r15
44
45 .p2align NACLENTRYALIGN
46 write_num_16:
47 pushq %rbp
48 movq %rsp, %rbp
49 naclspadj $-0x20, %r15
50 movl %ebp, %r8d
51 xorq %rcx, %rcx
52 do_digit_16:
53 movq %rsi, %rax
54 andq $0xf, %rax
55 addq $'0', %rax
56 cmpq $(10 + '0'), %rax
57 jl do_digit_not_upper
58 addq $('a'-'0'-10), %rax
59 do_digit_not_upper:
60 subl $1, %r8d
61 movb %al, (%r15, %r8)
62 addq $1, %rcx
63 shrq $4, %rsi
64 jnz do_digit_16
65
66 movq %rcx, %rdx
67 movq %r8, %rsi
68 /* rdi still has descriptor number */
69 call NACL_SYSCALL_ADDR(NACL_sys_write)
70
71 movq %rbp, %rsp
72 popq %r11
73 naclrestbp %r11d, %r15
74 popq %r11
75 nacljmp %r11d, %r15
76
77 .p2align NACLENTRYALIGN
78 write_char:
79 pushq %rbp
80 movq %rsp, %rbp
81 subl $0x10, %esp
82 addq %r15, %rsp
83
84 movl %esp, %r8d
85 movb %sil, (%r15, %r8)
86 movq $1, %rdx
87 movl %esp, %esi
88 /* %rdi retains value */
89 call NACL_SYSCALL_ADDR(NACL_sys_write)
90
91 movq %rbp, %rsp
92 popq %r11
93 naclrestbp %r11d, %r15
94 popq %r11
95 nacljmp %r11d, %r15
96
97 .p2align NACLENTRYALIGN
98 .globl _start
99 _start:
100 movq $123456789012345, %rsi
101 movq $1, %rdi
102 call write_num_10
103
104 movq $'\n', %rsi
105 movq $1, %rdi
106 call write_char
107
108 movq $0xdeadbeefcafebabe, %rsi
109 movq $1, %rdi
110 call write_num_16
111
112 movq $'\n', %rsi
113 movq $1, %rdi
114 call write_char
115
116 leaq end_of_text, %rsi
117 movq $1, %rdi
118 call write_num_16
119
120 movq $'\n', %rsi
121 movq $1, %rdi
122 call write_char
123
124 movq $0, %rdi
125 call NACL_SYSCALL_ADDR(NACL_sys_sysbrk)
126
127 xorq %r12, %r12 /* r12 holds our eventual exit status */
128 cmpl $EXPECTED_BREAK, %eax
129 je brk_sane
130 movq $1, %r12
131 brk_sane:
132
133 movq %rax, %rsi
134 movq $1, %rdi
135 call write_num_16
136
137 movq $'\n', %rsi
138 movq $1, %rdi
139 call write_char
140
141 movq $EXPECTED_BREAK, %rsi
142 movq $1, %rdi
143 call write_num_16
144
145 movq $'\n', %rsi
146 movq $1, %rdi
147 call write_char
148
149 #if EXPECTED_RODATA != 0
150 movq $12, %rdx
151 movq $ro_str, %rsi
152 movq $1, %rdi
153 call NACL_SYSCALL_ADDR(NACL_sys_write)
154
155 movq $ro_str, %rsi
156 movq $1, %rdi
157 call write_num_16
158
159 movq $'\n', %rsi
160 movq $1, %rdi
161 call write_char
162
163 leaq ro_str, %rax
164 cmpq $EXPECTED_RODATA, %rax
165 je ro_sane
166 movq $1, %r12
167 ro_sane:
168
169 leaq ro_str, %rsi
170 movq $1, %rdi
171 call write_num_16
172
173 movq $'\n', %rsi
174 movq $1, %rdi
175 call write_char
176 #endif
177
178 movq %r12, %rdi
179 call NACL_SYSCALL_ADDR(NACL_sys_exit)
180
181 .skip TEXT_EXTEND - (. - start_of_text), 0xf4
182 end_of_text:
183
184 #if EXPECTED_RODATA != 0
185 .section .rodata
186 ro_str: .ascii "Hello world\n"
187 /* 123456789012 */
188 #endif
OLDNEW
« no previous file with comments | « src/trusted/service_runtime/arch/x86_32/nacl_text_pad_test.S ('k') | src/trusted/service_runtime/nacl.scons » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698