linux-mips
[Top] [All Lists]

Assembly macro with parameters

To: linux-mips@linux-mips.org
Subject: Assembly macro with parameters
From: Fabrizio Fazzino <fabrizio@fazzino.it>
Date: Thu, 07 Apr 2005 19:53:49 +0200
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)
Hi all,
I'm working to an hardware extension of the MIPS32 instruction set
and I need to convert my new instruction into an existing opcode
to make it possible for the normal GCC to correctly compile the code.

Just to be clear, to obtain my new FZMIN instruction like

        FZMIN $rd, $rs, $rt

I have to convert it into

        LWC1 $rt, rd<<11 ($rs)

that is an existing (in some cases unused) opcode.

I'm currently using hardcoded values for the parameters, so
fzmin(10,8,9) will be transformed into
        asm("lwc1 $9, 10<<11($8)" : : : "$10");

It works, but I need a way to set the values of the parameters
at runtime; so I've tried the following macro:

        #define fzmin(rd, rs, rt) asm("lwc1 $rt, rd<<11($rs)");

As you can imagine I'm not an expert of MIPS Assembly macros:
what I've written does NOT work since the values of rd,rs,rt
are NOT substituted inside the asm string.

Is there any way to do what I need? I would appreciate your
help very much.

Cheers,
        Fabrizio


--
============================================
   Fabrizio Fazzino - fabrizio@fazzino.it
     Fazzino.IT - http://www.fazzino.it
============================================


<Prev in Thread] Current Thread [Next in Thread>