VirtualBox

source: vbox/trunk/src/VBox/Runtime/testcase/tstRTPrfA.asm@ 66404

Last change on this file since 66404 was 60257, checked in by vboxsync, 9 years ago

tstPrfRT: mark asm code with BEGINCODE otherwise it will not be part of the TEXT section in Mach-O binaries

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 KB
Line 
1; $Id: tstRTPrfA.asm 60257 2016-03-30 09:39:48Z vboxsync $
2;; @file
3; IPRT - Comparing CPU registers and memory (cache).
4;
5
6;
7; Copyright (C) 2007-2016 Oracle Corporation
8;
9; This file is part of VirtualBox Open Source Edition (OSE), as
10; available from http://www.virtualbox.org. This file is free software;
11; you can redistribute it and/or modify it under the terms of the GNU
12; General Public License (GPL) as published by the Free Software
13; Foundation, in version 2 as it comes in the "COPYING" file of the
14; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16;
17; The contents of this file may alternatively be used under the terms
18; of the Common Development and Distribution License Version 1.0
19; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20; VirtualBox OSE distribution, in which case the provisions of the
21; CDDL are applicable instead of those of the GPL.
22;
23; You may elect to license modified versions of this file under the
24; terms and conditions of either the GPL or the CDDL or both.
25;
26
27
28
29%include "iprt/asmdefs.mac"
30
31
32%define NUM_LOOPS 10000h
33
34BEGINCODE
35
36BEGINPROC tstRTPRfARegisterAccess
37 push xBP
38 mov xBP, xSP
39 and xSP, ~3fh ; 64 byte align xSP
40 push xBP
41 mov xBP, xSP
42 sub xSP, 20h
43
44 mov xAX, 1
45 mov xDX, 1
46 mov ecx, NUM_LOOPS
47.again:
48 add eax, ecx
49 add xDX, xAX
50 shr xAX, 3
51 shl xAX, 1
52 xor xDX, 01010101h
53
54 add eax, ecx
55 add xDX, xAX
56 shr xAX, 3
57 shl xAX, 1
58 xor xDX, 01010101h
59
60 add eax, ecx
61 add xDX, xAX
62 shr xAX, 3
63 shl xAX, 1
64 xor xDX, 01010101h
65
66 dec ecx
67 jnz .again
68
69 leave
70 leave
71 ret
72ENDPROC tstRTPRfARegisterAccess
73
74
75BEGINPROC tstRTPRfAMemoryAccess
76 push xBP
77 mov xBP, xSP
78 and xSP, ~3fh ; 64 byte align xSP
79 push xBP
80 mov xBP, xSP
81 sub xSP, 20h
82
83%define VAR_XAX [xBP - xCB*1]
84%define VAR_XDX [xBP - xCB*2]
85%define VAR_ECX [xBP - xCB*3]
86
87 mov RTCCPTR_PRE VAR_XAX, 1
88 mov RTCCPTR_PRE VAR_XDX, 1
89 mov dword VAR_ECX, NUM_LOOPS
90.again:
91
92 mov eax, VAR_ECX
93 add VAR_XAX, eax
94 mov xAX, VAR_XAX
95 add VAR_XDX, xAX
96 shr RTCCPTR_PRE VAR_XAX, 3
97 shl RTCCPTR_PRE VAR_XAX, 1
98 xor RTCCPTR_PRE VAR_XDX, 01010101h
99
100 mov eax, VAR_ECX
101 add VAR_XAX, eax
102 mov xAX, VAR_XAX
103 add VAR_XDX, xAX
104 shr RTCCPTR_PRE VAR_XAX, 3
105 shl RTCCPTR_PRE VAR_XAX, 1
106 xor RTCCPTR_PRE VAR_XDX, 01010101h
107
108 mov eax, VAR_ECX
109 add VAR_XAX, eax
110 mov xAX, VAR_XAX
111 add VAR_XDX, xAX
112 shr RTCCPTR_PRE VAR_XAX, 3
113 shl RTCCPTR_PRE VAR_XAX, 1
114 xor RTCCPTR_PRE VAR_XDX, 01010101h
115
116 dec dword VAR_ECX
117 jnz .again
118
119%undef VAR_XAX
120%undef VAR_XDX
121%undef VAR_ECX
122
123 leave
124 leave
125 ret
126ENDPROC tstRTPRfAMemoryAccess
127
128
129BEGINPROC tstRTPRfAMemoryUnalignedAccess
130 push xBP
131 mov xBP, xSP
132 and xSP, ~3fh ; 64 byte align xSP
133 push xBP
134 mov xBP, xSP
135 sub xSP, 20h
136
137%define VAR_XAX [xBP - xCB*1 - 1]
138%define VAR_XDX [xBP - xCB*2 - 1]
139%define VAR_ECX [xBP - xCB*3 - 1]
140
141 mov RTCCPTR_PRE VAR_XAX, 1
142 mov RTCCPTR_PRE VAR_XDX, 1
143 mov dword VAR_ECX, NUM_LOOPS
144.again:
145
146 mov eax, VAR_ECX
147 add VAR_XAX, eax
148 mov xAX, VAR_XAX
149 add VAR_XDX, xAX
150 shr RTCCPTR_PRE VAR_XAX, 3
151 shl RTCCPTR_PRE VAR_XAX, 1
152 xor RTCCPTR_PRE VAR_XDX, 01010101h
153
154 mov eax, VAR_ECX
155 add VAR_XAX, eax
156 mov xAX, VAR_XAX
157 add VAR_XDX, xAX
158 shr RTCCPTR_PRE VAR_XAX, 3
159 shl RTCCPTR_PRE VAR_XAX, 1
160 xor RTCCPTR_PRE VAR_XDX, 01010101h
161
162 mov eax, VAR_ECX
163 add VAR_XAX, eax
164 mov xAX, VAR_XAX
165 add VAR_XDX, xAX
166 shr RTCCPTR_PRE VAR_XAX, 3
167 shl RTCCPTR_PRE VAR_XAX, 1
168 xor RTCCPTR_PRE VAR_XDX, 01010101h
169
170 dec dword VAR_ECX
171 jnz .again
172
173%undef VAR_XAX
174%undef VAR_XDX
175%undef VAR_ECX
176
177 leave
178 leave
179 ret
180ENDPROC tstRTPRfAMemoryUnalignedAccess
181
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette