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.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding subsection on Full_Access_Only aspect #1146
base: master
Are you sure you want to change the base?
Adding subsection on Full_Access_Only aspect #1146
Changes from 8 commits
d0aa4ee
8cc3f1b
10df0e8
d8945df
7669d4c
78d713b
80e5671
afd834e
7048dee
e44ea18
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"at once."
I think this statement doesn't go far enough to distinguish such objects (and types) from atomic objects. The resulting dynamics semantics of these objects is that, even when the source code only reads or updates a part of the object, the entire object is read or updated (and the unchanged bits are written back).
I believe the examples are also missing the above point.
See AARM22 C.6 {19.1/5 and 19.C/5}.
For examples, I can point you to some of the STM32 Ada Driver Library drivers, which lead to the request for this aspect. In these cases the STM device hardware reference manual requires volatile full access even when reading/updating subcomponents of the memory-mapped device.
The effect for an update is the same as if the source code does a read of the entire object into a temporary object, makes local subcomponent changes to that temporary, and then writes the temporary value back to the original object. For a read, the entire object is read into the temporary object, and then parts of the temporary are accessed individually. That's what the actual C version of the drivers actually does. We didn't want to do that in Ada at the source code level so we have the compiler do it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the clarification! I'll look into the Ada Driver Library for inspiration and rework the source-code examples later on.