| package Atomic1_Pkg is | |
| type Four_Bits is mod 2 ** 4; | |
| type R16 is record | |
| F1 : Four_Bits; | |
| F2 : Four_Bits; | |
| F3 : Four_Bits; | |
| F4 : Four_Bits; | |
| end record; | |
| for R16 use record | |
| F1 at 0 range 0 .. 3; | |
| F2 at 0 range 4 .. 7; | |
| F3 at 0 range 8 .. 11; | |
| F4 at 0 range 12 .. 15; | |
| end record; | |
| type R32 is record | |
| F1 : Four_Bits; | |
| F2 : Four_Bits; | |
| F3 : Four_Bits; | |
| F4 : Four_Bits; | |
| F5 : Four_Bits; | |
| F6 : Four_Bits; | |
| F7 : Four_Bits; | |
| F8 : Four_Bits; | |
| end record; | |
| for R32 use record | |
| F1 at 0 range 0 .. 3; | |
| F2 at 0 range 4 .. 7; | |
| F3 at 0 range 8 .. 11; | |
| F4 at 0 range 12 .. 15; | |
| F5 at 0 range 16 .. 19; | |
| F6 at 0 range 20 .. 23; | |
| F7 at 0 range 24 .. 27; | |
| F8 at 0 range 28 .. 31; | |
| end record; | |
| C_16 : constant R16 := (2, 3, 5, 7); | |
| C_32 : constant R32 := (1, 1, 2, 3, 5, 8, 13, 5); | |
| V_16 : R16; | |
| pragma Atomic (V_16); | |
| V_32 : R32; | |
| pragma Atomic (V_32); | |
| end Atomic1_Pkg; |