From: Tim Sander Date: Wed, 26 Mar 2014 15:25:33 +0100 Subject: [U-Boot] CONFIG_ARMV7_NONSEC on altera soc (alignment issues ?) Message-ID: <5564506.u1KPOY9OcW@dabox> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi I am currently trying to configure either Altera Soc and Xilinx Zynq to boot Linux in nonsecure-mode. This mail focusses on the Altera SOC. As soon as the u-boot switched to normal mode it seems there is a problem with code alignment handling? At least it seems the code which is running beforehand stops working in normal mode and stops in either data_abort or prefetch handler. It stopps working when it hits the call to stdio_devices[file]->puts(s); in console_puts (console.c:255). print *stdio_devices[file] $2 = {flags = 16978471, ext = 16978464, name = "$\022\003\001\202\022\003\001\360\031\003\001\020\060\220", , start = 0xe92d4070, stop = 0xe2806010, putc = 0xe1530006, puts = 0xe1a04000, tstc = 0xe1a05001, getc = 0xe5810024, priv = 0x1a000007, list = { next = 0xe5831004, prev = 0xe5813000}} As there are unaligned addresses (putc?) in these function calls i have the impression that this is not working in normal mode but in secure mode. Unfortunatly i was not able to get the mainline u-boot to boot on the altera soc so i patched the altera release: git://git.rocketboards.org/u-boot-socfpga.git with the 1740999a39ea4217bf926002d10869c0d925a5dc aka socfpga_v2013.01.01-rel branch. As the altera u-boot release socfpga_v2013.01.01-rel is to old to have the CONFIG_ARMV7_NONSEC patches i cherry-picked the following patches: d4296887544ddf95808bfb62f312008f519efb7b extend non-secure switch to also go into HYP mode ba6a1698116da272f14c53a3ae41467cb7fc4372 add SMP support for non-secure switch bb975455650b1f36681de31a93ffe54952ed3a6b trigger non-secure state switch during bootm execution 1ef923851ab8ffcc4265fd991815b88d9c1f12d7 add C function to switch to non-secure state 16212b594f385bd594d5d316bf11b13c1186e3d7 add assembly routine to switch to non-secure state 45b940d6f9a9d4989452ea67480e299bfa51ee19 add secure monitor handler to switch to non-secure state d75ba503a972df09784f1a332ba356ef8b42a0a6 ARM: prepare armv7.h to be included from assembly source I also applied the attached hacked together patches to get the system running and fix up the stack pointer in normal mode as it pointed to 0. Best regards Tim