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