empty_project_28377D/device/driverlib/inc/hw_cla.h

240 lines
12 KiB
C

//###########################################################################
//
// FILE: hw_cla.h
//
// TITLE: Definitions for the CLA registers.
//
//###########################################################################
// $Copyright:
// Copyright (C) 2022 Texas Instruments Incorporated - http://www.ti.com
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the
// distribution.
//
// Neither the name of Texas Instruments Incorporated nor the names of
// its contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// $
//###########################################################################
#ifndef HW_CLA_H
#define HW_CLA_H
//*************************************************************************************************
//
// The following are defines for the CLA register offsets
//
//*************************************************************************************************
#ifndef __TMS320C28XX_CLA__
#define CLA_O_MVECT1 0x0U // Task Interrupt Vector
#define CLA_O_MVECT2 0x1U // Task Interrupt Vector
#define CLA_O_MVECT3 0x2U // Task Interrupt Vector
#define CLA_O_MVECT4 0x3U // Task Interrupt Vector
#define CLA_O_MVECT5 0x4U // Task Interrupt Vector
#define CLA_O_MVECT6 0x5U // Task Interrupt Vector
#define CLA_O_MVECT7 0x6U // Task Interrupt Vector
#define CLA_O_MVECT8 0x7U // Task Interrupt Vector
#define CLA_O_MCTL 0x10U // Control Register
#define CLA_O_MIFR 0x20U // Interrupt Flag Register
#define CLA_O_MIOVF 0x21U // Interrupt Overflow Flag Register
#define CLA_O_MIFRC 0x22U // Interrupt Force Register
#define CLA_O_MICLR 0x23U // Interrupt Flag Clear Register
#define CLA_O_MICLROVF 0x24U // Interrupt Overflow Flag Clear Register
#define CLA_O_MIER 0x25U // Interrupt Enable Register
#define CLA_O_MIRUN 0x26U // Interrupt Run Status Register
#define CLA_O_MPC 0x28U // CLA Program Counter
#define CLA_O_MAR0 0x2AU // CLA Auxiliary Register 0
#define CLA_O_MAR1 0x2BU // CLA Auxiliary Register 1
#define CLA_O_MSTF 0x2EU // CLA Floating-Point Status Register
#define CLA_O_MR0 0x30U // CLA Floating-Point Result Register 0
#define CLA_O_MR1 0x34U // CLA Floating-Point Result Register 1
#define CLA_O_MR2 0x38U // CLA Floating-Point Result Register 2
#define CLA_O_MR3 0x3CU // CLA Floating-Point Result Register 3
#endif
#ifdef __TMS320C28XX_CLA__
#define CLA_O_SOFTINTEN 0x0U // CLA Software Interrupt Enable Register
#define CLA_O_SOFTINTFRC 0x2U // CLA Software Interrupt Force Register
#endif
#ifndef __TMS320C28XX_CLA__
//*************************************************************************************************
//
// The following are defines for the bit fields in the MCTL register
//
//*************************************************************************************************
#define CLA_MCTL_HARDRESET 0x1U // Hard Reset
#define CLA_MCTL_SOFTRESET 0x2U // Soft Reset
#define CLA_MCTL_IACKE 0x4U // IACK enable
//*************************************************************************************************
//
// The following are defines for the bit fields in the MIFR register
//
//*************************************************************************************************
#define CLA_MIFR_INT1 0x1U // Task 1 Interrupt Flag
#define CLA_MIFR_INT2 0x2U // Task 2 Interrupt Flag
#define CLA_MIFR_INT3 0x4U // Task 3 Interrupt Flag
#define CLA_MIFR_INT4 0x8U // Task 4 Interrupt Flag
#define CLA_MIFR_INT5 0x10U // Task 5 Interrupt Flag
#define CLA_MIFR_INT6 0x20U // Task 6 Interrupt Flag
#define CLA_MIFR_INT7 0x40U // Task 7 Interrupt Flag
#define CLA_MIFR_INT8 0x80U // Task 8 Interrupt Flag
//*************************************************************************************************
//
// The following are defines for the bit fields in the MIOVF register
//
//*************************************************************************************************
#define CLA_MIOVF_INT1 0x1U // Task 1 Interrupt Overflow Flag
#define CLA_MIOVF_INT2 0x2U // Task 2 Interrupt Overflow Flag
#define CLA_MIOVF_INT3 0x4U // Task 3 Interrupt Overflow Flag
#define CLA_MIOVF_INT4 0x8U // Task 4 Interrupt Overflow Flag
#define CLA_MIOVF_INT5 0x10U // Task 5 Interrupt Overflow Flag
#define CLA_MIOVF_INT6 0x20U // Task 6 Interrupt Overflow Flag
#define CLA_MIOVF_INT7 0x40U // Task 7 Interrupt Overflow Flag
#define CLA_MIOVF_INT8 0x80U // Task 8 Interrupt Overflow Flag
//*************************************************************************************************
//
// The following are defines for the bit fields in the MIFRC register
//
//*************************************************************************************************
#define CLA_MIFRC_INT1 0x1U // Task 1 Interrupt Force
#define CLA_MIFRC_INT2 0x2U // Task 2 Interrupt Force
#define CLA_MIFRC_INT3 0x4U // Task 3 Interrupt Force
#define CLA_MIFRC_INT4 0x8U // Task 4 Interrupt Force
#define CLA_MIFRC_INT5 0x10U // Task 5 Interrupt Force
#define CLA_MIFRC_INT6 0x20U // Task 6 Interrupt Force
#define CLA_MIFRC_INT7 0x40U // Task 7 Interrupt Force
#define CLA_MIFRC_INT8 0x80U // Task 8 Interrupt Force
//*************************************************************************************************
//
// The following are defines for the bit fields in the MICLR register
//
//*************************************************************************************************
#define CLA_MICLR_INT1 0x1U // Task 1 Interrupt Flag Clear
#define CLA_MICLR_INT2 0x2U // Task 2 Interrupt Flag Clear
#define CLA_MICLR_INT3 0x4U // Task 3 Interrupt Flag Clear
#define CLA_MICLR_INT4 0x8U // Task 4 Interrupt Flag Clear
#define CLA_MICLR_INT5 0x10U // Task 5 Interrupt Flag Clear
#define CLA_MICLR_INT6 0x20U // Task 6 Interrupt Flag Clear
#define CLA_MICLR_INT7 0x40U // Task 7 Interrupt Flag Clear
#define CLA_MICLR_INT8 0x80U // Task 8 Interrupt Flag Clear
//*************************************************************************************************
//
// The following are defines for the bit fields in the MICLROVF register
//
//*************************************************************************************************
#define CLA_MICLROVF_INT1 0x1U // Task 1 Interrupt Overflow Flag Clear
#define CLA_MICLROVF_INT2 0x2U // Task 2 Interrupt Overflow Flag Clear
#define CLA_MICLROVF_INT3 0x4U // Task 3 Interrupt Overflow Flag Clear
#define CLA_MICLROVF_INT4 0x8U // Task 4 Interrupt Overflow Flag Clear
#define CLA_MICLROVF_INT5 0x10U // Task 5 Interrupt Overflow Flag Clear
#define CLA_MICLROVF_INT6 0x20U // Task 6 Interrupt Overflow Flag Clear
#define CLA_MICLROVF_INT7 0x40U // Task 7 Interrupt Overflow Flag Clear
#define CLA_MICLROVF_INT8 0x80U // Task 8 Interrupt Overflow Flag Clear
//*************************************************************************************************
//
// The following are defines for the bit fields in the MIER register
//
//*************************************************************************************************
#define CLA_MIER_INT1 0x1U // Task 1 Interrupt Enable
#define CLA_MIER_INT2 0x2U // Task 2 Interrupt Enable
#define CLA_MIER_INT3 0x4U // Task 3 Interrupt Enable
#define CLA_MIER_INT4 0x8U // Task 4 Interrupt Enable
#define CLA_MIER_INT5 0x10U // Task 5 Interrupt Enable
#define CLA_MIER_INT6 0x20U // Task 6 Interrupt Enable
#define CLA_MIER_INT7 0x40U // Task 7 Interrupt Enable
#define CLA_MIER_INT8 0x80U // Task 8 Interrupt Enable
//*************************************************************************************************
//
// The following are defines for the bit fields in the MIRUN register
//
//*************************************************************************************************
#define CLA_MIRUN_INT1 0x1U // Task 1 Run Status
#define CLA_MIRUN_INT2 0x2U // Task 2 Run Status
#define CLA_MIRUN_INT3 0x4U // Task 3 Run Status
#define CLA_MIRUN_INT4 0x8U // Task 4 Run Status
#define CLA_MIRUN_INT5 0x10U // Task 5 Run Status
#define CLA_MIRUN_INT6 0x20U // Task 6 Run Status
#define CLA_MIRUN_INT7 0x40U // Task 7 Run Status
#define CLA_MIRUN_INT8 0x80U // Task 8 Run Status
//*************************************************************************************************
//
// The following are defines for the bit fields in the _MSTF register
//
//*************************************************************************************************
#define CLA_MSTF_LVF 0x1U // Latched Overflow Flag
#define CLA_MSTF_LUF 0x2U // Latched Underflow Flag
#define CLA_MSTF_NF 0x4U // Negative Float Flag
#define CLA_MSTF_ZF 0x8U // Zero Float Flag
#define CLA_MSTF_TF 0x40U // Test Flag
#define CLA_MSTF_RNDF32 0x200U // Round 32-bit Floating-Point Mode
#define CLA_MSTF_MEALLOW 0x800U // MEALLOW Status
#define CLA_MSTF_RPC_S 12U
#define CLA_MSTF_RPC_M 0xFFFF000U // Return PC
#endif
#ifdef __TMS320C28XX_CLA__
//*************************************************************************************************
//
// The following are defines for the bit fields in the SOFTINTEN register
//
//*************************************************************************************************
#define CLA_SOFTINTEN_TASK1 0x1U // Configure Software Interrupt or End of Task interrupt.
#define CLA_SOFTINTEN_TASK2 0x2U // Configure Software Interrupt or End of Task interrupt.
#define CLA_SOFTINTEN_TASK3 0x4U // Configure Software Interrupt or End of Task interrupt.
#define CLA_SOFTINTEN_TASK4 0x8U // Configure Software Interrupt or End of Task interrupt.
#define CLA_SOFTINTEN_TASK5 0x10U // Configure Software Interrupt or End of Task interrupt.
#define CLA_SOFTINTEN_TASK6 0x20U // Configure Software Interrupt or End of Task interrupt.
#define CLA_SOFTINTEN_TASK7 0x40U // Configure Software Interrupt or End of Task interrupt.
#define CLA_SOFTINTEN_TASK8 0x80U // Configure Software Interrupt or End of Task interrupt.
//*************************************************************************************************
//
// The following are defines for the bit fields in the SOFTINTFRC register
//
//*************************************************************************************************
#define CLA_SOFTINTFRC_TASK1 0x1U // Force CLA software interrupt for the corresponding task.
#define CLA_SOFTINTFRC_TASK2 0x2U // Force CLA software interrupt for the corresponding task.
#define CLA_SOFTINTFRC_TASK3 0x4U // Force CLA software interrupt for the corresponding task.
#define CLA_SOFTINTFRC_TASK4 0x8U // Force CLA software interrupt for the corresponding task.
#define CLA_SOFTINTFRC_TASK5 0x10U // Force CLA software interrupt for the corresponding task.
#define CLA_SOFTINTFRC_TASK6 0x20U // Force CLA software interrupt for the corresponding task.
#define CLA_SOFTINTFRC_TASK7 0x40U // Force CLA software interrupt for the corresponding task.
#define CLA_SOFTINTFRC_TASK8 0x80U // Force CLA software interrupt for the corresponding task.
#endif
#endif