about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorNeil Davis <neildavis@users.noreply.github.com>2023-01-09 16:02:14 +0000
committerGitHub <noreply@github.com>2023-01-09 16:02:14 +0000
commitd1f63fe260c28e3246ef23cd090eab51fcc8152e (patch)
tree9ff8aee33bb180d21b2ea3b8920f77695fec6a60
parent53eee70c0384e24a6f31e398ac7a271ef7e27432 (diff)
downloadbox64-d1f63fe260c28e3246ef23cd090eab51fcc8152e.tar.gz
box64-d1f63fe260c28e3246ef23cd090eab51fcc8152e.zip
Add support for Rpi3 on 64-bit ARM (aarch64) (#494)
-rwxr-xr-xCMakeLists.txt12
-rwxr-xr-xdocs/COMPILE.md27
2 files changed, 35 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f849ec14..cdba62a8 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,7 @@ cmake_policy(SET CMP0065 NEW)
 SET(CMAKE_C_FLAGS_DEBUG  "-O0 -g")
 SET(CMAKE_CXX_FLAGS_DEBUG  "-O0 -g")
 
+option(RPI3ARM64 "Set to ON if targeting an RaspberryPI3 device with multiarch arm64 and armhf" ${RPI3ARM64})
 option(RPI4ARM64 "Set to ON if targeting an RaspberryPI4 device with multiarch arm64 and armhf" ${RPI4ARM64})
 option(RK3326 "Set to ON if targeting an Rockchip RK3326 based device" ${RK3326})
 option(RK3399 "Set to ON if targeting an Rockchip RK3399 based device" ${RK3399})
@@ -40,12 +41,12 @@ if(PPC64LE)
     set(ARM_DYNAREC OFF CACHE BOOL "")
     set(PAGE16K OFF CACHE BOOL "")
 endif()
-if(RK3399 OR ODROIDN2 OR RPI4ARM64 OR RK3326 OR TEGRAX1 OR PHYTIUM OR SD845 OR LX2160A OR M1)
+if(RK3399 OR ODROIDN2 OR RPI3ARM64 OR RPI4ARM64 OR RK3326 OR TEGRAX1 OR PHYTIUM OR SD845 OR LX2160A OR M1)
     set(LD80BITS OFF CACHE BOOL "")
     set(NOALIGN OFF CACHE BOOL "")
     set(ARM_DYNAREC ON CACHE BOOL "")
 endif()
-if(RK3399 OR ODROIDN2 OR RPI4ARM64 OR RK3326 OR TEGRAX1 OR PHYTIUM OR SD845 OR LX2160A)
+if(RK3399 OR ODROIDN2 OR RPI3ARM64 OR RPI4ARM64 OR RK3326 OR TEGRAX1 OR PHYTIUM OR SD845 OR LX2160A)
     set(PAGE16K OFF CACHE BOOL "")
 endif()
 if(M1 OR LARCH64)
@@ -92,7 +93,12 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
   set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
 endif()
 
-if(RPI4ARM64)
+if(RPI3ARM64)
+    add_definitions(-DRPI)
+    add_definitions(-DRPI3ARM64)
+    add_definitions(-pipe -march=armv8-a+crc -mtune=cortex-a53)
+    set(CMAKE_ASM_FLAGS  "-pipe -march=armv8-a+crc -mtune=cortex-a53")
+elseif(RPI4ARM64)
     add_definitions(-DRPI)
     add_definitions(-DRPI4ARM64)
     add_definitions(-pipe -march=armv8-a+crc -mtune=cortex-a72)
diff --git a/docs/COMPILE.md b/docs/COMPILE.md
index d48bc1b6..c6c509f8 100755
--- a/docs/COMPILE.md
+++ b/docs/COMPILE.md
@@ -27,7 +27,32 @@ If it's the first install, you also need:
 sudo systemctl restart systemd-binfmt

 ```

 

-#### for PI4

+#### for Raspberry Pi 3

+

+Warning, you need a 64bit OS:

+

+If building on the Pi, you will also need a large swap (2 GB+)

+and reduce GPU memory to a minimum (e.g. 16 MB) using `raspi-config`

+(and reboot) before starting the build:

+

+You can use e.g. '`make -j4`' to speed up the build, but on a Pi 3 with 1GB memory you will likely

+run out of memory at some point and need to run the build again.

+Still, this can be faster if your build is attended.

+

+```

+git clone https://github.com/ptitSeb/box64

+cd box64

+mkdir build; cd build; cmake .. -DRPI3ARM64=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo

+make 

+# or e.g. make -j4

+sudo make install

+```

+If it's the first install, you also need:

+```

+sudo systemctl restart systemd-binfmt

+```

+

+#### for Raspberry Pi 4

 

 Warning, you need a 64bit OS: