blob: 130515cb7ce77c3fd240591de07564ddc5de5364 [file] [log] [blame]
Nico Huberef4545a2017-06-18 02:58:40 +02001--
2-- Copyright (C) 2017 Nico Huber <nico.h@gmx.de>
3--
4-- This program is free software; you can redistribute it and/or modify
5-- it under the terms of the GNU General Public License as published by
6-- the Free Software Foundation; either version 2 of the License, or
7-- (at your option) any later version.
8--
9-- This program is distributed in the hope that it will be useful,
10-- but WITHOUT ANY WARRANTY; without even the implied warranty of
11-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12-- GNU General Public License for more details.
13--
14
15generic
16 Dev : PCI.Address := (0, 0, 0);
Nico Huber61f72872020-06-10 15:53:35 +020017 MMConf_Base : Word64 := 0;
Nico Huberef4545a2017-06-18 02:58:40 +020018package HW.PCI.Dev
19with
20 Abstract_State => (Address_State, (PCI_State with External)),
21 Initializes => Address_State
22is
23
24 procedure Read8 (Value : out Word8; Offset : Index);
25 procedure Read16 (Value : out Word16; Offset : Index)
26 with
27 Pre => Offset mod 2 = 0;
28 procedure Read32 (Value : out Word32; Offset : Index)
29 with
30 Pre => Offset mod 4 = 0;
31
32 procedure Write8 (Offset : Index; Value : Word8);
33 procedure Write16 (Offset : Index; Value : Word16)
34 with
35 Pre => Offset mod 2 = 0;
36 procedure Write32 (Offset : Index; Value : Word32)
37 with
38 Pre => Offset mod 4 = 0;
39
Nico Huberae9b8552017-07-09 15:25:41 +020040 pragma Warnings (GNATprove, Off, "unused variable ""WC""*",
41 Reason => "Used for a common interface");
Nico Huberef4545a2017-06-18 02:58:40 +020042 procedure Map
43 (Addr : out Word64;
44 Res : in Resource;
45 Length : in Natural := 0;
46 Offset : in Natural := 0;
47 WC : in Boolean := False);
Nico Huberae9b8552017-07-09 15:25:41 +020048 pragma Warnings (GNATprove, On, "unused variable ""WC""*");
Nico Huberef4545a2017-06-18 02:58:40 +020049
50 procedure Resource_Size (Length : out Natural; Res : Resource);
51
Nico Huberff3240b2017-07-09 16:23:04 +020052 pragma Warnings (GNATprove, Off, "unused variable ""MMConf_Base""*",
53 Reason => "Used for a common interface");
Nico Huber61f72872020-06-10 15:53:35 +020054 procedure Initialize
55 (Success : out Boolean;
56 MMConf_Base : in Word64 := PCI.Dev.MMConf_Base);
Nico Huberff3240b2017-07-09 16:23:04 +020057 pragma Warnings (GNATprove, On, "unused variable ""MMConf_Base""*");
Nico Huberef4545a2017-06-18 02:58:40 +020058
59end HW.PCI.Dev;