#ifndef __PAL_SERVICES_LOADED #define __PAL_SERVICES_LOADED 1 /* module pal_services.h "X-15" * ************************************************************************* * * * 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: * * STARLET_H * * ABSTRACT: * * This module contains the C function prototypes for the Alpha CALL_PAL * compatibility system services on non-Alpha systems. * * AUTHOR: * * Clair Grant * * CREATION DATE: * * 30-April-2002 * * MODIFICATION HISTORY: * * X-15 Clair Grant St. Patrick's Day-2004 * Update sys$cflush for 64b PFNs * * X-14 WBM Brad McCusker 10-Dec-2003 * Correct pointer size conditional to be consistent * builtins.h. PTR 75-101-547 * * X-13 WBF Burns Fisher 22-Oct-2003 * Remove context argument for SYS$RPCC_64-not needed * now on either architecture. * * X-12 WBF Burns Fisher 20-Oct-2003 * Allow optional argument for SYS$RPCC_64 for compat * with Alpha. * * X-11 CEG Clair Grant 13-Oct-2003 * Put the "#define lowercase UPPERCASE" before the * prototype. * * X-10 CEG Clair Grant 09-Oct-2003 * Mistakenly uppercased and __INT64. Fix it. * * X-9 CEG Clair Grant 07-Oct-2003 * #define an uppercase version for each service call * * X-8 WBF Burns Fisher 19-Sep-2003 * Add CHMU and CHMS * * X-7 KLN3306 Karen L. Noel 17-Jun-2003 * o Remove mfpr_fen, mtpr_fen, mfpr_mces, mtpr_mces, mfpr_pcbb. * o Fix pointer_size conditions for C++ usage. * * X-6 JRK396 Jim Kauffman 31-Oct-2002 * Add MFPR_WHAMI_SLOT * * X-5 WBF Burns Fisher 29-Jul-2002 * MFPR_ASTSR and MFPR_ASTEN should have return values * * X-4 CEG Clair Grant 25-Jul-2002 * Add sys$rpcc_64. Remove sys$pal_rei. * * X-3 CEG Clair Grant 18-Jul-2002 * Remove sys$pal_bpt and sys$pal_bugchk * * X-2 KLN3076 Karen L. Noel 19-Jun-2002 * Add length argument to sys$pal_imb for IA64 only. * * X-1 CEG Clair Grant 30-Apr-2002 * Original version. */ /* ** Certain OpenVMS header files expect the __PAL builtins to accept ** 64-bit pointers regardless of whether the /POINTER_SIZE is used ** or not. To allow this, we will define a typedef to be used with ** those prototypes. */ # if __INITIAL_POINTER_SIZE # pragma __required_pointer_size __save # pragma __required_pointer_size 64 # ifndef ___VOID__PTR64 # define ___VOID__PTR64 1 typedef void * ___void__ptr64; # endif # else # ifndef ___VOID__PTR64 # define ___VOID__PTR64 1 typedef unsigned __int64 ___void__ptr64; # endif # endif #define sys$pal_mfpr_asten SYS$PAL_MFPR_ASTEN unsigned int sys$pal_mfpr_asten(void); /* AST Enable */ #define sys$pal_mtpr_asten SYS$PAL_MTPR_ASTEN unsigned int sys$pal_mtpr_asten(unsigned int __mask); /* AST Enable */ #define sys$pal_mfpr_astsr SYS$PAL_MFPR_ASTSR unsigned int sys$pal_mfpr_astsr(void); /* AST Summary Register */ #define sys$pal_mtpr_astsr SYS$PAL_MTPR_ASTSR unsigned int sys$pal_mtpr_astsr(unsigned int __mask); /* AST Summary Register */ #define sys$pal_mtpr_datfx SYS$PAL_MTPR_DATFX void sys$pal_mtpr_datfx(int __value); /* Data Alignment Trap Fixup */ #define sys$pal_mfpr_esp SYS$PAL_MFPR_ESP void * sys$pal_mfpr_esp(void); /* Executive Stack Pointer */ #define sys$pal_mtpr_esp SYS$PAL_MTPR_ESP void sys$pal_mtpr_esp(void *__addr); /* Executive Stack Pointer */ #define sys$pal_mtpr_ipir SYS$PAL_MTPR_IPIR void sys$pal_mtpr_ipir(__int64 __number); /* Interprocessor Inter Req */ #define sys$pal_mfpr_ipl SYS$PAL_MFPR_IPL int sys$pal_mfpr_ipl(void); /* Interrupt Priority Level */ #define sys$pal_mtpr_ipl SYS$PAL_MTPR_IPL int sys$pal_mtpr_ipl(int __value); /* Interrupt Priority Level */ #define sys$pal_mfpr_prbr SYS$PAL_MFPR_PRBR __int64 sys$pal_mfpr_prbr(void); /* Processor Base Register */ #define sys$pal_mtpr_prbr SYS$PAL_MTPR_PRBR void sys$pal_mtpr_prbr(__int64 __value); /* Processor Base Register */ #define sys$pal_mtpr_sirr SYS$PAL_MTPR_SIRR void sys$pal_mtpr_sirr(int __level); /* Software Inter Req Register */ #define sys$pal_mfpr_sisr SYS$PAL_MFPR_SISR unsigned int sys$pal_mfpr_sisr(void); /* Software Int Summ Register */ #define sys$pal_mfpr_ssp SYS$PAL_MFPR_SSP void * sys$pal_mfpr_ssp(void); /* Supervisor Stack Pointer */ #define sys$pal_mtpr_ssp SYS$PAL_MTPR_SSP void sys$pal_mtpr_ssp(int *__addr); /* Supervisor Stack Pointer */ #define sys$pal_mtpr_tbia SYS$PAL_MTPR_TBIA void sys$pal_mtpr_tbia(void); /* User Stack Pointer */ #define sys$pal_mtpr_tbiap SYS$PAL_MTPR_TBIAP void sys$pal_mtpr_tbiap(void); /* T Buffer Inval All Process */ #define sys$pal_mtpr_tbis SYS$PAL_MTPR_TBIS void sys$pal_mtpr_tbis(___void__ptr64 __addr); /* T Buffer Inval Single */ #define sys$pal_mtpr_tbisd SYS$PAL_MTPR_TBISD void sys$pal_mtpr_tbisd(___void__ptr64 __addr); /* T Buffer Inval Single Data */ #define sys$pal_mtpr_tbisi SYS$PAL_MTPR_TBISI void sys$pal_mtpr_tbisi(___void__ptr64 __addr); /* T Buffer Inval Single Instr */ #define sys$pal_mfpr_usp SYS$PAL_MFPR_USP void * sys$pal_mfpr_usp(void); /* User Stack Pointer */ #define sys$pal_mtpr_usp SYS$PAL_MTPR_USP void sys$pal_mtpr_usp(void *__addr); /* User Stack Pointer */ #define sys$pal_mfpr_whami SYS$PAL_MFPR_WHAMI __int64 sys$pal_mfpr_whami(void); /* Who Am I - from CPUDB */ #define sys$pal_mfpr_whami_slot SYS$PAL_MFPR_WHAMI_SLOT __int64 sys$pal_mfpr_whami_slot(void); /* Who Am I - from slots */ #define sys$pal_chmu SYS$PAL_CHMU void sys$pal_chmu(void); /* Change mode to user */ #define sys$pal_chms SYS$PAL_CHMS void sys$pal_chms(void); /* Change mode to super */ #ifdef __ia64 #define sys$pal_imb SYS$PAL_IMB void sys$pal_imb(void * instr, unsigned __int64 length); /* instruction memory barrier */ #else #define sys$pal_imb SYS$PAL_IMB void sys$pal_imb(void * instr); /* instruction memory barrier */ #endif #define sys$pal_prober SYS$PAL_PROBER int sys$pal_prober(const void *__base_address, int __offset, char __mode); #define sys$pal_probew SYS$PAL_PROBEW int sys$pal_probew(const void *__base_address, int __offset, char __mode); #define sys$pal_rd_ps SYS$PAL_RD_PS unsigned __int64 sys$pal_rd_ps(void); /* read processor status */ #define sys$pal_swasten SYS$PAL_SWASTEN unsigned int sys$pal_swasten(int __new_state_mask); #define sys$pal_wr_ps_sw SYS$PAL_WR_PS_SW void sys$pal_wr_ps_sw(int __mask); /* write processor status */ #define sys$pal_halt SYS$PAL_HALT void sys$pal_halt(void); /* halt processor */ #define sys$pal_cflush SYS$PAL_CFLUSH void sys$pal_cflush(unsigned __int64 __value); /* cache flush */ #define sys$pal_ldqp SYS$PAL_LDQP unsigned __int64 sys$pal_ldqp(void *__addr); /* Load */ #define sys$pal_stqp SYS$PAL_STQP void sys$pal_stqp(void *__addr, unsigned __int64 __value); /* Store */ /* NOTE: There are no Alpha C builtins for the following CALL_PALs. System ** services are defined for them so that new code can be rewritten in C ** and use the services. */ #define sys$pal_rscc SYS$PAL_RSCC unsigned __int64 sys$pal_rscc(void); /* read system cycle count */ #define sys$pal_read_unq SYS$PAL_READ_UNQ unsigned __int64 sys$pal_read_unq(void); /* read unique context */ #define sys$pal_write_unq SYS$PAL_WRITE_UNQ void sys$pal_write_unq(unsigned __int64 __value); /* store unique context */ /* There is no direct equivalent of the rpcc Alpha instruction on IPF so we * redefine the C builtin so VMS can provide the function. * on Alpha. */ #define sys$rpcc_64 SYS$RPCC_64 unsigned __int64 sys$rpcc_64(void); # if __INITIAL_POINTER_SIZE # pragma __required_pointer_size __restore # endif #endif /* __PAL_SERVICES_LOADED */