|
|
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 - metrics - 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