OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/or1ksim/testsuite/test-code-or1k/loop
    from Rev 97 to Rev 98
    Reverse comparison

Rev 97 → Rev 98

/Makefile.in
15,7 → 15,7
 
@SET_MAKE@
 
# Makefile.am for or1ksim OR1K test program: loop
# Makefile.am for or1ksim OR1K various loop test programs.
 
# Copyright (C) Embecosm Limited, 2010
 
58,7 → 58,7
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
check_PROGRAMS = loop$(EXEEXT)
check_PROGRAMS = loop$(EXEEXT) loop-init$(EXEEXT) loop-report$(EXEEXT)
subdir = loop
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
78,6 → 78,19
loop_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(loop_LDFLAGS) \
$(LDFLAGS) -o $@
am_loop_init_OBJECTS = loop-init.$(OBJEXT)
loop_init_OBJECTS = $(am_loop_init_OBJECTS)
loop_init_DEPENDENCIES = ../except/except.lo ../support/libsupport.la
loop_init_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(loop_init_LDFLAGS) $(LDFLAGS) -o $@
am_loop_report_OBJECTS = loop-report.$(OBJEXT)
loop_report_OBJECTS = $(am_loop_report_OBJECTS)
loop_report_DEPENDENCIES = ../except/except.lo \
../support/libsupport.la
loop_report_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(loop_report_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/../../depcomp
am__depfiles_maybe = depfiles
91,8 → 104,9
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(loop_SOURCES)
DIST_SOURCES = $(loop_SOURCES)
SOURCES = $(loop_SOURCES) $(loop_init_SOURCES) $(loop_report_SOURCES)
DIST_SOURCES = $(loop_SOURCES) $(loop_init_SOURCES) \
$(loop_report_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
149,6 → 163,7
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
210,11 → 225,27
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
 
# Simple loop
loop_SOURCES = loop.c
loop_LDFLAGS = -T$(srcdir)/../default.ld
loop_LDADD = ../except/except.lo \
../support/libsupport.la
 
 
# Loop with initialization
loop_init_SOURCES = loop-init.c
loop_init_LDFLAGS = -T$(srcdir)/../default.ld
loop_init_LDADD = ../except/except.lo \
../support/libsupport.la
 
 
# Loop with reporting
loop_report_SOURCES = loop-report.c
loop_report_LDFLAGS = -T$(srcdir)/../default.ld
loop_report_LDADD = ../except/except.lo \
../support/libsupport.la
 
all: all-am
 
.SUFFIXES:
261,6 → 292,12
loop$(EXEEXT): $(loop_OBJECTS) $(loop_DEPENDENCIES)
@rm -f loop$(EXEEXT)
$(loop_LINK) $(loop_OBJECTS) $(loop_LDADD) $(LIBS)
loop-init$(EXEEXT): $(loop_init_OBJECTS) $(loop_init_DEPENDENCIES)
@rm -f loop-init$(EXEEXT)
$(loop_init_LINK) $(loop_init_OBJECTS) $(loop_init_LDADD) $(LIBS)
loop-report$(EXEEXT): $(loop_report_OBJECTS) $(loop_report_DEPENDENCIES)
@rm -f loop-report$(EXEEXT)
$(loop_report_LINK) $(loop_report_OBJECTS) $(loop_report_LDADD) $(LIBS)
 
mostlyclean-compile:
-rm -f *.$(OBJEXT)
268,6 → 305,8
distclean-compile:
-rm -f *.tab.c
 
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop-init.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop-report.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop.Po@am__quote@
 
.c.o:
/loop-report.c
0,0 → 1,265
/* loop-report.c. Or1ksim simple C loop program which reports changes.
 
Copyright (C) 1999-2006 OpenCores
Copyright (C) 2010 Embecosm Limited
 
Contributors various OpenCores participants
Contributor Jeremy Bennett <jeremy.bennett@embecosm.com>
 
This file is part of OpenRISC 1000 Architectural Simulator.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.
 
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
 
You should have received a copy of the GNU General Public License along
with this program. If not, see <http: www.gnu.org/licenses/>. */
 
/* ----------------------------------------------------------------------------
This code is commented throughout for use with Doxygen.
--------------------------------------------------------------------------*/
 
/* A program which initializes memory and SPR, then just loops. Used in
testing libor1ksim JTAG read functionality. */
 
#include "support.h"
#include "spr-defs.h"
 
/*---------------------------------------------------------------------------*/
/*!main program
 
We have two blocks of memory of interest (0x00000000 - 0x00200000,
0xffe0000 - 0xffffffff) and two SPRs of interest (MACLO, 0x2801 and MACHI,
0x2802). We monitor for any changes in the first 16 and last 16 bytes of
each memory block, the middle 16 of the first memory block and both SPRs,
having first initialized them to zero.
 
We have to be careful about strobing. We sit in a loop looking for changes,
but only print out the changes after we have had one loop with no changes.
 
@return The return code from the program (of no interest to us). */
/*---------------------------------------------------------------------------*/
int
main ()
{
/* Useful constants */
unsigned char *b0_start_addr = (unsigned char *) 0x00000000;
unsigned char *b0_mid_addr = (unsigned char *) 0x00100000;
unsigned char *b0_end_addr = (unsigned char *) 0x001ffff0;
unsigned char *b1_start_addr = (unsigned char *) 0xffe00000;
unsigned char *b1_end_addr = (unsigned char *) 0xfffffff0;
/* General purpose */
unsigned long int r;
int i;
 
/* Values remembered */
unsigned long int maclo;
unsigned long int machi;
 
unsigned char b0_start[16];
unsigned char b0_mid[16];
unsigned char b0_end[16];
unsigned char b1_start[16];
unsigned char b1_end[16];
 
/* Flags indicating change */
int maclo_f;
int machi_f;
 
int b0_start_f[16];
int b0_mid_f[16];
int b0_end_f[16];
int b1_start_f[16];
int b1_end_f[16];
 
int changed_since_print;
 
/* Set the SR to have SUMRA bit set, so that we can access certain regs in
user mode. */
r = mfspr (SPR_SR);
mtspr (SPR_SR, r | SPR_SR_SUMRA);
 
/* Initialize remembered values and flags */
maclo = 0;
machi = 0;
 
maclo_f = 0;
machi_f = 0;
 
for (i = 0; i < 16; i++)
{
b0_start[i] = 0;
b0_mid[i] = 0;
b0_end[i] = 0;
b1_start[i] = 0;
b1_end[i] = 0;
 
b0_start_f[i] = 0;
b0_mid_f[i] = 0;
b0_end_f[i] = 0;
b1_start_f[i] = 0;
b1_end_f[i] = 0;
}
 
/* Set the values in SPR and memory */
mtspr (SPR_MACLO, maclo);
mtspr (SPR_MACHI, machi);
 
for (i = 0; i < 16; i++)
{
b0_start_addr[i] = b0_start[i];
b0_mid_addr[i] = b0_mid[i];
b0_end_addr[i] = b0_end[i];
b1_start_addr[i] = b1_start[i];
b1_end_addr[i] = b1_end[i];
}
 
/* Loop for ever checking if any values have changed. */
changed_since_print = 0;
 
while (1)
{
int changed_this_loop = 0;
 
/* Check SPRs */
if (mfspr (SPR_MACLO) != maclo)
{
maclo = mfspr (SPR_MACLO);
maclo_f = 1;
changed_since_print = 1;
changed_this_loop = 1;
}
 
if (mfspr (SPR_MACHI) != machi)
{
machi = mfspr (SPR_MACHI);
machi_f = 1;
changed_since_print = 1;
changed_this_loop = 1;
}
 
/* Check memory blocks */
for (i = 0; i < 16; i++)
{
if (b0_start_addr[i] != b0_start[i])
{
b0_start[i] = b0_start_addr[i];
b0_start_f[i] = 1;
changed_since_print = 1;
changed_this_loop = 1;
}
 
if (b0_mid_addr[i] != b0_mid[i])
{
b0_mid[i] = b0_mid_addr[i];
b0_mid_f[i] = 1;
changed_since_print = 1;
changed_this_loop = 1;
}
 
if (b0_end_addr[i] != b0_end[i])
{
b0_end[i] = b0_end_addr[i];
b0_end_f[i] = 1;
changed_since_print = 1;
changed_this_loop = 1;
}
 
if (b1_start_addr[i] != b1_start[i])
{
b1_start[i] = b1_start_addr[i];
b1_start_f[i] = 1;
changed_since_print = 1;
changed_this_loop = 1;
}
 
if (b1_end_addr[i] != b1_end[i])
{
b1_end[i] = b1_end_addr[i];
b1_end_f[i] = 1;
changed_since_print = 1;
changed_this_loop = 1;
}
}
 
/* Only print out if there have been changes since the last print, but
not during this loop. This makes sure we don't strobe with writing
from JTAG. */
if (changed_since_print && !changed_this_loop)
{
/* Print any changed SPRs */
if (maclo_f)
{
printf ("New MACLO 0x%08lx\n", maclo);
maclo_f = 0;
}
 
if (machi_f)
{
printf ("New MACHI 0x%08lx\n", machi);
machi_f = 0;
}
 
/* Print any changed memory. Each in its own loop to give ascending
order. */
for (i = 0; i < 16; i++)
{
if (b0_start_f[i])
{
printf ("New byte at 0x%08lx = 0x%02x\n",
(unsigned long int) &b0_start_addr[i], b0_start[i]);
b0_start_f[i] = 0;
}
}
 
for (i = 0; i < 16; i++)
{
if (b0_mid_f[i])
{
printf ("New byte at 0x%08lx = 0x%02x\n",
(unsigned long int) &b0_mid_addr[i], b0_mid[i]);
b0_mid_f[i] = 0;
}
}
 
for (i = 0; i < 16; i++)
{
if (b0_end_f[i])
{
printf ("New byte at 0x%08lx = 0x%02x\n",
(unsigned long int) &b0_end_addr[i], b0_end[i]);
b0_end_f[i] = 0;
}
}
 
for (i = 0; i < 16; i++)
{
if (b1_start_f[i])
{
printf ("New byte at 0x%08lx = 0x%02x\n",
(unsigned long int) &b1_start_addr[i], b1_start[i]);
b1_start_f[i] = 0;
}
}
 
for (i = 0; i < 16; i++)
{
if (b1_end_f[i])
{
printf ("New byte at 0x%08lx = 0x%02x\n",
(unsigned long int) &b1_end_addr[i], b1_end[i]);
b1_end_f[i] = 0;
}
}
 
changed_since_print = 0; /* Start it all again */
}
}
} /* main () */
loop-report.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: Makefile.am =================================================================== --- Makefile.am (revision 97) +++ Makefile.am (revision 98) @@ -1,4 +1,4 @@ -# Makefile.am for or1ksim OR1K test program: loop +# Makefile.am for or1ksim OR1K various loop test programs. # Copyright (C) Embecosm Limited, 2010 @@ -24,9 +24,15 @@ # ----------------------------------------------------------------------------- -# A test program which just loops. -check_PROGRAMS = loop +# Test programs which just loop. One does nothing, one initializes certain +# addresses and SPR's (for testing reading through JTAG), one reports certain +# addresses and SPR's which have been changed (for testing writing through +# JTAG). +check_PROGRAMS = loop \ + loop-init \ + loop-report +# Simple loop loop_SOURCES = loop.c loop_LDFLAGS = -T$(srcdir)/../default.ld @@ -33,3 +39,19 @@ loop_LDADD = ../except/except.lo \ ../support/libsupport.la + +# Loop with initialization +loop_init_SOURCES = loop-init.c + +loop_init_LDFLAGS = -T$(srcdir)/../default.ld + +loop_init_LDADD = ../except/except.lo \ + ../support/libsupport.la + +# Loop with reporting +loop_report_SOURCES = loop-report.c + +loop_report_LDFLAGS = -T$(srcdir)/../default.ld + +loop_report_LDADD = ../except/except.lo \ + ../support/libsupport.la
/loop-init.c
0,0 → 1,99
/* loop-init.c. Or1ksim simple C loop program which initializes data.
 
Copyright (C) 1999-2006 OpenCores
Copyright (C) 2010 Embecosm Limited
 
Contributors various OpenCores participants
Contributor Jeremy Bennett <jeremy.bennett@embecosm.com>
 
This file is part of OpenRISC 1000 Architectural Simulator.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.
 
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
 
You should have received a copy of the GNU General Public License along
with this program. If not, see <http: www.gnu.org/licenses/>. */
 
/* ----------------------------------------------------------------------------
This code is commented throughout for use with Doxygen.
--------------------------------------------------------------------------*/
 
/* A program which initializes memory and SPR, then just loops. Used in
testing libor1ksim JTAG read functionality. */
 
#include "support.h"
#include "spr-defs.h"
 
int
main ()
{
unsigned long int r;
int i;
 
/* Set the SR to have SUMRA bit set, so that we can access certain regs in
user mode. */
r = mfspr (SPR_SR);
mtspr (SPR_SR, r | SPR_SR_SUMRA);
 
/* Set the MACLO and MACHI regs */
mtspr (SPR_MACLO, 0xdeadbeef);
mtspr (SPR_MACHI, 0xcafebabe);
 
/* Set main memory starting at 0x100000. Set at later intervals 2^16 bytes
further on as well. */
for (i = 0; i < 16; i++)
{
unsigned char *block0 = (unsigned char *) (0x100000 + i);
unsigned char *block1 = (unsigned char *) (0x110000 + i);
unsigned char *block2 = (unsigned char *) (0x120000 + i);
 
*block0 = 16 + i;
*block1 = 32 + i;
*block2 = 48 + i;
}
 
/* Set the top of each memory block and the bottom of the second memory
block to a defined sequence. */
unsigned char *mem1top = (unsigned char *) (0x001ffff8);
unsigned char *mem2bot = (unsigned char *) (0xffe00000);
unsigned char *mem2top = (unsigned char *) (0xfffffff8);
 
mem1top[0] = 0xde;
mem1top[1] = 0xad;
mem1top[2] = 0xbe;
mem1top[3] = 0xef;
mem1top[4] = 0xca;
mem1top[5] = 0xfe;
mem1top[6] = 0xba;
mem1top[7] = 0xbe;
 
mem2bot[0] = 0xde;
mem2bot[1] = 0xad;
mem2bot[2] = 0xbe;
mem2bot[3] = 0xef;
mem2bot[4] = 0xca;
mem2bot[5] = 0xfe;
mem2bot[6] = 0xba;
mem2bot[7] = 0xbe;
 
mem2top[0] = 0xde;
mem2top[1] = 0xad;
mem2top[2] = 0xbe;
mem2top[3] = 0xef;
mem2top[4] = 0xca;
mem2top[5] = 0xfe;
mem2top[6] = 0xba;
mem2top[7] = 0xbe;
 
/* Loop for ever doing stuff */
while (1)
{
}
} /* main () */
loop-init.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property

powered by: WebSVN 2.1.0

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