comp.lang.ada
 help / color / mirror / Atom feed
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;

?


  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