问题标签 [armv8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
144 浏览

arm64 - ARMv8 aarch64的对应asm代码

以下是 X86-64 代码的代码,其中包含一些程序集,请您帮助我们将程序集转换为 ARMv8 aarch64

0 投票
1 回答
259 浏览

linux - VBAR_EL 寄存器是否通过 ARM 中的上下文切换保存?

有人告诉我,VBAR_EL0/1 寄存器没有在上下文切换上备份。我还注意到此处未列出 VBAR_EL0/1 寄存器,但除此之外,我没有找到太多关于它的信息。这是否意味着所有 32 位进程的异常表必须位于同一位置?另外,在 32 位和 64 位处理器模式之间切换时,它是如何工作的?

我正在使用为 Armv8 交叉编译的 Linux 4.1。

0 投票
1 回答
934 浏览

arm - 索引的 MMU 页表描述符大小

我正在尝试为 Baremetal 中的 Cortex-A v8 64 位设置具有 2 个间接级别的虚拟地址映射。页表级别 2 将包含表描述符,页表级别 3 将包含块条目。

通过查看 64KB 页面的文档:http: //infocenter.arm.com/help/topic/com.arm.doc.den0024a/ch12s03.html#BABIIEFG

我不明白“2 级索引”和“3 级索引”的大小是如何计算的,以及是否需要遵循相同的方式。在此示例中,表 2 有 8192 个条目(因此需要 13 位),表 3 使用 13 位寻址。是否可以更改“2 级索引”的大小?如果我有 3 个间接级别,我如何知道索引的大小?

0 投票
1 回答
551 浏览

assembly - 将 ARMv8 Crypto 加速的 SHA256 集成到现有的 C 实现函数中

我正在尝试通过 CPU Crypto 扩展使用硬件加速的 SHA256 转换/“数据块排序”来使用 ARMv8/Aarch64 程序集实现。

问题是我不明白现有的 void sha256_transform(uint32_t *state, const uint32_t *block, int swap)(1)https://github.com/fireworm71/veriumMiner/blob/main/algo/sha2.c#LC81 和新的ARMv8 sha256函数 void sha256_block_data_order (uint32_t *ctx, const void *in, size_t num)(2)之间的区别https:/ /github.com/glukolog/m-cpuminer-v2.1-armv8/blob/master/miner.h#L135我试图与预处理器集成,条件是如果不是aarch64则保留原始代码 重定向工作到硬件加速sha256_block_data_order并且仅将原始文件sha256_transform作为包装函数保留,因此从其他函数对它的大量调用不需要太多(如果有的话)编辑。

我想提请注意原始 C 实现作为条件对块数据参数执行某些操作的参数,其中相同位置的int swap参数似乎与“块数”有关而不相关. 在我最近的尝试中,我在调用之前留下了“int swap”代码,以便按照最初的预期操作数据,并尝试在其函数调用中进行强制转换,认为这是这一切背后的罪魁祸首......下面是代码我最近写的里面用sha256_transformsha256_block_data_ordersha256_block_data_ordervoid sha256_transform(uint32_t *state, const uint32_t *block, int swap)

对于最后一个循环,我猜测它在另一个应用程序中的等价物,其中 ARMv8至少sha256_block_data_order 在其C 实现中使用,但对汇编的理解不够好,无法查看那里是否正在执行相同的操作uint32_t S正在用于 C 实现中,sha256_transform但我无法判断它是否在上面代码的最终循环之前以任何方式被更改。

在链接 (2) 中有一个声明sha256_transform但是不适用,尽管您可以比较输入(两个单独的应用程序共享它的相同实现)sha256_block_data_order也在那里声明以查看差异。

在我进行这项工作的各种尝试中,我能够让它在没有错误的情况下编译并在基准测试模式下运行 cpuminer 二进制文件,但是当我让它为服务器做真正的工作时,所有结果都被拒绝。此外,我只发现性能上的个位数差异(以哈希率衡量)。这是否表明即使我可以让它正常工作,我也不会看到任何有价值的性能提升?

我在这上面花了几天时间,不是很有经验或技术,所以才来这里问。任何反馈或建议表示赞赏。

0 投票
1 回答
97 浏览

arm - ARM 中的 VMNNM 指令

我想知道vminnm是如何工作的。由于伪代码有点不清楚,我无法理解这条指令的确切功能是什么。

在哪里

结果:

我们是如何得出这个结果的?

0 投票
1 回答
190 浏览

assembly - 使用 ARMv8 程序集和 Uinput 模拟击键

2018 年 7 月 23 日更新:

我有 uinput 的 C 代码实现如下:

但是好像没有输出


旧帖子 2018 年 7 月 22 日我已经在这个项目上工作了一段时间,并在这里找到了解决我的一些错误的帮助。

我有工作 ARM 汇编代码,它从我的树莓派 3 的 GPIO 中获取按钮输入,我需要最后一件事来最终让它一劳永逸。

我需要找到某种方法让系统认为按钮按下了某个键,以便游戏可以将输入解释为游戏代码中的击键。或者更好的是只有一个简单的屏幕,我可以在屏幕上移动一个像素。我发现很难找到 ARM 语言的帮助。

我的代码如下:

任何帮助,将不胜感激

0 投票
1 回答
195 浏览

assembly - 如何在 armv8/aarch64/arm64 的汇编中存储来自五个寄​​存器的多个 5 元素结构?

现在,我有五个 128 位 SIMD 寄存器:

其中 pn 是像素值。我想将这些数据存储到内存中,存储形式为“ p0 p8 p16 p24 p32 p1 p9 p17 p25 p33 p2 p10 p18 p26 p34 p3 p11 p19 p27 p35 p4 p12 p20 p28 p36 p5 p13 p21 p29 p37 p6 p14 p22 p30 p38 p7 p15 p23 p31 p39”。

此要求类似于st4。但是没有“st5”指令。

我该怎么做?任何人都可以帮助我吗?谢谢你。

0 投票
1 回答
196 浏览

memory-management - Xen ARM - 如何使用授权表在域之间传输页面

到目前为止,我可以在ARMv8上运行Xen v4.9 ,并且Dom0和DomU可以正常运行。 接下来,我想使用授权表将页面(更改页面所有权)从一个域转移到另一个域。 但是我在发出超级调用以转移页面时 总是得到状态。 我查看了in的实现, 发现它会调用实现

bad page
gnttab_transferxen/common/grant_table.c
steal_page()xen/arch/arm/mm.c


在 Xen v4.9 中,它只返回 -1。


在 Xen v4.11(最新版本)中,不支持该操作。


我不知道它不支持的原因,我做了一些猜测:

  1. ARM的架构不支持内存传输?但为什么?
  2. ARM还有其他有效的方法来传输内存页面吗?哪一个?
  3. 功能还在建设中?好像没有...

如果 DomU 想要访问 Disk,它必须与 Dom0 一起操作。
从 Disk 读取的数据可能很大,例如视频、图像等,
因此必须转移页面(更改页面所有权),而不是映射和复制。

如何转移页面?
为什么 Xen ARM 不支持?

谢谢!

0 投票
0 回答
102 浏览

linux - 确定第一个内存地址

我正在做一个从内存中提取密钥的项目。所以我想知道第一个内存地址。为此,我有带有 ARM 处理器 ARMv8-AI 的三星 Galaxy S7 已经查看了它的内核,我发现以下内容:

是否将地址 0x80000000 指示为第一个内存地址?

0 投票
3 回答
297 浏览

caching - 如何在 ARMv8 中执行脏 L1-L2 缓存线的回写

我正在寻找一种使用内核模块刷新 L1-L2 缓存的方法。有没有办法完全刷新整个集群缓存(4 核配置)或者更好,将脏缓存行写回主内存?