[Cbe-oss-dev] MARS and SPU-GCC 4.6

Geoff Levand geoff at infradead.org
Tue Feb 22 04:37:58 EST 2011


Hi,

On 01/27/2011 09:19 AM, Ulrich Weigand wrote:
> Program Headers:
>   Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
>   LOAD           0x000100 0x00000000 0x00000000 0x00010 0x00010 R E 0x80
>   LOAD           0x000180 0x00004000 0x00004000 0x009f0 0x009f0 R E 0x80
>   LOAD           0x000b80 0x00004a00 0x00004a00 0x00320 0x00360 RW  0x80
>   NOTE           0x008410 0x00000000 0x00000000 0x00024 0x00000 R   0x10
> 
>  Section to Segment mapping:
>   Segment Sections...
>    00     .interrupt
>    01     .init .text .fini .rodata
>    02     .ctors .dtors .jcr .data .bss
>    03     .note.spu_name
> 
> For your purposes, it should probably just work if you simply
> use .interrupt instead of .init in the command line above ...

I guess using .interrupt my not get the entire second section
(.init, etc) loaded to the spu since it seems task_map_elf() uses
the section size for loading.

  task->text_ea = mars_ea_map((void *)ehdr + phdr->p_offset, phdr->p_filesz);

Does the .interrupt section need to be loaded for a mars program?
With the alignment it seems it will take up 128 bytes of spu memory
even though it is just 16 bytes (above case).

task_map_elf() should be updated.  Anyone who does so
please post the results and I will add them to the mars 
sources (http://git.infradead.org/ps3/mars-src.git).

-Geoff



More information about the cbe-oss-dev mailing list