* TriCore Support python sample * Update sample_tricore.py Correct attribution * Update sample_tricore.py Fixed byte code to execute properly. * Update sample_tricore.py Removed testing artifact * Added tricore msvc config-file.h * Added STATIC to tricore config and added helper methods to symbol file generation. * Update op_helper.c Use built in crc32 * Fix tricore samples and small code blocks are now handled properly * Add CPU types * Generate bindings * Format code Co-authored-by: lazymio <mio@lazym.io>
174 lines
3.9 KiB
C
174 lines
3.9 KiB
C
/* This file is released under LGPL2.
|
|
See COPYING.LGPL2 in root directory for more details
|
|
*/
|
|
|
|
/*
|
|
Created for Unicorn Engine by Eric Poole <eric.poole@aptiv.com>, 2022
|
|
Copyright 2022 Aptiv
|
|
*/
|
|
|
|
#ifndef UNICORN_TRICORE_H
|
|
#define UNICORN_TRICORE_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifdef _MSC_VER
|
|
#pragma warning(disable : 4201)
|
|
#endif
|
|
|
|
//> TRICORE CPU
|
|
typedef enum uc_cpu_tricore {
|
|
UC_CPU_TRICORE_TC1796,
|
|
UC_CPU_TRICORE_TC1797,
|
|
UC_CPU_TRICORE_TC27X,
|
|
|
|
UC_CPU_TRICORE_ENDING
|
|
} uc_cpu_tricore;
|
|
|
|
//> TRICORE registers
|
|
typedef enum uc_tricore_reg {
|
|
UC_TRICORE_REG_INVALID = 0,
|
|
|
|
// General purpose registers (GPR)
|
|
// Address GPR
|
|
UC_TRICORE_REG_A0,
|
|
UC_TRICORE_REG_A1,
|
|
UC_TRICORE_REG_A2,
|
|
UC_TRICORE_REG_A3,
|
|
UC_TRICORE_REG_A4,
|
|
UC_TRICORE_REG_A5,
|
|
UC_TRICORE_REG_A6,
|
|
UC_TRICORE_REG_A7,
|
|
UC_TRICORE_REG_A8,
|
|
UC_TRICORE_REG_A9,
|
|
UC_TRICORE_REG_A10,
|
|
UC_TRICORE_REG_A11,
|
|
UC_TRICORE_REG_A12,
|
|
UC_TRICORE_REG_A13,
|
|
UC_TRICORE_REG_A14,
|
|
UC_TRICORE_REG_A15,
|
|
// Data GPR
|
|
UC_TRICORE_REG_D0,
|
|
UC_TRICORE_REG_D1,
|
|
UC_TRICORE_REG_D2,
|
|
UC_TRICORE_REG_D3,
|
|
UC_TRICORE_REG_D4,
|
|
UC_TRICORE_REG_D5,
|
|
UC_TRICORE_REG_D6,
|
|
UC_TRICORE_REG_D7,
|
|
UC_TRICORE_REG_D8,
|
|
UC_TRICORE_REG_D9,
|
|
UC_TRICORE_REG_D10,
|
|
UC_TRICORE_REG_D11,
|
|
UC_TRICORE_REG_D12,
|
|
UC_TRICORE_REG_D13,
|
|
UC_TRICORE_REG_D14,
|
|
UC_TRICORE_REG_D15,
|
|
|
|
/* CSFR Register */
|
|
UC_TRICORE_REG_PCXI,
|
|
|
|
UC_TRICORE_REG_PSW,
|
|
|
|
/* PSW flag cache for faster execution */
|
|
UC_TRICORE_REG_PSW_USB_C,
|
|
UC_TRICORE_REG_PSW_USB_V,
|
|
UC_TRICORE_REG_PSW_USB_SV,
|
|
UC_TRICORE_REG_PSW_USB_AV,
|
|
UC_TRICORE_REG_PSW_USB_SAV,
|
|
|
|
UC_TRICORE_REG_PC,
|
|
UC_TRICORE_REG_SYSCON,
|
|
UC_TRICORE_REG_CPU_ID,
|
|
UC_TRICORE_REG_BIV,
|
|
UC_TRICORE_REG_BTV,
|
|
UC_TRICORE_REG_ISP,
|
|
UC_TRICORE_REG_ICR,
|
|
UC_TRICORE_REG_FCX,
|
|
UC_TRICORE_REG_LCX,
|
|
UC_TRICORE_REG_COMPAT,
|
|
|
|
UC_TRICORE_REG_DPR0_U,
|
|
UC_TRICORE_REG_DPR1_U,
|
|
UC_TRICORE_REG_DPR2_U,
|
|
UC_TRICORE_REG_DPR3_U,
|
|
UC_TRICORE_REG_DPR0_L,
|
|
UC_TRICORE_REG_DPR1_L,
|
|
UC_TRICORE_REG_DPR2_L,
|
|
UC_TRICORE_REG_DPR3_L,
|
|
|
|
UC_TRICORE_REG_CPR0_U,
|
|
UC_TRICORE_REG_CPR1_U,
|
|
UC_TRICORE_REG_CPR2_U,
|
|
UC_TRICORE_REG_CPR3_U,
|
|
UC_TRICORE_REG_CPR0_L,
|
|
UC_TRICORE_REG_CPR1_L,
|
|
UC_TRICORE_REG_CPR2_L,
|
|
UC_TRICORE_REG_CPR3_L,
|
|
|
|
UC_TRICORE_REG_DPM0,
|
|
UC_TRICORE_REG_DPM1,
|
|
UC_TRICORE_REG_DPM2,
|
|
UC_TRICORE_REG_DPM3,
|
|
|
|
UC_TRICORE_REG_CPM0,
|
|
UC_TRICORE_REG_CPM1,
|
|
UC_TRICORE_REG_CPM2,
|
|
UC_TRICORE_REG_CPM3,
|
|
|
|
/* Memory Management Registers */
|
|
UC_TRICORE_REG_MMU_CON,
|
|
UC_TRICORE_REG_MMU_ASI,
|
|
UC_TRICORE_REG_MMU_TVA,
|
|
UC_TRICORE_REG_MMU_TPA,
|
|
UC_TRICORE_REG_MMU_TPX,
|
|
UC_TRICORE_REG_MMU_TFA,
|
|
|
|
// 1.3.1 Only
|
|
UC_TRICORE_REG_BMACON,
|
|
UC_TRICORE_REG_SMACON,
|
|
UC_TRICORE_REG_DIEAR,
|
|
UC_TRICORE_REG_DIETR,
|
|
UC_TRICORE_REG_CCDIER,
|
|
UC_TRICORE_REG_MIECON,
|
|
UC_TRICORE_REG_PIEAR,
|
|
UC_TRICORE_REG_PIETR,
|
|
UC_TRICORE_REG_CCPIER,
|
|
|
|
/* Debug Registers */
|
|
UC_TRICORE_REG_DBGSR,
|
|
UC_TRICORE_REG_EXEVT,
|
|
UC_TRICORE_REG_CREVT,
|
|
UC_TRICORE_REG_SWEVT,
|
|
UC_TRICORE_REG_TR0EVT,
|
|
UC_TRICORE_REG_TR1EVT,
|
|
UC_TRICORE_REG_DMS,
|
|
UC_TRICORE_REG_DCX,
|
|
UC_TRICORE_REG_DBGTCR,
|
|
UC_TRICORE_REG_CCTRL,
|
|
UC_TRICORE_REG_CCNT,
|
|
UC_TRICORE_REG_ICNT,
|
|
UC_TRICORE_REG_M1CNT,
|
|
UC_TRICORE_REG_M2CNT,
|
|
UC_TRICORE_REG_M3CNT,
|
|
|
|
UC_TRICORE_REG_ENDING, // <-- mark the end of the list of registers
|
|
|
|
// alias registers
|
|
UC_TRICORE_REG_GA0 = UC_TRICORE_REG_A0,
|
|
UC_TRICORE_REG_GA1 = UC_TRICORE_REG_A1,
|
|
UC_TRICORE_REG_GA8 = UC_TRICORE_REG_A8,
|
|
UC_TRICORE_REG_GA9 = UC_TRICORE_REG_A9,
|
|
UC_TRICORE_REG_SP = UC_TRICORE_REG_A10,
|
|
UC_TRICORE_REG_LR = UC_TRICORE_REG_A11,
|
|
UC_TRICORE_REG_IA = UC_TRICORE_REG_A15,
|
|
UC_TRICORE_REG_ID = UC_TRICORE_REG_D15,
|
|
} uc_tricore_reg;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif |