mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-20 03:33:20 +09:00
284 lines
8.1 KiB
C
284 lines
8.1 KiB
C
|
/******************************************************************************
|
||
|
*
|
||
|
* Author: Xilinx, Inc.
|
||
|
*
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or modify it
|
||
|
* under the terms of the GNU General Public License as published by the
|
||
|
* Free Software Foundation; either version 2 of the License, or (at your
|
||
|
* option) any later version.
|
||
|
*
|
||
|
*
|
||
|
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
|
||
|
* COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
|
||
|
* ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD,
|
||
|
* XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE
|
||
|
* FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING
|
||
|
* ANY THIRD PARTY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
|
||
|
* XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
|
||
|
* THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY
|
||
|
* WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM
|
||
|
* CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
*
|
||
|
*
|
||
|
* Xilinx hardware products are not intended for use in life support
|
||
|
* appliances, devices, or systems. Use in such applications is
|
||
|
* expressly prohibited.
|
||
|
*
|
||
|
*
|
||
|
* (c) Copyright 2002-2004 Xilinx Inc.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License along
|
||
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||
|
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
/*****************************************************************************/
|
||
|
/**
|
||
|
*
|
||
|
* @file xbasic_types.h
|
||
|
*
|
||
|
* This file contains basic types for Xilinx software IP. These types do not
|
||
|
* follow the standard naming convention with respect to using the component
|
||
|
* name in front of each name because they are considered to be primitives.
|
||
|
*
|
||
|
* @note
|
||
|
*
|
||
|
* This file contains items which are architecture dependent.
|
||
|
*
|
||
|
* <pre>
|
||
|
* MODIFICATION HISTORY:
|
||
|
*
|
||
|
* Ver Who Date Changes
|
||
|
* ----- ---- -------- -------------------------------------------------------
|
||
|
* 1.00a rmm 12/14/01 First release
|
||
|
* rmm 05/09/03 Added "xassert always" macros to rid ourselves of diab
|
||
|
* compiler warnings
|
||
|
* 1.00a rpm 11/07/03 Added XNullHandler function as a stub interrupt handler
|
||
|
* </pre>
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
#ifndef XBASIC_TYPES_H /* prevent circular inclusions */
|
||
|
#define XBASIC_TYPES_H /* by using protection macros */
|
||
|
|
||
|
/***************************** Include Files *********************************/
|
||
|
|
||
|
/************************** Constant Definitions *****************************/
|
||
|
|
||
|
#ifndef TRUE
|
||
|
#define TRUE 1
|
||
|
#endif
|
||
|
#ifndef FALSE
|
||
|
#define FALSE 0
|
||
|
#endif
|
||
|
|
||
|
#ifndef NULL
|
||
|
#define NULL 0
|
||
|
#endif
|
||
|
/** Null */
|
||
|
|
||
|
#define XCOMPONENT_IS_READY 0x11111111 /* component has been initialized */
|
||
|
#define XCOMPONENT_IS_STARTED 0x22222222 /* component has been started */
|
||
|
|
||
|
/* the following constants and declarations are for unit test purposes and are
|
||
|
* designed to be used in test applications.
|
||
|
*/
|
||
|
#define XTEST_PASSED 0
|
||
|
#define XTEST_FAILED 1
|
||
|
|
||
|
#define XASSERT_NONE 0
|
||
|
#define XASSERT_OCCURRED 1
|
||
|
|
||
|
extern unsigned int XAssertStatus;
|
||
|
extern void XAssert(char *, int);
|
||
|
|
||
|
/**************************** Type Definitions *******************************/
|
||
|
|
||
|
/** @name Primitive types
|
||
|
* These primitive types are created for transportability.
|
||
|
* They are dependent upon the target architecture.
|
||
|
* @{
|
||
|
*/
|
||
|
#include <linux/types.h>
|
||
|
|
||
|
typedef struct {
|
||
|
u32 Upper;
|
||
|
u32 Lower;
|
||
|
} Xuint64;
|
||
|
|
||
|
/*@}*/
|
||
|
|
||
|
/**
|
||
|
* This data type defines an interrupt handler for a device.
|
||
|
* The argument points to the instance of the component
|
||
|
*/
|
||
|
typedef void (*XInterruptHandler) (void *InstancePtr);
|
||
|
|
||
|
/**
|
||
|
* This data type defines a callback to be invoked when an
|
||
|
* assert occurs. The callback is invoked only when asserts are enabled
|
||
|
*/
|
||
|
typedef void (*XAssertCallback) (char *FilenamePtr, int LineNumber);
|
||
|
|
||
|
/***************** Macros (Inline Functions) Definitions *********************/
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/**
|
||
|
* Return the most significant half of the 64 bit data type.
|
||
|
*
|
||
|
* @param x is the 64 bit word.
|
||
|
*
|
||
|
* @return
|
||
|
*
|
||
|
* The upper 32 bits of the 64 bit word.
|
||
|
*
|
||
|
* @note
|
||
|
*
|
||
|
* None.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
#define XUINT64_MSW(x) ((x).Upper)
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/**
|
||
|
* Return the least significant half of the 64 bit data type.
|
||
|
*
|
||
|
* @param x is the 64 bit word.
|
||
|
*
|
||
|
* @return
|
||
|
*
|
||
|
* The lower 32 bits of the 64 bit word.
|
||
|
*
|
||
|
* @note
|
||
|
*
|
||
|
* None.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
#define XUINT64_LSW(x) ((x).Lower)
|
||
|
|
||
|
#ifndef NDEBUG
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/**
|
||
|
* This assert macro is to be used for functions that do not return anything
|
||
|
* (void). This in conjunction with the XWaitInAssert boolean can be used to
|
||
|
* accomodate tests so that asserts which fail allow execution to continue.
|
||
|
*
|
||
|
* @param expression is the expression to evaluate. If it evaluates to false,
|
||
|
* the assert occurs.
|
||
|
*
|
||
|
* @return
|
||
|
*
|
||
|
* Returns void unless the XWaitInAssert variable is true, in which case
|
||
|
* no return is made and an infinite loop is entered.
|
||
|
*
|
||
|
* @note
|
||
|
*
|
||
|
* None.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
#define XASSERT_VOID(expression) \
|
||
|
{ \
|
||
|
if (expression) { \
|
||
|
XAssertStatus = XASSERT_NONE; \
|
||
|
} else { \
|
||
|
XAssert(__FILE__, __LINE__); \
|
||
|
XAssertStatus = XASSERT_OCCURRED; \
|
||
|
return; \
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/**
|
||
|
* This assert macro is to be used for functions that do return a value. This in
|
||
|
* conjunction with the XWaitInAssert boolean can be used to accomodate tests so
|
||
|
* that asserts which fail allow execution to continue.
|
||
|
*
|
||
|
* @param expression is the expression to evaluate. If it evaluates to false,
|
||
|
* the assert occurs.
|
||
|
*
|
||
|
* @return
|
||
|
*
|
||
|
* Returns 0 unless the XWaitInAssert variable is true, in which case
|
||
|
* no return is made and an infinite loop is entered.
|
||
|
*
|
||
|
* @note
|
||
|
*
|
||
|
* None.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
#define XASSERT_NONVOID(expression) \
|
||
|
{ \
|
||
|
if (expression) { \
|
||
|
XAssertStatus = XASSERT_NONE; \
|
||
|
} else { \
|
||
|
XAssert(__FILE__, __LINE__); \
|
||
|
XAssertStatus = XASSERT_OCCURRED; \
|
||
|
return 0; \
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/**
|
||
|
* Always assert. This assert macro is to be used for functions that do not
|
||
|
* return anything (void). Use for instances where an assert should always
|
||
|
* occur.
|
||
|
*
|
||
|
* @return
|
||
|
*
|
||
|
* Returns void unless the XWaitInAssert variable is true, in which case
|
||
|
* no return is made and an infinite loop is entered.
|
||
|
*
|
||
|
* @note
|
||
|
*
|
||
|
* None.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
#define XASSERT_VOID_ALWAYS() \
|
||
|
{ \
|
||
|
XAssert(__FILE__, __LINE__); \
|
||
|
XAssertStatus = XASSERT_OCCURRED; \
|
||
|
return; \
|
||
|
}
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/**
|
||
|
* Always assert. This assert macro is to be used for functions that do return
|
||
|
* a value. Use for instances where an assert should always occur.
|
||
|
*
|
||
|
* @return
|
||
|
*
|
||
|
* Returns void unless the XWaitInAssert variable is true, in which case
|
||
|
* no return is made and an infinite loop is entered.
|
||
|
*
|
||
|
* @note
|
||
|
*
|
||
|
* None.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
#define XASSERT_NONVOID_ALWAYS() \
|
||
|
{ \
|
||
|
XAssert(__FILE__, __LINE__); \
|
||
|
XAssertStatus = XASSERT_OCCURRED; \
|
||
|
return 0; \
|
||
|
}
|
||
|
|
||
|
#else
|
||
|
|
||
|
#define XASSERT_VOID(expression)
|
||
|
#define XASSERT_VOID_ALWAYS()
|
||
|
#define XASSERT_NONVOID(expression)
|
||
|
#define XASSERT_NONVOID_ALWAYS()
|
||
|
#endif
|
||
|
|
||
|
/************************** Function Prototypes ******************************/
|
||
|
|
||
|
void XAssertSetCallback(XAssertCallback Routine);
|
||
|
void XNullHandler(void *NullParameter);
|
||
|
|
||
|
#endif /* end of protection macro */
|