📄 yamon_api.h
字号:
/************************************************************************ * * yamon_api.h * * YAMON interface definitions * * ###################################################################### * * mips_start_of_legal_notice * * Copyright (c) 2002 MIPS Technologies, Inc. All rights reserved. * * * Unpublished rights (if any) reserved under the Copyright Laws of the * United States of America. * * If this document is provided in source format (i.e., in a modifiable form * such as in FrameMaker or Microsoft Word format), then its use and * distribution is subject to a written agreement with MIPS Technologies, * Inc. ("MIPS Technologies"). UNDER NO CIRCUMSTANCES MAY A DOCUMENT * PROVIDED IN SOURCE FORMAT BE DISTRIBUTED TO A THIRD PARTY WITHOUT THE * EXPRESS WRITTEN CONSENT OF MIPS TECHNOLOGIES. * * This document contains information that is proprietary to MIPS * Technologies. Any copying, reproducing, modifying, or use of this * information (in whole or in part) which is not expressly permitted in * writing by MIPS Technologies or a contractually-authorized third party is * strictly prohibited. At a minimum, this information is protected under * unfair competition and copyright laws. Violations thereof may result in * criminal penalties and fines. * * MIPS Technologies or any contractually-authorized third party reserves * the right to change the information contained in this document to improve * function, design or otherwise. MIPS Technologies does not assume any * liability arising out of the application or use of this information, or * of any error of omission in such information. Any warranties, whether * express, statutory, implied or otherwise, including but not limited to * the implied warranties of merchantability or fitness for a particular * purpose, are excluded. Any license under patent rights or any other * intellectual property rights owned by MIPS Technologies or third parties * shall be conveyed by MIPS Technologies or any contractually-authorized * third party in a separate license agreement between the parties. * * The information contained in this document shall not be exported or * transferred for the purpose of reexporting in violation of any U.S. or * non-U.S. regulation, treaty, Executive Order, law, statute, amendment or * supplement thereto. * * The information contained in this document constitutes one or more of the * following: commercial computer software, commercial computer software * documentation or other commercial items. If the user of this information, * or any related documentation of any kind, including related technical * data or manuals, is an agency, department, or other entity of the United * States government ("Government"), the use, duplication, reproduction, * release, modification, disclosure, or transfer of this information, or * any related documentation of any kind, is restricted in accordance with * Federal Acquisition Regulation 12.212 for civilian agencies and Defense * Federal Acquisition Regulation Supplement 227.7202 for military agencies. * The use of this information by the Government is further restricted in * accordance with the terms of the license agreement(s) and/or applicable * contract terms and conditions covering this information from MIPS * * mips_end_of_legal_notice * * ************************************************************************/#ifndef YAMON_API_H#define YAMON_API_H/************************************************************************ * Include files ************************************************************************//************************************************************************ * Definitions*************************************************************************//* Basic types */typedef unsigned int t_yamon_uint32;typedef unsigned short t_yamon_uint16;typedef unsigned char t_yamon_uint8;typedef signed int t_yamon_int32;typedef signed short t_yamon_int16;typedef signed char t_yamon_int8;typedef t_yamon_uint32 UINT32;typedef t_yamon_uint16 UINT16;typedef t_yamon_uint8 UINT8;typedef t_yamon_int32 INT32;typedef t_yamon_int16 INT16;typedef t_yamon_int8 INT8;typedef unsigned char t_yamon_bool;#define YAMON_FALSE 0#define YAMON_TRUE (!YAMON_FALSE)/* YAMON Environment variable */typedef struct{ char *name; char *val;}t_yamon_env_var;/* Format of application function */typedef t_yamon_uint32(*t_yamon_appl_main)( t_yamon_uint32 argc, /* Number of tokens in argv array */ char **argv, /* Array of tokens (first is "go") */ t_yamon_env_var *env, /* Array of env. variables */ t_yamon_uint32 memsize ); /* Size of memory (byte count) *//* ID of YAMON configuration object */typedef t_yamon_uint32 t_yamon_syscon_id;/* Number used by the exception registration functions in order to register * a default ISR/ESR. */#define YAMON_DEFAULT_HANDLER 0xfffffff0/* Number used by the exception registration functions in order to register * an EJTAG debug exception ESR. */#define YAMON_DEFAULT_EJTAG_ESR 0xfffffff1/* Registered Interrupt Service Routine (ISR) */typedef void (*t_yamon_isr)(void *data);/* Registered Exception Service Routine (ESR) */typedef void (*t_yamon_esr)(void);/* Entry point called by ESRs wishing to pass control back to YAMON */typedef void (*t_yamon_retfunc)(void);/* Handle used for deregistration of ISR/ESR */typedef void *t_yamon_ref;/* YAMONE Vector table address */#define YAMON_FUNCTION_BASE 0x9fc00500/* YAMON Vector table offsets */#define YAMON_FUNC_PRINT_COUNT_OFS 0x04#define YAMON_FUNC_EXIT_OFS 0x20#define YAMON_FUNC_FLUSH_CACHE_OFS 0x2C#define YAMON_FUNC_PRINT_OFS 0x34#define YAMON_FUNC_REGISTER_CPU_ISR_OFS 0x38#define YAMON_FUNC_DEREGISTER_CPU_ISR_OFS 0x3c#define YAMON_FUNC_REGISTER_IC_ISR_OFS 0x40#define YAMON_FUNC_DEREGISTER_IC_ISR_OFS 0x44#define YAMON_FUNC_REGISTER_ESR_OFS 0x48#define YAMON_FUNC_DEREGISTER_ESR_OFS 0x4c#define YAMON_FUNC_GETCHAR_OFS 0x50#define YAMON_FUNC_SYSCON_READ_OFS 0x54/* Macro for accessing YAMON function */#define YAMON_FUNC(ofs)\ (*(t_yamon_uint32 *)(YAMON_FUNCTION_BASE + (ofs)))/************************************************************************ * Public variables ************************************************************************//************************************************************************ * Public functions ************************************************************************//************************************************************************ * * t_yamon_exit * Description : * ------------- * * Exit application and return to YAMON. * * Parameters : * ------------ * * 'rc' (OUT) : Return code * * Return values : * --------------- * * None (never returns) * ************************************************************************/typedef void (*t_yamon_exit)( t_yamon_uint32 rc ); /* Return code */#define YAMON_FUNC_EXIT( rc )\ ((t_yamon_exit)( YAMON_FUNC(YAMON_FUNC_EXIT_OFS) ))\ ( rc )/************************************************************************ * * t_yamon_print * Description : * ------------- * * Print null-terminated string to tty0. * * Parameters : * ------------ * * 'port' (OUT) : Ignored, always prints to tty0. Not included in macro. * 's' (OUT) : String to print. * * Return values : * --------------- * * None * ************************************************************************/typedef void (*t_yamon_print)( t_yamon_uint32 port, /* Output port (not used, always tty0) */ const char *s ); /* String to output */#define YAMON_FUNC_PRINT( s )\ ((t_yamon_print)( YAMON_FUNC(YAMON_FUNC_PRINT_OFS) ))\ ( 0, s )/************************************************************************ * * t_yamon_print_count * Description : * ------------- * * Print specified number of characters to tty0. * * Parameters : * ------------ * * 'port' (OUT) : Ignored, always prints to tty0. Not included in macro. * 's' (OUT) : Array of characters to print. * 'count' (OUT) : Number of characters to print. * * Return values : * --------------- * * None * ************************************************************************/typedef void (*t_yamon_print_count)( t_yamon_uint32 port, /* Output port (not used, always tty0 */ char *s, /* String to output */ t_yamon_uint32 count ); /* Number of characters to output */#define YAMON_FUNC_PRINT_COUNT( s, count )\ ((t_yamon_print_count)( YAMON_FUNC(YAMON_FUNC_PRINT_COUNT_OFS) ))\ ( 0, s, count )/************************************************************************ * * t_yamon_getchar * Description : * ------------- * * Get character from tty0 if character is available. Function * returns immediately if no character is available. * * Parameters : * ------------ * * 'port' (OUT) : Ignored, always uses tty0. Not included in macro. * 'ch' (OUT) : Character read (if available). * * Return values : * --------------- * * YAMON_TRUE if character was available, else YAMON_FALSE. * ************************************************************************/typedef t_yamon_bool(*t_yamon_getchar)( t_yamon_uint32 port, /* Output port (not used, always tty0 */ char *ch ); /* Character to output */#define YAMON_FUNC_GETCHAR( ch )\ ((t_yamon_getchar)( YAMON_FUNC(YAMON_FUNC_GETCHAR_OFS) ))\ ( 0, ch )/************************************************************************ * * t_yamon_syscon_read * Description : * ------------- * * Read the value of system configuration object given by 'id'. * * See syscon_api.h in YAMON source distribution for further details * on object IDs and error codes. * * Parameters : * ------------ * * 'id' (IN) : Object id. * 'param' (INOUT) : Buffer for object value. * 'size' (IN) : Size of buffer (must match size of object). * * Return values : * --------------- * * 0 : Returned parameter is valid. * Other values indicate error. * ************************************************************************/typedef t_yamon_int32(*t_yamon_syscon_read)(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -