sparc64
[Libc]


Files

file  atomic.h
file  config.h
file  faddr.h
file  fibril.h
file  istate.h
file  istate.h
file  stack.h
file  stackarg.h
file  syscall.h
file  tls.c
file  tls.h
 sparc64 TLS functions.
file  types.h

Data Structures

struct  context_t
 Fibril context. More...
struct  tcb_t
 TCB (Thread Control Block) struct. More...

Defines

#define __64_BITS__
#define __syscall0   __syscall
#define __syscall1   __syscall
#define __syscall2   __syscall
#define __syscall3   __syscall
#define __syscall4   __syscall
#define __syscall5   __syscall
#define __syscall6   __syscall
#define CONFIG_TLS_VARIANT_2
#define context_set(c, _pc, stack, size, ptls)
#define FADDR(fptr)   ((uintptr_t) (fptr))
#define LIBC_ARCH_ATOMIC_H_
#define PAGE_SIZE   (1 << PAGE_WIDTH)
#define PRIdn   PRId64
 Format for native_t.
#define PRIua   PRIu64
 Format for atomic_count_t.
#define PRIun   PRIu64
 Format for sysarg_t.
#define PRIxn   PRIx64
 Format for hexadecimal sysarg_t.
#define SIZE_MAX   UINT64_MAX
#define SIZE_MIN   UINT64_MIN
#define SP_DELTA   (STACK_WINDOW_SAVE_AREA_SIZE + STACK_ARG_SAVE_AREA_SIZE)
#define SSIZE_MAX   INT64_MAX
#define SSIZE_MIN   INT64_MIN
#define STACK_ALIGNMENT   16
 According to SPARC Compliance Definition, every stack frame is 16-byte aligned.
#define STACK_ARG_SAVE_AREA_SIZE   (6 * STACK_ITEM_SIZE)
#define STACK_BIAS   2047
 By convention, the actual top of the stack is sp + STACK_BIAS.
#define STACK_ITEM_SIZE   8
#define STACK_WINDOW_SAVE_AREA_SIZE   (16 * STACK_ITEM_SIZE)
 16-extended-word save area for i[0-7] and l[0-7] registers.

Typedefs

typedef uint64_t atomic_count_t
typedef int64_t atomic_signed_t
typedef uint64_t size_t
typedef int64_t ssize_t
typedef uint64_t sysarg_t
typedef uint64_t uintptr_t

Functions

tcb_t__alloc_tls (void **data, size_t size)
void __free_tls_arch (tcb_t *tcb, size_t size)
static sysarg_t __syscall (const sysarg_t p1, const sysarg_t p2, const sysarg_t p3, const sysarg_t p4, const sysarg_t p5, const sysarg_t p6, const syscall_t id)
static tcb_t__tcb_get (void)
static void __tcb_set (tcb_t *tcb)
static atomic_count_t atomic_add (atomic_t *val, atomic_count_t i)
 Atomic add operation.
static void atomic_dec (atomic_t *val)
static void atomic_inc (atomic_t *val)
static atomic_count_t atomic_postdec (atomic_t *val)
static atomic_count_t atomic_postinc (atomic_t *val)
static atomic_count_t atomic_predec (atomic_t *val)
static atomic_count_t atomic_preinc (atomic_t *val)
static uintptr_t context_get_fp (context_t *ctx)

Function Documentation

static atomic_count_t atomic_add ( atomic_t val,
atomic_count_t  i 
) [inline, static]

Atomic add operation.

Use atomic compare and swap operation to atomically add signed value.

Parameters:
val Atomic variable.
i Signed value to be added.
Returns:
Value of the atomic variable as it existed before addition.

Definition at line 53 of file atomic.h.


Generated on Thu Jun 2 07:45:57 2011 for HelenOS/USB by  doxygen 1.4.7