mbar and bus error (was: some newbie questions)

sebastian ssmoller sebastian.ssmoller at gmx.net
Mon Feb 23 13:22:02 UTC 2004


On Mon, 23 Feb 2004 08:08:08 -0500
Ed Sutter <els at emailbox.hdtv.lucent.com> wrote:

> Did you verify whether or not access to MBAR requires supervisor level?
quicc doc says to be able to access MBAR one has to be in CPU space which
is done by writing 0x7 to sfc and dfc.

> And then, whether or not your monitor is running at supervisor level?
i guess the monitor is running in supervisor level but i think this does
not matter cause i switch to CPU space ...

seb

> Ed
> 
> sebastian ssmoller wrote:
> > 
> > hi,
> > during the last days i tried to access MBAR on my board (68360/040).
> > without any success. even read access causes a bus error :(
> > 
> > i reread the doc of my board and the quicc (6.8, 9.2, 4.4.3, 6.9.1,
> > aso) and i guess the initialisation sequence i use  is correct.
> > 
> > i also downloaded the linux kernel (2.6.3) and had a look at the init
> > sequence used there - it is more or less the same.
> > 
> > i googled around for some hours - the sample code/doc i found uses the
> > same init seq as rtems/linux/my test prog.
> > 
> > i wrote simple asm prog to isolate the problematic code - no success.
> > 
> > thats the code:
> > 
> > start:
> >     movel #0,dptr     /* my debug var to see where the prog hangs */
> >     movel #0,dptr+4
> >     movel #0,dptr+8
> > 
> >     /* SSP */
> >     oriw   #0x3000,sr          | Switch to Master Stack Pointer
> >    oriw    #0x2700,sr
> >    movea.l   #stack_init,sp
> >     move.l  #stack_init,a7
> > 
> >     addql #1,dptr
> > 
> >     /* VBR */
> >     lea       int_vec_tab,a0       | Get base of vector table
> >     movec   a0,vbr             | Set up the VBR
> > 
> >     addql #1,dptr
> > 
> >     /* pre MBAR work */
> >     movec   dfc,d1             | Save destination register
> > 
> >     moveq   #7,d0             | CPU-space funcction code
> >     movec   d0,dfc             | Set destination function code register
> >     movec   d0,sfc             | Set source function code register
> > 
> >     addql #1,dptr
> > 
> >     lea    0x3ff04,a0
> >     movel   #0xfffffffe,0x3FF08   | Set MBARE (keyed write)
> > 
> >     move.l 0x3ff08,dptr+4
> > 
> >     addql #1,dptr
> > 
> >     /* get MBAR */
> >     moves.l (a0), d0
> >     move.l d0,dptr+8
> > 
> >     addql #1,dptr
> > 
> >     /* set MBAR */
> >     /*
> >     move.l    #m360+0x101,d0
> >     move.l    #0xffc00000,d0
> >     */
> >     move.l    #0xffc00000,d0
> >     ori.l   #0x00000101,d0
> >     moves.l d0,(a0)             | set MBAR
> > 
> >     addql #1,dptr
> > 
> >     /* post MBAR work */
> >     movec   d1,dfc             | Restore destination register
> > 
> >     /* removed the rest here (e.g. interrupt table (copied from
> >     rtems))*/
> > 
> > i havnt any further ideas what the problem could be.
> > 
> > anyone any hint/info/... ?
> > 
> > thx
> > regards,
> > seb
> 



More information about the users mailing list