From d36876b17c31857078bcbf4b2b4853463f8c466f Mon Sep 17 00:00:00 2001 From: Jaby Date: Sat, 1 Jun 2024 17:11:54 +0200 Subject: [PATCH] Fix No --- examples/PoolBox/application/src/application.cpp | 2 +- src/Library/internal-include/CD/cd_internal.hpp | 8 ++++---- src/Library/src/CD/cd.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/PoolBox/application/src/application.cpp b/examples/PoolBox/application/src/application.cpp index f30e25f1..c9b9e888 100644 --- a/examples/PoolBox/application/src/application.cpp +++ b/examples/PoolBox/application/src/application.cpp @@ -31,7 +31,7 @@ struct XAPlayer { } void change_channel(int8_t step) { - this->channel = (this->channel + step)%MaxChannels; + this->channel = static_cast((this->channel + step))%MaxChannels; CDXA::set_channel(this->channel); } diff --git a/src/Library/internal-include/CD/cd_internal.hpp b/src/Library/internal-include/CD/cd_internal.hpp index ccd84a4f..a60a2510 100644 --- a/src/Library/internal-include/CD/cd_internal.hpp +++ b/src/Library/internal-include/CD/cd_internal.hpp @@ -15,21 +15,21 @@ namespace JabyEngine { Error, }; - extern State current_state; - extern uint8_t cmd_interrupt_bit; + extern State current_state; + extern volatile uint8_t cmd_interrupt_bit; struct Command { static void wait_completed() { - while(const_cast(cmd_interrupt_bit) > 0); + while(cmd_interrupt_bit > 0); } template static void send(IOPort& cmd_fifo, IOPort& parameter_fifo, CD_IO::Command::Desc cmd, ARGS...args) { while(CD_IO::IndexStatus.read().is_set(CD_IO::IndexStatus::IsTransmissionBusy)); + cmd_interrupt_bit = bit::set(0, cmd.complete_irq); ((parameter_fifo.write(CD_IO::ParameterFifo{args})),...); cmd_fifo.write(CD_IO::CommandFifo {cmd.id}); - cmd_interrupt_bit = bit::set(0, cmd.complete_irq); } template diff --git a/src/Library/src/CD/cd.cpp b/src/Library/src/CD/cd.cpp index 7b758d7b..cdc657d5 100644 --- a/src/Library/src/CD/cd.cpp +++ b/src/Library/src/CD/cd.cpp @@ -38,7 +38,7 @@ namespace JabyEngine { static SectorBufferAllocator sector_allocator; static File cur_file; - uint8_t cmd_interrupt_bit = 0; + volatile uint8_t cmd_interrupt_bit = 0; State current_state = State::Ready; SysCall::InterrupCallback callback = { .next = nullptr,