特定架构说明 — SPARC
SPARC 移植使用 sparc
关键词。它专注于 sun4u
硬件(具有 v9
CPU 的 Sun UltraSparc 系统)。v8
处理器和 2.4 内核应该仍然可以在 Gentoo 上工作,但它们不再受 Gentoo/SPARC 团队支持。
SPARC 系统对对齐访问非常严格:这是 SPARC 上最常见的错误类型(除了与大端相关的错误之外),会导致 SIGBUS
信号发送到错误进程。已知问题应链接到相关的跟踪错误。
这通常是由于代码作者使用了看似聪明的指针转换和类型穿透技巧。
SPARC 内核和用户空间 ABI
v9
系统使用纯 64 位内核和纯 32 位用户空间。如果内核不提供可用的 32 位兼容性接口,这可能会在处理低级软件时导致可移植性问题。
v8
系统使用纯 32 位内核和纯 32 位用户空间。
上述所有 SPARC 系统都是大端,但是 v9
架构也利用小端指令来访问 PCI 总线上的数据。
额外的 SPARC 关键词要求
注意:本节是对 升级时的关键词 中指南的补充。它讨论了 SPARC 架构的额外要求。
为了给软件包添加 ~sparc
关键词,通常必须满足以下额外条件
- 该软件包必须由架构团队成员(或获得架构团队许可的人员)在
v9
系统上测试过。
通常期望任何为 SPARC 添加关键词的人都应该在 sparc@
邮件列表中。
SPARC 指令集和性能说明
有三种基本的 SPARC 指令集标准。
-
v7
是非常旧的硬件中使用的原始指令集。Gentoo 不提供支持v7
的阶段,但是理论上一个足够疯狂的人可以在v7
机器上运行 Gentoo。 -
v8
是v7
的扩展,增加了对硬件整数乘法和除法的支持。Gentoo sparc32(sun4m
)阶段上次可用是在 2006.1 版本。 -
v9
添加了 64 位支持和大量性能增强功能。Gentoo sparc64(sun4u
)阶段是v9
。
此外,各个 CPU 实现之间存在细微差异——例如,HyperSparc CPU 在调度某些指令时有更宽松的要求。这些差异相对较小。
如果 gcc
没有使用任何 -mcpu
参数调用,它将生成 v7
代码。根据应用程序的不同,在 UltraSparc 上运行时,这可能比 v9
代码慢五倍——大量使用整数乘法和除法的加密和图形应用程序受到的打击尤其严重。因此,不筛选变量 中的注释在 SPARC 上尤其重要。