> From: Kurt Miller <k...@intricatesoftware.com> > Date: Sat, 13 Apr 2024 13:21:49 +0000 > > On Mar 21, 2024, at 1:16 PM, George Koehler <kern...@gmail.com> wrote: > > > > I don't use u-boot, but I saw the powerpc bulk failing to package > > u-boot for rk356x and rk3588. This diff fixes the failures by adding > > 5 endian swaps. I don't know if my u-boot works, but I picked 2 > > boards (1 from each package) and compared u-boot-rockchip.bin between > > powerpc and amd64: cmp -l|wc -l found 106 to 117 different bytes. > > > > Right now, powerpc is the only big-endian arch that can build this. > > mips64 and powerpc64 are missing devel/arm-none-eabi/gcc,aarch64; and > > sparc64 has BROKEN-sparc64 on u-boot. My 750 MHz PowerPC G4 takes > > over 3+1/2 hours to package rk3588 and over 7+1/2 hours for rk356x. > > > > May I get an ok from arm64 people? > > --gkoehler > > George provided me the rock5b u-boot-rockchip.bin built on powerpc > to test. It boots fine and with no output differences. > > I also built this on amd64 and tested the result on a rock5b. It > also boots fine and with no output differences. > > okay kurt@
Fine with me as well. > > Index: rk356x/Makefile > > =================================================================== > > RCS file: /cvs/ports/sysutils/u-boot/rk356x/Makefile,v > > diff -u -p -r1.4 Makefile > > --- rk356x/Makefile 17 Feb 2024 11:27:42 -0000 1.4 > > +++ rk356x/Makefile 20 Mar 2024 22:34:34 -0000 > > @@ -1,4 +1,5 @@ > > VERSION= 2024.01 > > +REVISION= 0 > > > > SOC= rk356x > > > > Index: rk356x/files/rkbinpatch.c > > =================================================================== > > RCS file: /cvs/ports/sysutils/u-boot/rk356x/files/rkbinpatch.c,v > > diff -u -p -r1.1 rkbinpatch.c > > --- rk356x/files/rkbinpatch.c 17 Oct 2023 19:36:22 -0000 1.1 > > +++ rk356x/files/rkbinpatch.c 20 Mar 2024 22:34:35 -0000 > > @@ -16,6 +16,7 @@ > > > > #include <sys/mman.h> > > #include <sys/stat.h> > > +#include <endian.h> > > #include <err.h> > > #include <fcntl.h> > > #include <unistd.h> > > @@ -43,12 +44,13 @@ main(int argc, char *argv[]) > > > > end = (char *)start + st.st_size; > > for (word = start; (void *)word < end; word++) { > > - if (*word == 0x12345678 && (void *)(word + 10) < end) { > > - data = *(word + 9); > > + if (le32toh(*word) == 0x12345678 && > > + (void *)(word + 10) < end) { > > + data = le32toh(*(word + 9)); > > if ((data & 0xffffff) == 1500000) { > > data &= 0xff000000; > > data |= 115200; > > - *(word + 9) = data; > > + *(word + 9) = htole32(data); > > close(fd); > > return 0; > > } > > Index: rk356x/patches/patch-tools_rkcommon_c > > =================================================================== > > RCS file: rk356x/patches/patch-tools_rkcommon_c > > diff -N rk356x/patches/patch-tools_rkcommon_c > > --- /dev/null 1 Jan 1970 00:00:00 -0000 > > +++ rk356x/patches/patch-tools_rkcommon_c 20 Mar 2024 22:34:35 -0000 > > @@ -0,0 +1,23 @@ > > +Add endian swaps for BE_ARCHS. > > + > > +Index: tools/rkcommon.c > > +--- tools/rkcommon.c.orig > > ++++ tools/rkcommon.c > > +@@ -454,7 +454,7 @@ int rkcommon_verify_header(unsigned char *buf, int siz > > + int ret; > > + > > + /* spl_hdr is abandon on header_v2 */ > > +- if ((*(uint32_t *)buf) == RK_MAGIC_V2) > > ++ if (le32_to_cpu(*(uint32_t *)buf) == RK_MAGIC_V2) > > + return 0; > > + > > + ret = rkcommon_parse_header(buf, &header0, &img_spl_info); > > +@@ -489,7 +489,7 @@ void rkcommon_print_header(const void *buf, struct ima > > + uint8_t image_type; > > + int ret, boot_size, init_size; > > + > > +- if ((*(uint32_t *)buf) == RK_MAGIC_V2) { > > ++ if (le32_to_cpu(*(uint32_t *)buf) == RK_MAGIC_V2) { > > + ret = rkcommon_parse_header_v2(buf, &header0_v2); > > + > > + if (ret < 0) { > > Index: rk3588/Makefile > > =================================================================== > > RCS file: /cvs/ports/sysutils/u-boot/rk3588/Makefile,v > > diff -u -p -r1.3 Makefile > > --- rk3588/Makefile 6 Mar 2024 10:19:30 -0000 1.3 > > +++ rk3588/Makefile 20 Mar 2024 22:34:35 -0000 > > @@ -1,5 +1,5 @@ > > VERSION= 2024.01-rc3 > > -REVISION= 1 > > +REVISION= 2 > > > > SOC= rk3588 > > > > Index: rk3588/files/rkbinpatch.c > > =================================================================== > > RCS file: /cvs/ports/sysutils/u-boot/rk3588/files/rkbinpatch.c,v > > diff -u -p -r1.1 rkbinpatch.c > > --- rk3588/files/rkbinpatch.c 26 Nov 2023 21:06:26 -0000 1.1 > > +++ rk3588/files/rkbinpatch.c 20 Mar 2024 22:34:35 -0000 > > @@ -43,12 +43,13 @@ main(int argc, char *argv[]) > > > > end = (char *)start + st.st_size; > > for (word = start; (void *)word < end; word++) { > > - if (*word == 0x12345678 && (void *)(word + 14) < end) { > > - data = *(word + 13); > > + if (le32toh(*word) == 0x12345678 && > > + (void *)(word + 14) < end) { > > + data = le32toh(*(word + 13)); > > if ((data & 0xffffff) == 1500000) { > > data &= 0xff000000; > > data |= 115200; > > - *(word + 13) = data; > > + *(word + 13) = htole32(data); > > close(fd); > > return 0; > > } > > Index: rk3588/patches/patch-tools_rkcommon_c > > =================================================================== > > RCS file: rk3588/patches/patch-tools_rkcommon_c > > diff -N rk3588/patches/patch-tools_rkcommon_c > > --- /dev/null 1 Jan 1970 00:00:00 -0000 > > +++ rk3588/patches/patch-tools_rkcommon_c 20 Mar 2024 22:34:35 -0000 > > @@ -0,0 +1,23 @@ > > +Add endian swaps for BE_ARCHS. > > + > > +Index: tools/rkcommon.c > > +--- tools/rkcommon.c.orig > > ++++ tools/rkcommon.c > > +@@ -454,7 +454,7 @@ int rkcommon_verify_header(unsigned char *buf, int siz > > + int ret; > > + > > + /* spl_hdr is abandon on header_v2 */ > > +- if ((*(uint32_t *)buf) == RK_MAGIC_V2) > > ++ if (le32_to_cpu(*(uint32_t *)buf) == RK_MAGIC_V2) > > + return 0; > > + > > + ret = rkcommon_parse_header(buf, &header0, &img_spl_info); > > +@@ -489,7 +489,7 @@ void rkcommon_print_header(const void *buf, struct ima > > + uint8_t image_type; > > + int ret, boot_size, init_size; > > + > > +- if ((*(uint32_t *)buf) == RK_MAGIC_V2) { > > ++ if (le32_to_cpu(*(uint32_t *)buf) == RK_MAGIC_V2) { > > + ret = rkcommon_parse_header_v2(buf, &header0_v2); > > + > > + if (ret < 0) { > > > >