|
Message
From: Damjan Lampret<damjanl@o...>
Date: Wed Jun 23 23:06:45 CEST 2004
Subject: [openrisc] Architecture simulation of basic.S
Khm khm, your stack pointer R1 is not 32-bit word aligned. This causes problems as evident from the executed.log that you posted.
Analysis: in first execution of l.jal insn you have R1 set to 0x1 and this gets substracted by 4 to 0xfffffffd and then a 32-bit store is executed to unaligned address and this causes alignment exeception as indicated by jump to 0x600.
Fix: set your R1 properly. If your stack pointer is set by the linker configuration file, align .stack sectyion to 0x4.
regards, Damjan
----- Original Message ----- From: <gurumurt@c...> To: <openrisc@o...> Sent: Wednesday, June 23, 2004 9:11 PM Subject: Re: [openrisc] Architecture simulation of basic.S
> I just noticed that the report function is in support.c. But as seen from > the traces that I given below, the report function doesnot match with > the execution. > > Here is the execution trace for the last few instructions in the basic.S > I have typed in the corresponding instructions in brackets. > > > EXECUTED( 565): 040006dc: 0400008a (l.jal _report) > GPR 0: 00000000 GPR 1: 00000001 GPR 2: 00000003 GPR 3: > deaddead > GPR 4: 00000000 GPR 5: 00008001 GPR 6: ffffffff GPR 7: fffffffa > GPR 8: 1243f8b2 GPR 9: 040006e4 GPR10: 04000660 GPR11: > 000007ff > GPR12: 00000fff GPR13: 00001fff GPR14: 00003fff GPR15: 00007fff > GPR16: ffff0012 GPR17: ffff0011 GPR18: ffff8010 GPR19: ffffc00f > GPR20: ffffe00e GPR21: fffff00d GPR22: fffff80c GPR23: fffffc0b > GPR24: fffffe0a GPR25: ffffff09 GPR26: ffffff88 GPR27: ffffffc7 > GPR28: ffffffe6 GPR29: fffffff5 GPR30: fffffffc GPR31: 00000040 > SR : 00008001 EPCR0: 040006bc EEAR0: 00000000 ESR0 : 00008001 > > EXECUTED( 566): 040006e0: 15000000 (l.nop 0) > GPR 0: 00000000 GPR 1: 00000001 GPR 2: 00000003 GPR 3: > deaddead > GPR 4: 00000000 GPR 5: 00008001 GPR 6: ffffffff GPR 7: fffffffa > GPR 8: 1243f8b2 GPR 9: 040006e4 GPR10: 04000660 GPR11: > 000007ff > GPR12: 00000fff GPR13: 00001fff GPR14: 00003fff GPR15: 00007fff > GPR16: ffff0012 GPR17: ffff0011 GPR18: ffff8010 GPR19: ffffc00f > GPR20: ffffe00e GPR21: fffff00d GPR22: fffff80c GPR23: fffffc0b > GPR24: fffffe0a GPR25: ffffff09 GPR26: ffffff88 GPR27: ffffffc7 > GPR28: ffffffe6 GPR29: fffffff5 GPR30: fffffffc GPR31: 00000040 > SR : 00008001 EPCR0: 040006bc EEAR0: 00000000 ESR0 : 00008001 > > EXECUTED( 567): 04000904: 9c21fffc (l.addi r1,r1,-4) > GPR 0: 00000000 GPR 1: fffffffd GPR 2: 00000003 GPR 3: deaddead > GPR 4: 00000000 GPR 5: 00008001 GPR 6: ffffffff GPR 7: fffffffa > GPR 8: 1243f8b2 GPR 9: 040006e4 GPR10: 04000660 GPR11: > 000007ff > GPR12: 00000fff GPR13: 00001fff GPR14: 00003fff GPR15: 00007fff > GPR16: ffff0012 GPR17: ffff0011 GPR18: ffff8010 GPR19: ffffc00f > GPR20: ffffe00e GPR21: fffff00d GPR22: fffff80c GPR23: fffffc0b > GPR24: fffffe0a GPR25: ffffff09 GPR26: ffffff88 GPR27: ffffffc7 > GPR28: ffffffe6 GPR29: fffffff5 GPR30: fffffffc GPR31: 00000040 > SR : 00008001 EPCR0: 040006bc EEAR0: 00000000 ESR0 : 00008001 > > EXECUTED( 568): 04000908: d4011000 (l.sw 0x0(r1),r2) > GPR 0: 00000000 GPR 1: fffffffd GPR 2: 00000003 GPR 3: deaddead > GPR 4: 00000000 GPR 5: 00008001 GPR 6: ffffffff GPR 7: fffffffa > GPR 8: 1243f8b2 GPR 9: 040006e4 GPR10: 04000660 GPR11: > 000007ff > GPR12: 00000fff GPR13: 00001fff GPR14: 00003fff GPR15: 00007fff > GPR16: ffff0012 GPR17: ffff0011 GPR18: ffff8010 GPR19: ffffc00f > GPR20: ffffe00e GPR21: fffff00d GPR22: fffff80c GPR23: fffffc0b > GPR24: fffffe0a GPR25: ffffff09 GPR26: ffffff88 GPR27: ffffffc7 > GPR28: ffffffe6 GPR29: fffffff5 GPR30: fffffffc GPR31: 00000040 > SR : 00008001 EPCR0: 040006bc EEAR0: 00000000 ESR0 : 00008001 > > EXECUTED( 569): 00000600: 00000000 (l.j 0x0) > GPR 0: 00000000 GPR 1: fffffffd GPR 2: 00000003 GPR 3: deaddead > GPR 4: 00000000 GPR 5: 00008001 GPR 6: ffffffff GPR 7: fffffffa > GPR 8: 1243f8b2 GPR 9: 040006e4 GPR10: 04000660 GPR11: > 000007ff > GPR12: 00000fff GPR13: 00001fff GPR14: 00003fff GPR15: 00007fff > GPR16: ffff0012 GPR17: ffff0011 GPR18: ffff8010 GPR19: ffffc00f > GPR20: ffffe00e GPR21: fffff00d GPR22: fffff80c GPR23: fffffc0b > GPR24: fffffe0a GPR25: ffffff09 GPR26: ffffff88 GPR27: ffffffc7 > GPR28: ffffffe6 GPR29: fffffff5 GPR30: fffffffc GPR31: 00000040 > SR : 00008001 EPCR0: 04000908 EEAR0: fffffffd ESR0 : 00008001 > > > There is an execption at 568th instruction, here is the exception > message: > "Exception 0x600 (Alignment) at 0x4000908, EA: 0xfffffffd, ppc: > 0x4000908, npc: 0x400090c, #568" > > Why would this exception happen? > > One more thing here is the report function from support.c. > void report(unsigned long value)
> {
> asm("l.addi\tr3,%0,0": :"r" (value));
> asm("l.nop %0": :"K" (NOP_REPORT));
> }
>
> You would notice that these statements do not seem to correspond to
> the statements listed above. Am I missing something?
>
> Thanks,
> Guru
> ----- Original Message -----
> From: Matjaz Breskvar<phoenix@o...>
> To:
> Date: Wed Jun 23 15:51:16 CEST 2004
> Subject: [openrisc] Architecture simulation of basic.S
>
> > * gurumurt@c... (gurumurt@c...) wrote:
> > > When I run the basic.or32 thru the or32-uclinux-sim, I get
> > into the
> > > following problem.
> > >
> > > One of the last instructions in the file is;
> > > l.jal _report
> > >
> > > I dont find the pointer "_report" anywhere in the
> > file. When I simulate it
> > > (architecture simulation) it translates the above statement to
> > > 1.jal 0x8a
> > > And it jumps to that space and somewhere in that space it
> > encounters
> > > a jump to 0 and goes into an infinite loop of staying at 0th
> > location.
> > > This causes a problem when I run "run_sw" since it
> > keeps on writing on
> > > to the log file till it reaches the disk quota.
> > > What should I do to avert this problem? Specifically, where
> > does it jump
> > > when it encounters l.jal _report?
> > > Thanks,
> > > Guru
> > hm, symbol _report has to be somewhere else linker would complain.
> > (any library you're linking with ?)
> > regards,
> > p.
> >
> >
> _______________________________________________
> http://www.opencores.org/mailman/listinfo/openrisc
|
 |