首页 > 系统相关 >Linux下编译arm64驱动代码汇编器报错

Linux下编译arm64驱动代码汇编器报错

时间:2024-06-13 22:54:39浏览次数:12  
标签:tmp 汇编器 git Ir 操作数 编译器 报错 arm64

简单来说就是错误的汇编Ir约束 会导致编译器优化把这个操作数生成非法的汇编指令
然后汇编器就会傻眼 会报一个非常难懂的错误如下:
/tmp/ccxxxxxx.s: Assembler messages:
/tmp/ccxxxxxx.s:xxx: 错误: 立即数越界 at operand 3 -- 'eor w3,w20,4294967295'
我通过查看汇编手册发现eor指令确实不能接受4294967295这个数 超出了机器指令规定

根本原因是使用ll和sc指令的原子操作使用了不正确的Ir约束,在特别的参数下面会出现问题
简单来说就是Ir是一个立即数约束 指示编译器这个操作数是一个常数
而#constraint "r"告诉编译器需要把这个操作数放到一个通用寄存器里面
关键修改
" stxr %w1, %w0, %2\n"
" cbnz %w1, 1b"
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \

  • : "Ir" (i)); \
  • : #constraint "r" (i)); \

链接:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=5ef8dff99f434480e02cbe383ce2bb47057fc71b

标签:tmp,汇编器,git,Ir,操作数,编译器,报错,arm64
From: https://www.cnblogs.com/passguan/p/18246920

相关文章

  • el-upload拍照上传多个文件报错 ERR_UPLOAD_FILE_CHANGED问题
    最近同事使用el-upload上传图片时出现一个问题,连续拍照多个图片的时候,循环调用接口上传会报错:ERR_UPLOAD_FILE_CHANGED,网上找了很多方案没有解决,下面是我自己的解决过程。1.问题描述我们用的套壳Android,网页发布在远程服务器,Android壳安装在ipad上前端用的组件是el-upload,点......
  • iperf报错broken pipe和bad file descriptiopn
    在进行iperf测试时,出现了两个错误:(1)iperf3:error-selectfailed:badfiledescriptor(2)iperf3:error-unabletosendconrolmessage:brokenpipe这两个错误都是在客户端出现的。根据iperf源码,分析了这两个错误的调用函数以及可能出错原因。1、iperf简介网络性能评估主......
  • Spring Junit 测试报错 java.lang.IllegalStateException
    写测试代码的时候出现了java.lang.IllegalStateException:CouldnotloadTestContextBootstrapper[null].Specify@BootstrapWith's'value'attributeormakethedefaultbootstrapperclassavailable.代码如下:packagecom.example.service;importcom.example.c......
  • Ruoyi集成flyway后启动报错的解决方法
    ruoyi系列框架是开源中非常好的源码平台,使用宽松的开源协议进行源代码的开放。不管是单体版、前后端分离甚至是微服务架构,均提供了相应的代码。基于ruoyi可以做自己的后台系统,也可以学习很多技术的集成。而flyway是java里面的数据库脚本自动管理工具,使用flyway可以在应用程序升级......
  • fasterxml ToStringSerializerBase报错
    ToStringSerializerBase报错报错内容整合dubbo时报错Causedby:java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase atcom.fasterxml.jackson.datatype.jsr310.JavaTimeModule.<init>(JavaTimeModule.java:158)~[jackson-dataty......
  • requests 开启charles代理报错
    当前报错urllib3版本:1.26.7解决代理报错的几种方式:配置代理请求proxies={'http':'http://127.0.0.1:8888','https':'http://127.0.0.1:8888'}data=requests.post(url,json=body,headers=headers,verify=False,pr......
  • nginx编译安装-麒麟v10Arm64
    环境信息操作系统:KylinLinuxAdvancedServerV10(Lance)架构:Armkeepalived版本:2.3.1编译安装依赖包yuminstallgccgcc-c++makeunzippcrepcre-develzlibzlib-devellibxml2libxml2-develreadlinereadline-develncursesncurses-develperl-develperl-ExtU......
  • keepalived编译安装-麒麟v10Arm64
    环境信息操作系统:KylinLinuxAdvancedServerV10(Lance)架构:Armkeepalived版本:2.3.1编译wgethttps://www.keepalived.org/software/keepalived-2.3.1.tar.gztarxvfkeepalived-2.3.1.tar.gzcdkeepalived-2.3.1/./configure--prefix=/usr/local/keepalivedmake......
  • Let's Encrypt续费证书异常报错解决
    Let'sEncrypt续费证书异常报错解决在续费免费证书时出现错误,这里小记一下。现象#certbotcertonly--webroot-w/usr/share/nginx/html-dgh.wqyfchina.comSavingdebuglogto/var/log/letsencrypt/letsencrypt.logRequestingacertificateforgh.wqyfchina.comCer......
  • Oracle报错:“Error in invoking target ‘agent nmhs’ of makefile...”
    Oracle报错:“Errorininvokingtarget‘agentnmhs’ofmakefile...”  前言:Oracle在安装过程中的报错一定要重视,这决定你后续是否能完成安装以及是否能使用。我这边会陆续汇总一些报错现象以及解决方案共享。##InstallProduct86%报错信息:“Errorininvokingtarget'......