#ifndef __ARMV7_GHS_H #ifdef __ghs__ #pragma ghs startnomisra #pragma ghs nowarning 1544 #endif #define __ARMV7_GHS_H #ifndef __CORE_ARMV6M__ #define __ARMV7_IS #endif #ifdef __cplusplus extern "C" { #endif /* Preload Data for Write */ void __PLDW(const void *Rn); /* Preload Instruction */ void __PLI(const void *Rn); #ifdef __EDG__ /* SMC: Software Monitor Call, causes an SMC exception */ void __SMC(__ghs_c_int__ code); void __SMI(__ghs_c_int__ code); /* HVC: Hypervisor Call, causes an HVC exception */ void __HVC(__ghs_c_int__ code); /* v7 barrier option values to be used with OPT forms of DMB/DSB */ enum { __BARRIER_SY = 15, __BARRIER_ST = 14, __BARRIER_ISH = 11, __BARRIER_ISHST = 10, __BARRIER_NSH = 7, __BARRIER_NSHST = 6, __BARRIER_OSH = 3, __BARRIER_OSHST = 2 }; /* Data Memory Barrier */ void __DMB(void); void __DMB_OPT(__ghs_c_int__ option); /* Data Synchronization Barrier */ void __DSB(void); void __DSB_OPT(__ghs_c_int__ option); /* Instruction Synchronization Barrier */ void __ISB(void); #endif /* def __EDG__ */ /* LDA{B,H}, LDAEX{B,H}, STL{B,H}, STLEX{B,H}: v8 Synchronization primitives */ int __LDA(const int *Rn); int __LDAB(const unsigned char *Rn); int __LDAH(const unsigned short *Rn); int __LDAEX(const int *Rn); int __LDAEXB(const unsigned char *Rn); int __LDAEXH(const unsigned short *Rn); void __STL(int Rm, int *Rn); void __STLB(unsigned char Rm, unsigned char *Rn); void __STLH(unsigned short Rm, unsigned short *Rn); int __STLEX(int Rm, int *Rn); int __STLEXB(unsigned char Rm, unsigned char *Rn); int __STLEXH(unsigned short Rm, unsigned short *Rn); #ifdef __cplusplus } #endif #ifdef __ghs__ #pragma ghs endnowarning #pragma ghs endnomisra #endif #endif