|
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: 11264 (0x2c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package Iface_Intr, seg_04b939
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
------------------------------------------------------------------------------ -- This package provides backward compatibility with earlier releases -- of VADS. It has been superseded by the os_signal package. ------------------------------------------------------------------------------ -- -- Users are free to establish their own signal handlers but must take -- care to use machine code with pragma implicit_code(off) so that all -- state is correctly preserved for the interrupted program. -- -- Alternatively, users can use the Ada interrupt entry mechanism to -- send control to their own interrupt task when a signal occurs. To do -- this, the user need only create an appropriate task: -- -- with system; use system; -- with text_io; -- with iface_intr; -- ... -- task interrupt is -- entry control_c; -- for control_c use at address'ref(iface_intr.sigint); -- end; -- task body interrupt is -- begin -- loop -- accept control_c do -- text_io.put_line("SIGINT"); -- end; -- end loop; -- end; -- with System; use System; with Unsigned_Types; use Unsigned_Types; with Unchecked_Conversion; package Iface_Intr 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 Iface_Intr;
nblk1=a nid=0 hdr6=14 [0x00] rec0=1a rec1=00 rec2=01 rec3=01a [0x01] rec0=2c rec1=00 rec2=02 rec3=006 [0x02] rec0=21 rec1=00 rec2=03 rec3=026 [0x03] rec0=1f rec1=00 rec2=04 rec3=006 [0x04] rec0=1f rec1=00 rec2=05 rec3=016 [0x05] rec0=1b rec1=00 rec2=06 rec3=00a [0x06] rec0=19 rec1=00 rec2=07 rec3=076 [0x07] rec0=12 rec1=00 rec2=08 rec3=07e [0x08] rec0=1c rec1=00 rec2=09 rec3=03c [0x09] rec0=09 rec1=00 rec2=0a rec3=000 tail 0x21750b842868434ed7dbf 0x42a00088462060003