On Tue, May 17, 2011 at 5:35 PM, Rony Paul <ronypaul77@xxxxxxxxx> wrote: > Rony Paul <ronypaul77@xxxxxxxxx> writes: > >> On Wed, May 4, 2011 at 4:35 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote: >>> Rony Paul <ronypaul77@xxxxxxxxx> writes: >>> >>>> Thank you for your reply. I am new in this development. so I am askig >>>> you Âvery basic question. I dont have enough knowledge on "backend", >>>> what did you man with this term? >>>> >>>> my task is to use one memory space as big endian, other as little >>>> endian, and to use Âcopying of pointer from 1 memory space to another. >>>> Just tell me what should be my beggining step? which files I should modify? >>> >>> Please reply to the mailing list, not just to me. ÂAlso, please don't >>> top-post. ÂThanks. >>> >>> Re: backend: See http://en.wikipedia.org/wiki/Compilers . ÂIn gcc the >>> backend is the CPU-specific code in config/CPU. >>> >>> You haven't said anything about your target. ÂIs your memory different >>> at the hardware level? ÂIf not, named address spaces are probably not >>> the right approach. >>> >>> Ian >>> >>> >>>> Rony Paul <ronypaul77@xxxxxxxxx> writes: >>>> >>>>> I want to use named address space support to allow mixed endian >>>>> applications. Specifying the endianness of address spaces. >>>>> Can you suggest me what should I do in this purpose? and which files I >>>>> need to modify ? >>>> >>>> In general named address space is described here: >>>> >>>> http://gcc.gnu.org/onlinedocs/gccint/Named-Address-Spaces.html >>>> >>>> You didn't mention which backend you are using and you didn't mention >>>> how you mean to handle pointers to an address space of different >>>> endianness. ÂNamed address spaces seem appropriate if some of your >>>> memory is big-endian and some is little-endian. ÂI don't know whether >>>> they are appropriate if you want to have both big-endian and >>>> little-endian pointers to the same area of memory. >>>> >>>> Ian >>> >> Thank you for the reply. >> >> Yes I have separate memory at the hardware level. And as far I learnt >> that named address space is already implemented for SPU processor. SPU >> port uses the __ea address space to refer to memory in the host >> processor, rather than memory local to the SPU processor. >> I am now just in the learning phase. SO , if I want to modify that >> code (just to learn) and want to add one more address space keyword >> like "__ea"............what should I do? > > Start by reading the link I mentioned above: > > http://gcc.gnu.org/onlinedocs/gccint/Named-Address-Spaces.html > > That explains what you do to add more address spaces. It requires > modifying the gcc source code and rebuilding gcc. > > Ian > > > Dear Ian, > > Thanks for your help. I have started according to the mentioned link. > And I could give support for another address space. what I want to do > now is, I want to store data in different byte order in the new > address space. that is, suppose I have 2 address spaces supported. 1.) > Generic address space. 2.) __net address space. > > when some variable is declared in the __net address space, I will > store in Bigendian order. , and whrn variable is declared in generic > address space, It will store in little Endian order. > > Do you have any suggestion or idea?? > > -Rony > Hello, Can you explain me the following piece of code? rtx result, ls; ls = gen_const_mem (DImode, gen_rtx_SYMBOL_REF (Pmode, "__ea_local_store")); set_mem_align (ls, 128); result = gen_reg_rtx (Pmode); ls = force_reg (Pmode, convert_modes (Pmode, DImode, ls, 1)); op = force_reg (Pmode, convert_modes (Pmode, EAmode, op, 1)); ls = emit_conditional_move (ls, NE, op, const0_rtx, Pmode, ls, const0_rtx, Pmode, 1); emit_insn (gen_subsi3 (result, op, ls)); -Rony