如何在 Linux 2.6.35 上从用户模式清除和无效 ARM v7 处理器缓存

2024-01-17

我尝试清除指令行的 ARM v7 处理器缓存并使之无效,因为指令代码在执行中可能会发生变化。

为了达到效果,我尝试了两种变体。他们来了:

  1. 我用过海湾合作委员会__清除缓存()函数,但没有给出所需的结果。缓存中的指令代码没有改变。

  2. 我寻找了 GCC 的源代码并找到了uclinux-eabi.h 文件我在其中找到了下一个清除缓存的代码:

    /* Clear the instruction cache from `beg' to `end'.  This makes an
       inline system call to SYS_cacheflush.  */
    #undef CLEAR_INSN_CACHE
    #define CLEAR_INSN_CACHE(BEG, END)                                    \
    {                                                                     \
        register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
        register unsigned long _end __asm ("a2") = (unsigned long) (END); \
        register unsigned long _flg __asm ("a3") = 0;                     \
        register unsigned long _scno __asm ("r7") = 0xf0002;              \
        __asm __volatile                                                  \
        (                                                                 \
            "swi 0x0    @ sys_cacheflush"                                 \
            : "=r" (_beg)                                                 \
            : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno));           \
    }
    

这个变体也没有给出结果。

也许有人知道我做错了什么?


我自己也有类似的问题。 __clear_cache() 有效,但前提是相关内存区域是使用 mmap() 并设置了 PROT_EXEC 来分配的。如果您向 Linux 提供来自常规 malloc()ed 内存的内存范围,Linux 将不会刷新指令缓存,即使处理器似乎很乐​​意从 malloc()ed 内存中执行代码。

See https://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code https://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code例如有关如何执行此操作的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Linux 2.6.35 上从用户模式清除和无效 ARM v7 处理器缓存 的相关文章

  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • 大多数 Linux 系统头文件与 C++ 兼容吗?

    大多数 Linux 系统头文件 API C 兼容吗 今天我试图做这样的事情 include
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • 设备树不匹配:.probe 从未被调用

    我无法理解设备树的工作原理 或者具体来说为什么该驱动程序无法初始化 这是在 android 版本 3 10 的 rockchip 供应商内核中 驱动程序 看门狗 rk29 wdt c 为了可读性而减少 static const struct
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • 交叉编译armv5,但它创建v7二进制文件

    我设法为arm926ej s创建了一个目标文件我在 qemu 上使用 Debian Arm arm linux gnueabi gcc 4 4 static O c mcpu arm926ej s hello c o hello root
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显

