From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58601) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XIEPx-0004X3-W4 for qemu-devel@nongnu.org; Fri, 15 Aug 2014 06:07:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XIEPt-0007oJ-Ny for qemu-devel@nongnu.org; Fri, 15 Aug 2014 06:07:29 -0400 Received: from mail-wi0-x230.google.com ([2a00:1450:400c:c05::230]:36044) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XIEPt-0007o0-Cx for qemu-devel@nongnu.org; Fri, 15 Aug 2014 06:07:25 -0400 Received: by mail-wi0-f176.google.com with SMTP id bs8so623845wib.15 for ; Fri, 15 Aug 2014 03:07:24 -0700 (PDT) Received: from localhost (109241087153.gdansk.vectranet.pl. [109.241.87.153]) by mx.google.com with ESMTPSA id cy9sm5317591wib.15.2014.08.15.03.07.23 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Aug 2014 03:07:23 -0700 (PDT) Date: Fri, 15 Aug 2014 12:07:21 +0200 From: Piotr =?iso-8859-1?Q?Kr=F3l?= Message-ID: <20140815100719.GB11560@echad> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Subject: [Qemu-devel] vexpress-a9: coreboot is unable to push any data on stack List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Hi all, I'm trying to boot latest coreboot on qemu-system-arm (-M vexpress-a9). I compiled qemu arm-softmmu from source (latest code) and trying to boot with: qemu-system-arm -M vexpress-a9 -m 1024M -nographic -bios build/coreboot.rom First of all mtree looks strange because there are two aliases to one memory region: 0000000000000000-0000000003ffffff (prio 0, RW): alias vexpress.flashalias @vexpress.flash0 0000000000000000-0000000003ffffff 0000000000000000-0000000003ffffff (prio 0, RW): alias vexpress.lowmem @vexpress.highmem 0000000000000000-0000000003ffffff Is this ok ? Second, because VE_NORFLASHALIAS was change to 0 here: http://git.qemu.org/?p=qemu.git;a=commit;h=6ec1588e09770ac7e9c60194faff6101111fc7f0 I was unable to boot coreboot using: qemu-system-arm -M vexpress-a9 -m 1024M -nographic -kernel build/coreboot.rom If I change VE_NORFLASHALIAS to -1 like it was before coreboot boots using '-kernel' parameter, but '-bios' flag even then doesn't work. Third, (for '-bios' case) thing is that coreboot is unable to push any value on stack. Instructions related to stack change stack pointer but stack address memory dump show only 0xffffffff. Coreboot perform stack initialization on its own. Disassembled coreboot bootblock with stack initialization is here: https://gist.github.com/pietrushnic/f83d5d0e5d8d1b75d4c2 The code flow is: _rom |-> reset |-> init_stack_loop |-> call_bootblock |-> main |-> armv7_invalidate_caches |-> icache_invalidate_all |-> dcache_invalidate_all |-> dcache_foreach At the begging of dcache_foreach we execute: stmdb sp!, {r0, r1, r4, r5, r6, r7, r9, sl, fp, lr} And at the end there is: ldmia.w sp!, {r2, r3, r4, r5, r6, r7, r9, r10, r11, pc} Unfortunately, as I wrote, on stack we have all 0xffffffff that's why dcache_foreach finish emulation with: qemu: fatal: Trying to execute code outside RAM or ROM at 0xfffffffe Any idea how to debug this issue or why it happens in that way ? What could be the reason of unusable stack memory ? P.S. Before I started thread here there was a discussion on coreboot mailing list: http://www.coreboot.org/pipermail/coreboot/2014-August/078378.html Thanks, Piotr