The SoC entry functions now move barebox to the load address themselves, with the MMU enabled. Stop doing it upfront with relocate_to_adr_full(), which copies the image with the MMU off, and just relocate in place.
Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Sascha Hauer <[email protected]> --- arch/arm/boards/pine64-pinetab2/lowlevel.c | 10 ++-------- arch/arm/boards/pine64-quartz64/lowlevel.c | 5 +---- arch/arm/boards/protonic-prtpuk/lowlevel.c | 5 +---- arch/arm/boards/protonic-rk356x/lowlevel.c | 5 +---- arch/arm/boards/qnap-tsx33/lowlevel.c | 18 ++---------------- arch/arm/boards/radxa-cm3/lowlevel.c | 5 +---- arch/arm/boards/radxa-rock3/lowlevel.c | 5 +---- arch/arm/boards/radxa-rock5/lowlevel.c | 10 ++-------- arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c | 5 +---- arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c | 5 +---- arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c | 5 +---- arch/arm/boards/rockchip-rk3568-evb/lowlevel.c | 5 +---- arch/arm/boards/wolfvision-pf5/lowlevel.c | 9 +-------- arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c | 5 +---- 14 files changed, 17 insertions(+), 80 deletions(-) diff --git a/arch/arm/boards/pine64-pinetab2/lowlevel.c b/arch/arm/boards/pine64-pinetab2/lowlevel.c index 73ca6866f0..63286bf630 100644 --- a/arch/arm/boards/pine64-pinetab2/lowlevel.c +++ b/arch/arm/boards/pine64-pinetab2/lowlevel.c @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_pinetab2_v0, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); @@ -26,10 +23,7 @@ ENTRY_FUNCTION(start_pinetab2_v2, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/pine64-quartz64/lowlevel.c b/arch/arm/boards/pine64-quartz64/lowlevel.c index 7723d47860..6a1169d24a 100644 --- a/arch/arm/boards/pine64-quartz64/lowlevel.c +++ b/arch/arm/boards/pine64-quartz64/lowlevel.c @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_quartz64a, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/protonic-prtpuk/lowlevel.c b/arch/arm/boards/protonic-prtpuk/lowlevel.c index 08de527bf6..df1588d343 100644 --- a/arch/arm/boards/protonic-prtpuk/lowlevel.c +++ b/arch/arm/boards/protonic-prtpuk/lowlevel.c @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_prtpuk, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3576_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/protonic-rk356x/lowlevel.c b/arch/arm/boards/protonic-rk356x/lowlevel.c index 830d708b6e..1959881951 100644 --- a/arch/arm/boards/protonic-rk356x/lowlevel.c +++ b/arch/arm/boards/protonic-rk356x/lowlevel.c @@ -22,10 +22,7 @@ ENTRY_FUNCTION(start_mecsbc, r0, r1, r2) putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/qnap-tsx33/lowlevel.c b/arch/arm/boards/qnap-tsx33/lowlevel.c index c5458937d1..88e94471d2 100644 --- a/arch/arm/boards/qnap-tsx33/lowlevel.c +++ b/arch/arm/boards/qnap-tsx33/lowlevel.c @@ -13,14 +13,7 @@ extern char __dtb_rk3568_qnap_ts433eu_start[]; ENTRY_FUNCTION(start_rk3568_qnap_ts433, r0, r1, r2) { - /* - * Image execution starts at 0x0, but this is used for ATF and - * OP-TEE later, so move away from here. - */ - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); @@ -35,14 +28,7 @@ ENTRY_FUNCTION(start_rk3568_qnap_ts433, r0, r1, r2) */ ENTRY_FUNCTION(start_rk3568_qnap_ts433eu, r0, r1, r2) { - /* - * Image execution starts at 0x0, but this is used for ATF and - * OP-TEE later, so move away from here. - */ - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/radxa-cm3/lowlevel.c b/arch/arm/boards/radxa-cm3/lowlevel.c index e1b453f21f..2c91444d46 100644 --- a/arch/arm/boards/radxa-cm3/lowlevel.c +++ b/arch/arm/boards/radxa-cm3/lowlevel.c @@ -21,10 +21,7 @@ ENTRY_FUNCTION(start_radxa_cm3_io, r0, r1, r2) putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/radxa-rock3/lowlevel.c b/arch/arm/boards/radxa-rock3/lowlevel.c index ec407404b9..50ec27d272 100644 --- a/arch/arm/boards/radxa-rock3/lowlevel.c +++ b/arch/arm/boards/radxa-rock3/lowlevel.c @@ -22,10 +22,7 @@ ENTRY_FUNCTION(start_rock3a, r0, r1, r2) putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/radxa-rock5/lowlevel.c b/arch/arm/boards/radxa-rock5/lowlevel.c index e70752be31..f00c394c4d 100644 --- a/arch/arm/boards/radxa-rock5/lowlevel.c +++ b/arch/arm/boards/radxa-rock5/lowlevel.c @@ -15,10 +15,7 @@ ENTRY_FUNCTION(start_rock5b, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3588_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); @@ -29,10 +26,7 @@ ENTRY_FUNCTION(start_rock5t, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3588_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c b/arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c index 474f1a1332..9e083514e1 100644 --- a/arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c +++ b/arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_rk3562_evb2, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3562_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c b/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c index 4afe83189d..b56f8d62cf 100644 --- a/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c +++ b/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_rk3562_kickpi_k3, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3562_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c b/arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c index 12c2445287..021438e12f 100644 --- a/arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c +++ b/arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c @@ -26,10 +26,7 @@ ENTRY_FUNCTION(start_rk3568_bpi_r2pro, r0, r1, r2) //clear bit 6 for 3v3 as it was set to 1v8 writel(RK_CLRBITS(BIT(6)), PMU_GRF_IO_VSEL1); - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/rockchip-rk3568-evb/lowlevel.c b/arch/arm/boards/rockchip-rk3568-evb/lowlevel.c index d5ae70049e..a238f8bd73 100644 --- a/arch/arm/boards/rockchip-rk3568-evb/lowlevel.c +++ b/arch/arm/boards/rockchip-rk3568-evb/lowlevel.c @@ -22,10 +22,7 @@ ENTRY_FUNCTION(start_rk3568_evb, r0, r1, r2) putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/wolfvision-pf5/lowlevel.c b/arch/arm/boards/wolfvision-pf5/lowlevel.c index c20ca4ae13..49fb2143d7 100644 --- a/arch/arm/boards/wolfvision-pf5/lowlevel.c +++ b/arch/arm/boards/wolfvision-pf5/lowlevel.c @@ -21,14 +21,7 @@ ENTRY_FUNCTION(start_rk3568_wolfvision_pf5, r0, r1, r2) */ writel(RK_SETBITS(0x30), 0xfdc20140); - /* - * Image execution starts at 0x0, but this is used for ATF and - * OP-TEE later, so move away from here. - */ - if (current_el() == 3) - relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); diff --git a/arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c b/arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c index 2fa921eee0..45ba471d24 100644 --- a/arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c +++ b/arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c @@ -14,10 +14,7 @@ ENTRY_FUNCTION(start_orangepi_5_plus, r0, r1, r2) { putc_ll('>'); - if (current_el() == 3) - relocate_to_adr_full(RK3588_BAREBOX_LOAD_ADDRESS); - else - relocate_to_current_adr(); + relocate_to_current_adr(); setup_c(); -- 2.47.3
