免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1532 | 回复: 1
打印 上一主题 下一主题

[内核入门] 请教下 GCC inline assembly 中的 '@' 符号作用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-19 14:10 |只看该作者 |倒序浏览
在 linux-2.6.34.14/arch/arm/include/asm/system.h 看到如下代码段:
(这是查找 atomic_dec_not_zero 在 ARM 实现时碰到的)

此函数原型为(前面的数字是文件中的行号):
  1. 353 /*
  2. 354  * cmpxchg only support 32-bits operands on ARMv6.
  3. 355  */
  4. 356
  5. 357 static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
  6. 358                       unsigned long new, int size)
复制代码
跟下边代码有关的变量定义有:

unsigned long oldval, res;

该函数中的代码段如下:
  1. 389     case 4:
  2. 390         do {
  3. 391             asm volatile("@ __cmpxchg4\n"   
  4. 392             "   ldrex   %1, [%2]\n"
  5. 393             "   mov %0, #0\n"
  6. 394             "   teq %1, %3\n"
  7. 395             "   strexeq %0, %4, [%2]\n"
  8. 396                 : "=&r" (res), "=&r" (oldval)
  9. 397                 : "r" (ptr), "Ir" (old), "r" (new)
  10. 398                 : "memory", "cc");
  11. 399         } while (res);
复制代码
就上边第 391 行
  1. asm volatile("@ __cmpxchg4\n"
复制代码
这一行中 "@" 的作用是什么呢?

Thanks !

论坛徽章:
0
2 [报告]
发表于 2013-08-19 14:23 |只看该作者
Oh. kao, 好像是注释用的,, ARM 专供......

http://www.ethernut.de/en/documents/arm-inline-asm.html  这网页的一些代码片段有这样写, 但没介绍..
用arm 的交叉编译器 , 才能编译过....
就当是注释先了,大家忽略我吧.....
如果有错, 请各位指出..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP