123 lines
4.0 KiB
C
123 lines
4.0 KiB
C
#ifndef __TEST_H__
|
|
#define __TEST_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
#define __I volatile /*!< defines 'read only' permissions */
|
|
#else
|
|
#define __I volatile const /*!< defines 'read only' permissions */
|
|
#endif
|
|
#define __O volatile /*!< defines 'write only' permissions */
|
|
#define __IO volatile /*!< defines 'read / write' permissions */
|
|
/* Exported types ------------------------------------------------------------*/
|
|
typedef unsigned char INT8U;
|
|
typedef signed char INT8S;
|
|
typedef unsigned short INT16U;
|
|
typedef signed short INT16S;
|
|
typedef unsigned int INT32U; //32λ
|
|
typedef signed int INT32S;
|
|
typedef unsigned long long INT64U; //64λ
|
|
typedef signed long long INT64S;
|
|
typedef float FP32;
|
|
typedef float FP64;
|
|
|
|
typedef unsigned char BOOL;
|
|
typedef unsigned char bool;
|
|
#define NO_INIT volatile
|
|
#define NULL ((void *)0)
|
|
|
|
|
|
#define MAX_UINT (-1U)
|
|
typedef unsigned int size_t;
|
|
|
|
typedef int int32_t;
|
|
typedef short int16_t;
|
|
|
|
//typedef enum {FALSE = 0, TRUE = !FALSE} bool;
|
|
//defineed in boot/test.h
|
|
|
|
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
|
|
|
|
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
|
|
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
|
|
|
|
typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
|
|
typedef struct _test_entry {
|
|
int (*entry_func)(void);
|
|
char test_name[60];
|
|
} test_entry_t;
|
|
|
|
#define test_entry(fn, name) \
|
|
static test_entry_t __attribute__ ((section(".text.init"))) _this_test = {fn, name};
|
|
|
|
typedef unsigned int const ucint32_t; /* Read Only */
|
|
typedef unsigned short const ucint16_t; /* Read Only */
|
|
typedef unsigned char const ucint8_t; /* Read Only */
|
|
typedef volatile unsigned int vuint32_t;
|
|
typedef volatile unsigned short vuint16_t;
|
|
typedef volatile unsigned char vuint8_t;
|
|
typedef unsigned int uint32_t;
|
|
typedef unsigned char uchar_t;
|
|
typedef unsigned char uint8_t;
|
|
typedef unsigned short uint16_t;
|
|
#define TRUE 1
|
|
#define FALSE 0
|
|
|
|
|
|
#define READ_REG32(addr) (*(volatile uint32_t*)addr)
|
|
#define WRITE_REG32(addr, value) *(volatile uint32_t*)addr = value
|
|
|
|
#define VIRT_TO_PHYS(addr) ((uint32_t)addr & 0x7fffffff)
|
|
|
|
#define read_reg32(var, BASE, OFFSET) var = *(volatile uint32_t*)(BASE+OFFSET)
|
|
// __asm__ __volatile__("ld.w %0, $0, %1":"=r" (var):"imm"(BASE+OFFSET)); // LS: LA compiler does not support __asm__
|
|
|
|
#define write_reg32(var, BASE, OFFSET) *(volatile uint32_t*)(BASE+OFFSET) = var
|
|
// __asm__ __volatile__("st.w %0, $0, %1"::"r" (var), "imm"(BASE+OFFSET));
|
|
|
|
#define read_reg32_v(var, ADDR, OFFS) var = *(volatile uint32_t*)(ADDR+OFFS)
|
|
// __asm__ __volatile__("ld.w %0, %1, %2":"=r" (var):"r"(ADDR), "imm"(OFFS));
|
|
|
|
#define write_reg32_v(var, ADDR, OFFS) *(volatile uint32_t*)(ADDR+OFFS) = var
|
|
// __asm__ __volatile__("st.w %0, %1, %2"::"r" (var), "r"(ADDR), "imm"(OFFS));
|
|
|
|
#define read_reg8_v(var, ADDR, OFFS) var = *(volatile uint8_t*)(ADDR+OFFS)
|
|
// __asm__ __volatile__("ld.b %0, %1, %2":"=r" (var):"r"(ADDR), "imm"(OFFS));
|
|
|
|
#define write_reg8_v(var, ADDR, OFFS) *(volatile uint8_t*)(ADDR+OFFS) = var
|
|
// __asm__ __volatile__("st.b %0, %1, %2"::"r" (var), "r"(ADDR), "imm"(OFFS));
|
|
|
|
#define modify(reg, msb, lsb, v) { reg = (reg & ~( (0xffffffff << lsb) & (0xffffffff >> (31-msb)) ) | (v<<lsb) & ( (0xffffffff << lsb) & (0xffffffff >> (31-msb)) )); }
|
|
|
|
#define get_fld_shift(reg, msb, lsb) ((reg >> (lsb)) & (~(0xffffffff<<(msb+1))))
|
|
|
|
//extern uint32_t pmu_intr;
|
|
extern uint32_t ext_intr;
|
|
//extern uint32_t cpu_intr;
|
|
extern uint32_t wdt_caller;
|
|
extern uint32_t nmi_caller;
|
|
extern int cfg_waitop_sleep;
|
|
|
|
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
|
|
|
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
|
|
|
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
|
|
|
#define CLEAR_REG(REG) ((REG) = (0x0))
|
|
|
|
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
|
|
|
#define READ_REG(REG) ((REG))
|
|
|
|
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|