I\xe2\x80\x99m 试图为 ARM 制作一个大端的 Linux 发行版。由于我在 Gentoo 上\xe2\x80\x99m,交叉编译再简单不过了。我\xe2\x80\x99已经构建了所有这些,但后来陷入了让它/内核启动的困境。
\n\nI\xe2\x80\x99m 针对采用 AllWinner A10 CPU 的 Cubieboard。我使用 u-boot 作为引导加载程序。由于 u-boot 不\xe2\x80\x99t 支持大端 ARM,因此我在将控制权传递给内核之前对其进行了修补:
\n\ndiff -Naur u-boot-2016.01-1/arch/arm/lib/bootm.c u-boot-2016.01-2/arch/arm/lib/bootm.c\n--- u-boot-2016.01-1/arch/arm/lib/bootm.c 2016-01-12 15:06:54.000000000 +0100\n+++ u-boot-2016.01-2/arch/arm/lib/bootm.c 2017-07-09 14:13:29.675865446 +0200\n@@ -315,7 +315,16 @@\n 0, machid, r2);\n } else\n #endif\n+ {\n+ {\n+ unsigned long v;\n+ __asm volatile ("mrc p15, 0, %0, c1, c0, 0\\n\\t"\n+ "orr %0, %0, #(1 << 7)\\n\\t" /* Switch to bigendian */\n+ "mcr p15, 0, %0, c1, c0, 0" : "=&r" (v));\n+ }\n+\n …
Run Code Online (Sandbox Code Playgroud)