---
title: atomic64_add_and_return指令
description: "对两个长整数进行加操作，并将结果作为返回值返回。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenggrf/codeprtr/kunpengtaishanporting_12_0037.html
sourcePath: /source/zh/kunpenggrf/codeprtr/kunpengtaishanporting_12_0037.html
indexId: fb416e5a422ef8e6d756d487b43962c7c0914451151a8fc379eaf568257761c265
---
# atomic64_add_and_return指令

#### 函数功能

对两个长整数进行加操作，并将结果作为返回值返回。


#### 处理步骤

需要重新实现汇编代码段。

在x86架构下：

```
static inline long atomic64_add_and_return(long i, atomic64_t *v)
{
long i = i;
asm_volatile_(
"lock ; "
"xaddq %0, %1;"
: "=r"(i)
: "m"(v->counter), "0"(i));
return i + __i;
}
static inline void prefetch(void *x)
{
asm volatile("prefetcht0 %0" ::"m"(*(unsigned long *)x));
}
```

在鲲鹏平台下，使用GCC内置函数实现：

```
static __inline__ long atomic64_add_and_return(long i, atomic64_t *v)
{
return __sync_add_and_fetch(&((v)->counter), i);
}
```
