LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Sponsors
  • Mirrors
  • Logos
  • Contact us
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cvs-checkins > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: cvs at opencores.org<cvs@o...>
    Date: Thu Sep 29 13:15:36 CEST 2005
    Subject: [cvs-checkins] MODIFIED: or1k ...
    Top
    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;
    }




     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.