/* module EFI_ROUTINES.H "X-2" * ************************************************************************* * * * 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 (LIB_H) * * ABSTRACT: * * This module contains the C function prototypes for the IA64 PAL * routines that begin with the EFI$ prefix. * * NOTE: * * The conventions used in these function prototypes are: * * 1. Case * This header file supports invoking the routines by either using all * lowercase or all uppercase names for the system routines. Either * naming convention works even in the presence of the /NAME=AS_IS * compiler switch. * * 2. Integer size * The generic "int" type is used where it doesn't matter whether the * integer is 32 or 64 bits wide. Thus "int" is the returned value of * most functions and is the type for most integers passed by value. * However, an unambiguous integer type, e.g. int32, is used for any * integer that is passed by reference. Also, int64 is used for any * integer that is expected to be 64 bits wide even if it is passed by * value. * * 3. Types * The function prototypes use the types defined in [SYSLIB]SYS$LIB_C.TLB. * The definitions of all types used are included below. * * 4. Parameter names * Parameter names are used in the prototypes. Although they are ignored * by the compiler they do provide useful documentation. For example: * * void ioc_std$reqcom (int iost1, int iost2, UCB *ucb); * * is used instead of the functionally equivalent: * * void ioc_std$reqcom (int, int, UCB *); * * 5. Parameters passed by reference * The parameter name includes the "_p" suffix if the parameter is passed * by reference unless the parameter type implies that it is always passed * by reference. For example, there is no "_p" suffix in: * * UCB *ucb; * int32 iosb[2]; * * since structures and arrays are always passed by reference. However: * * int32 *outlen_p; * UCB **new_ucb_p; * * include the suffix to denote that outlen_p is a pointer to a 32 bit * integer, and to denote that new_ucb_p is a pointer to a pointer to a * UCB structure. * * 6. Mixed pointer sizes within one argument * If a 64-bit pointer is being passed by reference, the reference to * the pointer should also be 64 bits wide to avoid confusion. * For example: * * PTE_PPQ va_pte_p; * VOID_PPQ start_va_p; * * should be used instead of: * * PTE_PQ *va_pte_p; * VOID_PQ *start_va_p; * * * AUTHOR: * * Karen L. Noel * * CREATION DATE: 30-Jan-2002 * * MODIFICATION HISTORY: * * X-2 KLN3121 Karen L. Noel 31-Oct-2002 * Remove extra pointer_size pragmas. * *-- */ #ifndef __EFI__ROUTINES_LOADED #define __EFI__ROUTINES_LOADED 1 #pragma __required_pointer_size __save #pragma __required_pointer_size __long /* * Define all types that are used in the following function prototypes. */ #include #include #include typedef struct _efi_fpswa_ret { __int64 status; unsigned __int64 err1; unsigned __int64 err2; unsigned __int64 err3; } EFI_FPSWA_RET; int exe$call_fpswa (INTSTK * intstk, EFI_FPSWA_RET * fpswa_ret); typedef EFI_FPSWA_RET (EFI_FPSWA)(int trap_type, unsigned __int64 bundle_p, unsigned __int64 *ipsr_p, unsigned __int64 *fsr_p, unsigned __int64 *isr_p, unsigned __int64 *preds_p, unsigned __int64 *ifs_p, FP_STATE *fp_state_p); #pragma linkage_ia64 fpswa_linkage=(result(r8,r9,r10,r11)) #pragma use_linkage fpswa_linkage (EFI_FPSWA) extern EFI_FPSWA *exe$ar_fpswa; int efi$set_virtual_address_map ( unsigned __int64 mmap_size, unsigned __int64 mmap_desc_size, unsigned int mmap_desc_version, EFI_MEMORY_DESCRIPTOR * mmap_p); #pragma __required_pointer_size __restore #endif /* __IA64_PAL_ROUTINES_LOADED */