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.
Implemented full atomics behavior (minus RL/AC) for potential future multicore support.
Zalrsc was implemented by emulating bus snooping with a notify function. When multicore is implemented, the notify mechanism will have to be improved.
Zaamo was implemented using Java features including VarHandle and Unsafe. Unsafe only has support for word and double word. Some devices were omitted (throws MemoryAccessException) due to being out of scope. VirtIO is currently omitted because I am unfamiliar and am not sure if implementing it makes sense.
Direct test for ByteBufferMemory atomic support added with aggressive data racing to verify functionality. No new tests specific to the Zaamo instructions added. I have made tests for Zalrsc that verify they work, but I have not committed them. Existing Zalrsc tests fail, but when recompiled from source they succeed.
Zawrs and Zacas were never defined within the emulator so I haven't implemented them.
FENCE, FENCE.I and RL/AC flags for A instructions are not implemented (NOPs) because, realistically, the emulator's overhead will prevent the spatial/temporal locality that necessitates such features.
Tasks: