From 54e15e04338c0fecc0be139a0da2d0d972c21419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciro=20Santilli=20=E5=85=AD=E5=9B=9B=E4=BA=8B=E4=BB=B6=20?= =?UTF-8?q?=E6=B3=95=E8=BD=AE=E5=8A=9F?= Date: Mon, 26 Nov 2018 00:00:00 +0000 Subject: [PATCH] multicore: remove references to PCSI --- README.adoc | 7 +++---- baremetal/arch/aarch64/multicore.S | 2 +- baremetal/arch/arm/multicore.S | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.adoc b/README.adoc index 46523c2..c80607e 100644 --- a/README.adoc +++ b/README.adoc @@ -10603,10 +10603,7 @@ since gem5 is able to detect when nothing will ever happen, and exits. When GDB step debugging, switch between cores with the usual `thread` commands, see also: <>. -Bibliography: - -* https://stackoverflow.com/questions/20055754/arm-start-wakeup-bringup-the-other-cpu-cores-aps-and-pass-execution-start-addre -* https://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like/33651438#33651438 +Bibliography: https://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like/33651438#33651438 ===== WFE and SEV @@ -10690,6 +10687,8 @@ The Linux kernel wakes up the secondary cores in this exact same way at: https:/ In gem5, CPU 1 starts woken up from the start, so PSCI is not needed. TODO gem5 actually blows up if we try to do the `hvc` call, understand why. +Bibliography: https://stackoverflow.com/questions/20055754/arm-start-wakeup-bringup-the-other-cpu-cores-aps-and-pass-execution-start-addre/53473447#53473447 + ===== DMB TODO: create and study a minimal examples in gem5 where the `DMB` instruction leads to less cycles: https://stackoverflow.com/questions/15491751/real-life-use-cases-of-barriers-dsb-dmb-isb-in-arm diff --git a/baremetal/arch/aarch64/multicore.S b/baremetal/arch/aarch64/multicore.S index 9b8020c..2eafd35 100644 --- a/baremetal/arch/aarch64/multicore.S +++ b/baremetal/arch/aarch64/multicore.S @@ -39,7 +39,7 @@ cpu0_only: /* Wake up CPU 1 from initial sleep! * See:https://github.com/cirosantilli/linux-kernel-module-cheat#psci */ - /* Function identifier: PCSI CPU_ON. */ + /* PCSI function identifier: CPU_ON. */ ldr w0, =0xc4000003 /* Argument 1: target_cpu */ mov x1, 1 diff --git a/baremetal/arch/arm/multicore.S b/baremetal/arch/arm/multicore.S index 9f461a0..a051de4 100644 --- a/baremetal/arch/arm/multicore.S +++ b/baremetal/arch/arm/multicore.S @@ -20,7 +20,7 @@ cpu1_sleep_forever: b cpu1_sleep_forever cpu0_only: #if !defined(GEM5) - /* PCSI CPU_ON. */ + /* PSCI CPU_ON. */ ldr r0, =0x84000003 mov r1, #1 ldr r2, =cpu1_only