mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-21 20:29:06 +00:00
Fix trans for instruction fetches.
This commit is contained in:
parent
b66d69b60c
commit
5a84e98256
@ -231,7 +231,7 @@ struct Registers {
|
|||||||
// MARK: - Condition tests.
|
// MARK: - Condition tests.
|
||||||
|
|
||||||
/// @returns @c true if @c condition tests as true; @c false otherwise.
|
/// @returns @c true if @c condition tests as true; @c false otherwise.
|
||||||
bool test(Condition condition) {
|
bool test(Condition condition) const {
|
||||||
const auto ne = [&]() -> bool {
|
const auto ne = [&]() -> bool {
|
||||||
return zero_result_;
|
return zero_result_;
|
||||||
};
|
};
|
||||||
|
@ -549,7 +549,7 @@ class ConcreteMachine:
|
|||||||
|
|
||||||
uint32_t advance_pipeline(uint32_t pc) {
|
uint32_t advance_pipeline(uint32_t pc) {
|
||||||
uint32_t instruction = 0; // Value should never be used; this avoids a spurious GCC warning.
|
uint32_t instruction = 0; // Value should never be used; this avoids a spurious GCC warning.
|
||||||
const bool did_read = executor_.bus.read(pc, instruction, executor_.registers().mode(), false);
|
const bool did_read = executor_.bus.read(pc, instruction, executor_.registers().mode() == InstructionSet::ARM::Mode::User);
|
||||||
return pipeline_.exchange(
|
return pipeline_.exchange(
|
||||||
did_read ? instruction : Pipeline::SWI,
|
did_read ? instruction : Pipeline::SWI,
|
||||||
did_read ? Pipeline::SWISubversion::None : Pipeline::SWISubversion::DataAbort);
|
did_read ? Pipeline::SWISubversion::None : Pipeline::SWISubversion::DataAbort);
|
||||||
|
@ -173,7 +173,7 @@ struct MemoryController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename IntT>
|
template <typename IntT>
|
||||||
bool read(uint32_t address, IntT &source, InstructionSet::ARM::Mode, bool trans) {
|
bool read(uint32_t address, IntT &source, bool trans) {
|
||||||
switch (read_zones_[(address >> 21) & 31]) {
|
switch (read_zones_[(address >> 21) & 31]) {
|
||||||
case Zone::PhysicallyMappedRAM:
|
case Zone::PhysicallyMappedRAM:
|
||||||
if(trans) return false;
|
if(trans) return false;
|
||||||
@ -212,6 +212,11 @@ struct MemoryController {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename IntT>
|
||||||
|
bool read(uint32_t address, IntT &source, InstructionSet::ARM::Mode, bool trans) {
|
||||||
|
return read(address, source, trans);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Expose various IOC-owned things.
|
// Expose various IOC-owned things.
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user