|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 7168 (0x1c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package Link_Block, seg_04bab9
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
-- Copyright 1987, 1988, 1992 Verdix Corporation ------------------------------------------------------------------------------ -- link block for communication among the debugger, the runtime kernel, -- and the user program. The linker fills in the link_block fields; -- except that the kernel fills in the record pointed to by the debug_block_p -- field. ------------------------------------------------------------------------------ with System; use System; with Unchecked_Conversion; package Link_Block is pragma Suppress (All_Checks); pragma Suppress (Exception_Tables); pragma Not_Elaborated; pragma Local_Access; -- the following reference points in the user program. type Link_Block_T is record Startup_P : Address; Stack_Limit_P : Address; Raise_P : Address; Constraint_Error_P : Address; Numeric_Error_P : Address; Program_Error_P : Address; Storage_Error_P : Address; Tasking_Error_P : Address; Debug_Block_P : Address; Main_Task_Priority_P : Address; Usr_Configuration_Table_P : Address; Group_Table_P : Address; Program_Signature_P : Address; Raise_Interrupt_P : Address; end record; type A_Link_Block_T is access Link_Block_T; pragma Local_Access (A_Link_Block_T); function To_A_Link_Block_T is new Unchecked_Conversion (Address, A_Link_Block_T); type Target_Info_Tag_T is (Target_Info_None, -- value = 0 Target_Info_Immediate, -- value = addr | off Target_Info_Memory, -- value = *addr Target_Info_Call, -- value = addr() or off(base_addr) Target_Info_Relative_Offset,-- value = base_addr + off Target_Info_Indirect_Offset,-- value = *(base_addr + off) Target_Info_Krn_Program_Indirect_Offset, -- value = *(get_krn_program_id(base_addr) + off) -- where base_addr must be an ADA program_id Target_Info_Krn_Task_Indirect_Offset -- value = *(get_krn_task_id(base_addr) + off) -- where base_addr must be an ADA task_id ); for Target_Info_Tag_T'Size use Integer'Size; type Target_Addr_Info_T is record Tag : Target_Info_Tag_T; Addr : Address; end record; type Target_Off_Info_T is record Tag : Target_Info_Tag_T; Off : Integer; end record; -- The following are used to reference the kernel addresses of -- the runtime variables. -- -- Note: should be renamed to kernel_block_t. type Debug_Block_T is record Krn_Program_Head : Target_Addr_Info_T; -- Following offsets are relative to krn_program_id Krn_Program_Next : Target_Off_Info_T; Ada_Program_Id : Target_Off_Info_T; Ada_Program_Id_Bias : Integer; -- added to program_id offset Ada_Program_Tag : Target_Off_Info_T; -- TARGET_INFO_NONE => all krn prog are ADA prog Ada_Program_Tag_Val : Integer; -- Following offsets are relative to ADA's program_id Krn_Program_Id : Target_Off_Info_T; Exception_Stack_Size : Target_Off_Info_T; Idle_Krn_Task_Id : Target_Off_Info_T; Sequence_Num : Target_Off_Info_T; Key : Target_Off_Info_T; My_Creator : Target_Off_Info_T; -- krn's program_id Krn_Ct : Target_Addr_Info_T; -- Following offsets are relative to krn_task_id Ada_Task_Id : Target_Off_Info_T; Ada_Task_Id_Bias : Integer; -- added to task_id offset Ada_Task_Tag : Target_Off_Info_T; -- TARGET_INFO_NONE => all krn task are ADA task Ada_Task_Tag_Val : Integer; Idle_Task_Tag_Val : Integer; -- Following offsets are relative to ADA's task_id Krn_Task_Id : Target_Off_Info_T; Stack_Bottom : Target_Off_Info_T; Stack_Size : Target_Off_Info_T; Super_Stack_Size : Target_Off_Info_T; -- may be same for all tasks. TARGET_INFO_NONE => no extra -- supervisor stack Search_Pattern : Natural; -- heap/stack area is initialized to this pattern. This value -- is used by the debugger "lt use" command to determine stack -- and heap usage. Heap_Bottom : Address; Heap_Size : Natural; Intr_Stack_Area : Address; Intr_Stack_Size : Natural; Program_Head : Address; Ct : Address; Runq_Head : Address; Time_Eventq_Head : Address; Preemption_Depth : Address; Krn_Configuration_Table : Address; Intr_Stack_Limit : Address; Intr_Depth : Address; -- Fast kernel service entry points (only called from an ISR) Intr_Enter : Address; Intr_Complete : Address; Intr_Cond_Signal : Address; Pending_Interrupt_Flag : Address; Current_Program : Address; -- Fast kernel service entry points (only called from a supervisor -- task) Task_Wait : Address; Task_Signal : Address; Task_Signal_Unlock : Address; Task_Signal_Wait_Unlock : Address; end record; type A_Debug_Block_T is access Debug_Block_T; pragma Local_Access (A_Debug_Block_T); function To_A_Debug_Block_T is new Unchecked_Conversion (Address, A_Debug_Block_T); end Link_Block;
nblk1=6 nid=0 hdr6=c [0x00] rec0=1c rec1=00 rec2=01 rec3=04c [0x01] rec0=17 rec1=00 rec2=02 rec3=034 [0x02] rec0=1e rec1=00 rec2=03 rec3=04c [0x03] rec0=16 rec1=00 rec2=04 rec3=010 [0x04] rec0=17 rec1=00 rec2=05 rec3=05c [0x05] rec0=18 rec1=00 rec2=06 rec3=001 tail 0x21750b8968684353bb882 0x42a00088462060003