Comment bug in locore.S?
Marius Nuennerich
marius.nuennerich at gmx.de
Thu Sep 27 14:40:30 PDT 2007
On Fri, 28 Sep 2007 00:10:27 +0200
Olivier Houchard <mlfbsd at ci0.org> wrote:
> 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 at 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 at 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 ?
I don't know. How can I find out or where are they defined?
> If you've been able to do all those stores, the mapping should work anyway,
Yes, I had a char output over serial line in the .L1 loop and an output
right after the loop. I saw both.
> 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
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
More information about the freebsd-arm
mailing list