GNU Radio's DVBS2RX Package
cpuinfo_ppc.h
Go to the documentation of this file.
1// Copyright 2018 IBM
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef CPU_FEATURES_INCLUDE_CPUINFO_PPC_H_
16#define CPU_FEATURES_INCLUDE_CPUINFO_PPC_H_
17
19#include "cpu_features_macros.h"
20
22
23typedef struct {
24 int ppc32 : 1;
25 int ppc64 : 1;
26 int ppc601 : 1;
27 int altivec : 1;
28 int fpu : 1;
29 int mmu : 1;
30 int mac_4xx : 1;
31 int unifiedcache : 1;
32 int spe : 1;
33 int efpsingle : 1;
34 int efpdouble : 1;
35 int no_tb : 1;
36 int power4 : 1;
37 int power5 : 1;
38 int power5plus : 1;
39 int cell : 1;
40 int booke : 1;
41 int smt : 1;
42 int icachesnoop : 1;
43 int arch205 : 1;
44 int pa6t : 1;
45 int dfp : 1;
46 int power6ext : 1;
47 int arch206 : 1;
48 int vsx : 1;
50 int truele : 1;
51 int ppcle : 1;
52 int arch207 : 1;
53 int htm : 1;
54 int dscr : 1;
55 int ebb : 1;
56 int isel : 1;
57 int tar : 1;
58 int vcrypto : 1;
59 int htm_nosc : 1;
60 int arch300 : 1;
61 int ieee128 : 1;
62 int darn : 1;
63 int scv : 1;
65
66 // Make sure to update PPCFeaturesEnum below if you add a field here.
68
69typedef struct {
71} PPCInfo;
72
74
75typedef struct {
76 char platform[64]; // 0 terminated string
77 char base_platform[64]; // 0 terminated string
79
80typedef struct {
81 char platform[64]; // 0 terminated string
82 char model[64]; // 0 terminated string
83 char machine[64]; // 0 terminated string
84 char cpu[64]; // 0 terminated string
87
89
90////////////////////////////////////////////////////////////////////////////////
91// Introspection functions
92
93typedef enum {
94 PPC_32, /* 32 bit mode execution */
95 PPC_64, /* 64 bit mode execution */
96 PPC_601_INSTR, /* Old POWER ISA */
97 PPC_HAS_ALTIVEC, /* SIMD Unit*/
98 PPC_HAS_FPU, /* Floating Point Unit */
99 PPC_HAS_MMU, /* Memory management unit */
101 PPC_UNIFIED_CACHE, /* Unified instruction and data cache */
102 PPC_HAS_SPE, /* Signal processing extention unit */
103 PPC_HAS_EFP_SINGLE, /* SPE single precision fpu */
104 PPC_HAS_EFP_DOUBLE, /* SPE double precision fpu */
105 PPC_NO_TB, /* No timebase */
109 PPC_CELL, /* Cell broadband engine */
110 PPC_BOOKE, /* Embedded ISA */
111 PPC_SMT, /* Simultaneous multi-threading */
113 PPC_ARCH_2_05, /* ISA 2.05 - POWER6 */
114 PPC_PA6T, /* PA Semi 6T core ISA */
115 PPC_HAS_DFP, /* Decimal floating point unit */
117 PPC_ARCH_2_06, /* ISA 2.06 - POWER7 */
118 PPC_HAS_VSX, /* Vector-scalar extension */
119 PPC_PSERIES_PERFMON_COMPAT, /* Set of backwards compatibile performance
120 monitoring events */
123 PPC_ARCH_2_07, /* ISA 2.07 - POWER8 */
124 PPC_HTM, /* Hardware Transactional Memory */
125 PPC_DSCR, /* Data stream control register */
126 PPC_EBB, /* Event base branching */
127 PPC_ISEL, /* Integer select instructions */
128 PPC_TAR, /* Target address register */
129 PPC_VEC_CRYPTO, /* Vector cryptography instructions */
130 PPC_HTM_NOSC, /* Transactions aborted when syscall made*/
131 PPC_ARCH_3_00, /* ISA 3.00 - POWER9 */
132 PPC_HAS_IEEE128, /* VSX IEEE Binary Float 128-bit */
133 PPC_DARN, /* Deliver a random number instruction */
134 PPC_SCV, /* scv syscall */
135 PPC_HTM_NO_SUSPEND, /* TM w/out suspended state */
138
140
142
144
145#if !defined(CPU_FEATURES_ARCH_PPC)
146#error "Including cpuinfo_ppc.h from a non-ppc target."
147#endif
148
149#endif // CPU_FEATURES_INCLUDE_CPUINFO_PPC_H_
#define CPU_FEATURES_START_CPP_NAMESPACE
Definition cpu_features_macros.h:127
#define CPU_FEATURES_END_CPP_NAMESPACE
Definition cpu_features_macros.h:128
const char * GetPPCFeaturesEnumName(PPCFeaturesEnum)
int GetPPCFeaturesEnumValue(const PPCFeatures *features, PPCFeaturesEnum value)
PPCInfo GetPPCInfo(void)
PPCFeaturesEnum
Definition cpuinfo_ppc.h:93
@ PPC_PPC_LE
Definition cpuinfo_ppc.h:122
@ PPC_32
Definition cpuinfo_ppc.h:94
@ PPC_POWER6_EXT
Definition cpuinfo_ppc.h:116
@ PPC_HAS_MMU
Definition cpuinfo_ppc.h:99
@ PPC_PA6T
Definition cpuinfo_ppc.h:114
@ PPC_HTM_NO_SUSPEND
Definition cpuinfo_ppc.h:135
@ PPC_CELL
Definition cpuinfo_ppc.h:109
@ PPC_HAS_EFP_SINGLE
Definition cpuinfo_ppc.h:103
@ PPC_601_INSTR
Definition cpuinfo_ppc.h:96
@ PPC_HAS_DFP
Definition cpuinfo_ppc.h:115
@ PPC_UNIFIED_CACHE
Definition cpuinfo_ppc.h:101
@ PPC_HAS_IEEE128
Definition cpuinfo_ppc.h:132
@ PPC_ISEL
Definition cpuinfo_ppc.h:127
@ PPC_LAST_
Definition cpuinfo_ppc.h:136
@ PPC_POWER4
Definition cpuinfo_ppc.h:106
@ PPC_DSCR
Definition cpuinfo_ppc.h:125
@ PPC_POWER5_PLUS
Definition cpuinfo_ppc.h:108
@ PPC_ARCH_2_05
Definition cpuinfo_ppc.h:113
@ PPC_HTM
Definition cpuinfo_ppc.h:124
@ PPC_TRUE_LE
Definition cpuinfo_ppc.h:121
@ PPC_ICACHE_SNOOP
Definition cpuinfo_ppc.h:112
@ PPC_VEC_CRYPTO
Definition cpuinfo_ppc.h:129
@ PPC_SCV
Definition cpuinfo_ppc.h:134
@ PPC_HAS_SPE
Definition cpuinfo_ppc.h:102
@ PPC_HAS_EFP_DOUBLE
Definition cpuinfo_ppc.h:104
@ PPC_NO_TB
Definition cpuinfo_ppc.h:105
@ PPC_SMT
Definition cpuinfo_ppc.h:111
@ PPC_HAS_4xxMAC
Definition cpuinfo_ppc.h:100
@ PPC_HAS_VSX
Definition cpuinfo_ppc.h:118
@ PPC_HAS_ALTIVEC
Definition cpuinfo_ppc.h:97
@ PPC_BOOKE
Definition cpuinfo_ppc.h:110
@ PPC_DARN
Definition cpuinfo_ppc.h:133
@ PPC_ARCH_3_00
Definition cpuinfo_ppc.h:131
@ PPC_64
Definition cpuinfo_ppc.h:95
@ PPC_TAR
Definition cpuinfo_ppc.h:128
@ PPC_PSERIES_PERFMON_COMPAT
Definition cpuinfo_ppc.h:119
@ PPC_HAS_FPU
Definition cpuinfo_ppc.h:98
@ PPC_ARCH_2_07
Definition cpuinfo_ppc.h:123
@ PPC_EBB
Definition cpuinfo_ppc.h:126
@ PPC_POWER5
Definition cpuinfo_ppc.h:107
@ PPC_HTM_NOSC
Definition cpuinfo_ppc.h:130
@ PPC_ARCH_2_06
Definition cpuinfo_ppc.h:117
PPCPlatformStrings GetPPCPlatformStrings(void)
Definition cpuinfo_ppc.h:23
int darn
Definition cpuinfo_ppc.h:62
int booke
Definition cpuinfo_ppc.h:40
int cell
Definition cpuinfo_ppc.h:39
int power6ext
Definition cpuinfo_ppc.h:46
int ppc601
Definition cpuinfo_ppc.h:26
int spe
Definition cpuinfo_ppc.h:32
int ppcle
Definition cpuinfo_ppc.h:51
int arch205
Definition cpuinfo_ppc.h:43
int arch206
Definition cpuinfo_ppc.h:47
int dfp
Definition cpuinfo_ppc.h:45
int vcrypto
Definition cpuinfo_ppc.h:58
int tar
Definition cpuinfo_ppc.h:57
int icachesnoop
Definition cpuinfo_ppc.h:42
int ppc64
Definition cpuinfo_ppc.h:25
int htm_nosc
Definition cpuinfo_ppc.h:59
int htm_no_suspend
Definition cpuinfo_ppc.h:64
int smt
Definition cpuinfo_ppc.h:41
int efpsingle
Definition cpuinfo_ppc.h:33
int scv
Definition cpuinfo_ppc.h:63
int mmu
Definition cpuinfo_ppc.h:29
int truele
Definition cpuinfo_ppc.h:50
int altivec
Definition cpuinfo_ppc.h:27
int mac_4xx
Definition cpuinfo_ppc.h:30
int power4
Definition cpuinfo_ppc.h:36
int power5plus
Definition cpuinfo_ppc.h:38
int pseries_perfmon_compat
Definition cpuinfo_ppc.h:49
int unifiedcache
Definition cpuinfo_ppc.h:31
int htm
Definition cpuinfo_ppc.h:53
int vsx
Definition cpuinfo_ppc.h:48
int power5
Definition cpuinfo_ppc.h:37
int isel
Definition cpuinfo_ppc.h:56
int ppc32
Definition cpuinfo_ppc.h:24
int fpu
Definition cpuinfo_ppc.h:28
int ieee128
Definition cpuinfo_ppc.h:61
int efpdouble
Definition cpuinfo_ppc.h:34
int ebb
Definition cpuinfo_ppc.h:55
int arch207
Definition cpuinfo_ppc.h:52
int arch300
Definition cpuinfo_ppc.h:60
int dscr
Definition cpuinfo_ppc.h:54
int no_tb
Definition cpuinfo_ppc.h:35
int pa6t
Definition cpuinfo_ppc.h:44
Definition cpuinfo_ppc.h:69
PPCFeatures features
Definition cpuinfo_ppc.h:70
Definition cpuinfo_ppc.h:80
PPCPlatformTypeStrings type
Definition cpuinfo_ppc.h:85
Definition cpuinfo_ppc.h:75