diff options
author | Stefano Babic <sbabic@denx.de> | 2014-08-11 10:21:03 +0200 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2014-08-11 10:21:03 +0200 |
commit | e82abaeb7f2a0833fccf90460c48b9f2100258f8 (patch) | |
tree | de701f5c90b7373966412d566b5c00d3837954bc /arch/arm | |
parent | f93f21906e374d46c6abfbdf4eb9cb1ab51b6384 (diff) | |
parent | 1899fac925eda817e12234aef3d01d354788662e (diff) | |
download | u-boot-imx-e82abaeb7f2a0833fccf90460c48b9f2100258f8.zip u-boot-imx-e82abaeb7f2a0833fccf90460c48b9f2100258f8.tar.gz u-boot-imx-e82abaeb7f2a0833fccf90460c48b9f2100258f8.tar.bz2 |
Merge branch 'master' of git://git.denx.de/u-boot-arm
Conflicts:
boards.cfg
Signed-off-by: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/Kconfig | 1002 | ||||
-rw-r--r-- | arch/arm/config.mk | 2 | ||||
-rw-r--r-- | arch/arm/cpu/arm926ejs/kirkwood/cpu.c | 9 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/sunxi/Makefile | 3 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/sunxi/board.c | 5 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/sunxi/clock_sun4i.c | 4 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/sunxi/psci.S | 162 | ||||
-rw-r--r-- | arch/arm/include/asm/arch-fsl-lsch3/config.h | 4 | ||||
-rw-r--r-- | arch/arm/include/asm/arch-kirkwood/kirkwood.h | 1 | ||||
-rw-r--r-- | arch/arm/include/asm/arch-s3c24x0/s3c2410.h | 4 | ||||
-rw-r--r-- | arch/arm/include/asm/arch-s3c24x0/s3c2440.h | 4 | ||||
-rw-r--r-- | arch/arm/include/asm/arch-s3c24x0/s3c24x0.h | 19 | ||||
-rw-r--r-- | arch/arm/include/asm/arch-sunxi/clock_sun4i.h | 15 | ||||
-rw-r--r-- | arch/arm/include/asm/config.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/io.h | 1 | ||||
-rw-r--r-- | arch/arm/lib/crt0.S | 12 |
16 files changed, 1233 insertions, 16 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig new file mode 100644 index 0000000..e385eda --- /dev/null +++ b/arch/arm/Kconfig @@ -0,0 +1,1002 @@ +menu "ARM architecture" + depends on ARM + +config SYS_ARCH + string + default "arm" + +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 TARGET_CAM_ENC_4XX + bool "Support cam_enc_4xx" + +config TARGET_IPAM390 + bool "Support ipam390" + +config TARGET_DA830EVM + bool "Support da830evm" + +config TARGET_DA850EVM + bool "Support da850evm" + +config TARGET_HAWKBOARD + bool "Support hawkboard" + +config TARGET_DAVINCI_DM355EVM + bool "Support davinci_dm355evm" + +config TARGET_DAVINCI_DM355LEOPARD + bool "Support davinci_dm355leopard" + +config TARGET_DAVINCI_DM365EVM + bool "Support davinci_dm365evm" + +config TARGET_DAVINCI_DM6467EVM + bool "Support davinci_dm6467evm" + +config TARGET_DAVINCI_DVEVM + bool "Support davinci_dvevm" + +config TARGET_EA20 + bool "Support ea20" + +config TARGET_DAVINCI_SCHMOOGIE + bool "Support davinci_schmoogie" + +config TARGET_DAVINCI_SFFSDR + bool "Support davinci_sffsdr" + +config TARGET_DAVINCI_SONATA + bool "Support davinci_sonata" + +config TARGET_ENBW_CMC + bool "Support enbw_cmc" + +config TARGET_CALIMAIN + bool "Support calimain" + +config TARGET_LSXL + bool "Support lsxl" + +config TARGET_POGO_E02 + bool "Support pogo_e02" + +config TARGET_DNS325 + bool "Support dns325" + +config TARGET_ICONNECT + bool "Support iconnect" + +config TARGET_TK71 + bool "Support tk71" + +config TARGET_KM_KIRKWOOD + bool "Support km_kirkwood" + +config TARGET_NET2BIG_V2 + bool "Support net2big_v2" + +config TARGET_NETSPACE_V2 + bool "Support netspace_v2" + +config TARGET_WIRELESS_SPACE + bool "Support wireless_space" + +config TARGET_DREAMPLUG + bool "Support dreamplug" + +config TARGET_GURUPLUG + bool "Support guruplug" + +config TARGET_MV88F6281GTW_GE + bool "Support mv88f6281gtw_ge" + +config TARGET_OPENRD + bool "Support openrd" + +config TARGET_RD6281A + bool "Support rd6281a" + +config TARGET_SHEEVAPLUG + bool "Support sheevaplug" + +config TARGET_IB62X0 + bool "Support ib62x0" + +config TARGET_DOCKSTAR + bool "Support dockstar" + +config TARGET_GOFLEXHOME + bool "Support goflexhome" + +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 TARGET_NHK8815 + bool "Support nhk8815" + +config TARGET_OMAP5912OSK + bool "Support omap5912osk" + +config TARGET_EDMINIV2 + bool "Support edminiv2" + +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 TARGET_VERSATILEAB + bool "Support versatileab" + +config TARGET_VERSATILEPB + bool "Support versatilepb" + +config TARGET_VERSATILEQEMU + bool "Support versatileqemu" + +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_ARNDALE + bool "Support arndale" + +config TARGET_ORIGEN + bool "Support origen" + +config TARGET_SMDK5250 + bool "Support smdk5250" + +config TARGET_SNOW + bool "Support snow" + +config TARGET_PEACH_PIT + bool "Support peach-pit" + +config TARGET_SMDK5420 + bool "Support smdk5420" + +config TARGET_SMDKV310 + bool "Support smdkv310" + +config TARGET_TRATS + bool "Support trats" + +config TARGET_TRATS2 + bool "Support trats2" + +config TARGET_S5PC210_UNIVERSAL + bool "Support s5pc210_universal" + +config TARGET_HIGHBANK + bool "Support highbank" + +config TARGET_K2E_EVM + bool "Support k2e_evm" + +config TARGET_K2HK_EVM + bool "Support k2hk_evm" + +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_MX6QARM2 + bool "Support mx6qarm2" + +config TARGET_MX6QSABREAUTO + bool "Support mx6qsabreauto" + +config TARGET_MX6SABRESD + bool "Support mx6sabresd" + +config TARGET_MX6SLEVK + bool "Support mx6slevk" + +config TARGET_GW_VENTANA + bool "Support gw_ventana" + +config TARGET_HUMMINGBOARD + bool "Support hummingboard" + +config TARGET_OMAP3_OVERO + bool "Support omap3_overo" + +config TARGET_OMAP3_PANDORA + bool "Support omap3_pandora" + +config TARGET_ECO5PK + bool "Support eco5pk" + +config TARGET_DIG297 + bool "Support dig297" + +config TARGET_CM_T35 + bool "Support cm_t35" + +config TARGET_TRICORDER + bool "Support tricorder" + +config TARGET_MCX + bool "Support mcx" + +config TARGET_OMAP3_IGEP00X0 + bool "Support omap3_igep00x0" + +config TARGET_AM3517_EVM + bool "Support am3517_evm" + +config TARGET_OMAP3_LOGIC + bool "Support omap3_logic" + +config TARGET_OMAP3_ZOOM1 + bool "Support omap3_zoom1" + +config TARGET_OMAP3_MVBLX + bool "Support omap3_mvblx" + +config TARGET_NOKIA_RX51 + bool "Support nokia_rx51" + +config TARGET_TAO3530 + bool "Support tao3530" + +config TARGET_TWISTER + bool "Support twister" + +config TARGET_MT_VENTOUX + bool "Support mt_ventoux" + +config TARGET_AM3517_CRANE + bool "Support am3517_crane" + +config TARGET_OMAP3_BEAGLE + bool "Support omap3_beagle" + +config TARGET_OMAP3_EVM + bool "Support omap3_evm" + +config TARGET_OMAP3_EVM_QUICK_MMC + bool "Support omap3_evm_quick_mmc" + +config TARGET_OMAP3_EVM_QUICK_NAND + bool "Support omap3_evm_quick_nand" + +config TARGET_OMAP3_SDP3430 + bool "Support omap3_sdp3430" + +config TARGET_DEVKIT8000 + bool "Support devkit8000" + +config TARGET_DUOVERO + bool "Support duovero" + +config TARGET_OMAP4_PANDA + bool "Support omap4_panda" + +config TARGET_OMAP4_SDP4430 + bool "Support omap4_sdp4430" + +config TARGET_CM_T54 + bool "Support cm_t54" + +config TARGET_DRA7XX_EVM + bool "Support dra7xx_evm" + +config TARGET_OMAP5_UEVM + bool "Support omap5_uevm" + +config TARGET_ARMADILLO_800EVA + bool "Support armadillo-800eva" + +config TARGET_KZM9G + bool "Support kzm9g" + +config TARGET_ALT + bool "Support alt" + +config TARGET_KOELSCH + bool "Support koelsch" + +config TARGET_LAGER + bool "Support lager" + +config TARGET_S5P_GONI + bool "Support s5p_goni" + +config TARGET_SMDKC100 + bool "Support smdkc100" + +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 TARGET_ZYNQ_MICROZED + bool "Support zynq_microzed" + +config TARGET_ZYNQ_ZC70X + bool "Support zynq_zc70x" + +config TARGET_ZYNQ_ZC770 + bool "Support zynq_zc770" + +config TARGET_ZYNQ_ZED + bool "Support zynq_zed" + +config TARGET_MEDCOM_WIDE + bool "Support medcom-wide" + +config TARGET_PLUTUX + bool "Support plutux" + +config TARGET_TEC + bool "Support tec" + +config TARGET_PAZ00 + bool "Support paz00" + +config TARGET_TRIMSLICE + bool "Support trimslice" + +config TARGET_HARMONY + bool "Support harmony" + +config TARGET_SEABOARD + bool "Support seaboard" + +config TARGET_VENTANA + bool "Support ventana" + +config TARGET_WHISTLER + bool "Support whistler" + +config TARGET_COLIBRI_T20_IRIS + bool "Support colibri_t20_iris" + +config TARGET_TEC_NG + bool "Support tec-ng" + +config TARGET_BEAVER + bool "Support beaver" + +config TARGET_CARDHU + bool "Support cardhu" + +config TARGET_DALMORE + bool "Support dalmore" + +config TARGET_JETSON_TK1 + bool "Support jetson-tk1" + +config TARGET_VENICE2 + bool "Support venice2" + +config TARGET_VEXPRESS_AEMV8A + bool "Support vexpress_aemv8a" + +config TARGET_VEXPRESS_AEMV8A_SEMI + bool "Support vexpress_aemv8a_semi" + +config TARGET_LS2085A_EMU + bool "Support ls2085a_emu" + +config TARGET_LS2085A_SIMU + bool "Support ls2085a_simu" + +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" + +endchoice + +source "board/8dtech/eco5pk/Kconfig" +source "board/Barix/ipam390/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/LaCie/edminiv2/Kconfig" +source "board/LaCie/net2big_v2/Kconfig" +source "board/LaCie/netspace_v2/Kconfig" +source "board/LaCie/wireless_space/Kconfig" +source "board/Marvell/aspenite/Kconfig" +source "board/Marvell/dkb/Kconfig" +source "board/Marvell/dreamplug/Kconfig" +source "board/Marvell/gplugd/Kconfig" +source "board/Marvell/guruplug/Kconfig" +source "board/Marvell/mv88f6281gtw_ge/Kconfig" +source "board/Marvell/openrd/Kconfig" +source "board/Marvell/rd6281a/Kconfig" +source "board/Marvell/sheevaplug/Kconfig" +source "board/Seagate/dockstar/Kconfig" +source "board/Seagate/goflexhome/Kconfig" +source "board/afeb9260/Kconfig" +source "board/ait/cam_enc_4xx/Kconfig" +source "board/altera/socfpga/Kconfig" +source "board/armadeus/apf27/Kconfig" +source "board/armltd/integrator/Kconfig" +source "board/armltd/versatile/Kconfig" +source "board/armltd/vexpress/Kconfig" +source "board/armltd/vexpress64/Kconfig" +source "board/atmark-techno/armadillo-800eva/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/avionic-design/medcom-wide/Kconfig" +source "board/avionic-design/plutux/Kconfig" +source "board/avionic-design/tec-ng/Kconfig" +source "board/avionic-design/tec/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/buffalo/lsxl/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/cloudengines/pogo_e02/Kconfig" +source "board/cm4008/Kconfig" +source "board/cm41xx/Kconfig" +source "board/comelit/dig297/Kconfig" +source "board/compal/paz00/Kconfig" +source "board/compulab/cm_t335/Kconfig" +source "board/compulab/cm_t35/Kconfig" +source "board/compulab/cm_t54/Kconfig" +source "board/compulab/trimslice/Kconfig" +source "board/congatec/cgtqmx6eval/Kconfig" +source "board/corscience/tricorder/Kconfig" +source "board/creative/xfi3/Kconfig" +source "board/d-link/dns325/Kconfig" +source "board/davedenx/qong/Kconfig" +source "board/davinci/da8xxevm/Kconfig" +source "board/davinci/dm355evm/Kconfig" +source "board/davinci/dm355leopard/Kconfig" +source "board/davinci/dm365evm/Kconfig" +source "board/davinci/dm6467evm/Kconfig" +source "board/davinci/dvevm/Kconfig" +source "board/davinci/ea20/Kconfig" +source "board/davinci/schmoogie/Kconfig" +source "board/davinci/sffsdr/Kconfig" +source "board/davinci/sonata/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/enbw/enbw_cmc/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/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/vf610twr/Kconfig" +source "board/gateworks/gw_ventana/Kconfig" +source "board/genesi/mx51_efikamx/Kconfig" +source "board/gumstix/duovero/Kconfig" +source "board/gumstix/pepper/Kconfig" +source "board/h2200/Kconfig" +source "board/hale/tt01/Kconfig" +source "board/highbank/Kconfig" +source "board/htkw/mcx/Kconfig" +source "board/icpdas/lp8x4x/Kconfig" +source "board/imx31_phycore/Kconfig" +source "board/iomega/iconnect/Kconfig" +source "board/isee/igep0033/Kconfig" +source "board/isee/igep00x0/Kconfig" +source "board/jornada/Kconfig" +source "board/karo/tk71/Kconfig" +source "board/karo/tx25/Kconfig" +source "board/keymile/km_arm/Kconfig" +source "board/kmc/kzm9g/Kconfig" +source "board/logicpd/am3517evm/Kconfig" +source "board/logicpd/imx27lite/Kconfig" +source "board/logicpd/imx31_litekit/Kconfig" +source "board/logicpd/omap3som/Kconfig" +source "board/logicpd/zoom1/Kconfig" +source "board/matrix_vision/mvblx/Kconfig" +source "board/mpl/vcma9/Kconfig" +source "board/nokia/rx51/Kconfig" +source "board/nvidia/beaver/Kconfig" +source "board/nvidia/cardhu/Kconfig" +source "board/nvidia/dalmore/Kconfig" +source "board/nvidia/harmony/Kconfig" +source "board/nvidia/jetson-tk1/Kconfig" +source "board/nvidia/seaboard/Kconfig" +source "board/nvidia/venice2/Kconfig" +source "board/nvidia/ventana/Kconfig" +source "board/nvidia/whistler/Kconfig" +source "board/olimex/mx23_olinuxino/Kconfig" +source "board/omicron/calimain/Kconfig" +source "board/overo/Kconfig" +source "board/palmld/Kconfig" +source "board/palmtc/Kconfig" +source "board/palmtreo680/Kconfig" +source "board/pandora/Kconfig" +source "board/phytec/pcm051/Kconfig" +source "board/ppcag/bg0900/Kconfig" +source "board/pxa255_idp/Kconfig" +source "board/raidsonic/ib62x0/Kconfig" +source "board/raspberrypi/rpi_b/Kconfig" +source "board/renesas/alt/Kconfig" +source "board/renesas/koelsch/Kconfig" +source "board/renesas/lager/Kconfig" +source "board/ronetix/pm9261/Kconfig" +source "board/ronetix/pm9263/Kconfig" +source "board/ronetix/pm9g45/Kconfig" +source "board/samsung/arndale/Kconfig" +source "board/samsung/goni/Kconfig" +source "board/samsung/origen/Kconfig" +source "board/samsung/smdk2410/Kconfig" +source "board/samsung/smdk5250/Kconfig" +source "board/samsung/smdk5420/Kconfig" +source "board/samsung/smdkc100/Kconfig" +source "board/samsung/smdkv310/Kconfig" +source "board/samsung/trats/Kconfig" +source "board/samsung/trats2/Kconfig" +source "board/samsung/universal_c210/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/st/nhk8815/Kconfig" +source "board/sunxi/Kconfig" +source "board/syteco/jadecpu/Kconfig" +source "board/syteco/zmx25/Kconfig" +source "board/taskit/stamp9g20/Kconfig" +source "board/technexion/tao3530/Kconfig" +source "board/technexion/twister/Kconfig" +source "board/teejet/mt_ventoux/Kconfig" +source "board/ti/am335x/Kconfig" +source "board/ti/am3517crane/Kconfig" +source "board/ti/am43xx/Kconfig" +source "board/ti/beagle/Kconfig" +source "board/ti/dra7xx/Kconfig" +source "board/ti/evm/Kconfig" +source "board/ti/ks2_evm/Kconfig" +source "board/ti/omap5912osk/Kconfig" +source "board/ti/omap5_uevm/Kconfig" +source "board/ti/panda/Kconfig" +source "board/ti/sdp3430/Kconfig" +source "board/ti/sdp4430/Kconfig" +source "board/ti/ti814x/Kconfig" +source "board/ti/ti816x/Kconfig" +source "board/ti/tnetv107xevm/Kconfig" +source "board/timll/devkit3250/Kconfig" +source "board/timll/devkit8000/Kconfig" +source "board/toradex/colibri_pxa270/Kconfig" +source "board/toradex/colibri_t20_iris/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/zynq/Kconfig" +source "board/zipitz2/Kconfig" + +endmenu diff --git a/arch/arm/config.mk b/arch/arm/config.mk index c3b8289..c339e6d 100644 --- a/arch/arm/config.mk +++ b/arch/arm/config.mk @@ -22,7 +22,7 @@ PLATFORM_RELFLAGS += $(call cc-option, -msoft-float) \ # Support generic board on ARM __HAVE_ARCH_GENERIC_BOARD := y -PLATFORM_CPPFLAGS += -DCONFIG_ARM -D__ARM__ +PLATFORM_CPPFLAGS += -D__ARM__ # Choose between ARM/Thumb instruction sets ifeq ($(CONFIG_SYS_THUMB_BUILD),y) diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c index da80240..881e2de 100644 --- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c +++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c @@ -13,6 +13,7 @@ #include <asm/io.h> #include <asm/arch/cpu.h> #include <asm/arch/kirkwood.h> +#include <mvebu_mmc.h> #define BUFLEN 16 @@ -377,3 +378,11 @@ int cpu_eth_init(bd_t *bis) return 0; } #endif + +#ifdef CONFIG_MVEBU_MMC +int board_mmc_init(bd_t *bis) +{ + mvebu_mmc_init(bis); + return 0; +} +#endif /* CONFIG_MVEBU_MMC */ diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile index 6c70639..e9721b2 100644 --- a/arch/arm/cpu/armv7/sunxi/Makefile +++ b/arch/arm/cpu/armv7/sunxi/Makefile @@ -17,6 +17,9 @@ obj-$(CONFIG_SUN7I) += clock_sun4i.o ifndef CONFIG_SPL_BUILD obj-y += cpu_info.o +ifdef CONFIG_ARMV7_PSCI +obj-y += psci.o +endif endif ifdef CONFIG_SPL_BUILD diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c index 8f2cef3..f2cedbb 100644 --- a/arch/arm/cpu/armv7/sunxi/board.c +++ b/arch/arm/cpu/armv7/sunxi/board.c @@ -129,6 +129,11 @@ int cpu_eth_init(bd_t *bis) { __maybe_unused int rc; +#ifdef CONFIG_MACPWR + gpio_direction_output(CONFIG_MACPWR, 1); + mdelay(200); +#endif + #ifdef CONFIG_SUNXI_EMAC rc = sunxi_emac_initialize(bis); if (rc < 0) { diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c index b8b16cf..ecbdb01 100644 --- a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c +++ b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c @@ -39,6 +39,10 @@ void clock_init_safe(void) setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_DMA); #endif writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg); +#ifdef CONFIG_SUNXI_AHCI + setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_SATA); + setbits_le32(&ccm->pll6_cfg, 0x1 << CCM_PLL6_CTRL_SATA_EN_SHIFT); +#endif } #endif diff --git a/arch/arm/cpu/armv7/sunxi/psci.S b/arch/arm/cpu/armv7/sunxi/psci.S new file mode 100644 index 0000000..0084c81 --- /dev/null +++ b/arch/arm/cpu/armv7/sunxi/psci.S @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2013 - ARM Ltd + * Author: Marc Zyngier <marc.zyngier@arm.com> + * + * Based on code by Carl van Schaik <carl@ok-labs.com>. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <config.h> +#include <asm/psci.h> +#include <asm/arch/cpu.h> + +/* + * Memory layout: + * + * SECURE_RAM to text_end : + * ._secure_text section + * text_end to ALIGN_PAGE(text_end): + * nothing + * ALIGN_PAGE(text_end) to ALIGN_PAGE(text_end) + 0x1000) + * 1kB of stack per CPU (4 CPUs max). + */ + + .pushsection ._secure.text, "ax" + + .arch_extension sec + +#define ONE_MS (CONFIG_SYS_CLK_FREQ / 1000) +#define TEN_MS (10 * ONE_MS) + +.macro timer_wait reg, ticks + @ Program CNTP_TVAL + movw \reg, #(\ticks & 0xffff) + movt \reg, #(\ticks >> 16) + mcr p15, 0, \reg, c14, c2, 0 + isb + @ Enable physical timer, mask interrupt + mov \reg, #3 + mcr p15, 0, \reg, c14, c2, 1 + @ Poll physical timer until ISTATUS is on +1: isb + mrc p15, 0, \reg, c14, c2, 1 + ands \reg, \reg, #4 + bne 1b + @ Disable timer + mov \reg, #0 + mcr p15, 0, \reg, c14, c2, 1 + isb +.endm + +.globl psci_arch_init +psci_arch_init: + mrc p15, 0, r5, c1, c1, 0 @ Read SCR + bic r5, r5, #1 @ Secure mode + mcr p15, 0, r5, c1, c1, 0 @ Write SCR + isb + + mrc p15, 0, r4, c0, c0, 5 @ MPIDR + and r4, r4, #3 @ cpu number in cluster + mov r5, #400 @ 1kB of stack per CPU + mul r4, r4, r5 + + adr r5, text_end @ end of text + add r5, r5, #0x2000 @ Skip two pages + lsr r5, r5, #12 @ Align to start of page + lsl r5, r5, #12 + sub sp, r5, r4 @ here's our stack! + + bx lr + + @ r1 = target CPU + @ r2 = target PC +.globl psci_cpu_on +psci_cpu_on: + adr r0, _target_pc + str r2, [r0] + dsb + + movw r0, #(SUNXI_CPUCFG_BASE & 0xffff) + movt r0, #(SUNXI_CPUCFG_BASE >> 16) + + @ CPU mask + and r1, r1, #3 @ only care about first cluster + mov r4, #1 + lsl r4, r4, r1 + + adr r6, _sunxi_cpu_entry + str r6, [r0, #0x1a4] @ PRIVATE_REG (boot vector) + + @ Assert reset on target CPU + mov r6, #0 + lsl r5, r1, #6 @ 64 bytes per CPU + add r5, r5, #0x40 @ Offset from base + add r5, r5, r0 @ CPU control block + str r6, [r5] @ Reset CPU + + @ l1 invalidate + ldr r6, [r0, #0x184] + bic r6, r6, r4 + str r6, [r0, #0x184] + + @ Lock CPU + ldr r6, [r0, #0x1e4] + bic r6, r6, r4 + str r6, [r0, #0x1e4] + + @ Release power clamp + movw r6, #0x1ff + movt r6, #0 +1: lsrs r6, r6, #1 + str r6, [r0, #0x1b0] + bne 1b + + timer_wait r1, TEN_MS + + @ Clear power gating + ldr r6, [r0, #0x1b4] + bic r6, r6, #1 + str r6, [r0, #0x1b4] + + @ Deassert reset on target CPU + mov r6, #3 + str r6, [r5] + + @ Unlock CPU + ldr r6, [r0, #0x1e4] + orr r6, r6, r4 + str r6, [r0, #0x1e4] + + mov r0, #ARM_PSCI_RET_SUCCESS @ Return PSCI_RET_SUCCESS + mov pc, lr + +_target_pc: + .word 0 + +_sunxi_cpu_entry: + @ Set SMP bit + mrc p15, 0, r0, c1, c0, 1 + orr r0, r0, #0x40 + mcr p15, 0, r0, c1, c0, 1 + isb + + bl _nonsec_init + bl psci_arch_init + + adr r0, _target_pc + ldr r0, [r0] + b _do_nonsec_entry + +text_end: + .popsection diff --git a/arch/arm/include/asm/arch-fsl-lsch3/config.h b/arch/arm/include/asm/arch-fsl-lsch3/config.h index c1c718e..b17410a 100644 --- a/arch/arm/include/asm/arch-fsl-lsch3/config.h +++ b/arch/arm/include/asm/arch-fsl-lsch3/config.h @@ -43,7 +43,11 @@ /* DDR */ #define CONFIG_SYS_FSL_DDR_LE #define CONFIG_VERY_BIG_RAM +#ifdef CONFIG_SYS_FSL_DDR4 +#define CONFIG_SYS_FSL_DDRC_GEN4 +#else #define CONFIG_SYS_FSL_DDRC_ARM_GEN3 /* Enable Freescale ARM DDR3 driver */ +#endif #define CONFIG_SYS_FSL_DDR /* Freescale DDR driver */ #define CONFIG_SYS_LS2_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30) #define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_LS2_DDR_BLOCK1_SIZE diff --git a/arch/arm/include/asm/arch-kirkwood/kirkwood.h b/arch/arm/include/asm/arch-kirkwood/kirkwood.h index bc207f5..3ea51d7 100644 --- a/arch/arm/include/asm/arch-kirkwood/kirkwood.h +++ b/arch/arm/include/asm/arch-kirkwood/kirkwood.h @@ -39,6 +39,7 @@ #define KW_EGIGA0_BASE (KW_REGISTER(0x72000)) #define KW_EGIGA1_BASE (KW_REGISTER(0x76000)) #define KW_SATA_BASE (KW_REGISTER(0x80000)) +#define KW_SDIO_BASE (KW_REGISTER(0x90000)) /* Kirkwood Sata controller has two ports */ #define KW_SATA_PORT0_OFFSET 0x2000 diff --git a/arch/arm/include/asm/arch-s3c24x0/s3c2410.h b/arch/arm/include/asm/arch-s3c24x0/s3c2410.h index 01fe0f2..ce4186f 100644 --- a/arch/arm/include/asm/arch-s3c24x0/s3c2410.h +++ b/arch/arm/include/asm/arch-s3c24x0/s3c2410.h @@ -139,9 +139,9 @@ static inline struct s3c24x0_spi *s3c24x0_get_base_spi(void) return (struct s3c24x0_spi *)S3C24X0_SPI_BASE; } -static inline struct s3c2410_sdi *s3c2410_get_base_sdi(void) +static inline struct s3c24x0_sdi *s3c24x0_get_base_sdi(void) { - return (struct s3c2410_sdi *)S3C2410_SDI_BASE; + return (struct s3c24x0_sdi *)S3C2410_SDI_BASE; } #endif /*__S3C2410_H__*/ diff --git a/arch/arm/include/asm/arch-s3c24x0/s3c2440.h b/arch/arm/include/asm/arch-s3c24x0/s3c2440.h index 15a7cb4..3f44bdc 100644 --- a/arch/arm/include/asm/arch-s3c24x0/s3c2440.h +++ b/arch/arm/include/asm/arch-s3c24x0/s3c2440.h @@ -137,9 +137,9 @@ static inline struct s3c24x0_spi *s3c24x0_get_base_spi(void) return (struct s3c24x0_spi *)S3C24X0_SPI_BASE; } -static inline struct s3c2440_sdi *s3c2440_get_base_sdi(void) +static inline struct s3c24x0_sdi *s3c24x0_get_base_sdi(void) { - return (struct s3c2440_sdi *)S3C2440_SDI_BASE; + return (struct s3c24x0_sdi *)S3C2440_SDI_BASE; } #endif /*__S3C2440_H__*/ diff --git a/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h b/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h index 86d720c..ed9df34 100644 --- a/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h +++ b/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h @@ -675,7 +675,7 @@ struct s3c2400_mmc { /* SD INTERFACE (see S3C2410 manual chapter 19) */ -struct s3c2410_sdi { +struct s3c24x0_sdi { u32 sdicon; u32 sdipre; u32 sdicarg; @@ -691,14 +691,19 @@ struct s3c2410_sdi { u32 sdidcnt; u32 sdidsta; u32 sdifsta; -#ifdef __BIG_ENDIAN - u8 res[3]; - u8 sdidat; +#ifdef CONFIG_S3C2410 + u32 sdidat; + u32 sdiimsk; #else - u8 sdidat; - u8 res[3]; -#endif u32 sdiimsk; + u32 sdidat; +#endif }; +#ifdef CONFIG_CMD_MMC +#include <mmc.h> +int s3cmmc_initialize(bd_t *bis, int (*getcd)(struct mmc *), + int (*getwp)(struct mmc *)); +#endif + #endif /*__S3C24X0_H__*/ diff --git a/arch/arm/include/asm/arch-sunxi/clock_sun4i.h b/arch/arm/include/asm/arch-sunxi/clock_sun4i.h index 928f3f2..1ba997a 100644 --- a/arch/arm/include/asm/arch-sunxi/clock_sun4i.h +++ b/arch/arm/include/asm/arch-sunxi/clock_sun4i.h @@ -218,10 +218,13 @@ struct sunxi_ccm_reg { #define CCM_PLL5_CTRL_BYPASS (0x1 << 30) #define CCM_PLL5_CTRL_EN (0x1 << 31) -#define CCM_PLL6_CTRL_N_SHIFT 8 -#define CCM_PLL6_CTRL_N_MASK (0x1f << CCM_PLL6_CTRL_N_SHIFT) -#define CCM_PLL6_CTRL_K_SHIFT 4 -#define CCM_PLL6_CTRL_K_MASK (0x3 << CCM_PLL6_CTRL_K_SHIFT) +#define CCM_PLL6_CTRL_EN 31 +#define CCM_PLL6_CTRL_BYPASS_EN 30 +#define CCM_PLL6_CTRL_SATA_EN_SHIFT 14 +#define CCM_PLL6_CTRL_N_SHIFT 8 +#define CCM_PLL6_CTRL_N_MASK (0x1f << CCM_PLL6_CTRL_N_SHIFT) +#define CCM_PLL6_CTRL_K_SHIFT 4 +#define CCM_PLL6_CTRL_K_MASK (0x3 << CCM_PLL6_CTRL_K_SHIFT) #define CCM_GPS_CTRL_RESET (0x1 << 0) #define CCM_GPS_CTRL_GATE (0x1 << 1) @@ -253,4 +256,8 @@ struct sunxi_ccm_reg { #define CCM_GMAC_CTRL_GPIT_MII (0x0 << 2) #define CCM_GMAC_CTRL_GPIT_RGMII (0x1 << 2) +#define CCM_USB_CTRL_PHY1_RST (0x1 << 1) +#define CCM_USB_CTRL_PHY2_RST (0x1 << 2) +#define CCM_USB_CTRL_PHYGATE (0x1 << 8) + #endif /* _SUNXI_CLOCK_SUN4I_H */ diff --git a/arch/arm/include/asm/config.h b/arch/arm/include/asm/config.h index d3433da..5f2a5f4 100644 --- a/arch/arm/include/asm/config.h +++ b/arch/arm/include/asm/config.h @@ -7,7 +7,9 @@ #ifndef _ASM_CONFIG_H_ #define _ASM_CONFIG_H_ +#ifdef __aarch64__ #define CONFIG_SYS_GENERIC_GLOBAL_DATA +#endif #define CONFIG_LMB #define CONFIG_SYS_BOOT_RAMDISK_HIGH diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 214f3ea..6d18eb3 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h @@ -136,6 +136,7 @@ extern inline void __raw_readsl(unsigned long addr, void *data, int longlen) * TODO: The kernel offers some more advanced versions of barriers, it might * have some advantages to use them instead of the simple one here. */ +#define mb() asm volatile("dsb sy" : : : "memory") #define dmb() __asm__ __volatile__ ("" : : : "memory") #define __iormb() dmb() #define __iowmb() dmb() diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S index dfc2de9..29cdad0 100644 --- a/arch/arm/lib/crt0.S +++ b/arch/arm/lib/crt0.S @@ -67,10 +67,22 @@ ENTRY(_main) ldr sp, =(CONFIG_SYS_INIT_SP_ADDR) #endif bic sp, sp, #7 /* 8-byte alignment for ABI compliance */ + mov r2, sp sub sp, sp, #GD_SIZE /* allocate one GD above SP */ bic sp, sp, #7 /* 8-byte alignment for ABI compliance */ mov r9, sp /* GD is above SP */ + mov r1, sp mov r0, #0 +clr_gd: + cmp r1, r2 /* while not at end of GD */ + strlo r0, [r1] /* clear 32-bit GD word */ + addlo r1, r1, #4 /* move to next */ + blo clr_gd +#if defined(CONFIG_SYS_MALLOC_F_LEN) && !defined(CONFIG_SPL_BUILD) + sub sp, sp, #CONFIG_SYS_MALLOC_F_LEN + str sp, [r9, #GD_MALLOC_BASE] +#endif + /* mov r0, #0 not needed due to above code */ bl board_init_f #if ! defined(CONFIG_SPL_BUILD) |