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