GCC 4.1.1 generates invalid mfctl,w asm instruction

Guy Martin <[email protected]>
Newsgroups gmane.linux.ports.hppa
Message-ID <[email protected]>
Hi all,

Reference : http://h21007.www2.hp.com/dspp/tech/tech_TechDocumentDetailPage_IDX/1,1701,959!114!244,00.html

According this doc, the ,w completer of the mfctl instruction is only used for the cr11 register. This is the way binutils handle it.
However, gcc will generate the following instruction "mfctl,w %%cr27,%0" while compiling glibc-2.5 on pa2.0.

This little patch fix this :

diff -uNr gcc-4.1.1.orig/gcc/config/pa/pa.md gcc-4.1.1/gcc/config/pa/pa.md
--- gcc-4.1.1.orig/gcc/config/pa/pa.md  2007-01-30 06:59:07.579391048 +0000
+++ gcc-4.1.1/gcc/config/pa/pa.md       2007-01-30 07:23:29.213188936 +0000
@@ -9854,7 +9854,7 @@
   [(set (match_operand:SI 0 "register_operand" "=r")
        (unspec:SI [(const_int 0)] UNSPEC_TP))]
   ""
-  "{mfctl|mfctl,w} %%cr27,%0"
+  "mfctl %%cr27,%0"
   [(set_attr "type" "multi")
    (set_attr "length" "4")])


Please review.


Regards,
  Guy


-- 
Guy Martin
Gentoo Linux - HPPA port Lead
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.