Push and pop registers in system mode within IRQ handler. #199
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #198.
After comparing the IRQ handler, the only difference I could see was that registers were pushed and popped within System mode in
0.12
, and they were not in0.13
. Apparently mgba (and no$gba, which I also tested against while debugging) works just fine either way, but running on real hardware does not work correctly.I don't know the exact technical reason for why this way works and the other doesn't, but this at least gets us back to the same functionality that was present before #197.
By the way, for future reference, my process here was to add another dependency on the old bracer version (using
bracer_1_2 = {package = "bracer", version = "=0.1.2"}
inCargo.toml
, and manually injecting the yanked version intoCargo.lock
), replacing the relevant IRQ code with what existed in version0.12.0
, and verifying that it worked on hardware (which it did). Then I just replaced eachbracer_1_2
macro call with thebracer 0.3.1
equivalent until I found the change that no longer worked on hardware.