问题标签 [powerpc]

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 回答
261 浏览

c++ - 为什么全局变量没有用我在外部变量中给出的字符串初始化

相同的代码在 Windows 上运行良好,但在 SBC (PowerPC) 上 s_request_view 作为 NULL 传递。

谁能帮我找出为什么它的行为不同?

0 投票
1 回答
496 浏览

caching - 如何在 ppc 上选择缓存写入策略

我正在优化 PowerPC MPC83xx 上的 Linux 启动。我正在尝试优化从 nand 到 ram 的内核映像副本,并尝试检查或更改缓存的写入策略。

作为参考手册中的阅读,处理器默认使用回写策略。但是我还没有找到任何可以检查/配置它的寄存器。

我如何更改它以使用回写/直通策略进行一些测试?

谢谢 !

0 投票
3 回答
2732 浏览

assembly - PowerPC 转向可变 SPR

我正在为 C 程序编写一个汇编宏,并且对此很陌生,我遇到了一些问题。我正在尝试编写一个宏来将数据从通用寄存器移动到专用寄存器。

我的问题是我发现将数据从 GPR 移动到 SPR 的语法采用恒定的 SPR 值,而我想使用存储在另一个寄存器中的变量。

我追求的是这样的东西:

有没有这样的宏可用的原因,我将如何自己制作?

提前谢谢了。

----编辑: ---- 现在看来,我的 C 代码中有一个巨大的开关盒,可以跳转到正确的 mtspr 部分。我有二十几个部分用于读写特定的 SPR:s,每个部分看起来完全相同,但有一个常数值不同。

0 投票
6 回答
3123 浏览

c - C 编译器对位域做了什么?

我正在开发一个嵌入式项目(PowerPC 目标,Freescale Metrowerks Codewarrior 编译器),其中寄存器是内存映射的,并在漂亮的位域中定义,以便轻松处理各个位标志。

目前,我们正在使用此功能来清除中断标志和控制数据传输。虽然我还没有发现任何错误,但我很好奇这是否安全。有什么方法可以安全地使用位域,还是我需要将每个位域包装在 DISABLE_INTERRUPTS ... ENABLE_INTERRUPTS 中?

澄清一下:微提供的标头具有以下字段

我假设在位域中设置一个位不是原子的。这是一个正确的假设吗?编译器实际上为位域生成什么样的代码?使用 R(原始)字段自己执行掩码可能更容易记住操作不是原子的(很容易忘记像这样的赋值CAN_A.IMASK1.B.BUF00M = 1不是原子的)。

感谢您的建议。

0 投票
2 回答
1358 浏览

iphone - 带有 Pacifist 的 PowerPC Mac 上的 XCode/iPhone SDK

应该可以在 PowerPC 上安装 XCode + SDK。这有多容易?可以用最新版本(3.2.2)完成吗?如果没有,有哪些版本?(我认为最新的 XCode 需要一个不能在 PowerPC 上运行的操作系统版本)

0 投票
3 回答
1885 浏览

assembly - 顺序和障碍:在 x86 上,PowerPC 上“lwsync”的等效指令是什么?

我的代码很简单,如下所示。我找到了用于读写的rmbwmb ,但没有找到通用的。lwsync在 PowerPC 上可用,但是 x86 的替代品是什么?提前谢谢。

0 投票
1 回答
1174 浏览

c++ - 在 C++ 中获取无线强度信号

我想创建一个小的 C/C++ 程序,它应该能够检测无线 AP 并从中获取一些信息,例如 ID、信号强度……加密(开放、WPA、WEP)……类似的东西这个!像 airodump 或网络绊脚石!

此代码将在电源 PC、控制台 (Wii) 中运行。

任何人都可以帮我发布一些示例或教程吗?

非常感谢!

0 投票
2 回答
1917 浏览

linux-kernel - 如何在 PPC Linux 上运行时挂钩系统调用表?

主题: PPC 汇编语言 - Linux Loadble 内核模块

详细信息:在系统调用表挂钩中从内核调用时如何访问本地 TOC 区域 (r2)?

我已经为 Linux 编写了一个可加载的内核模块,它使用系统调用表挂钩来拦截系统调用并记录有关它们的信息,然后再将调用传递给原始处理程序。这是安全产品的一部分。我的模块运行良好,并且在生产代码中运行在各种 Linux 内核版本和发行版上,32 位和 64 位内核都在 x86 硬件上运行。

我正在尝试移植此代码以在 Linux 上为 PPC 处理器运行,但遇到了一些问题。使用 Linux 内核源代码,很容易看出系统调用表在 PPC 上的实现方式有何不同。我可以用我自己编译的处理程序中的函数地址替换表中的条目,没问题。

但是,这是我遇到的问题。PPC ABI 使用称为目录 (TOC) 地址的东西,该地址存储在 CPU 的 R2 寄存器中,并希望通过使用该寄存器中包含的地址(TOC 地址)的偏移量来寻址模块的全局和本地数据。这在进行函数调用的正常情况下工作正常,因为编译器知道在进行调用之前将模块的 TOC 地址加载到寄存器中(或者它已经存在,因为通常您的函数是由您自己的代码调用的)。

但是,当我将自己的函数的地址(在运行时从我加载的内核模块)放入系统调用表时,内核使用 R2 值调用我的处理程序,这不是我编译的 C 代码所期望的值,所以我的代码得到控制而无法访问其数据。

有人知道那里有任何示例代码显示如何处理这种情况吗?我无法重新编译内核。这应该是运行时系统调用表挂钩的简单案例,但我还没有弄清楚,或者找到任何特定于 PPC 的示例。

想法包括:

手工编码一个汇编语言存根,保存 R2 值,用我的本地 TOC 地址加载寄存器,执行我的代码,然后在调用原始处理程序之前恢复旧值。我没有 PPC 组装经验的深度来做到这一点,我也不确定它会起作用。

一些神奇的 gcc 选项可以在不使用 TOC 的情况下生成我的代码。有一个记录在案的 gcc 选项"-mno-toc"在我的 PPC6 Linux 上不起作用。看起来它可能只是系统 V.4 和嵌入式 PowerPC 的一个选项。

任何帮助是极大的赞赏 !

谢谢!

0 投票
2 回答
984 浏览

embedded-linux - 交叉编译时如何准备 modules.dep 和 ld.so.cache?

我在 x86 上为 ppc 交叉编译内核模块和一些库。是否可以在我的主机系统上创建 ld.so.cache 和 modules.dep?

PS我正在使用ELDK工具。

0 投票
1 回答
646 浏览

macos - 为什么 MonoDevelop 2.4 不能在运行 Tiger 的 PowerPC Mac 上启动

我试图让 MonoDevelop 2.4 在运行 Tiger 的 PowerPC Mac 上运行。

我已经从下载页面的“旧版本”页面下载了 Mono 2.4.3 并安装了它。我已经下载并安装了 OS X MonoDevelop 2.4 包。当我运行它时它没有启动 - 它在码头上上下弹跳了一下,然后消失了。控制台日志中的堆栈跟踪是:

Mac OS X 版本 10.4.11 (Build 8S165) 2010-09-24 14:45:13 +0100 2010-09-24 14:45:17.383 SystemUIServer[174] lang is:en Stacktrace:

在 MonoDevelop.Core.Properties.Get (string) <0xffffffff> 在 MonoDevelop.Core.Properties.Get (string) <0x000cc> 在 MonoDevelop.Core.Properties.Set (string,object) <0x00048> 在 MonoDevelop.Core.PropertyService ..cctor () <0x00188> at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff> 在 MonoDevelop.Ide.IdePreferences.get_UserInterfaceTheme () <0xffffffff> 在 MonoDevelop.Ide.IdePreferences。 get_UserInterfaceTheme () <0x00038> at MonoDevelop.Ide.IdeStartup.Run (string[]) <0x0092c> at MonoDevelop.Startup.MonoDevelopMain.Main (string[]) <0x000b0> at (wrapper runtime-invoke) MonoDevelop.Startup.MonoDevelopMain .runtime_invoke_int_object (object,intptr,intptr,intptr) <0xffffffff>

我做了一些网络搜索,一个建议是 MD 需要 CSDK,但我找不到 2.4.3 版本的链接。另一个是启动脚本正在以调试模式运行 MD,这导致了其他 Mac ppc 所有者的问题,但在 2.4 版的脚本中似乎并非如此。

这种软件和操作系统的组合应该起作用吗?如果是这样,我还能尝试什么?