TraSH/sim/libs/_sdk/__def.h

69 lines
2.4 KiB
C

/*
* Copyright (c) 2020-2021, SERI Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-10-29 Lyons first version
*/
#ifndef __DEF_H__
#define __DEF_H__
#include <stdint.h>
#define CPU_FREQ_HZ (10125000)
#define CPU_FREQ_KHZ (CPU_FREQ_HZ / 1000)
#define CPU_FREQ_MHZ (CPU_FREQ_HZ / 1000000)
#define LCD_X_SIZE (240)
#define LCD_Y_SIZE (135)
#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 */
#ifndef UNUSED
#define UNUSED(X) ((void)X)
#endif
#define CLEAR_ARRAY(ins,data) memset((uint8_t*)ins,data,sizeof(ins))
#define CLEAR_STRUCT(ins,data) memset((uint8_t*)ins,data,sizeof(ins))
#define GET_ARRAY_NUM(ins) ((uint32_t)(sizeof(ins)/sizeof(ins[0])))
#define GET_STRUCT_SIZE(ins) ((uint32_t)(sizeof(ins)))
#define GET_WORD_BYTE0(w) ((uint8_t)((w) & 0xFF))
#define GET_WORD_BYTE1(w) ((uint8_t)((w>>8) & 0xFF))
#define GET_DWORD_BYTE0(d) GET_WORD_BYTE0(d)
#define GET_DWORD_BYTE1(d) GET_WORD_BYTE1(d)
#define GET_DWORD_BYTE2(d) ((uint8_t)(((d)>>16) & 0xFF))
#define GET_DWORD_BYTE3(d) ((uint8_t)(((d)>>24) & 0xFF))
#define BUILD_WORD(a,b) ((uint16_t)(((a)<<8 ) | (b)))
#define BUILD_DWORD(a,b,c,d) ((uint32_t)(((a)<<24) | ((b)<<16) | ((c)<<8) | (d)))
#define _internal_ro static const
#define _internal_rw static
#define _internal_zi static
#define read_csr(reg) ({ unsigned long __tmp; \
asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \
__tmp; })
#define write_csr(reg, val) ({ \
if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \
asm volatile ("csrw " #reg ", %0" :: "i"(val)); \
else \
asm volatile ("csrw " #reg ", %0" :: "r"(val)); })
#include "__simulation.h"
#endif //#ifndef __DEF_H__