OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_61/] [or1ksim/] [sim-config.c] - Diff between revs 78 and 103

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 78 Rev 103
Line 17... Line 17...
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 
/* Simulator configuration. Eventually this one will be a lot bigger. */
/* Simulator configuration. Eventually this one will be a lot bigger. */
 
 
 
#include <stdio.h>
#include "sim-config.h"
#include "sim-config.h"
#include "abstract.h"
#include "abstract.h"
 
#include "spr_defs.h"
 
 
struct config config;
struct config config;
 
 
void init_defconfig()
void init_defconfig()
{
{
        printf("Machine initialization...\n");
        unsigned long val;
 
 
        memset(&config, 0, sizeof(config));
        memset(&config, 0, sizeof(config));
        config.dc.tagtype = VIRTUAL;
        config.dc.tagtype = VIRTUAL;
        printf("Data cache tag: %s\n", config.dc.tagtype == VIRTUAL ? "virtual" : "physical");
 
        config.ic.tagtype = VIRTUAL;
        config.ic.tagtype = VIRTUAL;
        printf("Insn cache tag: %s\n", config.ic.tagtype == VIRTUAL ? "virtual" : "physical");
        config.bp.bpb_sim = 1;
 
        config.bp.btic_sim = 1;
        config.clkcycle_ns = 4; /* 4 for 4ns (250MHz) */
        config.clkcycle_ns = 4; /* 4 for 4ns (250MHz) */
        printf("Clock cycle: %d ns\n", config.clkcycle_ns);
 
        config.uarts[0].rxfile = "/tmp/uart0.rx";
        config.uarts[0].rxfile = "/tmp/uart0.rx";
        config.uarts[0].txfile = "/tmp/uart0.tx";
        config.uarts[0].txfile = "/tmp/uart0.tx";
        config.uarts[0].baseaddr = 0x80000000;
        config.uarts[0].baseaddr = 0x80000000;
        config.ram.startaddr = MEMORY_START;
        config.ram.startaddr = MEMORY_START;
        config.ram.endaddr = MEMORY_START + MEMORY_LEN;
        config.ram.endaddr = MEMORY_START + MEMORY_LEN;
 
        config.simdebug = 0;
 
        config.iprompt = 0;
 
        config.dependstats = 1;
 
        config.dependency = 1;
 
        config.history = 1;
 
        config.superscalar = 1;
 
        config.slp = 1;
 
 
 
        mtspr(SPR_VR, SPR_VR_VER & 0x1200);
 
 
 
        val = SPR_UPR_UP | SPR_UPR_DCP | SPR_UPR_ICP | SPR_UPR_DMP |
 
        SPR_UPR_IMP | SPR_UPR_OB32P | SPR_UPR_DUP | SPR_UPR_PICP |
 
        SPR_UPR_PMP | SPR_UPR_TTP;
 
 
 
        mtspr(SPR_UPR, val);
 
}
 
 
 
int parse_args(int argc, char *argv[])
 
{
 
        unsigned long val;
 
 
 
        argv++; argc--;
 
        while (argc) {
 
                if (argc && (*argv[0] != '-'))
 
                        return 0;
 
 
 
                if (strcmp(*argv, "-i") == 0) {
 
                        config.iprompt = 1;
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-v") == 0) {
 
                        version();
 
                        exit(0);
 
                } else
 
                if (strcmp(*argv, "-bpb") == 0) {
 
                        config.bp.bpb_sim = 0;
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-hazards") == 0) {
 
                        config.dependstats = 0;
 
                        config.dependency = 0;
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-history") == 0) {
 
                        config.history = 0;
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-superscalar") == 0) {
 
                        config.superscalar = 0;
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-fast") == 0) {
 
                        config.superscalar = 0;
 
                        config.history = 0;
 
                        config.dependstats = 0;
 
                        config.dependency = 0;
 
                        config.bp.bpb_sim = 0;
 
                        config.bp.btic_sim = 0;
 
                        config.slp = 0;
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-btic") == 0) {
 
                        config.bp.btic_sim = 0;
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-upr") == 0) {
 
                        argv++; argc--;
 
                        val = strtoul(*argv, NULL, 0);
 
                        mtspr(SPR_UPR, val);
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-ver") == 0) {
 
                        argv++; argc--;
 
                        val = strtoul(*argv, NULL, 0);
 
                        setsprbits(SPR_VR, SPR_VR_VER, val);
 
                        argv++; argc--;
 
                } else
 
                if (strcmp(*argv, "-rev") == 0) {
 
                        argv++; argc--;
 
                        val = strtoul(*argv, NULL, 0);
 
                        setsprbits(SPR_VR, SPR_VR_REV, val);
 
                        argv++; argc--;
 
                } else {
 
                        printf("Unknown option: %s\n", *argv);
 
                        return 1;
 
                }
 
        }
 
 
 
        if (!argc)
 
                return 0;
 
 
 
        return 0;
 
}
 
 
 
void print_config()
 
{
 
        printf("Machine initialization...\n");
 
        if (getsprbits(SPR_UPR, SPR_UPR_DCP))
 
                printf("Data cache tag: %s\n", config.dc.tagtype == VIRTUAL ? "virtual" : "physical");
 
        else
 
                printf("No data cache.\n");
 
        if (getsprbits(SPR_UPR, SPR_UPR_ICP))
 
                printf("Insn cache tag: %s\n", config.ic.tagtype == VIRTUAL ? "virtual" : "physical");
 
        else
 
                printf("No instruction cache.\n");
 
        if (config.bp.bpb_sim)
 
                printf("BPB simulation on.\n");
 
        else
 
                printf("BPB simulation off.\n");
 
        if (config.bp.btic_sim)
 
                printf("BTIC simulation on.\n");
 
        else
 
                printf("BTIC simulation off.\n");
 
        printf("Clock cycle: %d ns\n", config.clkcycle_ns);
        printf("RAM: 0x%x to ", config.ram.startaddr);
        printf("RAM: 0x%x to ", config.ram.startaddr);
        printf("0x%x (", config.ram.endaddr);
        printf("0x%x (", config.ram.endaddr);
        printf("%d KB)\n\n", (config.ram.endaddr - config.ram.startaddr) / 1024);
        printf("%d KB)\n\n", (config.ram.endaddr - config.ram.startaddr) / 1024);
        config.simdebug = 0;
        if (config.simdebug)
        printf("simdebug off\n");
                printf("simdebug on, ");
 
        else
 
                printf("simdebug off, ");
 
        if (config.iprompt)
 
                printf("interactive prompt on\n");
 
        else
 
                printf("interactive prompt off\n");
}
}
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.