DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦ee352a84f⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Link_Block, seg_050983

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



-- 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 32;

    --[On ne sait pas pourquoi Integer'size ne marche pas]
    --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;

E3 Meta Data

    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=1f rec1=00 rec2=03 rec3=05c
        [0x03] rec0=16 rec1=00 rec2=04 rec3=006
        [0x04] rec0=17 rec1=00 rec2=05 rec3=028
        [0x05] rec0=1a rec1=00 rec2=06 rec3=000
    tail 0x2154af68a878e79101a40 0x42a00088462060003