From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert ARIBAUD Date: Mon, 7 Apr 2014 22:53:43 +0200 Subject: [U-Boot] CONFIG_ARMV7_NONSEC on altera soc (alignment issues ?) In-Reply-To: <5564506.u1KPOY9OcW@dabox> References: <5564506.u1KPOY9OcW@dabox> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Tim, On Wed, 26 Mar 2014 15:25:33 +0100, Tim Sander wrote: > 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 So this is not a patch for mainline U-Boot, right? Amicalement, -- Albert.