| /* $NetBSD: sal.h,v 1.1 2006/04/07 14:21:18 cherry Exp $ */ | |
| /*- | |
| * Copyright (c) 2001 Doug Rabson | |
| * All rights reserved. | |
| * | |
| * Redistribution and use in source and binary forms, with or without | |
| * modification, are permitted provided that the following conditions | |
| * are met: | |
| * 1. Redistributions of source code must retain the above copyright | |
| * notice, this list of conditions and the following disclaimer. | |
| * 2. Redistributions in binary form must reproduce the above copyright | |
| * notice, this list of conditions and the following disclaimer in the | |
| * documentation and/or other materials provided with the distribution. | |
| * | |
| * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | |
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | |
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| * SUCH DAMAGE. | |
| * | |
| * $FreeBSD$ | |
| */ | |
| #ifndef _MACHINE_SAL_H_ | |
| #define _MACHINE_SAL_H_ | |
| struct sal_system_table { | |
| char sal_signature[4]; | |
| #define SAL_SIGNATURE "SST_" | |
| u_int32_t sal_length; | |
| u_int8_t sal_rev[2]; | |
| u_int16_t sal_entry_count; | |
| u_int8_t sal_checksum; | |
| u_int8_t sal_reserved1[7]; | |
| u_int8_t sal_a_version[2]; | |
| u_int8_t sal_b_version[2]; | |
| char sal_oem_id[32]; | |
| char sal_product_id[32]; | |
| u_int8_t sal_reserved2[8]; | |
| }; | |
| struct sal_entrypoint_descriptor { | |
| u_int8_t sale_type; /* == 0 */ | |
| u_int8_t sale_reserved1[7]; | |
| u_int64_t sale_pal_proc; | |
| u_int64_t sale_sal_proc; | |
| u_int64_t sale_sal_gp; | |
| u_int8_t sale_reserved2[16]; | |
| }; | |
| struct sal_memory_descriptor { | |
| u_int8_t sale_type; /* == 1 */ | |
| u_int8_t sale_need_virtual; | |
| u_int8_t sale_current_attribute; | |
| u_int8_t sale_access_rights; | |
| u_int8_t sale_supported_attributes; | |
| u_int8_t sale_reserved1; | |
| u_int8_t sale_memory_type[2]; | |
| u_int64_t sale_physical_address; | |
| u_int32_t sale_length; | |
| u_int8_t sale_reserved2[12]; | |
| }; | |
| struct sal_platform_descriptor { | |
| u_int8_t sale_type; /* == 2 */ | |
| u_int8_t sale_features; | |
| u_int8_t sale_reserved[14]; | |
| }; | |
| struct sal_tr_descriptor { | |
| u_int8_t sale_type; /* == 3 */ | |
| u_int8_t sale_register_type; | |
| u_int8_t sale_register_number; | |
| u_int8_t sale_reserved1[5]; | |
| u_int64_t sale_virtual_address; | |
| u_int64_t sale_page_size; | |
| u_int8_t sale_reserved2[8]; | |
| }; | |
| struct sal_ptc_cache_descriptor { | |
| u_int8_t sale_type; /* == 4 */ | |
| u_int8_t sale_reserved[3]; | |
| u_int32_t sale_domains; | |
| u_int64_t sale_address; | |
| }; | |
| struct sal_ap_wakeup_descriptor { | |
| u_int8_t sale_type; /* == 5 */ | |
| u_int8_t sale_mechanism; | |
| u_int8_t sale_reserved[6]; | |
| u_int64_t sale_vector; | |
| }; | |
| /* | |
| * SAL Procedure numbers. | |
| */ | |
| #define SAL_SET_VECTORS 0x01000000 | |
| #define SAL_GET_STATE_INFO 0x01000001 | |
| #define SAL_GET_STATE_INFO_SIZE 0x01000002 | |
| #define SAL_CLEAR_STATE_INFO 0x01000003 | |
| #define SAL_MC_RENDEZ 0x01000004 | |
| #define SAL_MC_SET_PARAMS 0x01000005 | |
| #define SAL_REGISTER_PHYSICAL_ADDR 0x01000006 | |
| #define SAL_CACHE_FLUSH 0x01000008 | |
| #define SAL_CACHE_INIT 0x01000009 | |
| #define SAL_PCI_CONFIG_READ 0x01000010 | |
| #define SAL_PCI_CONFIG_WRITE 0x01000011 | |
| #define SAL_FREQ_BASE 0x01000012 | |
| #define SAL_UPDATE_PAL 0x01000020 | |
| /* SAL_SET_VECTORS event handler types */ | |
| #define SAL_OS_MCA 0 | |
| #define SAL_OS_INIT 1 | |
| #define SAL_OS_BOOT_RENDEZ 2 | |
| /* SAL_GET_STATE_INFO, SAL_GET_STATE_INFO_SIZE types */ | |
| #define SAL_INFO_MCA 0 | |
| #define SAL_INFO_INIT 1 | |
| #define SAL_INFO_CMC 2 | |
| #define SAL_INFO_CPE 3 | |
| #define SAL_INFO_TYPES 4 /* number of types we know about */ | |
| struct ia64_sal_result { | |
| int64_t sal_status; | |
| u_int64_t sal_result[3]; | |
| }; | |
| typedef struct ia64_sal_result sal_entry_t | |
| (u_int64_t, u_int64_t, u_int64_t, u_int64_t, | |
| u_int64_t, u_int64_t, u_int64_t, u_int64_t); | |
| extern sal_entry_t *ia64_sal_entry; | |
| extern void ia64_sal_init(void); | |
| #endif /* _MACHINE_SAL_H_ */ |