VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/bootsectors/bootsector2-test1.asm@ 67954

Last change on this file since 67954 was 62484, checked in by vboxsync, 8 years ago

(C) 2016

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.1 KB
Line 
1; $Id: bootsector2-test1.asm 62484 2016-07-22 18:35:33Z vboxsync $
2;; @file
3; Bootsector that benchmarks I/O and MMIO roundtrip time.
4; VBoxManage setextradata bs-test1 VBoxInternal/Devices/VMMDev/0/Config/TestingEnabled 1
5; VBoxManage setextradata bs-test1 VBoxInternal/Devices/VMMDev/0/Config/TestingMMIO 1
6;
7
8;
9; Copyright (C) 2007-2016 Oracle Corporation
10;
11; This file is part of VirtualBox Open Source Edition (OSE), as
12; available from http://www.virtualbox.org. This file is free software;
13; you can redistribute it and/or modify it under the terms of the GNU
14; General Public License (GPL) as published by the Free Software
15; Foundation, in version 2 as it comes in the "COPYING" file of the
16; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18;
19; The contents of this file may alternatively be used under the terms
20; of the Common Development and Distribution License Version 1.0
21; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
22; VirtualBox OSE distribution, in which case the provisions of the
23; CDDL are applicable instead of those of the GPL.
24;
25; You may elect to license modified versions of this file under the
26; terms and conditions of either the GPL or the CDDL or both.
27;
28
29
30%include "iprt/asmdefs.mac"
31%include "iprt/x86.mac"
32%include "VBox/VMMDevTesting.mac"
33
34;; The number of instructions to test.
35%define TEST_INSTRUCTION_COUNT_IO 2000000
36
37;; The number of RDTSC instructions to test.
38%define TEST_INSTRUCTION_COUNT_RDTSC 4000000
39
40;; The number of RDTSC instructions to test.
41%define TEST_INSTRUCTION_COUNT_READCR4 1000000
42
43;; The number of instructions to test.
44%define TEST_INSTRUCTION_COUNT_MMIO 750000
45
46;; Define this to drop unnecessary test variations.
47%define QUICK_TEST
48
49;
50; Include and execute the init code.
51;
52 %define BS2_INIT_RM
53 %define BS2_INC_PE16
54 %define BS2_INC_PE32
55 %define BS2_INC_PP32
56 %define BS2_INC_PAE32
57 %define BS2_INC_LM64
58 %include "bootsector2-common-init-code.mac"
59
60
61;
62; The benchmark driver
63;
64BEGINPROC main
65 ;
66 ; Test prologue.
67 ;
68 mov ax, .s_szTstName
69 call TestInit_r86
70 call Bs2EnableA20_r86
71 call Bs2PanicIfVMMDevTestingIsMissing_r86
72
73 ;
74 ; CPUID.
75 ;
76 mov ax, .s_szTstCpuId
77 call TestSub_r86
78 call BenchmarkCpuId_rm_pp32
79 call BenchmarkCpuId_rm_pae32
80 call BenchmarkCpuId_rm_lm64
81 call BenchmarkCpuId_rm_pe16
82 call BenchmarkCpuId_rm_pe32
83 call BenchmarkCpuId_rm_rm
84
85 ;
86 ; RDTSC.
87 ;
88 mov ax, .s_szTstRdTsc
89 call TestSub_r86
90 call BenchmarkRdTsc_rm_pp32
91 call BenchmarkRdTsc_rm_pae32
92 call BenchmarkRdTsc_rm_lm64
93 call BenchmarkRdTsc_rm_pe16
94 call BenchmarkRdTsc_rm_pe32
95 call BenchmarkRdTsc_rm_rm
96
97 ;
98 ; Read CR4
99 ;
100 mov ax, .s_szTstRdCr4
101 call TestSub_r86
102 call BenchmarkRdCr4_rm_pp32
103 call BenchmarkRdCr4_rm_pae32
104 call BenchmarkRdCr4_rm_lm64
105 call BenchmarkRdCr4_rm_pe16
106 call BenchmarkRdCr4_rm_pe32
107 call BenchmarkRdCr4_rm_rm
108
109 ;
110 ; I/O port access.
111 ;
112 mov ax, .s_szTstNopIoPort
113 call TestSub_r86
114 call BenchmarkIoPortNop_rm_rm
115 call BenchmarkIoPortNop_rm_pe16
116 call BenchmarkIoPortNop_rm_pe32
117 call BenchmarkIoPortNop_rm_pp32
118 call BenchmarkIoPortNop_rm_pae32
119 call BenchmarkIoPortNop_rm_lm64
120
121 ;
122 ; MMIO access.
123 ;
124 mov ax, .s_szTstNopMmio
125 call TestSub_r86
126 call BenchmarkMmioNop_rm_pp32
127 call BenchmarkMmioNop_rm_pae32
128 call BenchmarkMmioNop_rm_lm64
129 call BenchmarkMmioNop_rm_pe16
130 call BenchmarkMmioNop_rm_pe32
131 call BenchmarkMmioNop_rm_rm
132
133 ;
134 ; We're done.
135 ;
136 call TestTerm_r86
137 call Bs2Panic
138
139.s_szTstName:
140 db 'tstIOIntr', 0
141.s_szTstCpuId:
142 db 'CPUID EAX=1', 0
143.s_szTstRdTsc:
144 db 'RDTSC', 0
145.s_szTstRdCr4:
146 db 'Read CR4', 0
147.s_szTstNopIoPort:
148 db 'NOP I/O Port Access', 0
149.s_szTstNopMmio:
150 db 'NOP MMIO Access', 0
151ENDPROC main
152
153
154;
155; Instantiate the template code.
156;
157%include "bootsector2-template-footer.mac" ; reset the initial environemnt.
158
159%define TMPL_RM
160%include "bootsector2-test1-template.mac"
161;%define TMPL_CMN_V86
162;%include "bootsector2-test1-template.mac"
163%define TMPL_PE16
164%include "bootsector2-test1-template.mac"
165%define TMPL_PE32
166%include "bootsector2-test1-template.mac"
167;%define TMPL_PP16
168;%include "bootsector2-test1-template.mac"
169%define TMPL_PP32
170%include "bootsector2-test1-template.mac"
171;%define TMPL_PAE16
172;%include "bootsector2-test1-template.mac"
173%define TMPL_PAE32
174%include "bootsector2-test1-template.mac"
175;%define TMPL_LM16
176;%include "bootsector2-test1-template.mac"
177;%define TMPL_LM32
178;%include "bootsector2-test1-template.mac"
179%define TMPL_LM64
180%include "bootsector2-test1-template.mac"
181
182
183;
184; End sections and image.
185;
186%include "bootsector2-common-end.mac"
187
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