Hello all,

Finally I found the problem!

I was using the arm linux toolchain from embedian (
http://www.emdebian.org/crosstools.html).
Now, I tested with the code sourcery one (Sourcery CodeBench Lite
2012.09-64 for ARM GNU/Linux), by the way, which gem5 users use, and it's
fine.
One possible fix to the first toolchain is deleting the #ifdef __thumb__
code in util/m5/m5op_arm.S. Better than this is using the right toolchain!

Regards,

--
Fernando A. Endo, PhD student and researcher

Université de Grenoble, UJF
France




2012/11/13 Fernando Endo <[email protected]>

> Hi,
>
> Thanks Amin for your answer.
> I'm my case, the m5op_arm.S file has already this fix!
>
> Regards,
>
> --
> Fernando A. Endo, PhD student and researcher
>
> Université de Grenoble, UJF
> France
>
>
>
> 2012/11/12 Amin Farmahini <[email protected]>
>
>> I had a similar problem with thumb instruction. The patch below (provided
>> by Ali) fixed my problem. I think this should work for you as well.
>>
>> diff -r 839eeb3fcdf8 util/m5/m5op_arm.S
>> --- a/util/m5/m5op_arm.S     Mon Apr 30 10:23:46 2012 -0500
>>
>>
>>
>> +++ b/util/m5/m5op_arm.S     Mon Apr 30 16:50:41 2012 -0500
>> @@ -41,14 +41,26 @@
>>   *          Ali Saidi
>>   *          Chander Sudanthi
>>   */
>> +.syntax unified
>> +#ifdef __thumb__
>> +.thumb
>>
>>
>>
>> +#endif
>>
>>  #define m5_op 0xEE
>>
>>  #include "m5ops.h"
>>
>> +#ifdef __thumb__
>> +#define INST(op, ra, rb, func)                          \
>> +        .short (((op) << 8) | (func));                  \
>>
>>
>>
>> +        .short (((ra) << 12) | (0x1 << 8) | (0x1 << 4) | (rb))
>> +/*               m5ops           m5func         */
>> +/*                ra         coproc 1       op=1       rb   */
>> +#else
>>
>>
>>
>>  #define INST(op, ra, rb, func) \
>>          .long (((op) << 24) | ((func) << 16) | ((ra) << 12) | (0x1 << 8) | 
>> (0x1 << 4) | (rb))
>>  /*               m5ops           m5func             ra         coproc 1     
>>   op=1       rb   */
>>
>>
>>
>> +#endif
>>
>>  #define LEAF(func)    \
>>          .globl  func; \
>>
>>
>> Thanks,
>> Amin
>>
>>
>>
>>
>> On Mon, Nov 12, 2012 at 8:41 AM, Fernando Endo 
>> <[email protected]>wrote:
>>
>>> Hello all,
>>>
>>> I'm trying to run an ARM code using the thumb instruction set. I'm using
>>> the stable version of gem5.
>>> The code is completly writen in C, and my target is "arm_detailed". I
>>> use the instructions m5_reset_stats and m5_dump_stats provided by gem5 to
>>> control the stats generation.
>>>
>>> When I compile, I get some warning messages (listing 1)
>>> I think they can be ignored, because both instruction I use aren't
>>> truncated
>>>
>>> Ok, then gem5 panics at an unknown instruction (listing 2).
>>> Saddly, when I comment the m5_*_stats commands, gem5 simutation is ok
>>> (listing 3).
>>>
>>> With or without -mcpu=cortex-a9, the result is the same. The code works
>>> without -mthumb and -D__thumb__. Any idea?
>>>
>>> listing 1:
>>> -----
>>> arm-linux-gnueabi-gcc-4.4 -I"../gem5-stable" -D__thumb__ -O3 -static
>>> -mthumb -mcpu=cortex-a9 -o main_unroll.o -c main_unroll.c
>>> arm-linux-gnueabi-gcc-4.4 -I"../gem5-stable" -D__thumb__ -O3 -static
>>> -mthumb -mcpu=cortex-a9 -o utils.o -c utils.c
>>> arm-linux-gnueabi-gcc-4.4 -I"../gem5-stable" -D__thumb__ -O3 -static
>>> -mthumb -mcpu=cortex-a9 -o mmunroll1.o -c mmunroll1.c
>>> arm-linux-gnueabi-gcc-4.4 -I"../gem5-stable" -D__thumb__ -O3 -static
>>> -mthumb -mcpu=cortex-a9 -o mmunroll1.bin mmunroll1.o main_unroll.o utils.o
>>> ../gem5-stable/util/m5/m5op_arm.S
>>> ../gem5-stable/util/m5/m5op_arm.S: Assembler messages:
>>> ../gem5-stable/util/m5/m5op_arm.S:159: Warning: value 0x10110 truncated
>>> to 0x110
>>> ../gem5-stable/util/m5/m5op_arm.S:160: Warning: value 0x11110 truncated
>>> to 0x1110
>>> -----
>>>
>>> listing 2:
>>> -----
>>> gem5 Simulator System.  http://gem5.org
>>> gem5 is copyrighted software; use the --copyright option for details.
>>>
>>> gem5 compiled Nov  6 2012 18:03:46
>>> gem5 started Nov 12 2012 15:06:28
>>> gem5 executing on GRE034537
>>> command line: gem5-stable/build/ARM/gem5.opt -d Results/gem5out
>>> --stats-file=statsMMU1.txt gem5-stable/configs/example/se.py -c
>>> mmul_src/mmunroll1.bin -o 10 --caches --l2cache --cpu-type=arm_detailed
>>> Global frequency set at 1000000000000 ticks per second
>>> 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
>>> **** REAL SIMULATION ****
>>> info: Entering event queue @ 0.  Starting simulation...
>>> warn: CP14 unimplemented crn[14], opc1[7], crm[15], opc2[7]
>>> matrix size : 10 x 10 elements
>>> matrix size :   0x190 bytes
>>> size of gdata : 0x100000 bytes
>>> panic: Attempted to execute unknown instruction (inst 0x2ee4146f7)
>>>  @ cycle 21103000
>>> [invoke:build/ARM/arch/arm/faults.cc, line 191]
>>> Memory Usage: 629556 KBytes
>>> Program aborted at cycle 21103000
>>> -----
>>>
>>> listing 3:
>>>  -----
>>> gem5 Simulator System.  http://gem5.org
>>> gem5 is copyrighted software; use the --copyright option for details.
>>>
>>> gem5 compiled Nov  6 2012 18:03:46
>>> gem5 started Nov 12 2012 15:13:12
>>> gem5 executing on GRE034537
>>> command line: gem5-stable/build/ARM/gem5.opt -d Results/gem5out
>>> --stats-file=statsMMU1.txt gem5-stable/configs/example/se.py -c
>>> mmul_src/mmunroll1.bin -o 10 --caches --l2cache --cpu-type=arm_detailed
>>> Global frequency set at 1000000000000 ticks per second
>>> 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
>>> **** REAL SIMULATION ****
>>> info: Entering event queue @ 0.  Starting simulation...
>>> warn: CP14 unimplemented crn[14], opc1[7], crm[15], opc2[7]
>>> matrix size : 10 x 10 elements
>>> matrix size :   0x190 bytes
>>> size of gdata : 0x100000 bytes
>>> hack: be nice to actually delete the event here
>>> Exiting @ tick 27101000 because target called exit()
>>> -----
>>>
>>> Regards,
>>>
>>> --
>>> Fernando A. Endo, PhD student and researcher
>>>
>>> Université de Grenoble, UJF
>>> France
>>>
>>>
>>> _______________________________________________
>>> gem5-users mailing list
>>> [email protected]
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>
>>
>>
>> _______________________________________________
>> gem5-users mailing list
>> [email protected]
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>
>
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to