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

⟦3956b0f6f⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Stack_Defs, seg_04bab7

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 1993 Verdix Corporation

with System;
use System;
with Unchecked_Conversion;
package Stack_Defs is
    pragma Suppress (All_Checks);
    pragma Suppress (Exception_Tables);
    pragma Not_Elaborated;
    pragma Local_Access;

    -- IBM RS/6000 stack layout definitions used by Ada tasking and
    -- the VADS MICRO kernel

    type Float_Reg_T is
        record
            Lo, Hi : Integer;
        end record;
    pragma Pack (Float_Reg_T);
    for Float_Reg_T'Size use (2 * 4) * 8;

    Link_Area_Len : constant := (6 + 8) * 4;
    type Link_Area_T is
        record
            Back_Chain : Integer;
            Cr : Integer;
            Lr : Integer;
            Res_1 : Integer;
            Res_2 : Integer;
            Toc : Integer;
            P1, P2, P3, P4, P5, P6, P7, P8 : Integer;
        end record;
    pragma Pack (Link_Area_T);
    for Link_Area_T'Size use Link_Area_Len * 8;
    type A_Link_Area_T is access Link_Area_T;
    function To_A_Link_Area_T is
       new Unchecked_Conversion (Address, A_Link_Area_T);

    Back_Chain_Off : constant := 0;
    Cr_Off : constant := 4;
    Lr_Off : constant := 8;
    Toc_Off : constant := 20;

    type Caller_Fpr_T is array (14 .. 31) of Float_Reg_T;
    type A_Caller_Fpr_T is access Caller_Fpr_T;
    function To_A_Caller_Fpr_T is
       new Unchecked_Conversion (Address, A_Caller_Fpr_T);

    type Caller_Gpr_T is array (13 .. 31) of Integer;
    type A_Caller_Gpr_T is access Caller_Gpr_T;
    function To_A_Caller_Gpr_T is
       new Unchecked_Conversion (Address, A_Caller_Gpr_T);

    Caller_Fpr_Len : constant := 18 * 8;
    Caller_Gpr_Len : constant := 19 * 4;
    Caller_Reg_Save_Len : constant := Caller_Fpr_Len + Caller_Gpr_Len;
    Caller_Reg_Pad_Len : constant := 4;

    Local_Area_Len : constant := 4 * 4 + 8;
    type Local_Area_T is
        record
            Xer : Integer;
            Krn_Toc : Integer;
            R3 : Integer;
            Fast_Errno : Integer;  -- saved for fast rendezvous
            Fpscr : Float_Reg_T;
        end record;
    pragma Pack (Local_Area_T);
    for Local_Area_T'Size use Local_Area_Len * 8;
    type A_Local_Area_T is access Local_Area_T;
    function To_A_Local_Area_T is
       new Unchecked_Conversion (Address, A_Local_Area_T);

    Xer_Off : constant := 0;
    Krn_Toc_Off : constant := 4;
    R3_Off : constant := 8;
    Fast_Errno_Off : constant := 12; -- saved for fast rendezvous
    Fpscr_Off : constant := 16;

    Save_Area_Len : constant := Link_Area_Len + Local_Area_Len +
                                   Caller_Reg_Pad_Len + Caller_Reg_Save_Len;

    Stack_Area_Len : constant := Save_Area_Len + Link_Area_Len;
    type Stack_Area_T is
        record
            Callee_Link_Area : Link_Area_T;
            Local_Area : Local_Area_T;
            Caller_Reg_Pad : Integer;
            Caller_Gpr : Caller_Gpr_T;
            Caller_Fpr : Caller_Fpr_T;
            Caller_Link_Area : Link_Area_T;
        end record;
    pragma Pack (Stack_Area_T);
    for Stack_Area_T'Size use Stack_Area_Len * 8;
    type A_Stack_Area_T is access Stack_Area_T;
    function To_A_Stack_Area_T is
       new Unchecked_Conversion (Address, A_Stack_Area_T);

    Callee_Link_Area_Off : constant := 0;
    Local_Area_Off : constant := Link_Area_Len;
    Caller_Gpr_Off : constant :=
       Local_Area_Off + Local_Area_Len + Caller_Reg_Pad_Len;
    Caller_Fpr_Off : constant := Caller_Gpr_Off + Caller_Gpr_Len;
    Caller_Link_Area_Off : constant := Caller_Fpr_Off + Caller_Fpr_Len;

end Stack_Defs;

E3 Meta Data

    nblk1=4
    nid=0
    hdr6=8
        [0x00] rec0=24 rec1=00 rec2=01 rec3=04c
        [0x01] rec0=1d rec1=00 rec2=02 rec3=008
        [0x02] rec0=1a rec1=00 rec2=03 rec3=00c
        [0x03] rec0=11 rec1=00 rec2=04 rec3=000
    tail 0x21548c90a86843671ac79 0x42a00088462060003