iLLD_TC27xD  1.0
IfxCpu_IntrinsicsTasking.h File Reference
#include "Ifx_Types.h"

Go to the source code of this file.

Macros

#define __non_return_call(fun)   __asm__ volatile ("\tji %0"::"a"(fun))
 
#define __minX(X, Y)   ( ((X) < (Y)) ? (X) : (Y) )
 
#define __maxX(X, Y)   ( ((X) > (Y)) ? (X) : (Y) )
 
#define __saturateX(X, Min, Max)   ( __minX(__maxX(X, Min), Max) )
 
#define __checkrangeX(X, Min, Max)   (((X) >= (Min)) && ((X) <= (Max)))
 
#define __saturate(X, Min, Max)   ( __min(__max(X, Min), Max) )
 
#define __saturateu(X, Min, Max)   ( __minu(__maxu(X, Min), Max) )
 
#define __checkrange(X, Min, Max)   (((X) >= (Min)) && ((X) <= (Max)))
 
#define __sqrf(X)   ((X) * (X))
 
#define __sqrtf(X)   sqrtf(X)
 
#define __roundf(X)   ((((X) - (int)(X)) > 0.5) ? (1 + (int)(X)) : ((int)(X)))
 
#define __absf(X)   ( ((X) < 0.0) ? -(X) : (X) )
 
#define __minf(X, Y)   ( ((X) < (Y)) ? (X) : (Y) )
 
#define __maxf(X, Y)   ( ((X) > (Y)) ? (X) : (Y) )
 
#define __saturatef(X, Min, Max)   ( __minf(__maxf(X, Min), Max) )
 
#define __checkrangef(X, Min, Max)   (((X) >= (Min)) && ((X) <= (Max)))
 
#define __abs_stdreal(X)   ( ((X) > 0.0) ? (X) : -(X) )
 
#define __min_stdreal(X, Y)   ( ((X) < (Y)) ? (X) : (Y) )
 
#define __max_stdreal(X, Y)   ( ((X) > (Y)) ? (X) : (Y) )
 
#define __saturate_stdreal(X, Min, Max)   ( __min_stdreal(__max_stdreal(X, Min), Max) )
 
#define __neqf(X, Y)   ( ((X) > (Y)) || ((X) < (Y)) )
 
#define __leqf(X, Y)   ( !((X) > (Y)) )
 
#define __geqf(X, Y)   ( !((X) < (Y)) )
 
#define __fract_to_float(value)   ((float)(value))
 
#define __mulfractlong   __mulfractlong
 
#define __mulfractfract(fractvalue1, fractvalue2)   ((fractvalue1)*(fractvalue2))
 
#define __extru(a, p, w)   __extru(a,p,w)
 
#define __extr(a, p, w)   __extr(a,p,w)
 
#define __imaskldmst(a, v, b, p)   __imaskldmst((int*)a, v, b, p)
 
#define __insert(a, b, p, w)   __insert(a,b,p,w)
 
#define __disable_and_save   __disable_and_save
 
#define __restore   __restore
 
#define __mtcr_no_isync(reg, val)   __asm("mtcr %0,%1"::"i"(reg),"d"(val));
 
#define __adds(a, b)   ((__sat int)(a)+(__sat int)(b))
 
#define __addsu(a, b)   ((__sat uint32)(a)+(__sat uint32)(b))
 
#define __subs(a, b)   ((__sat int)(a)-(__sat int)(b))
 
#define __subsu(a, b)   ((__sat uint32 )(a)-(__sat uint32 )(b))
 
#define NOP(n)   __asm(".DUP " #n "\n\tnop16\n\t.ENDM\n")
 
#define __ldmst(addr, mask, data)   __ldmstAsm(addr, mask, data)
 
#define ___setareg(areg, val)   { __asm (" movh.a\t "#areg",#@his("#val")\n lea\t "#areg",["#areg"]@los("#val")"); }
 
#define __setareg(areg, val)   ___setareg(areg,val)
 
#define __cmpAndSwap(address, value, condition)   __cmpswapw((address), ((unsigned long)value), (condition) )
 This function is a implementation of a binary semaphore using compare and swap instruction. More...
 

Functions

IFX_INLINE void __jump_and_link (void(*fun)(void))
 
IFX_INLINE void __nops (void *cnt)
 
IFX_INLINE void __ldmstAsm (volatile void *addr, uint32 mask, uint32 data)
 
IFX_INLINE void __stopPerfCounters (void)
 
IFX_INLINE float32 __fixpoint_to_float32 (fract value, sint32 shift)
 Convert a fixpoint value to float32. More...
 
IFX_INLINE void * __getA11 (void)
 
IFX_INLINE void __setStackPointer (void *stackAddr)
 

Detailed Description

Version
iLLD_1_0_0_11_0
                            IMPORTANT NOTICE

Infineon Technologies AG (Infineon) is supplying this file for use exclusively with Infineon's microcontroller products. This file can be freely distributed within development tools that are supporting such microcontroller products.

THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

Definition in file IfxCpu_IntrinsicsTasking.h.

Macro Definition Documentation

#define ___setareg (   areg,
  val 
)    { __asm (" movh.a\t "#areg",#@his("#val")\n lea\t "#areg",["#areg"]@los("#val")"); }

Definition at line 230 of file IfxCpu_IntrinsicsTasking.h.

#define __cmpAndSwap (   address,
  value,
  condition 
)    __cmpswapw((address), ((unsigned long)value), (condition) )

This function is a implementation of a binary semaphore using compare and swap instruction.

Parameters
addressaddress of resource.
valueThis variable is updated with status of address
conditionif the value of address matches with the value of condition, then swap of value & address occurs.

Definition at line 240 of file IfxCpu_IntrinsicsTasking.h.

Referenced by IfxCpu_acquireMutex(), and IfxCpu_setSpinLock().

#define __non_return_call (   fun)    __asm__ volatile ("\tji %0"::"a"(fun))

Function call without return

Definition at line 35 of file IfxCpu_IntrinsicsTasking.h.

#define __setareg (   areg,
  val 
)    ___setareg(areg,val)

Definition at line 232 of file IfxCpu_IntrinsicsTasking.h.

Function Documentation

IFX_INLINE float32 __fixpoint_to_float32 ( fract  value,
sint32  shift 
)

Convert a fixpoint value to float32.

This function converts a value from a fixpoint format to a float32 format.

Parameters
valuevalue to be converted.
shiftposition of the fix point. Range = [-256, 255] => (Qx.y format where x = shift+1).
Returns
Returns the converted value in the float32 format.

Definition at line 254 of file IfxCpu_IntrinsicsTasking.h.

IFX_INLINE void* __getA11 ( void  )

Definition at line 265 of file IfxCpu_IntrinsicsTasking.h.

IFX_INLINE void __jump_and_link ( void(*)(void)  fun)

Jump and link

Definition at line 39 of file IfxCpu_IntrinsicsTasking.h.

IFX_INLINE void __setStackPointer ( void *  stackAddr)

Definition at line 272 of file IfxCpu_IntrinsicsTasking.h.