|
Message
From: cvs at opencores.org<cvs@o...>
Date: Thu Sep 29 13:15:36 CEST 2005
Subject: [cvs-checkins] MODIFIED: or1k ...
Date: 00/05/09 29:13:15 Modified: or1k/or1ksim/testbench/support support.c Log: Put consecutive asm statements into one __asm__() block to prevent gcc from scheduleing other instructions between them. Revision Changes Path 1.17 or1k/or1ksim/testbench/support/support.c http://www.opencores.org/cvsweb.shtml/or1k/or1ksim/testbench/support/support.c.diff?r1=1.16&r2=1.17 (In the diff below, changes in quantity of whitespace are not shown.) Index: support.c =================================================================== RCS file: /cvsroot/nogj/or1k/or1ksim/testbench/support/support.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -b -r1.16 -r1.17 --- support.c 31 Mar 2005 15:52:39 -0000 1.16 +++ support.c 29 Sep 2005 11:15:32 -0000 1.17 @@ -33,8 +33,8 @@ /* return value by making a syscall */ void exit (int i) { - asm("l.add r3,r0,%0": : "r" (i)); - asm("l.nop %0": :"K" (NOP_EXIT)); + __asm__ __volatile__ ("l.add r3,r0,%0\n\t" + "l.nop %1": : "r" (i), "K" (NOP_EXIT)); while (1); } @@ -43,16 +43,18 @@ { va_list args; va_start(args, fmt); - __asm__ __volatile__ (" l.addi\tr3,%0,0\n": : "r" (fmt) : "r3", "r4"); - __asm__ __volatile__ (" l.addi\tr4,%0,0\n": : "r" (args): "r3", "r4"); - __asm__ __volatile__ (" l.nop %0": : "K" (NOP_PRINTF)); + __asm__ __volatile__ ("l.addi\tr3,%0,0\n\t" + "l.addi\tr4,%1,0\n\t" + "l.nop %2" + : : "r" (fmt), "r" (args), "K" (NOP_PRINTF) + : "r3", "r4"); } /* print long */ void report(unsigned long value) { - asm("l.addi\tr3,%0,0": :"r" (value)); - asm("l.nop %0": :"K" (NOP_REPORT)); + __asm__ __volatile__ ("l.addi\tr3,%0,0\n\t" + "l.nop %1": : "r" (value), "K" (NOP_REPORT)); } /* just to satisfy linker */ @@ -80,14 +82,14 @@ /* For writing into SPR. */ void mtspr(unsigned long spr, unsigned long value) { - asm("l.mtspr\t\t%0,%1,0": : "r" (spr), "r" (value)); + __asm__ __volatile__ ("l.mtspr\t\t%0,%1,0": : "r" (spr), "r" (value)); } /* For reading SPR. */ unsigned long mfspr(unsigned long spr) { unsigned long value; - asm("l.mfspr\t\t%0,%1,0" : "=r" (value) : "r" (spr)); + __asm__ __volatile__ ("l.mfspr\t\t%0,%1,0" : "=r" (value) : "r" (spr)); return value; }
|
 |