OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [cd/] [cd70001.a] - Blame information for rev 720

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 720 jeremybenn
--
2
-- CD70001.A
3
--
4
--                             Grant of Unlimited Rights
5
--
6
--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
7
--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
8
--     unlimited rights in the software and documentation contained herein.
9
--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
10
--     this public release, the Government intends to confer upon all
11
--     recipients unlimited rights  equal to those held by the Government.
12
--     These rights include rights to use, duplicate, release or disclose the
13
--     released technical data and computer software in whole or in part, in
14
--     any manner and for any purpose whatsoever, and to have or permit others
15
--     to do so.
16
--
17
--                                    DISCLAIMER
18
--
19
--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
20
--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
21
--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
22
--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
23
--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
24
--     PARTICULAR PURPOSE OF SAID MATERIAL.
25
--*
26
--
27
-- OBJECTIVE:
28
--      Check that package System includes Max_Base_Digits, Address,
29
--      Null_Address, Word_Size, functions "<", "<=", ">", ">=", "="
30
--      (with Address parameters and Boolean results), Bit_Order,
31
--      Default_Bit_Order, Any_Priority, Interrupt_Priority,
32
--      and Default_Priority.
33
--
34
--      Check that package System.Storage_Elements includes all required
35
--      types and operations.
36
--
37
-- TEST DESCRIPTION:
38
--      The test checks for the existence of the names additional
39
--      to package system above those names tested for in 9Xbasic.
40
--
41
--      This test checks that the semantics provided in Storage_Elements
42
--      are present and operate marginally within expectations (to the best
43
--      extent possible in a portable implementation independent fashion).
44
--
45
--
46
-- CHANGE HISTORY:
47
--      09 MAY 95   SAIC   Initial version
48
--      27 JAN 96   SAIC   Revised for 2.1; Allow negative address delta
49
--
50
--!
51
 
52
with Report;
53
with Ada.Text_IO;
54
with System.Storage_Elements;
55
with System.Address_To_Access_Conversions;
56
procedure CD70001 is
57
  use System;
58
 
59
  procedure CD70 is
60
 
61
    type Int_Max is range Min_Int .. Max_Int;
62
 
63
    My_Int : Int_Max := System.Max_Base_Digits + System.Word_Size;
64
 
65
    An_Address : Address;
66
    An_Other_Address : Address := An_Address'Address;
67
 
68
  begin  -- 7.0
69
 
70
 
71
      if Default_Bit_Order not in High_Order_First..Low_Order_First then
72
         Report.Failed ("Default_Bit_Order invalid");
73
      end if;
74
 
75
      if Bit_Order'Pos(High_Order_First) /= 0 then
76
         Report.Failed ("Bit_Order'Pos(High_Order_First) /= 0");
77
      end if;
78
 
79
      if Bit_Order'Pos(Low_Order_First) /= 1 then
80
         Report.Failed ("Bit_Order'Pos(Low_Order_First) /= 1");
81
      end if;
82
 
83
      An_Address := My_Int'Address;
84
 
85
      if An_Address = Null_Address then
86
        Report.Failed ("Null_Address matched a real address");
87
      end if;
88
 
89
 
90
      if An_Address'Address /= An_Other_Address then
91
        Report.Failed("Value set at elaboration not equal to itself");
92
      end if;
93
 
94
      if An_Address'Address > An_Other_Address
95
         and An_Address'Address < An_Other_Address then
96
        Report.Failed("Address is both greater and less!");
97
      end if;
98
 
99
      if not (An_Address'Address >= An_Other_Address
100
         and An_Address'Address <= An_Other_Address) then
101
        Report.Failed("Address comparisons wrong");
102
      end if;
103
 
104
 
105
      if Priority'First /= Any_Priority'First then
106
        Report.Failed ("Priority'First /= Any_Priority'First");
107
      end if;
108
 
109
      if Interrupt_Priority'First /= Priority'Last+1 then
110
        Report.Failed ("Interrupt_Priority'First /= Priority'Last+1");
111
      end if;
112
 
113
      if Interrupt_Priority'Last /= Any_Priority'Last then
114
        Report.Failed ("Interrupt_Priority'Last /= Any_Priority'Last");
115
      end if;
116
 
117
      if Default_Priority /= ((Priority'First + Priority'Last)/2) then
118
        Report.Failed ("Default_Priority wrong value");
119
      end if;
120
 
121
  end CD70;
122
 
123
  procedure CD71 is
124
    use System.Storage_Elements;
125
 
126
    Storehouse_1 : Storage_Array(0..127);
127
    Storehouse_2 : Storage_Array(0..127);
128
 
129
    House_Offset : Storage_Offset;
130
 
131
  begin  -- 7.1
132
 
133
 
134
      if Storage_Count'First /= 0 then
135
        Report.Failed ("Storage_Count'First /= 0");
136
      end if;
137
 
138
      if Storage_Count'Last /= Storage_Offset'Last then
139
        Report.Failed ("Storage_Count'Last /= Storage_Offset'Last");
140
      end if;
141
 
142
 
143
      if Storage_Element'Size /= Storage_Unit then
144
        Report.Failed ("Storage_Element'Size /= Storage_Unit");
145
      end if;
146
 
147
      if Storage_Array'Component_Size /= Storage_Unit then
148
        Report.Failed ("Storage_Array'Element_Size /= Storage_Unit");
149
      end if;
150
 
151
      if Storage_Element'Last+1 /= 0 then
152
        Report.Failed ("Storage_Element not modular");
153
      end if;
154
 
155
 
156
      -- "+", "-"( Address, Storage_Offset) and inverse
157
 
158
      House_Offset := Storehouse_2'Address - Storehouse_1'Address;
159
      -- Address - Address = Offset
160
      -- Note that House_Offset may be a negative value
161
 
162
      if House_Offset + Storehouse_1'Address /= Storehouse_2'Address then
163
      -- Offset + Address = Address
164
        Report.Failed ("Storage arithmetic non-linear O+A");
165
      end if;
166
 
167
      if Storehouse_1'Address + House_Offset /= Storehouse_2'Address then
168
      -- Address + Offset = Address
169
        Report.Failed ("Storage arithmetic non-linear A+O");
170
      end if;
171
 
172
      if Storehouse_2'Address - House_Offset /= Storehouse_1'Address then
173
      -- Address - Offset = Address
174
        Report.Failed ("Storage arithmetic non-linear A-O");
175
      end if;
176
 
177
      if (Storehouse_2'Address mod abs(House_Offset) > abs(House_Offset)) then
178
      -- "mod"( Address, Storage_Offset)
179
        Report.Failed("Mod arithmetic");
180
      end if;
181
 
182
 
183
      if Storehouse_1'Address
184
         /= To_Address(To_Integer(Storehouse_1'Address)) then
185
        Report.Failed("To_Address, To_Integer not symmetric");
186
      end if;
187
 
188
  end CD71;
189
 
190
 
191
begin  -- Main test procedure.
192
 
193
   Report.Test ("CD70001", "Check package System" );
194
 
195
   CD70;
196
 
197
   CD71;
198
 
199
  Report.Result;
200
 
201
end CD70001;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.