File: cpu.py

package info (click to toggle)
openmsx 20.0%2Bdfsg-1.2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 27,544 kB
  • sloc: cpp: 236,922; xml: 49,948; tcl: 15,056; python: 5,385; perl: 281; sh: 77; makefile: 53
file content (126 lines) | stat: -rw-r--r-- 1,803 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
class CPU(object):
	'''Abstract base class for CPU families.
	'''

	# String that we use to identify this CPU type.
	name = None

	# GCC flags to pass to the compile and link commands.
	gccFlags = ()

class Alpha(CPU):
	'''DEC Alpha.
	'''
	name = 'alpha'

class ARM(CPU):
	'''ARM.
	'''
	name = 'arm'

class ARM64(CPU):
	'''ARM 64-bit, little endian mode.
	'''
	name = 'aarch64'

class ARM64BE(CPU):
	'''ARM 64-bit, big endian mode.
	'''
	name = 'aarch64_be'

class AVR32(CPU):
	'''Atmel AVR32, an embedded RISC CPU.
	'''
	name = 'avr32'

class HPPA(CPU):
	'''HP PA-RISC.
	'''
	name = 'hppa'

class IA64(CPU):
	'''Intel Itanium.
	'''
	name = 'ia64'

class LoongArch64(CPU):
	'''64-bit LoongArch.
	'''
	name = 'loongarch64'

class M68k(CPU):
	'''Motorola 680x0.
	'''
	name = 'm68k'

class MIPS(CPU):
	'''Big endian MIPS.
	'''
	name = 'mips'

class MIPSel(MIPS):
	'''Little endian MIPS.
	'''
	name = 'mipsel'

class PPC(CPU):
	'''32-bit Power PC.
	'''
	name = 'ppc'

class PPC64(CPU):
	'''64-bit Power PC.
	'''
	name = 'ppc64'

class PPC64LE(CPU):
	'''64-bit Power PC LE.
	'''
	name = 'ppc64le'

class RISCV64(CPU):
	'''64-bit RISC-V.
	'''
	name = 'riscv64'

class S390(CPU):
	'''IBM S/390.
	'''
	name = 's390'

class SH(CPU):
	'''Little endian Renesas SuperH.
	'''
	name = 'sh'

class SHeb(CPU):
	'''Big endian Renesas SuperH.
	'''
	name = 'sheb'

class Sparc(CPU):
	'''Sun Sparc.
	'''
	name = 'sparc'

class X86(CPU):
	'''32-bit x86: Intel Pentium, AMD Athlon etc.
	'''
	name = 'x86'

class X86_64(CPU):
	'''64-bit x86. Also known as AMD64 or x64.
	'''
	name = 'x86_64'

# Build a dictionary of CPUs using introspection.
_cpusByName = {
	obj.name: obj
	for obj in locals().values()
	if isinstance(obj, type)
		and issubclass(obj, CPU)
		and obj is not CPU
	}

def getCPU(name):
	return _cpusByName[name]