-- --**************************************************************************** --* * --* Copyright (c) 2001 * --* by DIGITAL Equipment Corporation, Maynard, Mass. * --* * --* This software is furnished under a license and may be used and copied * --* only in accordance with the terms of such license and with the * --* inclusion of the above copyright notice. This software or any other * --* copies thereof may not be provided or otherwise made available to any * --* other person. No title to and ownership of the software is hereby * --* transferred. * --* * --* The information in this software is subject to change without notice * --* and should not be construed as a commitment by DIGITAL Equipment * --* Corporation. * --* * --* DIGITAL assumes no responsibility for the use or reliability of its * --* software on equipment which is not supplied by DIGITAL. * --* * --**************************************************************************** --******************************************************************************************************************** -- Created: 15-MAR-2001 22:54:09 by OpenVMS SDL EV1-33 -- Source: 2-SEP-1989 10:55:52 $11$DUA933:[LIB_ADA.LIS]SPLCODDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package SPLCODDEF is -- module $SPLCODDEF --+ -- -- SPINLOCK INDEX DEFINITIONS -- --- -- -- DEFINE THE HARDWARE LEVEL LOCKS (INDICES 0-F) -- SPL_C_EMB : constant := 32; -- EMB spinlock index SPL_C_MCHECK : constant := 33; -- Machine Check spinlock index SPL_C_MEGA : constant := 34; -- Kitchen sink of spinlocks SPL_C_HWCLK : constant := 35; -- HWCLK spinlock index SPL_C_VIRTCONS : constant := 36; -- VIRTCONS spinlock index SPL_C_INVALIDATE : constant := 37; -- INVALIDATE spinlock index SPL_C_PERFMON : constant := 38; -- PERFMON spinlock index SPL_C_POOL : constant := 39; -- POOL spinlock index SPL_C_MAILBOX : constant := 40; -- MAILBOX spinlock index SPL_C_PR_LK11 : constant := 41; -- PRIMARY IPL 11 spinlock index SPL_C_IOLOCK11 : constant := 42; -- IPL 11 I/O spinlock index SPL_C_PR_LK10 : constant := 43; -- PRIMARY IPL 10 spinlock index SPL_C_IOLOCK10 : constant := 44; -- IPL 10 I/O spinlock index SPL_C_PR_LK9 : constant := 45; -- PRIMARY IPL 9 spinlock index SPL_C_IOLOCK9 : constant := 46; -- IPL 9 I/O spinlock index SPL_C_SCHED : constant := 47; -- SCHED spinlock index SPL_C_MMG : constant := 48; -- Memory management spinlock index SPL_C_JIB : constant := 49; -- JIB spinlock index SPL_C_TIMER : constant := 50; -- TIMER spinlock index SPL_C_PR_LK8 : constant := 51; -- PRIMARY IPL 8 spinlock index SPL_C_IOLOCK8 : constant := 52; -- IPL 8 I/O spinlock index SPL_C_FILSYS : constant := 53; -- File system spinlock index SPL_C_QUEUEAST : constant := 54; -- QUEUEAST spinlock index SPL_C_ASTDEL : constant := 55; -- temporary lock for UIS SPL_C_SCS : constant := 52; -- SCS spinlock index SPL_MIN_INDEX : constant := 32; -- Min spinlock index SPL_MAX_INDEX : constant := 56; -- Max spinlock index SPL_NUM_LOCKS : constant := 31; -- Max number of spinlocks (ever) -- -- Define some system-wide multiprocessing control flags -- SMP_M_ENABLED : constant := 16#00000001#; SMP_M_START_CPU : constant := 16#00000002#; SMP_M_CRASH_CPU : constant := 16#00000004#; SMP_M_TODR : constant := 16#00000008#; SMP_M_UNMOD_DRIVER : constant := 16#00000010#; SMP_M_TODR_ACK : constant := 16#00000020#; SMP_M_SYNCH : constant := 16#00000040#; SMP_M_BENIGN : constant := 16#00000080#; SMP_M_OVERRIDE : constant := 16#00000001#; SMP_M_FOREVER : constant := 16#00000002#; type SMP_FILL_1_TYPE is record ENABLED : BOOLEAN; -- SMP operation is enabled START_CPU : BOOLEAN; -- PRIMARY CPU has finished INIT CRASH_CPU : BOOLEAN; -- A CPU is initiating BUGCHECK TODR : BOOLEAN; -- SMP$GL_PROPOSED_TODR in use UNMOD_DRIVER : BOOLEAN; -- Unmodified driver is loaded TODR_ACK : BOOLEAN; -- SMP TODR operation complete SYNCH : BOOLEAN; -- SMP SYNCHRONIZATION IMAGE LOADED BENIGN : BOOLEAN; -- BENIGN STATE REQUESTED end record; for SMP_FILL_1_TYPE use record ENABLED at 0 range 0 .. 0; START_CPU at 0 range 1 .. 1; CRASH_CPU at 0 range 2 .. 2; TODR at 0 range 3 .. 3; UNMOD_DRIVER at 0 range 4 .. 4; TODR_ACK at 0 range 5 .. 5; SYNCH at 0 range 6 .. 6; BENIGN at 0 range 7 .. 7; end record; for SMP_FILL_1_TYPE'SIZE use 8; SMP_FILL_1_TYPE_INIT : constant SMP_FILL_1_TYPE := (ENABLED => FALSE, START_CPU => FALSE, CRASH_CPU => FALSE, TODR => FALSE, UNMOD_DRIVER => FALSE, TODR_ACK => FALSE, SYNCH => FALSE, BENIGN => FALSE); type SMP_FILL_0_TYPE is record FLAGS : UNSIGNED_LONGWORD; -- SMP$GL_FLAGS ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FILL_1 : SMP_FILL_1_TYPE; end record; for SMP_FILL_0_TYPE use record FLAGS at 0 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FILL_1 at 0 range 0 .. 7; end record; for SMP_FILL_0_TYPE'SIZE use 32; SMP_FILL_0_TYPE_INIT : constant SMP_FILL_0_TYPE := (FLAGS => 0); type SMP_STOP_CPU_FLAGS_TYPE is -- Input to STOP/CPU record OVERRIDE : BOOLEAN; -- Skip checks before stopping CPU FOREVER : BOOLEAN; -- FOREVER means remove from -- available set after stopping. FILLER_1 : UNSIGNED_30; end record; for SMP_STOP_CPU_FLAGS_TYPE use record OVERRIDE at 0 range 0 .. 0; FOREVER at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 31; end record; for SMP_STOP_CPU_FLAGS_TYPE'SIZE use 32; SMP_STOP_CPU_FLAGS_TYPE_INIT : constant SMP_STOP_CPU_FLAGS_TYPE := (OVERRIDE => FALSE, FOREVER => FALSE, FILLER_1 => 0); type SMP_TYPE is record FILL_0 : SMP_FILL_0_TYPE; STOP_CPU_FLAGS : SMP_STOP_CPU_FLAGS_TYPE; -- Input to STOP/CPU end record; for SMP_TYPE use record FILL_0 at 0 range 0 .. 31; STOP_CPU_FLAGS at 4 range 0 .. 31; end record; for SMP_TYPE'SIZE use 64; SMP_TYPE_INIT : constant SMP_TYPE := ( FILL_0 => SMP_FILL_0_TYPE_INIT, STOP_CPU_FLAGS => SMP_STOP_CPU_FLAGS_TYPE_INIT ); end SPLCODDEF;