SYS/BIOS  7.00
Hwi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020-2021, Texas Instruments Incorporated - https://www.ti.com
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
381 /*
382  * ======== Hwi.h ========
383  */
384 
385 /* BIOS 6.x compatibility, use -Dxdc_std__include to disable */
387 #include <xdc/std.h>
390 #include <stdbool.h>
391 #include <stddef.h>
392 #include <stdint.h>
393 
394 #include <ti/sysbios/BIOS.h>
395 
397 
398 /*
399  * First time Hwi.h is included within a compilation unit:
400  * -undefine any previous Hwi_ short names
401  * -do short-to-long name conversions.
402  * -include all short-named Hwi API definitions.
403  *
404  * All subsequent includes:
405  * -undefine any previous Hwi_ short names
406  * -perform short-to-long name converions
407  * -Do not include short-named Hwi API definitins
408  * because the long name Hwi API definitions are
409  * already known to the compiler.
410  */
411 
413 #define do_hwi_undef_short_names
414 #define do_hwi_short_to_long_name_conversion
415 #include "Hwi_defs.h"
418 #ifndef ti_sysbios_family_arm_v8m_Hwi__include
419 #define ti_sysbios_family_arm_v8m_Hwi__include
420 
421 #include <ti/sysbios/hal/Hwi.h>
424 #ifdef __cplusplus
425 extern "C" {
426 #endif
427 
428 /*
429  * Error and Assert Ids
430  */
435 #define Hwi_E_badIntNum "intnum: %d is out of range"
436 
440 #define Hwi_E_alreadyDefined "Hwi already defined: intr# %d"
441 
446 #define Hwi_E_hwiLimitExceeded "Too many interrupts defined"
447 
451 #define Hwi_E_exception "hardware exception id = %d, pc = 0x%08x"
452 
456 #define Hwi_E_noIsr "no ISR, id = %d, pc = 0x%08x"
457 
461 #define Hwi_E_NMI "NMI: %s"
462 
466 #define Hwi_E_hardFault "Hard-fault: %s"
467 
471 #define Hwi_E_memFault "Mem-fault: %s, addresss: 0x%08x"
472 
476 #define Hwi_E_busFault "Bus-fault: %s, address: 0x%08x"
477 
481 #define Hwi_E_usageFault "Usage-fault: %s"
482 
486 #define Hwi_E_svCall "SvCall: svNum = %d"
487 
491 #define Hwi_E_debugMon "Debug-monitor: %s"
492 
496 #define Hwi_E_reserved "reserved %s %d"
497 
501 #define Hwi_E_stackOverflow "ISR stack overflow"
502 
503 typedef struct Hwi_Struct Hwi_Struct;
504 typedef struct Hwi_Struct Hwi_Object;
507 
509 /* included for backward compatibility with DPL but not required otherwise */
510 typedef struct Hwi_Struct Hwi_Struct2;
511 typedef struct Hwi_Struct2__ Hwi_Struct2__;
522 typedef struct Hwi_HookSet Hwi_HookSet;
524 typedef struct Hwi_Params Hwi_Params;
525 
529 typedef struct Hwi_NVIC Hwi_NVIC;
540 
544 typedef void (*Hwi_FuncPtr)(uintptr_t);
545 
549 typedef void (*Hwi_VectorFuncPtr)(void );
550 
555 
556 /* ExcHookFunc */
558 
567 struct Hwi_HookSet {
568  void (*registerFxn)(int arg1);
569  void (*createFxn)(Hwi_Handle arg1, Error_Block* arg2);
570  void (*beginFxn)(Hwi_Handle arg1);
571  void (*endFxn)(Hwi_Handle arg1);
572  void (*deleteFxn)(Hwi_Handle arg1);
573 };
574 
575 typedef struct { int length; const Hwi_HookSet *elem; } Hwi_Hook;
576 
592 };
593 
598 
605  size_t hwiStackPeak;
606  size_t hwiStackSize;
607  void * hwiStackBase;
608 };
609 
614 struct Hwi_CCR {
618  uint8_t STKALIGN;
619  uint8_t BFHFNMIGN;
623  uint8_t DIV_0_TRP;
624  uint8_t UNALIGN_TRP;
628  uint8_t USERSETMPEND;
629  uint8_t NONEBASETHRDENA;
630 };
635 struct Hwi_NVIC {
636  uint32_t RES_00;
637  uint32_t ICTR;
638  uint32_t RES_08;
639  uint32_t RES_0C;
640  uint32_t STCSR;
641  uint32_t STRVR;
642  uint32_t STCVR;
643  uint32_t STCALIB;
644  uint32_t RES_20 [56];
645  uint32_t ISER [16];
646  uint32_t RES_140 [16];
647  uint32_t ICER [16];
648  uint32_t RES_1C0 [16];
649  uint32_t ISPR [16];
650  uint32_t RES_240 [16];
651  uint32_t ICPR [16];
652  uint32_t RES_2C0 [16];
653  uint32_t IABR [16];
654  uint32_t RES_340 [16];
655  uint32_t ITNS [16];
656  uint32_t RES_3C0 [16];
657  uint8_t IPR [492];
658  uint32_t RES_5F0 [453];
659  uint32_t CPUIDBR;
660  uint32_t ICSR;
661  uint32_t VTOR;
662  uint32_t AIRCR;
663  uint32_t SCR;
664  uint32_t CCR;
665  uint8_t SHPR[12];
666  uint32_t SHCSR;
667  uint8_t MMFSR;
668  uint8_t BFSR;
669  uint16_t UFSR;
670  uint32_t HFSR;
671  uint32_t DFSR;
672  uint32_t MMAR;
673  uint32_t BFAR;
674  uint32_t AFSR;
675  uint32_t PFR0;
676  uint32_t PFR1;
677  uint32_t DFR0;
678  uint32_t AFR0;
679  uint32_t MMFR0;
680  uint32_t MMFR1;
681  uint32_t MMFR2;
682  uint32_t MMFR3;
683  uint32_t ISAR0;
684  uint32_t ISAR1;
685  uint32_t ISAR2;
686  uint32_t ISAR3;
687  uint32_t ISAR4;
688  uint32_t ISAR5;
689  uint32_t CLIDR;
690  uint32_t CTR;
691  uint32_t CCSIDR;
692  uint32_t CSSELR;
693  uint32_t CPACR;
694  uint32_t NSACR;
695  uint32_t MPU_TYPE;
696  uint32_t MPU_CTRL;
697  uint32_t MPU_RNR;
698  uint32_t MPU_RBAR;
699  uint32_t MPU_RLAR;
700  uint32_t MPU_RBAR_An;
701  uint32_t MPU_RLAR_An;
702  uint32_t RES_DAC[5];
703  uint32_t MPU_MAIR0;
704  uint32_t MPU_MAIR1;
705  uint32_t RES_DC8[2];
706  uint32_t SAU_CTRL;
707  uint32_t SAU_TYPE;
708  uint32_t SAU_RNR;
709  uint32_t SAU_RBAR;
710  uint32_t SAU_RLAR;
711  uint32_t SFSR;
712  uint32_t SFAR;
713  uint32_t RES_DEC;
714  uint32_t DHCSR;
715  uint32_t DCRSR;
716  uint32_t DCRDR;
717  uint32_t DEMCR;
718  uint32_t RES_E00;
719  uint32_t DAUTHCTRL;
720  uint32_t DSCSR;
721  uint32_t RES_E0C[61];
722  uint32_t STI;
723  uint32_t RES_F04[12];
724  uint32_t FPCCR;
725  uint32_t FPCAR;
726  uint32_t FPDSCR;
727  uint32_t MVFR0;
728  uint32_t MVFR1;
729  uint32_t MVFR2;
730  uint32_t RES_F48;
731  uint32_t ICIALLU;
732  uint32_t RES_F54;
733  uint32_t ICIMVAU;
734  uint32_t DCIMVAC;
735  uint32_t DCISW;
736  uint32_t DCCMVAU;
737  uint32_t DCCMVAC;
738  uint32_t DCCSW;
739  uint32_t DCCIMVAC;
740  uint32_t DCCISW;
741  uint32_t BPIALL;
742  uint32_t RES_F7C[13];
743  uint32_t DLAR;
744  uint32_t DLSR;
745  uint32_t DAUTHSTATUS;
746  uint32_t DDEVARCH;
747  uint32_t RES_FC0[3];
748  uint32_t DDEVTYPE;
749  uint32_t DPIDR4;
750  uint32_t DPIDR5;
751  uint32_t DPIDR6;
752  uint32_t DPIDR7;
753  uint32_t DPIDR0;
754  uint32_t DPIDR1;
755  uint32_t DPIDR2;
756  uint32_t DPIDR3;
757  uint32_t DCIDR0;
758  uint32_t DCIDR1;
759  uint32_t DCIDR2;
760  uint32_t DCIDR3;
761 };
762 
767 extern volatile Hwi_NVIC Hwi_nvic;
768 
774  void * threadHandle;
775  void * threadStack;
777  void * r0;
778  void * r1;
779  void * r2;
780  void * r3;
781  void * r4;
782  void * r5;
783  void * r6;
784  void * r7;
785  void * r8;
786  void * r9;
787  void * r10;
788  void * r11;
789  void * r12;
790  void * sp;
791  void * lr;
792  void * pc;
793  void * psr;
794  void * ICSR;
795  void * MMFSR;
796  void * BFSR;
797  void * UFSR;
798  void * HFSR;
799  void * DFSR;
800  void * MMAR;
801  void * BFAR;
802  void * AFSR;
803 };
804 
805 /* Module_State */
807  char *taskSP; /* 0x0 */
808  bool excActive; /* 0x4 */
809  void * excContext; /* 0x8 */
810  void * excStack; /* 0xc */
811  void * isrStack; /* 0x10 */
812  void * isrStackBase; /* 0x14 */
813  unsigned int swiTaskKeys; /* 0x18 */
814  void * isrStackSize;
817  volatile bool vnvicFlushRequired;
818  uint8_t *intAffinity;
819  uint32_t *intAffinityMasks;
821  bool initDone;
822 };
823 
824 /* Object */
825 struct Hwi_Struct {
829  uintptr_t arg;
831  uintptr_t irp;
841  uint8_t priority;
842  int16_t intNum;
843  void * *hookEnv;
844 };
845 
849 typedef void (*Hwi_ExcHandlerFuncPtr)(unsigned int* arg1, unsigned int arg2);
850 
867 extern const bool Hwi_dispatcherAutoNestingSupport;
868 
884 extern const bool Hwi_dispatcherSwiSupport;
885 
901 extern const bool Hwi_dispatcherTaskSupport;
902 
916 extern const bool Hwi_dispatcherIrpTrackingSupport;
925 extern const int Hwi_NUM_INTERRUPTS;
926 
934 extern const int Hwi_NUM_PRIORITIES;
935 
940 extern const Hwi_Hook Hwi_hooks;
941 
946 extern const Hwi_VectorFuncPtr Hwi_nullIsrFunc;
947 
980 extern const Hwi_ExcHandlerFuncPtr Hwi_excHandlerFunc;
996 extern const Hwi_ExcHookFunc Hwi_excHookFunc;
997 
1020 extern const unsigned int Hwi_disablePriority;
1021 
1051 extern const unsigned int Hwi_priGroup;
1052 
1084 extern const unsigned int Hwi_numSparseInterrupts;
1085 
1092 extern const uint32_t Hwi_ccr;
1095 struct Hwi_Params {
1100  Hwi_MaskingOption maskSetting;
1104  uintptr_t arg;
1115  int eventId;
1146 };
1147 
1185 extern unsigned int Hwi_Disable();
1186 
1219 extern unsigned int Hwi_Enable();
1220 
1243 extern void Hwi_Restore(uint32_t key);
1244 
1246 extern void Hwi_init(void);
1247 
1248 /* Instance_init */
1249 extern int Hwi_Instance_init(Hwi_Object *obj, int intNum, Hwi_FuncPtr hwiFxn, const Hwi_Params *prms, Error_Block *eb);
1250 
1251 /* Instance_finalize */
1252 extern void Hwi_Instance_finalize(Hwi_Object *obj, int ec);
1255 extern Hwi_Handle Hwi_create(int intNum, Hwi_FuncPtr hwiFxn, const Hwi_Params *prms, Error_Block *eb);
1256 
1257 extern Hwi_Handle Hwi_construct(Hwi_Struct *obj, int intNum, Hwi_FuncPtr hwiFxn, const Hwi_Params *prms, Error_Block *eb);
1258 
1259 extern void Hwi_delete(Hwi_Handle *handle);
1260 
1261 extern void Hwi_destruct(Hwi_Struct *obj);
1262 
1328 extern bool Hwi_getStackInfo(Hwi_StackInfo *stkInfo, bool computeStackDepth);
1329 
1400 extern bool Hwi_getCoreStackInfo(Hwi_StackInfo *stkInfo, bool computeStackDepth, unsigned int coreId);
1409 extern void Hwi_startup(void);
1410 
1415 extern void Hwi_switchFromBootStack(void);
1423 extern void Hwi_post(unsigned int intNum);
1424 
1433 extern char *Hwi_getTaskSP(void);
1445 extern unsigned int Hwi_disableInterrupt(unsigned int intNum);
1446 
1456 extern unsigned int Hwi_enableInterrupt(unsigned int intNum);
1457 
1468 extern void Hwi_restoreInterrupt(unsigned int intNum, unsigned int key);
1469 
1478 extern void Hwi_clearInterrupt(unsigned int intNum);
1479 
1488 extern Hwi_FuncPtr Hwi_getFunc(Hwi_Handle hwi, uintptr_t *arg);
1489 
1516 extern void Hwi_setFunc(Hwi_Handle hwi, Hwi_FuncPtr fxn, uintptr_t arg);
1517 
1526 extern void * Hwi_getHookContext(Hwi_Handle hwi, int id);
1527 
1535 extern void Hwi_setHookContext(Hwi_Handle hwi, int id, void * hookContext);
1536 
1544 extern uintptr_t Hwi_getIrp(Hwi_Handle hwi);
1545 
1562 extern void Hwi_plug(unsigned int intNum, void *fxn);
1563 
1571 extern Hwi_Handle Hwi_getHandle(unsigned int intNum);
1572 
1587 extern void Hwi_setPriority(unsigned int intNum, unsigned int priority);
1588 
1595 extern void Hwi_excSetBuffers(void * excContextBuffer, void * excStackBuffer);
1596 
1604 extern void Hwi_reconfig(Hwi_Handle hwi, Hwi_FuncPtr fxn, const Hwi_Params *params);
1605 
1607 extern Hwi_Handle Hwi_construct2(Hwi_Struct2 *hwi, int intNum, Hwi_FuncPtr hwiFxn, const Hwi_Params *prms);
1608 extern void Hwi_initNVIC(void);
1609 extern void Hwi_initStacks(void * hwiStack);
1610 extern int Hwi_postInit(Hwi_Object *hwi, Error_Block *eb);
1611 extern void Hwi_excHandlerAsm(void);
1612 extern void Hwi_excHandler(unsigned int *excStack, unsigned int lr);
1613 extern void Hwi_excHandlerMin(unsigned int *excStack, unsigned int lr);
1614 extern void Hwi_excHandlerMax(unsigned int *excStack, unsigned int lr);
1615 extern void Hwi_excFillContext(unsigned int *excStack);
1616 extern void Hwi_excNmi(unsigned int *excStack);
1617 extern void Hwi_excHardFault(unsigned int *excStack);
1618 extern void Hwi_excMemFault(unsigned int *excStack);
1619 extern void Hwi_excBusFault(unsigned int *excStack);
1620 extern void Hwi_excUsageFault(unsigned int *excStack);
1621 extern void Hwi_excSvCall(unsigned int *excStack);
1622 extern void Hwi_excDebugMon(unsigned int *excStack);
1623 extern void Hwi_excReserved(unsigned int *excStack, unsigned int excNum);
1624 extern void Hwi_excNoIsr(unsigned int *excStack, unsigned int excNum);
1625 extern void Hwi_excDumpRegs(unsigned int lr);
1626 extern void Hwi_pendSV(void);
1627 extern void Hwi_setStackLimit(void * stackBase);
1628 extern unsigned int Hwi_swiDisableNull(void);
1629 extern void Hwi_swiRestoreNull(unsigned int key);
1630 extern void Hwi_dispatch(void);
1631 extern unsigned int Hwi_dispatchC(uintptr_t irp, uint32_t dummy1, uint32_t dummy2, Hwi_Object *hwi);
1632 extern void Hwi_doSwiRestore(unsigned int tskKey);
1633 extern void Hwi_doTaskRestore(unsigned int tskKey);
1634 extern unsigned int Hwi_swiDisable();
1635 extern void Hwi_swiRestore(unsigned int key);
1636 extern void Hwi_swiRestoreHwi(unsigned int key);
1637 extern unsigned int Hwi_taskDisable();
1638 extern void Hwi_taskRestoreHwi(unsigned int key);
1646 extern void Hwi_switchFromBootStack(void);
1647 
1648 /* checkStack */
1649 extern void Hwi_checkStack(void);
1650 
1651 /* initStack */
1652 extern void Hwi_initStack(void);
1653 
1654 /* initStackMin */
1655 extern void Hwi_initStackMin(void);
1656 
1657 /* switchAndRunFunc */
1658 extern void Hwi_switchAndRunFunc(void (*func)(void));
1661 /*
1662  * ======== SYSTEM FUNCTIONS ========
1663  */
1664 
1665 /* Params_init */
1666 extern void Hwi_Params_init(Hwi_Params *prms);
1667 
1669 /* Params_copy */
1670 extern void Hwi_Params_copy(Hwi_Params *dst, Hwi_Params *src);
1673 /* Object_first */
1674 extern Hwi_Handle Hwi_Object_first(void);
1675 
1676 /* Object_next */
1677 extern Hwi_Handle Hwi_Object_next(Hwi_Object *obj);
1678 
1679 /*
1680  * ======== STATE STRUCTURES ========
1681  */
1682 
1684 extern Hwi_Module_State Hwi_Module_state;
1685 
1686 #define Hwi_module ((Hwi_Module_State *) &(Hwi_Module_state))
1687 
1688 #define Hwi_Object_heap() NULL
1689 
1690 static inline Hwi_Handle Hwi_handle(Hwi_Struct *str)
1691 {
1692  return ((Hwi_Handle)str);
1693 }
1694 
1695 static inline Hwi_Struct * Hwi_struct(Hwi_Handle h)
1696 {
1697  return ((Hwi_Struct *)h);
1698 }
1701 #ifdef __cplusplus
1702 }
1703 #endif
1704 
1705 #endif /* ti_sysbios_family_arm_v8m_Hwinclude */
1706 
1708 #if defined(ti_sysbios_family_arm_v8m_Hwi__nolocalnames)
1709 #define do_hwi_undef_short_names
1710 #include "Hwi_defs.h"
1711 #endif
1712 
void * r0
Definition: Hwi.h:777
uint32_t DLSR
Definition: Hwi.h:744
void * hwiStackBase
Definition: Hwi.h:607
uint32_t BPIALL
Definition: Hwi.h:741
uint32_t SAU_RBAR
Definition: Hwi.h:709
uint32_t MPU_RLAR_An
Definition: Hwi.h:701
void Hwi_restoreInterrupt(unsigned int intNum, unsigned int key)
Restore a specific interrupt&#39;s enabled/disabled state.
bool enableInt
Enable this interrupt when object is created? Default is true.
Definition: Hwi.h:1108
void * BFAR
Definition: Hwi.h:801
uint8_t * intAffinity
Definition: Hwi.h:818
Hwi_Handle Hwi_create(int intNum, Hwi_FuncPtr hwiFxn, const Hwi_Params *prms, Error_Block *eb)
void(* deleteFxn)(Hwi_Handle arg1)
Definition: Hwi.h:572
uint8_t MMFSR
Definition: Hwi.h:667
uint32_t SFSR
Definition: Hwi.h:711
uint32_t ISAR1
Definition: Hwi.h:684
int priority
Interrupt priority.
Definition: Hwi.h:1125
uint32_t SAU_RNR
Definition: Hwi.h:708
uint32_t SAU_CTRL
Definition: Hwi.h:706
uint32_t DCCIMVAC
Definition: Hwi.h:739
Hwi_Struct * Hwi_Handle
Definition: Hwi.h:505
BIOS_ThreadType
Current thread type definitions.
Definition: BIOS.h:189
uint32_t CTR
Definition: Hwi.h:690
uint32_t RES_E00
Definition: Hwi.h:718
uint32_t MPU_CTRL
Definition: Hwi.h:696
uint32_t AIRCR
Definition: Hwi.h:662
size_t hwiStackPeak
Definition: Hwi.h:605
void Hwi_destruct(Hwi_Struct *obj)
uint32_t BFAR
Definition: Hwi.h:673
uint16_t UFSR
Definition: Hwi.h:669
uint32_t SHCSR
Definition: Hwi.h:666
uint32_t CPACR
Definition: Hwi.h:693
void * excStack
Definition: Hwi.h:810
void * r9
Definition: Hwi.h:786
void * MMFSR
Definition: Hwi.h:795
void * dispatchTable
Definition: Hwi.h:816
uint32_t ICIALLU
Definition: Hwi.h:731
Only this interrupt is disabled (not support on cortexM devices)
Definition: Hwi.h:587
void ** hookEnv
Definition: Hwi.h:843
Hwi_MaskingOption
Interrupt masking options.
Definition: Hwi.h:581
char * taskSP
Definition: Hwi.h:807
uint32_t SCR
Definition: Hwi.h:663
void * UFSR
Definition: Hwi.h:797
uint32_t DHCSR
Definition: Hwi.h:714
void * r7
Definition: Hwi.h:784
void * r5
Definition: Hwi.h:782
uint32_t DCCMVAU
Definition: Hwi.h:736
uint32_t STRVR
Definition: Hwi.h:641
uint32_t VTOR
Definition: Hwi.h:661
uint8_t priority
Interrupt priority.
Definition: Hwi.h:841
uint32_t DPIDR2
Definition: Hwi.h:755
uint32_t FPCCR
Definition: Hwi.h:724
uint32_t PFR0
Definition: Hwi.h:675
uint32_t MVFR0
Definition: Hwi.h:727
uint32_t MMFR0
Definition: Hwi.h:679
void(* Hwi_VectorFuncPtr)(void)
Hwi vector function type definition.
Definition: Hwi.h:549
Definition: Hwi.h:1095
uint32_t NSACR
Definition: Hwi.h:694
uint32_t DCCSW
Definition: Hwi.h:738
void Hwi_clearInterrupt(unsigned int intNum)
Clear a specific interrupt.
void * vectorTableBase
Definition: Hwi.h:815
const Hwi_ExcHookFunc Hwi_excHookFunc
User Exception hook function.
void * ICSR
Definition: Hwi.h:794
All interrupts are disabled (not support on cortexM devices)
Definition: Hwi.h:585
uint32_t MPU_RBAR_An
Definition: Hwi.h:700
Hwi_Handle Hwi_Object_first(void)
void Hwi_setHookContext(Hwi_Handle hwi, int id, void *hookContext)
Set hook instance&#39;s context for a Hwi.
uint32_t STCSR
Definition: Hwi.h:640
uint32_t DPIDR5
Definition: Hwi.h:750
void * r3
Definition: Hwi.h:780
uint32_t MPU_RNR
Definition: Hwi.h:697
void * r1
Definition: Hwi.h:778
uint32_t ISAR2
Definition: Hwi.h:685
Definition: Hwi.h:825
size_t hwiStackSize
Definition: Hwi.h:606
bool useDispatcher
Use the interrupt dispatcher with this interrupt. Default is true.
Definition: Hwi.h:1145
bool initDone
Definition: Hwi.h:821
uint32_t FPCAR
Definition: Hwi.h:725
void * r6
Definition: Hwi.h:783
uint32_t RES_F48
Definition: Hwi.h:730
void * BFSR
Definition: Hwi.h:796
void Hwi_delete(Hwi_Handle *handle)
Runtime error manager.
uint32_t DPIDR0
Definition: Hwi.h:753
Hwi_Handle Hwi_getHandle(unsigned int intNum)
Returns Hwi_handle associated with intNum.
uint32_t DCRDR
Definition: Hwi.h:716
uint32_t DFR0
Definition: Hwi.h:677
uint32_t DSCSR
Definition: Hwi.h:720
uint32_t RES_08
Definition: Hwi.h:638
void Hwi_Restore(uint32_t key)
restore global interrupts to the state they were in prior Hwi_disable().
void Hwi_setPriority(unsigned int intNum, unsigned int priority)
Set an interrupt&#39;s relative priority.
void * HFSR
Definition: Hwi.h:798
uint32_t MPU_RBAR
Definition: Hwi.h:698
void * r2
Definition: Hwi.h:779
void * excContext
Definition: Hwi.h:809
Definition: Hwi.h:575
uint32_t ISAR4
Definition: Hwi.h:687
uint32_t DCIDR3
Definition: Hwi.h:760
unsigned int Hwi_Disable()
Globally disable interrupts.
uint32_t SAU_RLAR
Definition: Hwi.h:710
uint32_t DPIDR6
Definition: Hwi.h:751
void * r10
Definition: Hwi.h:787
void Hwi_excSetBuffers(void *excContextBuffer, void *excStackBuffer)
Set the exception context and stack buffer pointers.
uint32_t MMFR3
Definition: Hwi.h:682
uint32_t DCCMVAC
Definition: Hwi.h:737
uint32_t DDEVTYPE
Definition: Hwi.h:748
uint32_t DAUTHCTRL
Definition: Hwi.h:719
uint32_t DCIDR1
Definition: Hwi.h:758
Hwi_ExceptionHookFuncPtr Hwi_ExcHookFunc
Definition: Hwi.h:557
void Hwi_setFunc(Hwi_Handle hwi, Hwi_FuncPtr fxn, uintptr_t arg)
Overwrite Hwi function and arg.
uint32_t ICTR
Definition: Hwi.h:637
uint32_t CCR
Definition: Hwi.h:664
SYS/BIOS Top-Level Manager.
void * pc
Definition: Hwi.h:792
Error block.
Definition: Error.h:152
const int Hwi_NUM_INTERRUPTS
The Cortex V8M NVIC supports up to 256 interrupts/exceptions.
void Hwi_reconfig(Hwi_Handle hwi, Hwi_FuncPtr fxn, const Hwi_Params *params)
Reconfigure a dispatched interrupt.
void * sp
Definition: Hwi.h:790
uint32_t MPU_RLAR
Definition: Hwi.h:699
void(* Hwi_ExcHandlerFuncPtr)(unsigned int *arg1, unsigned int arg2)
Hwi exception handler function type definition.
Definition: Hwi.h:849
uint32_t ISAR0
Definition: Hwi.h:683
uint32_t DLAR
Definition: Hwi.h:743
void * r12
Definition: Hwi.h:789
uint32_t CSSELR
Definition: Hwi.h:692
void * MMAR
Definition: Hwi.h:800
void * AFSR
Definition: Hwi.h:802
uint32_t SFAR
Definition: Hwi.h:712
void * DFSR
Definition: Hwi.h:799
Hwi_Handle Hwi_construct(Hwi_Struct *obj, int intNum, Hwi_FuncPtr hwiFxn, const Hwi_Params *prms, Error_Block *eb)
uint32_t DAUTHSTATUS
Definition: Hwi.h:745
uint8_t BFSR
Definition: Hwi.h:668
Nested Vectored Interrupt Controller.
Definition: Hwi.h:635
uint32_t RES_DEC
Definition: Hwi.h:713
uint32_t CPUIDBR
Definition: Hwi.h:659
uint32_t DCIDR2
Definition: Hwi.h:759
void(* beginFxn)(Hwi_Handle arg1)
Definition: Hwi.h:570
const unsigned int Hwi_priGroup
The PRIGROUP setting. Default is 0.
Hwi_FuncPtr fxn
Definition: Hwi.h:830
bool Hwi_getStackInfo(Hwi_StackInfo *stkInfo, bool computeStackDepth)
Get Hwi stack usage Info.
void(* endFxn)(Hwi_Handle arg1)
Definition: Hwi.h:571
uint32_t DPIDR7
Definition: Hwi.h:752
uint32_t ICSR
Definition: Hwi.h:660
uint32_t FPDSCR
Definition: Hwi.h:726
uintptr_t irp
Definition: Hwi.h:831
uintptr_t arg
ISR function argument. Default is 0.
Definition: Hwi.h:829
int length
Definition: Hwi.h:575
uint32_t MPU_MAIR1
Definition: Hwi.h:704
uint32_t AFR0
Definition: Hwi.h:678
No interrupts are disabled (not support on cortexM devices)
Definition: Hwi.h:583
uint32_t DEMCR
Definition: Hwi.h:717
int eventId
Interrupt event ID (Interrupt Selection Number)
Definition: Hwi.h:1115
void * psr
Definition: Hwi.h:793
uint32_t AFSR
Definition: Hwi.h:674
uint32_t MPU_TYPE
Definition: Hwi.h:695
BIOS_ThreadType threadType
Definition: Hwi.h:773
uint32_t DCRSR
Definition: Hwi.h:715
uint32_t DPIDR3
Definition: Hwi.h:756
All current and lower priority interrupts are disabled. (default for all cortexM devices) ...
Definition: Hwi.h:591
unsigned int Hwi_enableInterrupt(unsigned int intNum)
Enable a specific interrupt.
volatile bool vnvicFlushRequired
Definition: Hwi.h:817
uint32_t DFSR
Definition: Hwi.h:671
void * isrStackSize
Definition: Hwi.h:814
uint32_t DCIDR0
Definition: Hwi.h:757
Exception Context - Register contents at the time of an exception.
Definition: Hwi.h:772
void * isrStackBase
Definition: Hwi.h:812
volatile Hwi_NVIC Hwi_nvic
Physical Nested Vectored Interrupt Controller Device. short name is "Hwi_nvic" long name is "ti_sysbi...
uint32_t DCCISW
Definition: Hwi.h:740
Hwi_Struct * Hwi_Instance
Definition: Hwi.h:506
void(* Hwi_FuncPtr)(uintptr_t)
Hwi create function type definition.
Definition: Hwi.h:544
uint32_t MPU_MAIR0
Definition: Hwi.h:703
Hwi_VectorFuncPtr * vectorTable
Definition: Hwi.h:820
uint32_t MMFR1
Definition: Hwi.h:680
const unsigned int Hwi_disablePriority
The priority that BASEPRI is set to by Hwi_disable().
uint32_t STCVR
Definition: Hwi.h:642
uint32_t MMAR
Definition: Hwi.h:672
Definition: Hwi.h:806
const int Hwi_NUM_PRIORITIES
The Cortex V8M NVIC supports up to 256 interrupt priorities.
uint32_t ISAR5
Definition: Hwi.h:688
unsigned int swiTaskKeys
Definition: Hwi.h:813
const unsigned int Hwi_numSparseInterrupts
If Hwi.dispatchTableSize is initialized by the user then Hwi.numSparseInterrupts is set to the value ...
Hwi_MaskingOption maskSetting
maskSetting. Default is Hwi_MaskingOption "Hwi_MaskingOption_SELF"
Definition: Hwi.h:1100
uint32_t DCIMVAC
Definition: Hwi.h:734
void Hwi_plug(unsigned int intNum, void *fxn)
Plug a non dispatched interrupt vector with an ISR address.
uint32_t MVFR1
Definition: Hwi.h:728
uint32_t DCISW
Definition: Hwi.h:735
void(* registerFxn)(int arg1)
Definition: Hwi.h:568
uint32_t RES_0C
Definition: Hwi.h:639
uint32_t SAU_TYPE
Definition: Hwi.h:707
void * threadHandle
Definition: Hwi.h:774
uintptr_t arg
ISR function argument. Default is 0.
Definition: Hwi.h:1104
uint32_t MVFR2
Definition: Hwi.h:729
uint32_t RES_F54
Definition: Hwi.h:732
uint32_t STI
Definition: Hwi.h:722
uint32_t DPIDR1
Definition: Hwi.h:754
void Hwi_Params_init(Hwi_Params *prms)
void(* Hwi_ExceptionHookFuncPtr)(Hwi_ExcContext *arg1)
Exception hook function type definition.
Definition: Hwi.h:554
size_t threadStackSize
Definition: Hwi.h:776
void * lr
Definition: Hwi.h:791
uint32_t DDEVARCH
Definition: Hwi.h:746
Structure contains Hwi stack usage info.
Definition: Hwi.h:604
int16_t intNum
Definition: Hwi.h:842
uint32_t CLIDR
Definition: Hwi.h:689
uint32_t ISAR3
Definition: Hwi.h:686
void * r8
Definition: Hwi.h:785
uint32_t RES_00
Definition: Hwi.h:636
void * r11
Definition: Hwi.h:788
uint32_t STCALIB
Definition: Hwi.h:643
SecureCB_Arg arg
Definition: SecureCB.h:146
void * r4
Definition: Hwi.h:781
void(* createFxn)(Hwi_Handle arg1, Error_Block *arg2)
Definition: Hwi.h:569
unsigned int Hwi_Enable()
Globally enable interrupts.
Hwi_FuncPtr Hwi_getFunc(Hwi_Handle hwi, uintptr_t *arg)
Get Hwi function and arg.
void * Hwi_getHookContext(Hwi_Handle hwi, int id)
Get hook instance&#39;s context for a Hwi.
uint32_t MMFR2
Definition: Hwi.h:681
uint32_t CCSIDR
Definition: Hwi.h:691
Hwi_Handle Hwi_Object_next(Hwi_Object *obj)
bool excActive
Definition: Hwi.h:808
uintptr_t Hwi_getIrp(Hwi_Handle hwi)
Get address of interrupted instruction.
void * threadStack
Definition: Hwi.h:775
uint32_t ICIMVAU
Definition: Hwi.h:733
uint32_t DPIDR4
Definition: Hwi.h:749
Hwi hook set type definition.
Definition: Hwi.h:567
User supplies interrupt enable masks (not support on cortexM devices)
Definition: Hwi.h:589
uint32_t PFR1
Definition: Hwi.h:676
void * isrStack
Definition: Hwi.h:811
uint32_t HFSR
Definition: Hwi.h:670
uint32_t * intAffinityMasks
Definition: Hwi.h:819
void Hwi_post(unsigned int intNum)
Generate an interrupt for test purposes.
unsigned int Hwi_disableInterrupt(unsigned int intNum)
Disable a specific interrupt.
© Copyright 1995-2021, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale