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

⟦19f0f2b22⟧ Ada Source

    Length: 10240 (0x2800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Os_Signal, seg_05098d

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



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

    --
    -- RS/6000 AIX signal services
    --


    --
    -- Signals
    --
    Sighup : constant := 1;
    Sigint : constant := 2;
    Sigquit : constant := 3;
    Sigill : constant := 4;
    Sigtrap : constant := 5;
    Siglost : constant := 6;
    Sigiot : constant := 6;
    Sigabrt : constant := 6;
    Sigemt : constant := 7;
    Sigfpe : constant := 8;
    Sigkill : constant := 9;
    Sigbus : constant := 10;
    Sigsegv : constant := 11;
    Sigsys : constant := 12;
    Sigpipe : constant := 13;
    Sigalrm : constant := 14;
    Sigterm : constant := 15;
    Sigurg : constant := 16;
    Sigioint : constant := 16;
    Sigstop : constant := 17;
    Sigtstp : constant := 18;
    Sigcont : constant := 19;
    Sigchld : constant := 20;
    Sigcld : constant := 20;
    Sigttin : constant := 21;
    Sigttou : constant := 22;
    Sigpty : constant := 23;
    Sigio : constant := 23;
    Sigaio : constant := 23;
    Sigxcpu : constant := 24;
    Sigxfsz : constant := 25;
    Sigmsg : constant := 27;
    Sigwinch : constant := 28;
    Sigpwr : constant := 29;
    Sigusr1 : constant := 30;
    Sigusr2 : constant := 31;
    Sigprof : constant := 32;
    Sigdanger : constant := 33;
    Sigvtalrm : constant := 34;
    Sigmigrate : constant := 35;
    Sigpre : constant := 36;
    Sigvirt : constant := 37;
    Siggrant : constant := 60;
    Sigretract : constant := 61;
    Sigsound : constant := 62;
    Sigmax : constant := 63;
    Sigsak : constant := 63;


    Sig_Ign : constant Address := Memory_Address (1);
    Sig_Dfl : constant Address := Memory_Address (0);

    type Sigset_T is array (0 .. 1) of Integer;
    Sigset_T_Size : constant := 2 * 4;
    Max_Signal : constant := 63;
    type A_Sigset_T is access Sigset_T;
    function To_A_Sigset_T is new Unchecked_Conversion (Address, A_Sigset_T);

    --
    -- Signal masks. (Signal i is blocked if the i-th bit in the mask is a 1
    --  Note signal 1 is at bit 0. sa_mask(0) contains signals 1..32,
    --  sa_mask(1) contains signals 33..64)
    --
    Enable_Mask : constant Integer := 0; -- signals  1..32 enabled
    Enable_33_64_Mask : constant Integer := 0; -- signals 33..64 enabled

    -- All signals disabled except:
    --\x09SIGILL  - 4
    --\x09SIGTRAP - 5
    --\x09SIGABRT - 6
    --\x09SIGEMT  - 7
    --\x09SIGFPE  - 8
    --\x09SIGKILL - 9
    --\x09SIGBUS  - 10
    --\x09SIGSEGV - 11
    --\x09SIGSYS  - 12
    --\x09SIGSTOP - 17
    --\x09SIGCONT - 19
    --\x09SIGPROF - 32
    --
    --  SIGDANGER  - 33
    --  SIGVTALRM  - 34
    --  SIGMIGRATE - 35
    --  SIGPRE\x09   - 36
    --  SIGVIRT    - 37
    --
    -- Effectively, all the synchronous, exception related signals remain
    -- enabled.
    Disable_Mask : constant Integer := 16#7FFA_F007#;
    -- signals  1..32 disabled
    Disable_33_64_Mask : constant Integer := 16#7FFF_FFE0#;
    -- signals 33..64 disabled


    -- sigaction record definition

    type Sigaction_T is
        record
            Sa_Handler : Address;
            Sa_Mask : Sigset_T;
            Sa_Flags : Integer;
        end record;
    type A_Sigaction_T is access Sigaction_T;
    function To_A_Sigaction_T is
       new Unchecked_Conversion (Address, A_Sigaction_T);

    Sa_Onstack : constant := 16#0000_0001#;
    Sa_Oldstyle : constant := 16#0000_0002#;
    Sa_Nocldstop : constant := 16#0000_0004#;
    Sa_Restart : constant := 16#0000_0008#;
    Sa_Nodump : constant := 16#0000_0010#;
    Sa_Partdump : constant := 16#0000_0020#;
    Sa_Fulldump : constant := 16#0000_0040#;
    Sa_Sigsetstyle : constant := 16#0000_0080#;

    --
    --\x09\x09Machine State Save Area -- RS/6000 platform
    --
    --  Machine state save area. The fields for the segment registers,
    --  general purpose registers, and floating point registers are
    --  aligned to minimize the number of cache lines that contain them.
    --  Therefore this structure should be aligned on a cache line
    --  boundary.
    --

    type Arr_A_T is array (Integer range <>) of Address;

    type Label_T;     -- kernel jump buffer

    type A_Label_T is access Label_T;

    type Label_T is
        record   -- kernel jump buffer
            Prev : A_Label_T;   -- chain to previous
            Iar : Address;    -- resume address
            Stack : Address;    -- stack pointer
            Toc : Address;    -- toc pointer
            Cr : Unsigned_Integer;  -- non-volatile part of cr
            Intpri : Unsigned_Integer; -- priority level of the process
            Reg : Arr_A_T (13 .. 31);  -- non-volatile regs (13..31)
        end record;

    type Adspace_T is
        record  -- address space mapping
            Alloc : Unsigned_Integer; -- allocation flags
            Srval : Arr_A_T (0 .. 15);  -- contents of all seg regs
        end record;

    type Mstsave;

    type A_Mstsave is access Mstsave;

    type Mstsave is
        record
            Prev : A_Mstsave;   -- previous save area
            Kjmpbuf : A_Label_T;   -- pointer to saved context
            Stackfix : Address;   -- stack fix pointer
            Intpri : Tiny_Integer;  -- interrupt priority
            Backt : Tiny_Integer;  -- back-track flag
            --rsvd: short_integer;\x09\x09-- reserved
            Curid : Integer;    -- copy of curid

            Excp_Type : Integer;   -- exception type for debugger
            Iar : Address;    -- instruction address register
            Msr : Unsigned_Integer;  -- machine state register
            Cr : Unsigned_Integer;  -- condition register
            Lr : Address;    -- link register
            Ctr : Unsigned_Integer;  -- count register
            Xer : Unsigned_Integer;  -- fixed point exception
            Mq : Unsigned_Integer;  -- multiply/quotient register
            Tid : Unsigned_Integer;  -- tid register
            Fpscr : Unsigned_Integer; -- floating point status reg
            Fpeu : Boolean;    -- floating point ever used

            --pad1,pad2,pad3: character;\x09-- res - pad to dword boundary
            Except : Arr_A_T (1 .. 5);  -- exception structure
            Bus : Address;    -- I/O bus limit register, CSR

            Cachealign : Arr_A_T (1 .. 13); -- cache-align registers
            As : Adspace_T;    -- segment registers
            Gpr : Arr_A_T (0 .. 31);  -- general purpose registers
            Fpr : Arr_A_T (0 .. 63);  -- floating point registers
        end record;

    -- Values for mstsave.fpeu
    Fp_Never_Used : constant Boolean := False; -- floating point never used
    Fp_Used : constant Boolean := True; -- floating point used

    subtype Jmpbuf is Mstsave;

    type Sigcontext_T is
        record
            Sc_Onstack : Integer;  -- sigstack state to restore
            Sc_Mask : Sigset_T;  -- signal mask to restore
            U_Error : Integer;  -- u_error to restore
            Sc_Jmpbuf : Jmpbuf;   -- process context to restore
        end record;
    type A_Sigcontext_T is access Sigcontext_T;
    function To_A_Sigcontext_T is
       new Unchecked_Conversion (Address, A_Sigcontext_T);


    function Sigaction
                (Sig : Integer; Act, Oact : A_Sigaction_T) return Integer;
    pragma Interface (C, Sigaction);

    function Sigprocmask (How : Integer; Set, Oset : A_Sigset_T) return Integer;
    pragma Interface (C, Sigprocmask);

    Sig_Block : constant := 0;
    Sig_Unblock : constant := 1;
    Sig_Setmask : constant := 2;

    function Sigsuspend (Set : A_Sigset_T) return Integer;
    pragma Interface (C, Sigsuspend);

end Os_Signal;

E3 Meta Data

    nblk1=9
    nid=0
    hdr6=12
        [0x00] rec0=2a rec1=00 rec2=01 rec3=004
        [0x01] rec0=20 rec1=00 rec2=02 rec3=01a
        [0x02] rec0=21 rec1=00 rec2=03 rec3=030
        [0x03] rec0=1e rec1=00 rec2=04 rec3=01c
        [0x04] rec0=18 rec1=00 rec2=05 rec3=026
        [0x05] rec0=1a rec1=00 rec2=06 rec3=040
        [0x06] rec0=14 rec1=00 rec2=07 rec3=02a
        [0x07] rec0=1c rec1=00 rec2=08 rec3=038
        [0x08] rec0=04 rec1=00 rec2=09 rec3=000
    tail 0x2154af69e878e792e54a2 0x42a00088462060003