Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Sep 2007 00:10:27 +0200
From:      Olivier Houchard <mlfbsd@ci0.org>
To:        Marius Nuennerich <marius.nuennerich@gmx.de>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: Comment bug in locore.S?
Message-ID:  <20070927221027.GA16476@ci0.org>
In-Reply-To: <20070927231331.5d22bf4a@sol.hackerzberg.local>
References:  <20070927171822.0bdec7d9@sol.hackerzberg.local> <20070927170339.GA11021@ci0.org> <20070927224133.5fc9b24f@sol.hackerzberg.local> <20070927214141.GB15654@ci0.org> <20070927231331.5d22bf4a@sol.hackerzberg.local>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Sep 27, 2007 at 11:13:31PM +0200, Marius Nuennerich wrote:
> On Thu, 27 Sep 2007 23:41:41 +0200
> Olivier Houchard <mlfbsd@ci0.org> wrote:
> 
> > On Thu, Sep 27, 2007 at 10:41:33PM +0200, Marius Nuennerich wrote:
> > > On Thu, 27 Sep 2007 19:03:39 +0200
> > > Olivier Houchard <mlfbsd@ci0.org> wrote:
> > > 
> > > > On Thu, Sep 27, 2007 at 05:18:22PM +0200, Marius Nuennerich wrote:
> > > > > Hi all,
> > > > > 
> > > > 
> > > > Hi Marius,
> > > > 
> > > > > I'm still trying to boot FreeBSD on the neo1973. So far I managed to
> > > > > put bytes over the serial console so I can see where I am. At the
> > > > > moment the (virtual) machine crashes in locore.S (1.16) line 170:
> > > > > ldr pc, .Lvirt_done
> > > > > 
> > > > > qemu: fatal: Trying to execute code outside RAM or ROM at 0xc0008???
> > > > > 
> > > > > Which I don't understand because the section should be mapped by the
> > > > > MMU to 0x30008??? at that time.
> > > > > 
> > > > > In line 137 the sequence in the comment is described as
> > > > > /* # of sections, PA|attr, VA */
> > > > > but in line 185 the order is
> > > > > n_sec, VA, PA|attr
> > > > > 
> > > > > Is the comment wrong?
> > > > > 
> > > > 
> > > > No the comment is right, 0xc0000000 should be mapped.
> > > > Did you define STARTUP_PAGETABLE_ADDR ? It's not marked as such, but it is
> > > > mandatory now.
> > > 
> > > Yes, in the kernel config there are these lines:
> > > makeoptions     KERNPHYSADDR=0x30008000
> > > makeoptions     KERNVIRTADDR=0xc0000000
> > > options         KERNPHYSADDR=0x30008000
> > > options         KERNVIRTADDR=0xc0000000
> > > options         PHYSADDR=0x30000000
> > > options         STARTUP_PAGETABLE_ADDR=0x30800000
> > > 
> > > It's from Andrew Turners config file which he posted on
> > > http://wiki.openmoko.org/wiki/FreeBSD
> > > in the tarball.
> > > 
> > 
> > Hmmm, I really see no reason why the PA <=> PA mapping would work, but not
> > the VA <=> PA one.
> > I'll try to setup qemu. Can it provide useful informations about its 
> > internal state, ie CPU registers, TLB, etc ?
> 
> Yes, it looks like this:
> qemu: fatal: Trying to execute code outside RAM or ROM at 0xc0008030
> 
> R00=30800000 R01=c01afdb8 R02=c0000070 R03=00000000
> R04=3000824c R05=3000808c R06=00000002 R07=30008050
> R08=33f17fdc R09=00000000 R10=00000041 R11=50000020
> R12=33f14934 R13=c019b140 R14=33f8b9e8 R15=c0008030
> PSR=60000153 -ZC- A svc32

There's something I seriously miss. At this point, r2 should be 0 :
	ldmia	r1, {r1, r2, sp}	/* Set initial stack and */
	sub	r2, r2, r1		/* get zero init data */
	mov	r3, #0
.L1:
	str	r3, [r1], #0x0004	/* get zero init data */
	subs	r2, r2, #4
	bgt	.L1
	ldr	pc, .Lvirt_done

And not 0xc0000070
What are the values of _edata and _end ?
If you've been able to do all those stores, the mapping should work anyway,
I'm really confused.

> s00=00000000(       0) s01=00000000(       0)
> d00=0000000000000000(       0) s02=00000000(       0)
> s03=00000000(       0) d01=0000000000000000(       0)
> s04=00000000(       0) s05=00000000(       0)
> d02=0000000000000000(       0) s06=00000000(       0)
> s07=00000000(       0) d03=0000000000000000(       0)
> s08=00000000(       0) s09=00000000(       0)
> d04=0000000000000000(       0) s10=00000000(       0)
> s11=00000000(       0) d05=0000000000000000(       0)
> s12=00000000(       0) s13=00000000(       0)
> d06=0000000000000000(       0) s14=00000000(       0)
> s15=00000000(       0) d07=0000000000000000(       0)
> s16=00000000(       0) s17=00000000(       0)
> d08=0000000000000000(       0) s18=00000000(       0)
> s19=00000000(       0) d09=0000000000000000(       0)
> s20=00000000(       0) s21=00000000(       0)
> d10=0000000000000000(       0) s22=00000000(       0)
> s23=00000000(       0) d11=0000000000000000(       0)
> s24=00000000(       0) s25=00000000(       0)
> d12=0000000000000000(       0) s26=00000000(       0)
> s27=00000000(       0) d13=0000000000000000(       0)
> s28=00000000(       0) s29=00000000(       0)
> d14=0000000000000000(       0) s30=00000000(       0)
> s31=00000000(       0) d15=0000000000000000(       0)
> FPSCR: 00000000
> 
> Can someone explain to me what the sxx= and dxx= value mean?
> 

No clue, sorry.

Regards,

Olivier



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070927221027.GA16476>