/* $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_ */ |