260daad51122d1492615c09265cf3e618d519437
[gem5.git] / tests / gem5 / hello_se / test_hello_se.py
1 # Copyright (c) 2020 The Regents of the University of California
2 # All Rights Reserved.
3 #
4 # Copyright (c) 2020 ARM Limited
5 # All rights reserved
6 #
7 # The license below extends only to copyright in the software and shall
8 # not be construed as granting a license to any other intellectual
9 # property including but not limited to intellectual property relating
10 # to a hardware implementation of the functionality of the software
11 # licensed hereunder. You may use the software subject to the license
12 # terms below provided that you ensure that this notice is replicated
13 # unmodified and in its entirety in all distributions of the software,
14 # modified or unmodified, in source code or in binary form.
15 #
16 # Copyright (c) 2017 Mark D. Hill and David A. Wood
17 # All rights reserved.
18 #
19 # Redistribution and use in source and binary forms, with or without
20 # modification, are permitted provided that the following conditions are
21 # met: redistributions of source code must retain the above copyright
22 # notice, this list of conditions and the following disclaimer;
23 # redistributions in binary form must reproduce the above copyright
24 # notice, this list of conditions and the following disclaimer in the
25 # documentation and/or other materials provided with the distribution;
26 # neither the name of the copyright holders nor the names of its
27 # contributors may be used to endorse or promote products derived from
28 # this software without specific prior written permission.
29 #
30 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
33 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
34 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
35 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
36 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
37 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
38 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
39 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
40 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41
42 '''
43 Test file for the util m5 exit assembly instruction.
44 '''
45 from testlib import *
46
47 static_progs = {
48 'x86': ('hello64-static', 'hello32-static'),
49 'arm': ('hello64-static', 'hello32-static'),
50 'alpha': ('hello',),
51 'mips': ('hello',),
52 'riscv': ('hello',),
53 'sparc': ('hello',)
54 }
55
56 dynamic_progs = {
57 'x86': ('hello64-dynamic',)
58 }
59
60 cpu_types = {
61 'x86': ('TimingSimpleCPU', 'AtomicSimpleCPU', 'DerivO3CPU'),
62 'arm' : ('TimingSimpleCPU', 'AtomicSimpleCPU','DerivO3CPU'),
63 'alpha': ('TimingSimpleCPU', 'AtomicSimpleCPU', 'DerivO3CPU', 'MinorCPU'),
64 'mips' : ('TimingSimpleCPU', 'AtomicSimpleCPU', 'DerivO3CPU'),
65 'riscv' : ('TimingSimpleCPU', 'AtomicSimpleCPU', 'DerivO3CPU', 'MinorCPU'),
66 'sparc' : ('TimingSimpleCPU', 'AtomicSimpleCPU')
67 }
68
69 supported_os = {
70 'x86': ('linux',),
71 'arm' : ('linux',),
72 'alpha' : ('linux',),
73 'mips' : ('linux',),
74 'riscv' : ('linux',),
75 'sparc' : ('linux',)
76 }
77
78 if config.bin_path:
79 base_path = config.bin_path
80 else:
81 base_path = joinpath(absdirpath(__file__), '..', 'test-progs', 'hello',
82 'bin')
83
84 urlbase = config.resource_url + '/test-progs/hello/bin/'
85
86 ref_path = joinpath(getcwd(), 'ref')
87 verifiers = (
88 verifier.MatchStdoutNoPerf(joinpath(ref_path, 'simout')),
89 )
90
91 def verify_config(isa, binary, operating_s, cpu, hosts):
92 url = urlbase + isa + '/' + operating_s + '/' + binary
93 path = joinpath(base_path, isa, operating_s)
94 hello_program = DownloadedProgram(url, path, binary)
95
96 gem5_verify_config(
97 name='test-' + binary + '-' + operating_s + "-" + cpu,
98 fixtures=(hello_program,),
99 verifiers=verifiers,
100 config=joinpath(config.base_dir, 'configs', 'example','se.py'),
101 config_args=['--cmd', joinpath(path, binary), '--cpu-type', cpu,
102 '--caches'],
103 valid_isas=(isa.upper(),),
104 valid_hosts=hosts,
105 )
106
107 # Run statically linked hello worlds
108 for isa in static_progs:
109 for binary in static_progs[isa]:
110 for operating_s in supported_os[isa]:
111 for cpu in cpu_types[isa]:
112 verify_config(isa, binary, operating_s, cpu,
113 constants.supported_hosts)
114
115 # Run dynamically linked hello worlds
116 for isa in dynamic_progs:
117 for binary in dynamic_progs[isa]:
118 for operating_s in supported_os[isa]:
119 for cpu in cpu_types[isa]:
120 verify_config(isa, binary, operating_s, cpu,
121 constants.target_host[isa.upper()])