From: Simon Wright <simon@pushface.org>
Subject: AI12-0128 (was: STM32F4 GNAT Run Time System - roadmap)
Date: Fri, 11 Dec 2015 14:59:31 +0000
Date: 2015-12-11T14:59:31+00:00 [thread overview]
Message-ID: <lyfuz92fqk.fsf_-_@pushface.org> (raw)
In-Reply-To: n45e84$rpr$1@loke.gir.dk
"Randy Brukardt" <randy@rrsoftware.com> writes:
> "Simon Wright" <simon@pushface.org> wrote in message
> news:lya8pnh1dq.fsf@pushface.org...
>> ...I've not done any evaluation yet aside from noting that they
>> generate the GNAT-specific Volatile_Full_Access aspect, which is
>> noted in the 'under development' version of the GCC docs (so, will
>> likely be in GCC 6). Maybe plain Volatile will do (but users would
>> have to remember to access the whole register explicitly, rather than
>> leaving it up to the compiler to Do The Right Thing); that would be
>> an easy-enough patch.
>
> The ARG has decided on a different direction to fix the problem
> addressed by Volatile_Full_Access; essentially, accesses to
> non-volatile components of atomic objects have to be accessed with a
> read-modify-write cycle. (See AI12-0128-1.) Various parts of Annex C
> will be rewritten to make that make sense.
I see that !example, 4 lines from the end, says
if Status_Register.Read then -- Illegal.
- should be .Ready
Reading this (several times), I think the effect is that if I mark a
composite object as Exact_Size_Only, and want to change a component, I
must explicitly read-object-to-temp; modify-temp; write-temp-to-object ?
At the moment I've said e.g.
type Device_Registers is record
S0 : Interfaces.Unsigned_16;
S1 : Interfaces.Unsigned_16;
L0 : Interfaces.Unsigned_32;
L1 : Interfaces.Unsigned_32;
end record
with Volatile;
and let the components inherit the Volatile.
With the new aspect, I think I'd need to say e.g.
type Device_Registers is record
S0 : Interfaces.Unsigned_16 with Exact_Size_Only;
S1 : Interfaces.Unsigned_16 with Exact_Size_Only;
L0 : Interfaces.Unsigned_32 with Exact_Size_Only;
L1 : Interfaces.Unsigned_32 with Exact_Size_Only;
end record
with Volatile;
?
next prev parent reply other threads:[~2015-12-11 14:59 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-09 12:02 STM32F4 GNAT Run Time System - roadmap Simon Wright
2015-06-09 19:44 ` Tero Koskinen
2015-06-12 17:31 ` MIchael Erdmann
2015-06-12 18:19 ` Simon Wright
2015-06-09 20:08 ` jan.de.kruyf
2015-06-10 17:47 ` Simon Wright
2015-06-10 19:54 ` jan.de.kruyf
2015-06-10 21:11 ` Simon Wright
2015-06-10 8:19 ` jan.de.kruyf
2015-06-10 8:24 ` jan.de.kruyf
2015-06-10 17:55 ` Simon Wright
2015-06-10 19:30 ` jan.de.kruyf
2015-06-10 11:20 ` Brian Drummond
2015-06-10 21:19 ` Simon Wright
2015-06-11 10:10 ` Brian Drummond
2015-06-13 13:21 ` Jedi Tek'Unum
2015-06-13 14:15 ` Dmitry A. Kazakov
2015-06-13 14:55 ` Simon Wright
2015-06-13 17:43 ` Jedi Tek'Unum
2015-12-06 18:34 ` Simon Wright
2015-12-07 10:39 ` Brian Drummond
2016-01-28 20:52 ` Simon Wright
2016-01-30 14:21 ` Brian Drummond
2015-12-07 15:13 ` Jere
2015-12-07 16:31 ` Simon Wright
2015-12-07 16:49 ` Simon Wright
2015-12-07 17:56 ` Jere
2015-12-07 22:02 ` Simon Wright
2015-12-08 14:03 ` Jere
2015-12-08 15:07 ` Tero Koskinen
2015-12-09 1:46 ` Jere
2015-12-08 2:11 ` Randy Brukardt
2015-12-09 18:46 ` Simon Clubley
2015-12-09 22:47 ` Randy Brukardt
2015-12-10 18:22 ` Simon Clubley
2015-12-11 14:59 ` Simon Wright [this message]
2015-12-11 21:18 ` AI12-0128 (was: STM32F4 GNAT Run Time System - roadmap) Randy Brukardt
2015-06-10 15:20 ` STM32F4 GNAT Run Time System - roadmap Patrick Noffke
2015-06-15 19:03 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox