Skip to content

Commit ac8e7d7

Browse files
committed
Model is an enum class
1 parent 428cc5b commit ac8e7d7

File tree

6 files changed

+56
-47
lines changed

6 files changed

+56
-47
lines changed

Emulator/VAmiga/Components/CPU/Moira/Moira.cpp

+28-20
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Moira::hasCPI() const
109109
{
110110
switch (cpuModel) {
111111

112-
case M68EC020: case M68020: case M68EC030: case M68030:
112+
case Model::M68EC020: case Model::M68020: case Model::M68EC030: case Model::M68030:
113113
return true;
114114

115115
default:
@@ -122,7 +122,7 @@ Moira::hasMMU() const
122122
{
123123
switch (cpuModel) {
124124

125-
case M68030: case M68LC040: case M68040:
125+
case Model::M68030: case Model::M68LC040: case Model::M68040:
126126
return true;
127127

128128
default:
@@ -135,7 +135,7 @@ Moira::hasFPU() const
135135
{
136136
switch (cpuModel) {
137137

138-
case M68040:
138+
case Model::M68040:
139139
return true;
140140

141141
default:
@@ -148,9 +148,11 @@ Moira::cacrMask() const
148148
{
149149
switch (cpuModel) {
150150

151-
case M68020: case M68EC020: return 0x0003;
152-
case M68030: case M68EC030: return 0x3F13;
153-
default: return 0xFFFF;
151+
case Model::M68020: case Model::M68EC020: return 0x0003;
152+
case Model::M68030: case Model::M68EC030: return 0x3F13;
153+
154+
default:
155+
return 0xFFFF;
154156
}
155157
}
156158

@@ -159,9 +161,11 @@ Moira::addrMask() const
159161
{
160162
switch (cpuModel) {
161163

162-
case M68000: return addrMask<C68000>();
163-
case M68010: return addrMask<C68010>();
164-
default: return addrMask<C68020>();
164+
case Model::M68000: return addrMask<C68000>();
165+
case Model::M68010: return addrMask<C68010>();
166+
167+
default:
168+
return addrMask<C68020>();
165169
}
166170
}
167171

@@ -170,7 +174,7 @@ Moira::addrMask() const
170174
{
171175
if constexpr (C == C68020) {
172176

173-
return cpuModel == M68EC020 ? 0x00FFFFFF : 0xFFFFFFFF;
177+
return cpuModel == Model::M68EC020 ? 0x00FFFFFF : 0xFFFFFFFF;
174178

175179
} else {
176180

@@ -183,9 +187,11 @@ Moira::reset()
183187
{
184188
switch (cpuModel) {
185189

186-
case M68000: reset<C68000>(); break;
187-
case M68010: reset<C68010>(); break;
188-
default: reset<C68020>(); break;
190+
case Model::M68000: reset<C68000>(); break;
191+
case Model::M68010: reset<C68010>(); break;
192+
193+
default:
194+
reset<C68020>();
189195
}
190196
}
191197

@@ -353,9 +359,11 @@ Moira::processException(const std::exception &exc)
353359
{
354360
switch (cpuModel) {
355361

356-
case M68000: processException<C68000>(exc); break;
357-
case M68010: processException<C68010>(exc); break;
358-
default: processException<C68020>(exc); break;
362+
case Model::M68000: processException<C68000>(exc); break;
363+
case Model::M68010: processException<C68010>(exc); break;
364+
365+
default:
366+
processException<C68020>(exc);
359367
}
360368
}
361369

@@ -480,7 +488,7 @@ Moira::setSR(u16 val)
480488
setCCR(u8(val));
481489
setSupervisorMode(s);
482490

483-
if (cpuModel > M68010) {
491+
if (cpuModel > Model::M68010) {
484492

485493
bool t0 = (val >> 14) & 1;
486494
bool m = (val >> 12) & 1;
@@ -717,19 +725,19 @@ u16 Moira::availabilityMask(Instr I, Mode M, Size S, u16 ext) const
717725
bool
718726
Moira::isAvailable(Model model, Instr I) const
719727
{
720-
return availabilityMask(I) & (1 << model);
728+
return availabilityMask(I) & (1 << (int)model);
721729
}
722730

723731
bool
724732
Moira::isAvailable(Model model, Instr I, Mode M, Size S) const
725733
{
726-
return availabilityMask(I, M, S) & (1 << model);
734+
return availabilityMask(I, M, S) & (1 << (int)model);
727735
}
728736

729737
bool
730738
Moira::isAvailable(Model model, Instr I, Mode M, Size S, u16 ext) const
731739
{
732-
return availabilityMask(I, M, S, ext) & (1 << model);
740+
return availabilityMask(I, M, S, ext) & (1 << (int)model);
733741
}
734742

735743
const char *

Emulator/VAmiga/Components/CPU/Moira/Moira.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ class Moira : public SubComponent {
3030
protected:
3131

3232
// Emulated CPU model
33-
Model cpuModel = M68000;
33+
Model cpuModel = Model::M68000;
3434

3535
// Instruction set used by the disassembler
36-
Model dasmModel = M68000;
36+
Model dasmModel = Model::M68000;
3737

3838
// Visual style for disassembled instructions
3939
DasmStyle instrStyle;

Emulator/VAmiga/Components/CPU/Moira/MoiraExceptions_cpp.h

+8-6
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,9 @@ Moira::execException(M68kException exc, int nr)
301301
{
302302
switch (cpuModel) {
303303

304-
case M68000: execException<C68000>(exc, nr); break;
305-
case M68010: execException<C68010>(exc, nr); break;
306-
default: execException<C68020>(exc, nr); break;
304+
case Model::M68000: execException<C68000>(exc, nr); break;
305+
case Model::M68010: execException<C68010>(exc, nr); break;
306+
default: execException<C68020>(exc, nr); break;
307307
}
308308
}
309309

@@ -454,9 +454,11 @@ Moira::execInterrupt(u8 level)
454454
{
455455
switch (cpuModel) {
456456

457-
case M68000: execInterrupt<C68000>(level); break;
458-
case M68010: execInterrupt<C68010>(level); break;
459-
default: execInterrupt<C68020>(level); break;
457+
case Model::M68000: execInterrupt<C68000>(level); break;
458+
case Model::M68010: execInterrupt<C68010>(level); break;
459+
460+
default:
461+
execInterrupt<C68020>(level);
460462
}
461463
}
462464

Emulator/VAmiga/Components/CPU/Moira/MoiraExec_cpp.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -3548,7 +3548,7 @@ Moira::execMoves(u16 opcode)
35483548
// Switch back to the old FC pin values
35493549
fcSource = 0;
35503550

3551-
if (S == Long && (cpuModel == M68020 || cpuModel == M68EC020)) cp += 2;
3551+
if (S == Long && (cpuModel == Model::M68020 || cpuModel == Model::M68EC020)) cp += 2;
35523552

35533553
} else { // Ea -> Rg
35543554

@@ -3592,7 +3592,7 @@ Moira::execMoves(u16 opcode)
35923592
// Switch back to the old FC pin values
35933593
fcSource = 0;
35943594

3595-
if (cpuModel == M68020 || cpuModel == M68EC020) cp += 2;
3595+
if (cpuModel == Model::M68020 || cpuModel == Model::M68EC020) cp += 2;
35963596
}
35973597

35983598
prefetch<C, POLL>();

Emulator/VAmiga/Components/CPU/Moira/MoiraInit_cpp.h

+7-7
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ void
157157
Moira::createJumpTable(Model cpuModel, Model dasmModel)
158158
{
159159
auto core = [&](Model model) {
160-
return model == M68000 ? C68000 : model == M68010 ? C68010 : C68020;
160+
return model == Model::M68000 ? C68000 : model == Model::M68010 ? C68010 : C68020;
161161
};
162162

163163
Core cpuCore = core(cpuModel);
@@ -654,7 +654,7 @@ Moira::createJumpTable(Model model, bool regDasm)
654654

655655
if constexpr (C >= C68020) {
656656

657-
if (model == M68EC020 || model == M68020) {
657+
if (model == Model::M68EC020 || model == Model::M68020) {
658658

659659
opcode = parse("0000 0110 11-- ----");
660660
__________MMMXXX(opcode, CALLM, 0b001001111110, Long, Callm, CIMS)
@@ -1551,7 +1551,7 @@ Moira::createJumpTable(Model model, bool regDasm)
15511551

15521552
if constexpr (C >= C68020) {
15531553

1554-
if (model == M68EC020 || model == M68020) {
1554+
if (model == Model::M68EC020 || model == Model::M68020) {
15551555

15561556
opcode = parse("0000 0110 1100 ----");
15571557
____________XXXX(opcode, RTM, MODE_IP, Long, Rtm, CIMS)
@@ -1929,14 +1929,14 @@ Moira::createJumpTable(Model model, bool regDasm)
19291929
// Memory management unit
19301930
//
19311931

1932-
if (model == M68030) {
1932+
if (model == Model::M68030) {
19331933

19341934
opcode = parse("1111 0000 00-- ----");
19351935
__________XXXXXX(opcode, cpGEN, MODE_IP, Unsized, PGen, CIMS)
19361936
__________MMMXXX(opcode, cpGEN, 0b111111111111, Unsized, PGen, CIMS)
19371937
}
19381938

1939-
if (model == M68040 || model == M68LC040) {
1939+
if (model == Model::M68040 || model == Model::M68LC040) {
19401940

19411941
opcode = parse("1111 0101 000- ----");
19421942
___________XXXXX(opcode, PFLUSH, MODE_AI, Unsized, PFlush40, CIMS)
@@ -1953,7 +1953,7 @@ Moira::createJumpTable(Model model, bool regDasm)
19531953
// 68040 instructions
19541954
//
19551955

1956-
if (model == M68040 || model == M68EC040 || model == M68LC040) {
1956+
if (model == Model::M68040 || model == Model::M68EC040 || model == Model::M68LC040) {
19571957

19581958

19591959
//
@@ -2001,7 +2001,7 @@ Moira::createJumpTable(Model model, bool regDasm)
20012001
// Floating-Point Unit
20022002
//
20032003

2004-
if (model == M68040) {
2004+
if (model == Model::M68040) {
20052005

20062006
opcode = parse("1111 0010 100- ----");
20072007
___________XXXXX(opcode, FBcc, MODE_IP, Word, FBcc, CIMS)

Emulator/VAmiga/Components/CPU/Moira/MoiraTypes.h

+9-10
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ typedef unsigned long long u64;
3232
// Enumerations
3333
//
3434

35-
typedef enum
35+
enum class Model
3636
{
3737
M68000, // Fully supported
3838
M68010, // Fully supported
@@ -43,8 +43,7 @@ typedef enum
4343
M68EC040, // Disassembler only
4444
M68LC040, // Disassembler only
4545
M68040 // Disassembler only
46-
}
47-
Model;
46+
};
4847

4948
typedef enum
5049
{
@@ -414,13 +413,13 @@ static constexpr u32 FPEXP_INEX2 = 1 << 9;
414413
static constexpr u32 FPEXP_INEX1 = 1 << 8;
415414

416415
// Availabilty masks
417-
static constexpr u16 AV_68000 = 1 << M68000;
418-
static constexpr u16 AV_68010 = 1 << M68010;
419-
static constexpr u16 AV_68020 = 1 << M68EC020 | 1 << M68020;
420-
static constexpr u16 AV_68030 = 1 << M68EC030 | 1 << M68030;
421-
static constexpr u16 AV_68040 = 1 << M68EC040 | 1 << M68LC040 | 1 << M68040;
422-
static constexpr u16 AV_MMU = 1 << M68030 | 1 << M68LC040 | 1 << M68040;
423-
static constexpr u16 AV_FPU = 1 << M68040;
416+
static constexpr u16 AV_68000 = 1 << int(Model::M68000);
417+
static constexpr u16 AV_68010 = 1 << int(Model::M68010);
418+
static constexpr u16 AV_68020 = 1 << int(Model::M68EC020) | 1 << int(Model::M68020);
419+
static constexpr u16 AV_68030 = 1 << int(Model::M68EC030) | 1 << int(Model::M68030);
420+
static constexpr u16 AV_68040 = 1 << int(Model::M68EC040) | 1 << int(Model::M68LC040) | 1 << int(Model::M68040);
421+
static constexpr u16 AV_MMU = 1 << int(Model::M68030) | 1 << int(Model::M68LC040) | 1 << int(Model::M68040);
422+
static constexpr u16 AV_FPU = 1 << int(Model::M68040);
424423
static constexpr u16 AV_68030_UP = AV_68030 | AV_68040;
425424
static constexpr u16 AV_68020_UP = AV_68020 | AV_68030_UP;
426425
static constexpr u16 AV_68010_UP = AV_68010 | AV_68020_UP;

0 commit comments

Comments
 (0)