随机推荐

  • C# 线程池限制线程数

    好吧 我已经对该网站进行了公平的搜索 并阅读了许多有关该主题的帖子 我发现这个问题 C 中的简单线程池代码 https stackoverflow com questions 435668 code for a simple thread
  • Python - 如何使用 ioctl 或 spidev 从设备读取输入?

    我有一个提供它的供应商提供了一些 C 代码来监听按钮按下 该代码使用ioctl 该设备具有 SSD1289 控制器 按钮不需要额外的引脚 可以通过 SPI 读取其状态 这就是我想要的 读取按下了哪个按钮 我试图在 Python 中为我自己的
  • SCONS 运行目标

    我一直在寻找 寻找 但找不到我的问题的答案 我今晚刚刚开始学习 scons 看起来棒极了 不过我遇到了一点困惑 为了便于开发 我经常喜欢让我的 make 文件构建我的目标 然后运行它 以便我可以通过一次按键来测试更改 这在 make 文件中
  • Qt,没有这样的槽

    为什么我会得到这个 Object connect No such slot Ide on action Exit triggered index Object connect sender name actionClose Project
  • setTextIsSelectable 如何防止键盘出现?

    如果我使用包含单个 EditText 的单个 Activity 创建一个简单的应用程序 并且我这样做 EditText editText EditText findViewById R id editText editText setTex
  • 禁用帆中的用户挂钩

    我正在 Heroku 上托管的一个项目中使用 sails 我有一个运行 sails Web 服务器的 Web 进程和一个使用与 Web 服务器使用的模型相同的模型的工作进程 为了使其成为可能 我有不同的方式使用相同的代码启动每个进程 app
  • Python 3.3 - 连接 Oracle 数据库

    python 3 3有连接Oracle数据库的模块吗 哪个最容易使用 像 mysql 模块之类的东西只能与 Oracle 一起使用 最好是 10g 版本 但 11g 也可以 有 cx Oracle Install gt You should
  • Java 内存模型:创建最终实例字段的循环引用图(所有字段均在同一线程内分配)是否安全?

    比我更了解 Java 内存模型的人可以确认我对以下代码正确同步的理解吗 class Foo private final Bar bar Foo this bar new Bar this class Bar private final Fo
  • Powershell函数递归获取元数据

    我正在修改一些 powershell 代码 我发现这些代码可以递归地从文件中获取元数据 但我在访问文件夹中的文件夹时遇到问题 我从 share 下直接列出的文件夹中获取元数据 而不是从那里的文件夹和文件中获取元数据 如何将此代码修改为文件夹
  • 为什么 notebook() 对 IJulia 不起作用?

    我在尝试使用时收到此问题notebook 在 Julia 命令行界面 REPL 中 julia gt using IJulia Info Precompiling IJulia 7073ff75 c697 5162 941a fcdaad2
  • 如何在没有太多引号的情况下序列化 JsonObject?

    我正在 com google gson JsonObject 上编写一个小型流畅的包装器 当我序列化 Json 时 我得到 key1 value1 key2 value2 key3 innerKey value3 如何去掉多余的引号 My
  • Microsoft Translator Text API 打破了 notranslate 跨度

    我正在使用 Microsoft Translator Text API 来翻译一些句子 我的句子包含一些我不需要翻译的文本部分 为了实现这一点 我使用 span class notranslate span 通过包装不可翻译的文本 在大多数
  • iOS 使用 AVAssetWriter 捕获视频时如何正确处理方向

    我正在制作一个利用 AVFoundation 录制视频的示例应用程序 重点是这样我可以更好地控制视频的录制方式 在我的示例项目中 我进行了视频捕获 但在正确处理方向方面遇到了困难 我在网络上进行了大量搜索 发现其他人建议我不应允许我的捕获视
  • long.Parse() C#

    在 C 中 如何将字符串 例如 100 100 转换为 long 我目前有一行代码是 long xi long Parse x System Globalization NumberStyles AllowThousands 但当 x 是
  • const 引用右值的类数据成员的生命周期是多少?

    一般来说 这个讨论仅取决于局部函数变量 void foo const int i use i till foo ends foo 3 但是 这条规则是否适用于class会员还 struct A const int a A a 3 versi
  • 实现 StickyGridHeaders Android 时标题中的按钮

    我正在尝试使用粘性网格标题 https github com TonicArtos StickyGridHeaders在我的 Android 应用程序中 它工作得很好 除非我尝试将点击监听器添加到 headerview 中的可点击 Imag
  • 使用 Eclipse 在 Android 虚拟机中启动 Android java 项目时出现问题

    我已经安装并设置了 Eclipse 和插件 ADT 以便与 Android SDK 一起使用 到目前为止 一切都很好 但是 当我尝试为我选择的任何 android 平台 例如 android 3 2 启动 VM 虚拟机 时 我只是将皮肤与键
  • Rapidjson C++ 释放对象内的数组

    我正在使用rapidjson C 库 https github com miloyip rapidjson 使用此库您可以创建 JSON 对象 目前我有一些记忆问题 情况 在我当前的设置中 我创建了一个新对象 并向其添加了值成员和数组成员
  • 将引导日期时间选择器与 Vuejs 2 结合使用

    我想将日期时间选择器与 vue 2 或 webpack 集成 我尝试搜索但找不到相关文章 有没有人将日期时间选择器与Vue2或webpack集成 有任何示例代码可供参考吗 任何帮助将不胜感激 Thanks 只需谷歌搜索 您肯定可以找到有关该
  • 如何在 Linux 2.6.35 上从用户模式清除和无效 ARM v7 处理器缓存

    我尝试清除指令行的 ARM v7 处理器缓存并使之无效 因为指令代码在执行中可能会发生变化 为了达到效果 我尝试了两种变体 他们来了 我用过海湾合作委员会 清除缓存 函数 但没有给出所需的结果 缓存中的指令代码没有改变 我寻找了 GCC 的