ada/dynamic_mmio: Drop unnecessary Volatile aspect
The access variable `Range_A` was accidentally declared `Volatile` which
led to the following complaint by GCC 7.1:
volatile object cannot appear in this context (SPARK RM 7.1.3(11))
This happened probably to make `Range_A` compatible with our state
abstraction, but we can just use the correct abstraction instead.
TEST=Compiled a coreboot target with libgfxinit and checked the
emitted assembly: Only minor reordering regarding the pointer
but not the dereference.
Booted ThinkPad T420 with libgfxinit enabled.
Change-Id: I56a3fcadce59713fb03a089d192d2022bfb1d378
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/19624
Tested-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com>
diff --git a/ada/dynamic_mmio/hw-mmio_range.adb b/ada/dynamic_mmio/hw-mmio_range.adb
index 6a1f1f9..86c8d1b 100644
--- a/ada/dynamic_mmio/hw-mmio_range.adb
+++ b/ada/dynamic_mmio/hw-mmio_range.adb
@@ -20,8 +20,8 @@
package body HW.MMIO_Range
with
Refined_State =>
- (State => Range_A, -- the contents accessed
- Base_Address => null) -- the address, so actually Range_A too
+ (State => null, -- the contents accessed, Range_A points to it
+ Base_Address => Range_A) -- the address, stored in Range_A
is
pragma Warnings (Off, "implicit dereference",
Reason => "This is what this package is about.");
@@ -33,8 +33,7 @@
package Conv_Range is new System.Address_To_Access_Conversions (Array_T);
Range_A : Range_Access :=
- Range_Access (Conv_Range.To_Pointer (System'To_Address (Base_Addr)))
- with Volatile;
+ Range_Access (Conv_Range.To_Pointer (System'To_Address (Base_Addr)));
procedure Read (Value : out Element_T; Index : in Index_T)
is