--- /dev/null
+ menu "ARM architecture"
+ depends on ARM
+
+ config SYS_ARCH
+ default "arm"
+
+ config ARM64
+ bool
+
+ choice
+ prompt "Target select"
+
+ config TARGET_INTEGRATORAP_CM720T
+ bool "Support integratorap_cm720t"
+
+ config TARGET_INTEGRATORAP_CM920T
+ bool "Support integratorap_cm920t"
+
+ config TARGET_INTEGRATORCP_CM920T
+ bool "Support integratorcp_cm920t"
+
+ config TARGET_A320EVB
+ bool "Support a320evb"
+
+ config TARGET_AT91RM9200EK
+ bool "Support at91rm9200ek"
+
+ config TARGET_EB_CPUX9K2
+ bool "Support eb_cpux9k2"
+
+ config TARGET_CPUAT91
+ bool "Support cpuat91"
+
+ config TARGET_EDB93XX
+ bool "Support edb93xx"
+
+ config TARGET_SCB9328
+ bool "Support scb9328"
+
+ config TARGET_CM4008
+ bool "Support cm4008"
+
+ config TARGET_CM41XX
+ bool "Support cm41xx"
+
+ config TARGET_VCMA9
+ bool "Support VCMA9"
+
+ config TARGET_SMDK2410
+ bool "Support smdk2410"
+
+ config TARGET_INTEGRATORAP_CM926EJS
+ bool "Support integratorap_cm926ejs"
+
+ config TARGET_INTEGRATORCP_CM926EJS
+ bool "Support integratorcp_cm926ejs"
+
+ config TARGET_ASPENITE
+ bool "Support aspenite"
+
+ config TARGET_GPLUGD
+ bool "Support gplugd"
+
+ config TARGET_AFEB9260
+ bool "Support afeb9260"
+
+ config TARGET_AT91SAM9260EK
+ bool "Support at91sam9260ek"
+
+ config TARGET_AT91SAM9261EK
+ bool "Support at91sam9261ek"
+
+ config TARGET_AT91SAM9263EK
+ bool "Support at91sam9263ek"
+
+ config TARGET_AT91SAM9M10G45EK
+ bool "Support at91sam9m10g45ek"
+
+ config TARGET_AT91SAM9N12EK
+ bool "Support at91sam9n12ek"
+
+ config TARGET_AT91SAM9RLEK
+ bool "Support at91sam9rlek"
+
+ config TARGET_AT91SAM9X5EK
+ bool "Support at91sam9x5ek"
+
+ config TARGET_SNAPPER9260
+ bool "Support snapper9260"
+
+ config TARGET_VL_MA2SC
+ bool "Support vl_ma2sc"
+
+ config TARGET_SBC35_A9G20
+ bool "Support sbc35_a9g20"
+
+ config TARGET_TNY_A9260
+ bool "Support tny_a9260"
+
+ config TARGET_USB_A9263
+ bool "Support usb_a9263"
+
+ config TARGET_ETHERNUT5
+ bool "Support ethernut5"
+
+ config TARGET_TOP9000
+ bool "Support top9000"
+
+ config TARGET_MEESC
+ bool "Support meesc"
+
+ config TARGET_OTC570
+ bool "Support otc570"
+
+ config TARGET_CPU9260
+ bool "Support cpu9260"
+
+ config TARGET_PM9261
+ bool "Support pm9261"
+
+ config TARGET_PM9263
+ bool "Support pm9263"
+
+ config TARGET_PM9G45
+ bool "Support pm9g45"
+
+ config TARGET_CORVUS
+ bool "Support corvus"
+
+ config TARGET_TAURUS
+ bool "Support taurus"
+
+ config TARGET_STAMP9G20
+ bool "Support stamp9g20"
+
+ config ARCH_DAVINCI
+ bool "TI DaVinci"
+ help
+ Support for TI's DaVinci platform.
+
+ config KIRKWOOD
+ bool "Marvell Kirkwood"
+
+ config TARGET_DEVKIT3250
+ bool "Support devkit3250"
+
+ config TARGET_JADECPU
+ bool "Support jadecpu"
+
+ config TARGET_MX25PDK
+ bool "Support mx25pdk"
+
+ config TARGET_TX25
+ bool "Support tx25"
+
+ config TARGET_ZMX25
+ bool "Support zmx25"
+
+ config TARGET_APF27
+ bool "Support apf27"
+
+ config TARGET_IMX27LITE
+ bool "Support imx27lite"
+
+ config TARGET_MAGNESIUM
+ bool "Support magnesium"
+
+ config TARGET_APX4DEVKIT
+ bool "Support apx4devkit"
+
+ config TARGET_XFI3
+ bool "Support xfi3"
+
+ config TARGET_M28EVK
+ bool "Support m28evk"
+
+ config TARGET_MX23EVK
+ bool "Support mx23evk"
+
+ config TARGET_MX28EVK
+ bool "Support mx28evk"
+
+ config TARGET_MX23_OLINUXINO
+ bool "Support mx23_olinuxino"
+
+ config TARGET_BG0900
+ bool "Support bg0900"
+
+ config TARGET_SANSA_FUZE_PLUS
+ bool "Support sansa_fuze_plus"
+
+ config TARGET_SC_SPS_1
+ bool "Support sc_sps_1"
+
+ config ARCH_NOMADIK
+ bool "ST-Ericsson Nomadik"
+
+ config ORION5X
+ bool "Marvell Orion"
+
+ config TARGET_DKB
+ bool "Support dkb"
+
+ config TARGET_SPEAR300
+ bool "Support spear300"
+
+ config TARGET_SPEAR310
+ bool "Support spear310"
+
+ config TARGET_SPEAR320
+ bool "Support spear320"
+
+ config TARGET_SPEAR600
+ bool "Support spear600"
+
+ config TARGET_X600
+ bool "Support x600"
+
+ config ARCH_VERSATILE
+ bool "ARM Ltd. Versatile family"
+
+ config TARGET_INTEGRATORCP_CM1136
+ bool "Support integratorcp_cm1136"
+
+ config TARGET_IMX31_PHYCORE
+ bool "Support imx31_phycore"
+
+ config TARGET_QONG
+ bool "Support qong"
+
+ config TARGET_MX31ADS
+ bool "Support mx31ads"
+
+ config TARGET_MX31PDK
+ bool "Support mx31pdk"
+
+ config TARGET_TT01
+ bool "Support tt01"
+
+ config TARGET_IMX31_LITEKIT
+ bool "Support imx31_litekit"
+
+ config TARGET_WOODBURN
+ bool "Support woodburn"
+
+ config TARGET_WOODBURN_SD
+ bool "Support woodburn_sd"
+
+ config TARGET_FLEA3
+ bool "Support flea3"
+
+ config TARGET_MX35PDK
+ bool "Support mx35pdk"
+
+ config TARGET_RPI_B
+ bool "Support rpi_b"
+
+ config TARGET_TNETV107X_EVM
+ bool "Support tnetv107x_evm"
+
+ config TARGET_INTEGRATORAP_CM946ES
+ bool "Support integratorap_cm946es"
+
+ config TARGET_INTEGRATORCP_CM946ES
+ bool "Support integratorcp_cm946es"
+
+ config TARGET_VEXPRESS_CA15_TC2
+ bool "Support vexpress_ca15_tc2"
+
+ config TARGET_VEXPRESS_CA5X2
+ bool "Support vexpress_ca5x2"
+
+ config TARGET_VEXPRESS_CA9X4
+ bool "Support vexpress_ca9x4"
+
+ config TARGET_KWB
+ bool "Support kwb"
+
+ config TARGET_TSERIES
+ bool "Support tseries"
+
+ config TARGET_CM_T335
+ bool "Support cm_t335"
+
+ config TARGET_PEPPER
+ bool "Support pepper"
+
+ config TARGET_AM335X_IGEP0033
+ bool "Support am335x_igep0033"
+
+ config TARGET_PCM051
+ bool "Support pcm051"
+
+ config TARGET_DRACO
+ bool "Support draco"
+
+ config TARGET_DXR2
+ bool "Support dxr2"
+
+ config TARGET_PXM2
+ bool "Support pxm2"
+
+ config TARGET_RUT
+ bool "Support rut"
+
+ config TARGET_PENGWYN
+ bool "Support pengwyn"
+
+ config TARGET_AM335X_EVM
+ bool "Support am335x_evm"
+
+ config TARGET_AM43XX_EVM
+ bool "Support am43xx_evm"
+
+ config TARGET_TI814X_EVM
+ bool "Support ti814x_evm"
+
+ config TARGET_TI816X_EVM
+ bool "Support ti816x_evm"
+
+ config TARGET_SAMA5D3_XPLAINED
+ bool "Support sama5d3_xplained"
+
+ config TARGET_SAMA5D3XEK
+ bool "Support sama5d3xek"
+
+ config TARGET_BCM28155_AP
+ bool "Support bcm28155_ap"
+
+ config TARGET_BCM958300K
+ bool "Support bcm958300k"
+
+ config TARGET_BCM958622HR
+ bool "Support bcm958622hr"
+
+ config ARCH_EXYNOS
+ bool "Samsung EXYNOS"
+
+ config ARCH_S5PC1XX
+ bool "Samsung S5PC1XX"
+
+ config ARCH_HIGHBANK
+ bool "Calxeda Highbank"
+
+ config ARCH_KEYSTONE
+ bool "TI Keystone"
+
+ config TARGET_M53EVK
+ bool "Support m53evk"
+
+ config TARGET_IMA3_MX53
+ bool "Support ima3-mx53"
+
+ config TARGET_MX51EVK
+ bool "Support mx51evk"
+
+ config TARGET_MX53ARD
+ bool "Support mx53ard"
+
+ config TARGET_MX53EVK
+ bool "Support mx53evk"
+
+ config TARGET_MX53LOCO
+ bool "Support mx53loco"
+
+ config TARGET_MX53SMD
+ bool "Support mx53smd"
+
+ config TARGET_MX51_EFIKAMX
+ bool "Support mx51_efikamx"
+
+ config TARGET_VISION2
+ bool "Support vision2"
+
+ config TARGET_UDOO
+ bool "Support udoo"
+
+ config TARGET_WANDBOARD
+ bool "Support wandboard"
+
+ config TARGET_TITANIUM
+ bool "Support titanium"
+
+ config TARGET_NITROGEN6X
+ bool "Support nitrogen6x"
+
+ config TARGET_CGTQMX6EVAL
+ bool "Support cgtqmx6eval"
+
+ config TARGET_EMBESTMX6BOARDS
+ bool "Support embestmx6boards"
+
+ config TARGET_ARISTAINETOS
+ bool "Support aristainetos"
+
+ config TARGET_MX6QARM2
+ bool "Support mx6qarm2"
+
+ config TARGET_MX6QSABREAUTO
+ bool "Support mx6qsabreauto"
+
+ config TARGET_MX6SABRESD
+ bool "Support mx6sabresd"
+
+ config TARGET_MX6SLEVK
+ bool "Support mx6slevk"
+
+ config TARGET_MX6SXSABRESD
+ bool "Support mx6sxsabresd"
+
+ config TARGET_GW_VENTANA
+ bool "Support gw_ventana"
+
+ config TARGET_HUMMINGBOARD
+ bool "Support hummingboard"
+
+ config TARGET_TQMA6
+ bool "TQ Systems TQMa6 board"
+
+ config TARGET_OT1200
+ bool "Bachmann OT1200"
+
+ config OMAP34XX
+ bool "OMAP34XX SoC"
+
+ config OMAP44XX
+ bool "OMAP44XX SoC"
+
+ config OMAP54XX
+ bool "OMAP54XX SoC"
+
+ config RMOBILE
+ bool "Renesas ARM SoCs"
+
+ config TARGET_CM_FX6
+ bool "Support cm_fx6"
+
+ config TARGET_SOCFPGA_CYCLONE5
+ bool "Support socfpga_cyclone5"
+
+ config TARGET_SUN4I
+ bool "Support sun4i"
+
+ config TARGET_SUN5I
+ bool "Support sun5i"
+
+ config TARGET_SUN7I
+ bool "Support sun7i"
+
+ config TARGET_SNOWBALL
+ bool "Support snowball"
+
+ config TARGET_U8500_HREF
+ bool "Support u8500_href"
+
+ config TARGET_VF610TWR
+ bool "Support vf610twr"
+
+ config ZYNQ
+ bool "Xilinx Zynq Platform"
+
++config TARGET_XILINX_ZYNQMP
++ bool "Support Xilinx ZynqMP Platform"
++ select ARM64
++
+ config TEGRA
+ bool "NVIDIA Tegra"
+ select SPL
+ select OF_CONTROL if !SPL_BUILD
+
+ config TARGET_VEXPRESS_AEMV8A
+ bool "Support vexpress_aemv8a"
+ select ARM64
+
+ config TARGET_LS2085A_EMU
+ bool "Support ls2085a_emu"
+ select ARM64
+
+ config TARGET_LS2085A_SIMU
+ bool "Support ls2085a_simu"
+ select ARM64
+
+ config TARGET_LS1021AQDS
+ bool "Support ls1021aqds_nor"
+
+ config TARGET_LS1021ATWR
+ bool "Support ls1021atwr_nor"
+
+ config TARGET_BALLOON3
+ bool "Support balloon3"
+
+ config TARGET_H2200
+ bool "Support h2200"
+
+ config TARGET_PALMLD
+ bool "Support palmld"
+
+ config TARGET_PALMTC
+ bool "Support palmtc"
+
+ config TARGET_PALMTREO680
+ bool "Support palmtreo680"
+
+ config TARGET_PXA255_IDP
+ bool "Support pxa255_idp"
+
+ config TARGET_TRIZEPSIV
+ bool "Support trizepsiv"
+
+ config TARGET_VPAC270
+ bool "Support vpac270"
+
+ config TARGET_XAENIAX
+ bool "Support xaeniax"
+
+ config TARGET_ZIPITZ2
+ bool "Support zipitz2"
+
+ config TARGET_LP8X4X
+ bool "Support lp8x4x"
+
+ config TARGET_COLIBRI_PXA270
+ bool "Support colibri_pxa270"
+
+ config TARGET_JORNADA
+ bool "Support jornada"
+
+ config ARCH_UNIPHIER
+ bool "Panasonic UniPhier platform"
+
+ endchoice
+
+ source "arch/arm/cpu/armv8/Kconfig"
+
+ source "arch/arm/cpu/arm926ejs/davinci/Kconfig"
+
+ source "arch/arm/cpu/armv7/exynos/Kconfig"
+
+ source "arch/arm/cpu/armv7/highbank/Kconfig"
+
+ source "arch/arm/cpu/armv7/keystone/Kconfig"
+
+ source "arch/arm/cpu/arm926ejs/kirkwood/Kconfig"
+
+ source "arch/arm/cpu/arm926ejs/nomadik/Kconfig"
+
+ source "arch/arm/cpu/armv7/omap3/Kconfig"
+
+ source "arch/arm/cpu/armv7/omap4/Kconfig"
+
+ source "arch/arm/cpu/armv7/omap5/Kconfig"
+
+ source "arch/arm/cpu/arm926ejs/orion5x/Kconfig"
+
+ source "arch/arm/cpu/armv7/rmobile/Kconfig"
+
+ source "arch/arm/cpu/armv7/s5pc1xx/Kconfig"
+
+ source "arch/arm/cpu/armv7/tegra-common/Kconfig"
+
+ source "arch/arm/cpu/armv7/uniphier/Kconfig"
+
+ source "arch/arm/cpu/arm926ejs/versatile/Kconfig"
+
+ source "arch/arm/cpu/armv7/zynq/Kconfig"
+
+ source "board/aristainetos/Kconfig"
+ source "board/BuR/kwb/Kconfig"
+ source "board/BuR/tseries/Kconfig"
+ source "board/BuS/eb_cpux9k2/Kconfig"
+ source "board/BuS/vl_ma2sc/Kconfig"
+ source "board/CarMediaLab/flea3/Kconfig"
+ source "board/Marvell/aspenite/Kconfig"
+ source "board/Marvell/dkb/Kconfig"
+ source "board/Marvell/gplugd/Kconfig"
+ source "board/afeb9260/Kconfig"
+ source "board/altera/socfpga/Kconfig"
+ source "board/armadeus/apf27/Kconfig"
+ source "board/armltd/integrator/Kconfig"
+ source "board/armltd/vexpress/Kconfig"
+ source "board/armltd/vexpress64/Kconfig"
+ source "board/atmel/at91rm9200ek/Kconfig"
+ source "board/atmel/at91sam9260ek/Kconfig"
+ source "board/atmel/at91sam9261ek/Kconfig"
+ source "board/atmel/at91sam9263ek/Kconfig"
+ source "board/atmel/at91sam9m10g45ek/Kconfig"
+ source "board/atmel/at91sam9n12ek/Kconfig"
+ source "board/atmel/at91sam9rlek/Kconfig"
+ source "board/atmel/at91sam9x5ek/Kconfig"
+ source "board/atmel/sama5d3_xplained/Kconfig"
+ source "board/atmel/sama5d3xek/Kconfig"
+ source "board/bachmann/ot1200/Kconfig"
+ source "board/balloon3/Kconfig"
+ source "board/barco/titanium/Kconfig"
+ source "board/bluegiga/apx4devkit/Kconfig"
+ source "board/bluewater/snapper9260/Kconfig"
+ source "board/boundary/nitrogen6x/Kconfig"
+ source "board/broadcom/bcm28155_ap/Kconfig"
+ source "board/broadcom/bcm958300k/Kconfig"
+ source "board/broadcom/bcm958622hr/Kconfig"
+ source "board/calao/sbc35_a9g20/Kconfig"
+ source "board/calao/tny_a9260/Kconfig"
+ source "board/calao/usb_a9263/Kconfig"
+ source "board/cirrus/edb93xx/Kconfig"
+ source "board/cm4008/Kconfig"
+ source "board/cm41xx/Kconfig"
+ source "board/compulab/cm_t335/Kconfig"
+ source "board/compulab/cm_fx6/Kconfig"
+ source "board/congatec/cgtqmx6eval/Kconfig"
+ source "board/creative/xfi3/Kconfig"
+ source "board/davedenx/qong/Kconfig"
+ source "board/denx/m28evk/Kconfig"
+ source "board/denx/m53evk/Kconfig"
+ source "board/egnite/ethernut5/Kconfig"
+ source "board/embest/mx6boards/Kconfig"
+ source "board/emk/top9000/Kconfig"
+ source "board/esd/meesc/Kconfig"
+ source "board/esd/otc570/Kconfig"
+ source "board/esg/ima3-mx53/Kconfig"
+ source "board/eukrea/cpu9260/Kconfig"
+ source "board/eukrea/cpuat91/Kconfig"
+ source "board/faraday/a320evb/Kconfig"
+ source "board/freescale/ls2085a/Kconfig"
+ source "board/freescale/ls1021aqds/Kconfig"
+ source "board/freescale/ls1021atwr/Kconfig"
+ source "board/freescale/mx23evk/Kconfig"
+ source "board/freescale/mx25pdk/Kconfig"
+ source "board/freescale/mx28evk/Kconfig"
+ source "board/freescale/mx31ads/Kconfig"
+ source "board/freescale/mx31pdk/Kconfig"
+ source "board/freescale/mx35pdk/Kconfig"
+ source "board/freescale/mx51evk/Kconfig"
+ source "board/freescale/mx53ard/Kconfig"
+ source "board/freescale/mx53evk/Kconfig"
+ source "board/freescale/mx53loco/Kconfig"
+ source "board/freescale/mx53smd/Kconfig"
+ source "board/freescale/mx6qarm2/Kconfig"
+ source "board/freescale/mx6qsabreauto/Kconfig"
+ source "board/freescale/mx6sabresd/Kconfig"
+ source "board/freescale/mx6slevk/Kconfig"
+ source "board/freescale/mx6sxsabresd/Kconfig"
+ source "board/freescale/vf610twr/Kconfig"
+ source "board/gateworks/gw_ventana/Kconfig"
+ source "board/genesi/mx51_efikamx/Kconfig"
+ source "board/gumstix/pepper/Kconfig"
+ source "board/h2200/Kconfig"
+ source "board/hale/tt01/Kconfig"
+ source "board/icpdas/lp8x4x/Kconfig"
+ source "board/imx31_phycore/Kconfig"
+ source "board/isee/igep0033/Kconfig"
+ source "board/jornada/Kconfig"
+ source "board/karo/tx25/Kconfig"
+ source "board/logicpd/imx27lite/Kconfig"
+ source "board/logicpd/imx31_litekit/Kconfig"
+ source "board/mpl/vcma9/Kconfig"
+ source "board/olimex/mx23_olinuxino/Kconfig"
+ source "board/palmld/Kconfig"
+ source "board/palmtc/Kconfig"
+ source "board/palmtreo680/Kconfig"
+ source "board/phytec/pcm051/Kconfig"
+ source "board/ppcag/bg0900/Kconfig"
+ source "board/pxa255_idp/Kconfig"
+ source "board/raspberrypi/rpi_b/Kconfig"
+ source "board/ronetix/pm9261/Kconfig"
+ source "board/ronetix/pm9263/Kconfig"
+ source "board/ronetix/pm9g45/Kconfig"
+ source "board/samsung/smdk2410/Kconfig"
+ source "board/sandisk/sansa_fuze_plus/Kconfig"
+ source "board/scb9328/Kconfig"
+ source "board/schulercontrol/sc_sps_1/Kconfig"
+ source "board/siemens/corvus/Kconfig"
+ source "board/siemens/draco/Kconfig"
+ source "board/siemens/pxm2/Kconfig"
+ source "board/siemens/rut/Kconfig"
+ source "board/siemens/taurus/Kconfig"
+ source "board/silica/pengwyn/Kconfig"
+ source "board/solidrun/hummingboard/Kconfig"
+ source "board/spear/spear300/Kconfig"
+ source "board/spear/spear310/Kconfig"
+ source "board/spear/spear320/Kconfig"
+ source "board/spear/spear600/Kconfig"
+ source "board/spear/x600/Kconfig"
+ source "board/st-ericsson/snowball/Kconfig"
+ source "board/st-ericsson/u8500/Kconfig"
+ source "board/sunxi/Kconfig"
+ source "board/syteco/jadecpu/Kconfig"
+ source "board/syteco/zmx25/Kconfig"
+ source "board/taskit/stamp9g20/Kconfig"
+ source "board/ti/am335x/Kconfig"
+ source "board/ti/am43xx/Kconfig"
+ source "board/ti/ti814x/Kconfig"
+ source "board/ti/ti816x/Kconfig"
+ source "board/ti/tnetv107xevm/Kconfig"
+ source "board/timll/devkit3250/Kconfig"
+ source "board/toradex/colibri_pxa270/Kconfig"
+ source "board/tqc/tqma6/Kconfig"
+ source "board/trizepsiv/Kconfig"
+ source "board/ttcontrol/vision2/Kconfig"
+ source "board/udoo/Kconfig"
+ source "board/vpac270/Kconfig"
+ source "board/wandboard/Kconfig"
+ source "board/woodburn/Kconfig"
+ source "board/xaeniax/Kconfig"
++source "board/xilinx/zynqmp/Kconfig"
+ source "board/zipitz2/Kconfig"
+
+ endmenu
cbz \xreg1, \master_label
.endm
- and \wreg2, \wreg2, #3ff
+ .macro armv8_switch_to_el2_m, xreg1
+ /* 64bit EL2 | HCE | SMD | RES1 (Bits[5:4]) | Non-secure EL0/EL1 */
+ mov \xreg1, #0x5b1
+ msr scr_el3, \xreg1
+ msr cptr_el3, xzr /* Disable coprocessor traps to EL3 */
+ mov \xreg1, #0x33ff
+ msr cptr_el2, \xreg1 /* Disable coprocessor traps to EL2 */
+
+ /* Initialize SCTLR_EL2
+ *
+ * setting RES1 bits (29,28,23,22,18,16,11,5,4) to 1
+ * and RES0 bits (31,30,27,26,24,21,20,17,15-13,10-6) +
+ * EE,WXN,I,SA,C,A,M to 0
+ */
+ mov \xreg1, #0x0830
+ movk \xreg1, #0x30C5, lsl #16
+ msr sctlr_el2, \xreg1
+
+ /* Return to the EL2_SP2 mode from EL3 */
+ mov \xreg1, sp
+ msr sp_el2, \xreg1 /* Migrate SP */
+ mrs \xreg1, vbar_el3
+ msr vbar_el2, \xreg1 /* Migrate VBAR */
+ mov \xreg1, #0x3c9
+ msr spsr_el3, \xreg1 /* EL2_SP2 | D | A | I | F */
+ msr elr_el3, lr
+ eret
+ .endm
+
+ .macro armv8_switch_to_el1_m, xreg1, xreg2
+ /* Initialize Generic Timers */
+ mrs \xreg1, cnthctl_el2
+ orr \xreg1, \xreg1, #0x3 /* Enable EL1 access to timers */
+ msr cnthctl_el2, \xreg1
+ msr cntvoff_el2, xzr
+
+ /* Initilize MPID/MPIDR registers */
+ mrs \xreg1, midr_el1
+ mrs \xreg2, mpidr_el1
+ msr vpidr_el2, \xreg1
+ msr vmpidr_el2, \xreg2
+
+ /* Disable coprocessor traps */
+ mov \xreg1, #0x33ff
+ msr cptr_el2, \xreg1 /* Disable coprocessor traps to EL2 */
+ msr hstr_el2, xzr /* Disable coprocessor traps to EL2 */
+ mov \xreg1, #3 << 20
+ msr cpacr_el1, \xreg1 /* Enable FP/SIMD at EL1 */
+
+ /* Initialize HCR_EL2 */
+ mov \xreg1, #(1 << 31) /* 64bit EL1 */
+ orr \xreg1, \xreg1, #(1 << 29) /* Disable HVC */
+ msr hcr_el2, \xreg1
+
+ /* SCTLR_EL1 initialization
+ *
+ * setting RES1 bits (29,28,23,22,20,11) to 1
+ * and RES0 bits (31,30,27,21,17,13,10,6) +
+ * UCI,EE,EOE,WXN,nTWE,nTWI,UCT,DZE,I,UMA,SED,ITD,
+ * CP15BEN,SA0,SA,C,A,M to 0
+ */
+ mov \xreg1, #0x0800
+ movk \xreg1, #0x30d0, lsl #16
+ msr sctlr_el1, \xreg1
+
+ /* Return to the EL1_SP1 mode from EL2 */
+ mov \xreg1, sp
+ msr sp_el1, \xreg1 /* Migrate SP */
+ mrs \xreg1, vbar_el2
+ msr vbar_el1, \xreg1 /* Migrate VBAR */
+ mov \xreg1, #0x3c5
+ msr spsr_el2, \xreg1 /* EL1_SP1 | D | A | I | F */
+ msr elr_el2, lr
+ eret
+ .endm
+
+ #if defined(CONFIG_GICV3)
+ .macro gic_wait_for_interrupt_m xreg1
+ 0 : wfi
+ mrs \xreg1, ICC_IAR1_EL1
+ msr ICC_EOIR1_EL1, \xreg1
+ cbnz \xreg1, 0b
+ .endm
+ #elif defined(CONFIG_GICV2)
+ .macro gic_wait_for_interrupt_m xreg1, wreg2
+ 0 : wfi
+ ldr \wreg2, [\xreg1, GICC_AIAR]
+ str \wreg2, [\xreg1, GICC_AEOIR]
++ and \wreg2, \wreg2, #0x3ff
+ cbnz \wreg2, 0b
+ .endm
+ #endif
+
#endif /* CONFIG_ARM64 */
#endif /* __ASSEMBLY__ */
--- /dev/null
- #define CONFIG_DEFAULT_DEVICE_TREE zynqmp
-
+/*
+ * Configuration for Xilinx ZynqMP
+ * (C) Copyright 2014 Xilinx, Inc.
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * Based on Configuration for Versatile Express
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __XILINX_ZYNQMP_H
+#define __XILINX_ZYNQMP_H
+
+#define CONFIG_REMAKE_ELF
+
+/* #define CONFIG_ARMV8_SWITCH_TO_EL1 */
+
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_SYS_GENERIC_BOARD
+
+#define XILINX_ZYNQMP
+
+/* Generic Interrupt Controller Definitions */
+#define CONFIG_GICV2
+#define GICD_BASE 0xF9001000
+#define GICC_BASE 0xF9002000
+
+/* Physical Memory Map */
+#define CONFIG_NR_DRAM_BANKS 1
+#define CONFIG_SYS_SDRAM_BASE 0
+#define CONFIG_SYS_SDRAM_SIZE 0x40000000
+
+#define CONFIG_SYS_MEMTEST_START 0x10000000
+#define CONFIG_SYS_MEMTEST_END 0x40000000
+
+/* Have release address at the end of 256MB for now */
+#define CPU_RELEASE_ADDR 0xFFFFFF0
+
+/* Cache Definitions */
+#define CONFIG_SYS_DCACHE_OFF
+
+#define CONFIG_IDENT_STRING " Xilinx ZynqMP"
+#define CONFIG_BOOTP_VCI_STRING "U-boot.armv8.Xilinx_ZynqMP"
+
+/* Text base on 16MB for now - 0 doesn't work */
+#define CONFIG_SYS_TEXT_BASE 0x8000000
+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x7fff0)
+
+/* Flat Device Tree Definitions */
+#define CONFIG_OF_LIBFDT
+
+/* Generic Timer Definitions - setup in EL3. Setup by ATF for other cases */
+#define COUNTER_FREQUENCY 4000000
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 0x400000)
+
+/* Serial setup */
+#define CONFIG_ZYNQ_SERIAL_UART0
+#define CONFIG_ZYNQ_SERIAL
+
+#define CONFIG_ZYNQ_QSPI
+#define CONFIG_ZYNQ_SDHCI0
+
+#define CONFIG_CONS_INDEX 0
+#define CONFIG_BAUDRATE 115200
+#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+
+/* Command line configuration */
+#define CONFIG_CMD_BDI
+#define CONFIG_CMD_BOOTD
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_ECHO
+#define CONFIG_CMD_ENV
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_FLASH
+#define CONFIG_CMD_IMI
+#define CONFIG_CMD_MEMORY
+#define CONFIG_CMD_MISC
+#define CONFIG_CMD_RUN
+#define CONFIG_CMD_SAVEENV
+#define CONFIG_CMD_SOURCE
+#define CONFIG_DOS_PARTITION
+
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_TFTPPUT
+
+/* BOOTP options */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_BOOTP_MAY_FAIL
+#define CONFIG_BOOTP_SERVERIP
+
+
+#ifdef CONFIG_ZYNQ_QSPI
+# define CONFIG_SF_DEFAULT_SPEED 30000000
+# define CONFIG_SPI_FLASH
+# define CONFIG_SPI_FLASH_BAR
+# define CONFIG_SF_DUAL_FLASH
+# define CONFIG_SPI_FLASH_SPANSION
+# define CONFIG_SPI_FLASH_STMICRO
+# define CONFIG_SPI_FLASH_WINBOND
+# define CONFIG_CMD_SPI
+# define CONFIG_CMD_SF
+#endif
+
+#if defined(CONFIG_ZYNQ_SDHCI0) || defined(CONFIG_ZYNQ_SDHCI1)
+# define CONFIG_MMC
+# define CONFIG_GENERIC_MMC
+# define CONFIG_SDHCI
+# define CONFIG_ZYNQ_SDHCI
+# define CONFIG_CMD_MMC
+#endif
+
+#if defined (CONFIG_ZYNQ_SDHCI) || defined(CONFIG_ZYNQ_USB)
+# define CONFIG_FAT_WRITE
+# define CONFIG_CMD_EXT4_WRITE
+#endif
+
+/* Miscellaneous configurable options */
+#define CONFIG_SYS_LOAD_ADDR 0x8000000
+
+/* Initial environment variables */
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "ethaddr=00:0a:35:00:01:22\0" \
+ "kernel_addr=0x200000\0" \
+ "initrd_addr=0xa00000\0" \
+ "initrd_size=0x2000000\0" \
+ "fdt_addr=0x100000\0" \
+ "fdt_high=0x10000000\0" \
+ "netboot=tftpboot 80000 Image && tftpboot f000000 system.dtb && booti 80000 - f000000\0" \
+ "qspiboot=sf probe 0 && sf read f000000 100000 40000 && " \
+ "sf read 80000 140000 1800000 && booti 80000 - f000000\0" \
+ "sdboot=mmcinfo && fatload mmc 0:0 f000000 system.dtb && " \
+ "fatload mmc 0:0 f000000 Image && booti 80000 - f000000\0" \
+ "jtagboot=tftpboot 10000000 image.ub && bootm\0"
+
+#define CONFIG_BOOTARGS "console=ttyPS0,115200 earlycon=cdns,mmio,0xff000000,115200n8"
+#define CONFIG_BOOTCOMMAND "echo Hello Xilinx ZynqMP; run $modeboot"
+#define CONFIG_BOOTDELAY 5
+
+#define CONFIG_BOARD_LATE_INIT
+
+/* Do not preserve environment */
+#define CONFIG_ENV_IS_NOWHERE 1
+#define CONFIG_ENV_SIZE 0x1000
+
+/* Monitor Command Prompt */
+/* Console I/O Buffer Size */
+#define CONFIG_SYS_CBSIZE 512
+#define CONFIG_SYS_PROMPT "ZynqMP> "
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
+ sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_CMDLINE_EDITING
+/* max command args */
+#define CONFIG_SYS_MAXARGS 64
+
+#define CONFIG_ZYNQ_GEM0
+#define CONFIG_ZYNQ_GEM_PHY_ADDR0 7
+
+/* Ethernet driver */
+#if defined(CONFIG_ZYNQ_GEM0) || defined(CONFIG_ZYNQ_GEM1) || \
+ defined(CONFIG_ZYNQ_GEM2) || defined(CONFIG_ZYNQ_GEM3)
+# define CONFIG_NET_MULTI
+# define CONFIG_ZYNQ_GEM
+# define CONFIG_MII
+# define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
+# define CONFIG_PHYLIB
+# define CONFIG_PHY_MARVELL
+#endif
+
+#define CONFIG_FIT
+#define CONFIG_FIT_VERBOSE /* enable fit_format_{error,warning}() */
+
+#define CONFIG_SYS_BOOTM_LEN (60 * 1024 * 1024)
+
+#define CONFIG_CMD_BOOTI
+#define CONFIG_CMD_UNZIP
+
+#define CONFIG_BOARD_EARLY_INIT_R
+#define CONFIG_CLOCKS
+
+#endif /* __XILINX_ZYNQMP_H */