|
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: 5120 (0x1400) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package Stack_Defs, seg_04bab7
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
-- 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;
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