1*c5407693SSandrine BailleuxRunning on the AEMv8 Base FVP 2*c5407693SSandrine Bailleux============================= 3*c5407693SSandrine Bailleux 4*c5407693SSandrine BailleuxAArch64 with reset to BL1 entrypoint 5*c5407693SSandrine Bailleux^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6*c5407693SSandrine Bailleux 7*c5407693SSandrine BailleuxThe following ``FVP_Base_RevC-2xAEMv8A`` parameters should be used to boot Linux 8*c5407693SSandrine Bailleuxwith 8 CPUs using the AArch64 build of TF-A. 9*c5407693SSandrine Bailleux 10*c5407693SSandrine Bailleux.. code:: shell 11*c5407693SSandrine Bailleux 12*c5407693SSandrine Bailleux <path-to>/FVP_Base_RevC-2xAEMv8A \ 13*c5407693SSandrine Bailleux -C pctl.startup=0.0.0.0 \ 14*c5407693SSandrine Bailleux -C bp.secure_memory=1 \ 15*c5407693SSandrine Bailleux -C bp.tzc_400.diagnostics=1 \ 16*c5407693SSandrine Bailleux -C cluster0.NUM_CORES=4 \ 17*c5407693SSandrine Bailleux -C cluster1.NUM_CORES=4 \ 18*c5407693SSandrine Bailleux -C cache_state_modelled=1 \ 19*c5407693SSandrine Bailleux -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 20*c5407693SSandrine Bailleux -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 21*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 22*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 23*c5407693SSandrine Bailleux 24*c5407693SSandrine Bailleux.. note:: 25*c5407693SSandrine Bailleux The ``FVP_Base_RevC-2xAEMv8A`` has shifted affinities and requires 26*c5407693SSandrine Bailleux a specific DTS for all the CPUs to be loaded. 27*c5407693SSandrine Bailleux 28*c5407693SSandrine BailleuxAArch32 with reset to BL1 entrypoint 29*c5407693SSandrine Bailleux^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 30*c5407693SSandrine Bailleux 31*c5407693SSandrine BailleuxThe following ``FVP_Base_AEMv8A-AEMv8A`` parameters should be used to boot Linux 32*c5407693SSandrine Bailleuxwith 8 CPUs using the AArch32 build of TF-A. 33*c5407693SSandrine Bailleux 34*c5407693SSandrine Bailleux.. code:: shell 35*c5407693SSandrine Bailleux 36*c5407693SSandrine Bailleux <path-to>/FVP_Base_AEMv8A-AEMv8A \ 37*c5407693SSandrine Bailleux -C pctl.startup=0.0.0.0 \ 38*c5407693SSandrine Bailleux -C bp.secure_memory=1 \ 39*c5407693SSandrine Bailleux -C bp.tzc_400.diagnostics=1 \ 40*c5407693SSandrine Bailleux -C cluster0.NUM_CORES=4 \ 41*c5407693SSandrine Bailleux -C cluster1.NUM_CORES=4 \ 42*c5407693SSandrine Bailleux -C cache_state_modelled=1 \ 43*c5407693SSandrine Bailleux -C cluster0.cpu0.CONFIG64=0 \ 44*c5407693SSandrine Bailleux -C cluster0.cpu1.CONFIG64=0 \ 45*c5407693SSandrine Bailleux -C cluster0.cpu2.CONFIG64=0 \ 46*c5407693SSandrine Bailleux -C cluster0.cpu3.CONFIG64=0 \ 47*c5407693SSandrine Bailleux -C cluster1.cpu0.CONFIG64=0 \ 48*c5407693SSandrine Bailleux -C cluster1.cpu1.CONFIG64=0 \ 49*c5407693SSandrine Bailleux -C cluster1.cpu2.CONFIG64=0 \ 50*c5407693SSandrine Bailleux -C cluster1.cpu3.CONFIG64=0 \ 51*c5407693SSandrine Bailleux -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 52*c5407693SSandrine Bailleux -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 53*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 54*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 55*c5407693SSandrine Bailleux 56*c5407693SSandrine BailleuxAArch64 with reset to BL31 entrypoint 57*c5407693SSandrine Bailleux^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 58*c5407693SSandrine Bailleux 59*c5407693SSandrine BailleuxThe following ``FVP_Base_RevC-2xAEMv8A`` parameters should be used to boot Linux 60*c5407693SSandrine Bailleuxwith 8 CPUs using the AArch64 build of TF-A. 61*c5407693SSandrine Bailleux 62*c5407693SSandrine Bailleux.. code:: shell 63*c5407693SSandrine Bailleux 64*c5407693SSandrine Bailleux <path-to>/FVP_Base_RevC-2xAEMv8A \ 65*c5407693SSandrine Bailleux -C pctl.startup=0.0.0.0 \ 66*c5407693SSandrine Bailleux -C bp.secure_memory=1 \ 67*c5407693SSandrine Bailleux -C bp.tzc_400.diagnostics=1 \ 68*c5407693SSandrine Bailleux -C cluster0.NUM_CORES=4 \ 69*c5407693SSandrine Bailleux -C cluster1.NUM_CORES=4 \ 70*c5407693SSandrine Bailleux -C cache_state_modelled=1 \ 71*c5407693SSandrine Bailleux -C cluster0.cpu0.RVBAR=0x04010000 \ 72*c5407693SSandrine Bailleux -C cluster0.cpu1.RVBAR=0x04010000 \ 73*c5407693SSandrine Bailleux -C cluster0.cpu2.RVBAR=0x04010000 \ 74*c5407693SSandrine Bailleux -C cluster0.cpu3.RVBAR=0x04010000 \ 75*c5407693SSandrine Bailleux -C cluster1.cpu0.RVBAR=0x04010000 \ 76*c5407693SSandrine Bailleux -C cluster1.cpu1.RVBAR=0x04010000 \ 77*c5407693SSandrine Bailleux -C cluster1.cpu2.RVBAR=0x04010000 \ 78*c5407693SSandrine Bailleux -C cluster1.cpu3.RVBAR=0x04010000 \ 79*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<bl31-binary>"@0x04010000 \ 80*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<bl32-binary>"@0xff000000 \ 81*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 82*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 83*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 84*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 85*c5407693SSandrine Bailleux 86*c5407693SSandrine BailleuxNotes: 87*c5407693SSandrine Bailleux 88*c5407693SSandrine Bailleux- Position Independent Executable (PIE) support is enabled in this 89*c5407693SSandrine Bailleux config allowing BL31 to be loaded at any valid address for execution. 90*c5407693SSandrine Bailleux 91*c5407693SSandrine Bailleux- Since a FIP is not loaded when using BL31 as reset entrypoint, the 92*c5407693SSandrine Bailleux ``--data="<path-to><bl31|bl32|bl33-binary>"@<base-address-of-binary>`` 93*c5407693SSandrine Bailleux parameter is needed to load the individual bootloader images in memory. 94*c5407693SSandrine Bailleux BL32 image is only needed if BL31 has been built to expect a Secure-EL1 95*c5407693SSandrine Bailleux Payload. For the same reason, the FDT needs to be compiled from the DT source 96*c5407693SSandrine Bailleux and loaded via the ``--data cluster0.cpu0="<path-to>/<fdt>"@0x82000000`` 97*c5407693SSandrine Bailleux parameter. 98*c5407693SSandrine Bailleux 99*c5407693SSandrine Bailleux- The ``FVP_Base_RevC-2xAEMv8A`` has shifted affinities and requires a 100*c5407693SSandrine Bailleux specific DTS for all the CPUs to be loaded. 101*c5407693SSandrine Bailleux 102*c5407693SSandrine Bailleux- The ``-C cluster<X>.cpu<Y>.RVBAR=@<base-address-of-bl31>`` parameter, where 103*c5407693SSandrine Bailleux X and Y are the cluster and CPU numbers respectively, is used to set the 104*c5407693SSandrine Bailleux reset vector for each core. 105*c5407693SSandrine Bailleux 106*c5407693SSandrine Bailleux- Changing the default value of ``ARM_TSP_RAM_LOCATION`` will also require 107*c5407693SSandrine Bailleux changing the value of 108*c5407693SSandrine Bailleux ``--data="<path-to><bl32-binary>"@<base-address-of-bl32>`` to the new value of 109*c5407693SSandrine Bailleux ``BL32_BASE``. 110*c5407693SSandrine Bailleux 111*c5407693SSandrine BailleuxAArch32 with reset to SP_MIN entrypoint 112*c5407693SSandrine Bailleux^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 113*c5407693SSandrine Bailleux 114*c5407693SSandrine BailleuxThe following ``FVP_Base_AEMv8A-AEMv8A`` parameters should be used to boot Linux 115*c5407693SSandrine Bailleuxwith 8 CPUs using the AArch32 build of TF-A. 116*c5407693SSandrine Bailleux 117*c5407693SSandrine Bailleux.. code:: shell 118*c5407693SSandrine Bailleux 119*c5407693SSandrine Bailleux <path-to>/FVP_Base_AEMv8A-AEMv8A \ 120*c5407693SSandrine Bailleux -C pctl.startup=0.0.0.0 \ 121*c5407693SSandrine Bailleux -C bp.secure_memory=1 \ 122*c5407693SSandrine Bailleux -C bp.tzc_400.diagnostics=1 \ 123*c5407693SSandrine Bailleux -C cluster0.NUM_CORES=4 \ 124*c5407693SSandrine Bailleux -C cluster1.NUM_CORES=4 \ 125*c5407693SSandrine Bailleux -C cache_state_modelled=1 \ 126*c5407693SSandrine Bailleux -C cluster0.cpu0.CONFIG64=0 \ 127*c5407693SSandrine Bailleux -C cluster0.cpu1.CONFIG64=0 \ 128*c5407693SSandrine Bailleux -C cluster0.cpu2.CONFIG64=0 \ 129*c5407693SSandrine Bailleux -C cluster0.cpu3.CONFIG64=0 \ 130*c5407693SSandrine Bailleux -C cluster1.cpu0.CONFIG64=0 \ 131*c5407693SSandrine Bailleux -C cluster1.cpu1.CONFIG64=0 \ 132*c5407693SSandrine Bailleux -C cluster1.cpu2.CONFIG64=0 \ 133*c5407693SSandrine Bailleux -C cluster1.cpu3.CONFIG64=0 \ 134*c5407693SSandrine Bailleux -C cluster0.cpu0.RVBAR=0x04002000 \ 135*c5407693SSandrine Bailleux -C cluster0.cpu1.RVBAR=0x04002000 \ 136*c5407693SSandrine Bailleux -C cluster0.cpu2.RVBAR=0x04002000 \ 137*c5407693SSandrine Bailleux -C cluster0.cpu3.RVBAR=0x04002000 \ 138*c5407693SSandrine Bailleux -C cluster1.cpu0.RVBAR=0x04002000 \ 139*c5407693SSandrine Bailleux -C cluster1.cpu1.RVBAR=0x04002000 \ 140*c5407693SSandrine Bailleux -C cluster1.cpu2.RVBAR=0x04002000 \ 141*c5407693SSandrine Bailleux -C cluster1.cpu3.RVBAR=0x04002000 \ 142*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<bl32-binary>"@0x04002000 \ 143*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 144*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 145*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 146*c5407693SSandrine Bailleux --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 147*c5407693SSandrine Bailleux 148*c5407693SSandrine Bailleux.. note:: 149*c5407693SSandrine Bailleux Position Independent Executable (PIE) support is enabled in this 150*c5407693SSandrine Bailleux config allowing SP_MIN to be loaded at any valid address for execution. 151*c5407693SSandrine Bailleux 152*c5407693SSandrine Bailleux-------------- 153*c5407693SSandrine Bailleux 154*c5407693SSandrine Bailleux*Copyright (c) 2019-2024, Arm Limited. All rights reserved.* 155