Context_Size : constant := 64;
+ Endpoint_Context_Alignment : constant := 32;
+
----------------------------------------------------------------------------
type DbC_Info_Context is record
Reserved_Z_4 : Word64;
end record
with
- Pack,
Volatile,
+ Size => Context_Size * 8,
Alignment => Context_Size;
----------------------------------------------------------------------------
Bulk_I => 6,
Interrupt_I => 7);
+ pragma Warnings (Off, "* bits of * unused");
type Endpoint_Context is record
EP_State : Endpoint_State;
Reserved_Z : Word5;
end record
with
Volatile,
- Alignment => Context_Size;
+ Size => Context_Size * 8,
+ Alignment => Endpoint_Context_Alignment;
for Endpoint_Context use record
EP_State at 16#00# range 0 .. 2;
Reserved_Z at 16#00# range 3 .. 7;
reserved2 at 16#18# range 0 .. 31;
reserved3 at 16#1c# range 0 .. 31;
end record;
+ pragma Warnings (On, "* bits of * unused");
----------------------------------------------------------------------------
+ -- See "eXtensible Host Controller Interface for Universal Serial Bus"
+ -- revision 1.1, section 7.6.9, figure 120.
type DbC_Context is record
DbC_Info : DbC_Info_Context;
OUT_EP : Endpoint_Context;
end record
with
Volatile,
- Pack,
Alignment => Context_Size;
-- Use size for alignment:
-- It always fullfills page crossing requirements.
+ for DbC_Context use record
+ DbC_Info at 16#00# range 0 .. Context_Size * 8 - 1;
+ OUT_EP at 16#40# range 0 .. Context_Size * 8 - 1;
+ IN_EP at 16#80# range 0 .. Context_Size * 8 - 1;
+ end record;
+
-----------------------------------------------------------------------
procedure Clear_DbC_Context (Context : out DbC_Context);