Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
intrinsics.h File Reference
#include <linux/types.h>
#include <asm/ia64regs.h>
#include <asm/gcc_intrin.h>
#include <asm/cmpxchg.h>

Go to the source code of this file.

Macros

#define ia64_native_get_psr_i()   (ia64_native_getreg(_IA64_REG_PSR) & IA64_PSR_I)
 
#define ia64_native_set_rr0_to_rr4(val0, val1, val2, val3, val4)
 
#define IA64_FETCHADD(tmp, v, n, sz, sem)
 
#define ia64_fetchadd(i, v, sem)
 
#define ia64_fetch_and_add(i, v)   (ia64_fetchadd(i, v, rel) + (i)) /* return new value */
 
#define IA64_INTRINSIC_API(name)   ia64_native_ ## name
 
#define IA64_INTRINSIC_MACRO(name)   ia64_native_ ## name
 
#define ia64_fc   IA64_INTRINSIC_API(fc)
 
#define ia64_thash   IA64_INTRINSIC_API(thash)
 
#define ia64_get_cpuid   IA64_INTRINSIC_API(get_cpuid)
 
#define ia64_get_pmd   IA64_INTRINSIC_API(get_pmd)
 
#define ia64_ssm   IA64_INTRINSIC_MACRO(ssm)
 
#define ia64_rsm   IA64_INTRINSIC_MACRO(rsm)
 
#define ia64_getreg   IA64_INTRINSIC_MACRO(getreg)
 
#define ia64_setreg   IA64_INTRINSIC_API(setreg)
 
#define ia64_set_rr   IA64_INTRINSIC_API(set_rr)
 
#define ia64_get_rr   IA64_INTRINSIC_API(get_rr)
 
#define ia64_ptcga   IA64_INTRINSIC_API(ptcga)
 
#define ia64_get_psr_i   IA64_INTRINSIC_API(get_psr_i)
 
#define ia64_intrin_local_irq_restore   IA64_INTRINSIC_API(intrin_local_irq_restore)
 
#define ia64_set_rr0_to_rr4   IA64_INTRINSIC_API(set_rr0_to_rr4)
 

Functions

unsigned long __bad_size_for_ia64_fetch_and_add (void)
 
unsigned long __bad_increment_for_ia64_fetch_and_add (void)
 

Macro Definition Documentation

#define ia64_fc   IA64_INTRINSIC_API(fc)

Definition at line 101 of file intrinsics.h.

#define ia64_fetch_and_add (   i,
  v 
)    (ia64_fetchadd(i, v, rel) + (i)) /* return new value */

Definition at line 83 of file intrinsics.h.

#define IA64_FETCHADD (   tmp,
  v,
  n,
  sz,
  sem 
)
Value:
({ \
switch (sz) { \
case 4: \
tmp = ia64_fetchadd4_##sem((unsigned int *) v, n); \
break; \
\
case 8: \
tmp = ia64_fetchadd8_##sem((unsigned long *) v, n); \
break; \
\
default: \
__bad_size_for_ia64_fetch_and_add(); \
} \
})

Definition at line 41 of file intrinsics.h.

#define ia64_fetchadd (   i,
  v,
  sem 
)
Value:
({ \
__u64 _tmp; \
volatile __typeof__(*(v)) *_v = (v); \
/* Can't use a switch () here: gcc isn't always smart enough for that... */ \
if ((i) == -16) \
IA64_FETCHADD(_tmp, _v, -16, sizeof(*(v)), sem); \
else if ((i) == -8) \
IA64_FETCHADD(_tmp, _v, -8, sizeof(*(v)), sem); \
else if ((i) == -4) \
IA64_FETCHADD(_tmp, _v, -4, sizeof(*(v)), sem); \
else if ((i) == -1) \
IA64_FETCHADD(_tmp, _v, -1, sizeof(*(v)), sem); \
else if ((i) == 1) \
IA64_FETCHADD(_tmp, _v, 1, sizeof(*(v)), sem); \
else if ((i) == 4) \
IA64_FETCHADD(_tmp, _v, 4, sizeof(*(v)), sem); \
else if ((i) == 8) \
IA64_FETCHADD(_tmp, _v, 8, sizeof(*(v)), sem); \
else if ((i) == 16) \
IA64_FETCHADD(_tmp, _v, 16, sizeof(*(v)), sem); \
else \
(__typeof__(*(v))) (_tmp); /* return old value */ \
})

Definition at line 57 of file intrinsics.h.

#define ia64_get_cpuid   IA64_INTRINSIC_API(get_cpuid)

Definition at line 103 of file intrinsics.h.

#define ia64_get_pmd   IA64_INTRINSIC_API(get_pmd)

Definition at line 104 of file intrinsics.h.

#define ia64_get_psr_i   IA64_INTRINSIC_API(get_psr_i)

Definition at line 117 of file intrinsics.h.

#define ia64_get_rr   IA64_INTRINSIC_API(get_rr)

Definition at line 115 of file intrinsics.h.

#define ia64_getreg   IA64_INTRINSIC_MACRO(getreg)

Definition at line 112 of file intrinsics.h.

#define ia64_intrin_local_irq_restore   IA64_INTRINSIC_API(intrin_local_irq_restore)

Definition at line 118 of file intrinsics.h.

#define IA64_INTRINSIC_API (   name)    ia64_native_ ## name

Definition at line 90 of file intrinsics.h.

#define IA64_INTRINSIC_MACRO (   name)    ia64_native_ ## name

Definition at line 91 of file intrinsics.h.

#define ia64_native_get_psr_i ( )    (ia64_native_getreg(_IA64_REG_PSR) & IA64_PSR_I)

Definition at line 23 of file intrinsics.h.

#define ia64_native_set_rr0_to_rr4 (   val0,
  val1,
  val2,
  val3,
  val4 
)
Value:
do { \
ia64_native_set_rr(0x0000000000000000UL, (val0)); \
ia64_native_set_rr(0x2000000000000000UL, (val1)); \
ia64_native_set_rr(0x4000000000000000UL, (val2)); \
ia64_native_set_rr(0x6000000000000000UL, (val3)); \
ia64_native_set_rr(0x8000000000000000UL, (val4)); \
} while (0)

Definition at line 25 of file intrinsics.h.

#define ia64_ptcga   IA64_INTRINSIC_API(ptcga)

Definition at line 116 of file intrinsics.h.

#define ia64_rsm   IA64_INTRINSIC_MACRO(rsm)

Definition at line 111 of file intrinsics.h.

#define ia64_set_rr   IA64_INTRINSIC_API(set_rr)

Definition at line 114 of file intrinsics.h.

#define ia64_set_rr0_to_rr4   IA64_INTRINSIC_API(set_rr0_to_rr4)

Definition at line 120 of file intrinsics.h.

#define ia64_setreg   IA64_INTRINSIC_API(setreg)

Definition at line 113 of file intrinsics.h.

#define ia64_ssm   IA64_INTRINSIC_MACRO(ssm)

Definition at line 110 of file intrinsics.h.

#define ia64_thash   IA64_INTRINSIC_API(thash)

Definition at line 102 of file intrinsics.h.

Function Documentation

unsigned long __bad_increment_for_ia64_fetch_and_add ( void  )
unsigned long __bad_size_for_ia64_fetch_and_add ( void  )