gem5
v20.1.0.0
sim
aux_vector.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016 Advanced Micro Devices, Inc.
3
* All rights reserved.
4
*
5
* For use for simulation and test purposes only
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are met:
9
*
10
* 1. Redistributions of source code must retain the above copyright notice,
11
* this list of conditions and the following disclaimer.
12
*
13
* 2. Redistributions in binary form must reproduce the above copyright notice,
14
* this list of conditions and the following disclaimer in the documentation
15
* and/or other materials provided with the distribution.
16
*
17
* 3. Neither the name of the copyright holder nor the names of its
18
* contributors may be used to endorse or promote products derived from this
19
* software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
* POSSIBILITY OF SUCH DAMAGE.
32
*/
33
34
#ifndef __AUX_VECTOR_HH__
35
#define __AUX_VECTOR_HH__
36
37
template
<
class
IntType>
38
class
AuxVector
39
{
40
public
:
41
AuxVector
() =
default
;
42
AuxVector
(IntType _type, IntType _val) :
type
(_type),
val
(_val) {}
43
44
IntType
type
= 0;
45
IntType
val
= 0;
46
};
47
48
template
<
class
IntType>
49
inline
AuxVector<IntType>
50
swap_byte
(
AuxVector<IntType>
av)
51
{
52
av.
type
=
swap_byte
(av.
type
);
53
av.
val
=
swap_byte
(av.
val
);
54
return
av;
55
}
56
57
enum
AuxiliaryVectorType
{
58
M5_AT_NULL
= 0,
// End of vector.
59
M5_AT_IGNORE
= 1,
// Ignored.
60
M5_AT_EXECFD
= 2,
// File descriptor of program if interpreter used.
61
M5_AT_PHDR
= 3,
// Address of program header tables in memory.
62
M5_AT_PHENT
= 4,
// Size in bytes of one program header entry.
63
M5_AT_PHNUM
= 5,
// Number of entries in program header table.
64
M5_AT_PAGESZ
= 6,
// System page size.
65
M5_AT_BASE
= 7,
// Base address of interpreter program in memory.
66
M5_AT_FLAGS
= 8,
// Unused.
67
M5_AT_ENTRY
= 9,
// Entry point of program after interpreter setup.
68
M5_AT_NOTELF
= 10,
// Non-zero if format is different than ELF.
69
M5_AT_UID
= 11,
// Address of real user ID of thread.
70
M5_AT_EUID
= 12,
// Address of effective user ID of thread.
71
M5_AT_GID
= 13,
// Address of real group ID of thread.
72
M5_AT_EGID
= 14,
// Address of effective group ID of thread.
73
M5_AT_PLATFORM
= 15,
// Platform string for the architecture.
74
M5_AT_HWCAP
= 16,
// Bits which describe the hardware capabilities.
75
M5_AT_CLKTCK
= 17,
// Frequency at which times() syscall increments.
76
M5_AT_SECURE
= 23,
// Whether to enable "secure mode" in executable.
77
M5_BASE_PLATFORM
= 24,
// Platform string (differs on PowerPC only).
78
M5_AT_RANDOM
= 25,
// Pointer to 16 bytes of random data.
79
M5_AT_HWCAP2
= 26,
// Extension of AT_HWCAP.
80
M5_AT_EXECFN
= 31,
// Filename of the program.
81
M5_AT_VECTOR_SIZE
= 44
82
};
83
84
#endif // __AUX_VECTOR_HH__
M5_AT_NULL
@ M5_AT_NULL
Definition:
aux_vector.hh:58
M5_AT_UID
@ M5_AT_UID
Definition:
aux_vector.hh:69
AuxVector::AuxVector
AuxVector(IntType _type, IntType _val)
Definition:
aux_vector.hh:42
M5_AT_IGNORE
@ M5_AT_IGNORE
Definition:
aux_vector.hh:59
M5_AT_HWCAP2
@ M5_AT_HWCAP2
Definition:
aux_vector.hh:79
M5_AT_PAGESZ
@ M5_AT_PAGESZ
Definition:
aux_vector.hh:64
M5_AT_SECURE
@ M5_AT_SECURE
Definition:
aux_vector.hh:76
M5_AT_PHENT
@ M5_AT_PHENT
Definition:
aux_vector.hh:62
AuxiliaryVectorType
AuxiliaryVectorType
Definition:
aux_vector.hh:57
M5_AT_EUID
@ M5_AT_EUID
Definition:
aux_vector.hh:70
M5_AT_EXECFD
@ M5_AT_EXECFD
Definition:
aux_vector.hh:60
M5_AT_ENTRY
@ M5_AT_ENTRY
Definition:
aux_vector.hh:67
M5_AT_BASE
@ M5_AT_BASE
Definition:
aux_vector.hh:65
M5_AT_PHNUM
@ M5_AT_PHNUM
Definition:
aux_vector.hh:63
AuxVector
Definition:
aux_vector.hh:38
M5_AT_NOTELF
@ M5_AT_NOTELF
Definition:
aux_vector.hh:68
M5_AT_PLATFORM
@ M5_AT_PLATFORM
Definition:
aux_vector.hh:73
M5_AT_FLAGS
@ M5_AT_FLAGS
Definition:
aux_vector.hh:66
AuxVector::AuxVector
AuxVector()=default
M5_AT_EXECFN
@ M5_AT_EXECFN
Definition:
aux_vector.hh:80
M5_AT_RANDOM
@ M5_AT_RANDOM
Definition:
aux_vector.hh:78
AuxVector::val
IntType val
Definition:
aux_vector.hh:45
AuxVector::type
IntType type
Definition:
aux_vector.hh:44
M5_AT_GID
@ M5_AT_GID
Definition:
aux_vector.hh:71
M5_AT_VECTOR_SIZE
@ M5_AT_VECTOR_SIZE
Definition:
aux_vector.hh:81
M5_BASE_PLATFORM
@ M5_BASE_PLATFORM
Definition:
aux_vector.hh:77
M5_AT_HWCAP
@ M5_AT_HWCAP
Definition:
aux_vector.hh:74
M5_AT_CLKTCK
@ M5_AT_CLKTCK
Definition:
aux_vector.hh:75
M5_AT_EGID
@ M5_AT_EGID
Definition:
aux_vector.hh:72
swap_byte
AuxVector< IntType > swap_byte(AuxVector< IntType > av)
Definition:
aux_vector.hh:50
M5_AT_PHDR
@ M5_AT_PHDR
Definition:
aux_vector.hh:61
Generated on Wed Sep 30 2020 14:02:14 for gem5 by
doxygen
1.8.17