From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3940 invoked by alias); 18 Oct 2007 12:31:59 -0000 Received: (qmail 3920 invoked by uid 22791); 18 Oct 2007 12:31:56 -0000 X-Spam-Status: No, hits=-0.6 required=5.0 tests=AWL,BAYES_05,DK_POLICY_SIGNSOME,SPF_PASS X-Spam-Check-By: sourceware.org Received: from igw3.br.ibm.com (HELO igw3.br.ibm.com) (32.104.18.26) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 18 Oct 2007 12:31:52 +0000 Received: from mailhub3.br.ibm.com (unknown [9.18.232.110]) by igw3.br.ibm.com (Postfix) with ESMTP id B4CBE39002B for ; Thu, 18 Oct 2007 10:25:46 -0200 (BRDT) Received: from d24av01.br.ibm.com (d24av01.br.ibm.com [9.18.232.46]) by mailhub3.br.ibm.com (8.13.8/8.13.8/NCO v8.5) with ESMTP id l9ICVnuc2760888 for ; Thu, 18 Oct 2007 10:31:49 -0200 Received: from d24av01.br.ibm.com (loopback [127.0.0.1]) by d24av01.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l9ICVnEL015847 for ; Thu, 18 Oct 2007 09:31:49 -0300 Received: from [9.67.43.64] (wecm-9-67-43-64.wecm.ibm.com [9.67.43.64]) by d24av01.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id l9ICVkCQ015660 for ; Thu, 18 Oct 2007 09:31:47 -0300 Subject: Another patch to unit tests and frysk assembly. From: Jose Flavio Aguilar Paulino To: Frysk Content-Type: multipart/mixed; boundary="=-n0XVZBxTnkfIaktxNFk9" Date: Thu, 18 Oct 2007 12:31:00 -0000 Message-Id: <1192714197.3801.1.camel@kandinsky.prado> Mime-Version: 1.0 X-Mailer: Evolution 2.8.2 X-Virus-Checked: Checked by ClamAV on sourceware.org Mailing-List: contact frysk-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-owner@sourceware.org X-SW-Source: 2007-q4/txt/msg00064.txt.bz2 --=-n0XVZBxTnkfIaktxNFk9 Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 158 -- Jose Flavio Aguilar Paulino (jflavio@br.ibm.com) http://www.j-fap.com System / Software Engineer Toolchain Team LTC, Linux Technology Center IBM Brazil --=-n0XVZBxTnkfIaktxNFk9 Content-Disposition: attachment; filename=power_frysk_assembly_2 Content-Type: text/x-patch; name=power_frysk_assembly_2; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 4404 Index: frysk/frysk-core/frysk/pkglibdir/funit-location.S =================================================================== --- frysk.orig/frysk-core/frysk/pkglibdir/funit-location.S +++ frysk/frysk-core/frysk/pkglibdir/funit-location.S @@ -44,7 +44,13 @@ MAIN_PROLOGUE(0) LOAD_IMMED_WORD (REG0, 0) LOAD_IMMED_WORD (REG1, 987) -LOAD_IMMED_WORD (REG2, memory) + +#if defined __powerpc__ +#warning PowerPC do not support load a LABEL into a Register as a immediate +#else + LOAD_IMMED_WORD (REG2, memory) +#endif + STORE (REG0, REG0) // To crash program MAIN_EPILOGUE(0) @@ -52,4 +58,8 @@ FUNCTION_RETURN(main,0) FUNCTION_END(main,0) memory: // Set up memory locations +#if defined __powerpc__ + .4byte 0x1234 +#else .word 0x1234 +#endif Index: frysk/frysk-imports/include/frysk-asm.h =================================================================== --- frysk.orig/frysk-imports/include/frysk-asm.h +++ frysk/frysk-imports/include/frysk-asm.h @@ -324,8 +324,6 @@ # define COMPARE(LHS_REG,RHS_REG) cmpq LHS_REG, RHS_REG #elif defined __powerpc__ # define COMPARE(LHS_REG,RHS_REG) cmpw cr7, LHS_REG, RHS_REG -//#elif defined __powerpc64__ -//# define COMPARE(LHS_REG,RHS_REG) #else # warning "No register-compare instruction defined" #endif @@ -342,9 +340,7 @@ #elif defined __x86_64__ # define JUMP_EQ(LABEL) je LABEL #elif defined __powerpc__ -# define JUMP_EQ(LABEL) bf eq, LABEL -#elif defined __powerpc64__ -# define JUMP_EQ(LABEL) bf eq, LABEL +# define JUMP_EQ(LABEL) beq cr7, LABEL #else # warning "No jump equal instruction defined" #endif @@ -354,9 +350,7 @@ #elif defined __x86_64__ # define JUMP_NE(LABEL) jne LABEL #elif defined __powerpc__ -# define JUMP_NE(LABEL) bf ne, LABEL -#elif defined __powerpc64__ -# define JUMP_NE(LABEL) bf ne, LABEL +# define JUMP_NE(LABEL) bne cr7, LABEL #else # warning "No jump not-equal instruction defined" #endif Index: frysk/frysk-core/frysk/pkglibdir/funit-raise.S =================================================================== --- frysk.orig/frysk-core/frysk/pkglibdir/funit-raise.S +++ frysk/frysk-core/frysk/pkglibdir/funit-raise.S @@ -48,6 +48,10 @@ #if defined(__i386__) || defined(__x86_64__) #define DIV_ZERO(REG) div REG; #define ILL_INST .word 0xffff; +#elif defined(__powerpc__) + #define DIV_ZERO(REG) li 5, 0; divw 6, REG, 5 + //PowePC64 has fixed size instructions upcodes, 16 bytes (64bits) long + #define ILL_INST .8byte 0xffff; .8byte 0xffff; #else #error unsuported architecture #endif @@ -136,8 +140,14 @@ FUNCTION_BEGIN(main,0) // Unknown, print usage. LOAD_IMMED_BYTE(REG0, SYS_write) LOAD_IMMED_BYTE(REG1, 1) - LOAD_IMMED_WORD(REG2, usage) - LOAD_IMMED_WORD(REG3, .usage-usage) + + #if defined(__powerpc__) + #warning You cant load a LABEL as an immediate in PowerPC + #else + LOAD_IMMED_WORD(REG2, usage) + LOAD_IMMED_WORD(REG3, .usage-usage) + #endif + SYSCALL // Non-zero return @@ -148,6 +158,8 @@ exit_main: FUNCTION_RETURN(main,0) FUNCTION_END(main,0) +//In PowerPC you cant have unaligned upcodes in executable segment +#if !defined(__powerpc__) usage: .asciz "Usage:\r\n\ ARG1 ...\r\n\ The number of arguments determines the function which this program\r\n\ @@ -159,3 +171,4 @@ calls and how it will raise a signal/tra 5: SIGURG ignore signal (ign_sig_urg)\r\n\ " .usage: +#endif Index: frysk/frysk-core/frysk/pkglibdir/funit-symbols.S =================================================================== --- frysk.orig/frysk-core/frysk/pkglibdir/funit-symbols.S +++ frysk/frysk-core/frysk/pkglibdir/funit-symbols.S @@ -339,8 +339,13 @@ LOCAL(small_local_at_large_local) LOAD_IMMED_BYTE(REG0, SYS_write) LOAD_IMMED_BYTE(REG1, 1) + +#if defined(__powerpc__) + #warning You cant load a LABEL as an immediate in PowerPC +#else LOAD_IMMED_WORD(REG2, usage) LOAD_IMMED_WORD(REG3, .usage-usage) +#endif SYSCALL // exit with a non-zero status LOAD_IMMED_BYTE(REG0, 1) @@ -348,6 +353,9 @@ LOCAL(small_local_at_large_local) FUNCTION_RETURN(main,0) FUNCTION_END(main,0) +#if defined(__powerpc__) +#warning In PowerPC you cant have unaligned upcodes in executable segment +#else usage: .asciz "Usage:\r\n\ ARG1 ...\r\n\ The number of arguments determines the symbol at which this program\r\n\ @@ -378,3 +386,4 @@ crashes:\r\n\ 24: No symbol after local with nested zero-sized symbols\r\n\ " .usage: +#endif --=-n0XVZBxTnkfIaktxNFk9--