LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    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: Sat Sep 16 14:38:56 CEST 2006
    Subject: [cvs-checkins] MODIFIED: jop ...
    Top
    Date: 00/06/09 16:14:38

    Modified: jop/java/tools/src/com/jopdesign/tools JopSim.java
    Log:
    cleanup of mem/io interface, support memory size detection at startup


    Revision Changes Path
    1.21 jop/java/tools/src/com/jopdesign/tools/JopSim.java

    http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/com/jopdesign/tools/JopSim.java.diff?r1=1.20&r2=1.21

    (In the diff below, changes in quantity of whitespace are not shown.)

    Index: JopSim.java
    ===================================================================
    RCS file: /cvsroot/martin/jop/java/tools/src/com/jopdesign/tools/JopSim.java,v
    retrieving revision 1.20
    retrieving revision 1.21
    diff -u -b -r1.20 -r1.21
    --- JopSim.java 19 Feb 2006 15:14:19 -0000 1.20
    +++ JopSim.java 16 Sep 2006 12:38:56 -0000 1.21
    @@ -25,6 +25,7 @@

    static final int MAX_MEM = 1024*1024/4;
    static final int MAX_STACK = 256; // with internal memory
    + static final int MEM_TEST_OFF = 256;

    static final int MIN_WB_ADDRESS = -128;

    @@ -192,36 +193,38 @@

    return mem[addr];
    }
    +
    int readMem(int addr) {

    // System.out.println(addr+" "+mem[addr]);
    rdMemCnt++;
    ioCnt += 12;

    - if (addr>MAX_MEM || addr<MIN_WB_ADDRESS) {
    + if (addr>MAX_MEM+MEM_TEST_OFF || addr<MIN_WB_ADDRESS) {
    System.out.println("readMem: wrong address: "+addr);
    System.exit(-1);
    }
    if (addr<0) {
    - return 0; // no Simulation of the Wishbone devices
    + return sysRd(addr);
    }

    - return mem[addr];
    + return mem[addr%MAX_MEM];
    }
    void writeMem(int addr, int data) {

    wrMemCnt++;
    ioCnt += 12;

    - if (addr>MAX_MEM || addr<MIN_WB_ADDRESS) {
    + if (addr>MAX_MEM+MEM_TEST_OFF || addr<MIN_WB_ADDRESS) {
    System.out.println("writeMem: wrong address: "+addr);
    System.exit(-1);
    }

    if (addr<0) {
    + sysWr(addr, data);
    return; // no Simulation of the Wishbone devices
    }
    - mem[addr] = data;
    + mem[addr%MAX_MEM] = data;
    }

    int readOpd16u() {
    @@ -298,17 +301,17 @@
    // }
    // }

    - void sysRd() {
    + int sysRd(int addr) {

    - int addr = stack[sp];
    + int val;
    int i;

    try {
    switch (addr) {
    case Const.IO_STATUS:
    - stack[sp] = Const.MSK_UA_TDRE;
    + val = Const.MSK_UA_TDRE;
    if (System.in.available()!=0) {
    - stack[sp] |= Const.MSK_UA_RDRF;
    + val |= Const.MSK_UA_RDRF;
    }
    break;
    case Const.IO_STATUS2:
    @@ -323,13 +326,13 @@
    // } // rdrf
    // }
    // i |= Const.MSK_UA_TDRE; // tdre is alwais true on OutputStream
    - stack[sp] = i;
    + val = i;
    break; case Const.IO_UART: if (System.in.available()!=0) { - stack[sp] = System.in.read(); + val = System.in.read(); } else { - stack[sp] = '_'; + val = '_'; } break; case Const.IO_UART2: @@ -339,31 +342,33 @@ // } catch (IOException e) { // e.printStackTrace(); // } - stack[sp] = i; + val = i; break; case Const.IO_CNT: - stack[sp] = ioCnt; + val = ioCnt; break; case Const.IO_US_CNT: - stack[sp] = usCnt(); + val = usCnt(); break; case 1234: // trigger cache debug output // cache.rawData(); // cache.resetCnt(); + val = 0; break; default: - stack[sp] = 0; + val = 0; } } catch (Exception e) { System.out.println(e); + val = 0; } + + return val; } - void sysWr() { + void sysWr(int addr, int val) { - int addr = stack[sp--]; - int val = stack[sp--]; switch (addr) { case Const.IO_UART: if (log) System.out.print("\t->"); @@ -1426,24 +1431,19 @@ noim(208); break; case 209 : // jopsys_rd - sysRd(); + ref = stack[sp--]; + stack[++sp] = readMem(ref); break; case 210 : // jopsys_wr - sysWr(); + ref = stack[sp--]; + val = stack[sp--]; + writeMem(ref, val); break; case 211 : // jopsys_rdmem - if (stack[sp]<0) { - sysRd(); - break; - } ref = stack[sp--]; stack[++sp] = readMem(ref); break; case 212 : // jopsys_wrmem - if (stack[sp]<0) { - sysWr(); - break; - } ref = stack[sp--]; val = stack[sp--]; writeMem(ref, val);

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