/* * Copyright 2002 Compaq Computer Corporation * * COMPAQ Registered in U.S. Patent and Trademark Office. * * Confidential computer software. Valid license from Compaq or * authorized sublicensor required for possession, use or copying. * Consistent with FAR 12.211 and 12.212, Commercial Computer Software, * Computer Software Documentation, and Technical Data for Commercial * Items are licensed to the U.S. Government under vendor's standard * commercial license. * * Compaq shall not be liable for technical or editorial errors or * omissions contained herein. The information in this document is * subject to change without notice. * ************************************************************************ *++ * FACILITY: * * VMS Executive (SYS) * * ABSTRACT: * * This module contains definitions for the IPF compatibility * routines for the Alpha unprivileged queue PALcode instructions. * * AUTHOR: * * Dennis Mattoon * * CREATION DATE: * * 06-JUN-2002 * * MODIFICATION HISTORY: * * X-5 DJM Dennis Mattoon 20-NOV-2002 * Moved more symbol definitions and typedefs over to * sys_pal_qinst.c. The symbols and struct defs do not * need to be availble globaly. They are only used by * the queue instruction system service routines. * * X-4 DJM Dennis Mattoon 15-NOV-2002 * Moved QINST$L_GLOBAL and QINST$Q_GLOBAL declarations * out of this module and into SYS_PAL_QINST.C to avoid * "multiply defined" linker warnings... * * * X-3 DJM Dennis Mattoon 12-NOV-2002 * Redefined memory-resident self-relative queue * instruction builtins to point at corresponding * non-resident versions. See comment below for * more details. * * X-2 DJM Dennis Mattoon 05-NOV-2002 * Removed Alpha specific code (queue system services * are now IA64 only) and fixed some status values * that did not match the original PALcode definition. * * X-1 DJM Dennis Mattoon 06-JUN-2002 * Original version. * *-- */ #ifndef __SYS_PAL_QINST_LOADED #define __SYS_PAL_QINST_LOADED 1 /* The following memory-resident PALcode routines are redefined as */ /* the resident versions of the self-relative queue instructions. */ /* They get redefined because we are unable to safely implement */ /* system service routines that emulate their behaviour exactly. */ /* This is because we have to make sure that isertions and removals */ /* to and from queues are non-interruptable. To ensure this we have */ /* to execute in kernel mode at elevated IPL. If we're callable */ /* from user mode and executing at high ipl we MUST make sure that */ /* we do not incur any memory management exceptons. In order to */ /* do this we have to make certain alignment and memory management */ /* checks, thus negating the whole purpose of executing the memory */ /* resident version of any queue instruction in the first place. */ #ifdef __ia64 #define __PAL_INSQHILR __PAL_INSQHIL #define __PAL_INSQTILR __PAL_INSQTIL #define __PAL_REMQHILR __PAL_REMQHIL #define __PAL_REMQTILR __PAL_REMQTIL #define __PAL_INSQHIQR __PAL_INSQHIQ #define __PAL_INSQTIQR __PAL_INSQTIQ #define __PAL_REMQHIQR __PAL_REMQHIQ #define __PAL_REMQTIQR __PAL_REMQTIQ #endif #endif /* __SYS_PAL_QINST_H */