summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2009-10-09 19:50:33 +0000
committerTill Straumann <strauman@slac.stanford.edu>2009-10-09 19:50:33 +0000
commit7cb7a5ef09718f8efab7fb67aa04618ec5f39d92 (patch)
treed5bd68e9639fa6090a3d770dbbba142749c88c95 /c
parent2009-10-09 Sebastian Huber <Sebastian.Huber@embedded-brains.de> (diff)
downloadrtems-7cb7a5ef09718f8efab7fb67aa04618ec5f39d92.tar.bz2
2009-10-09 Till Straumann <strauman@slac.stanford.edu>
* shared/vmeUniverse/vmeUniverse.c: print message and let vmeUniverseIntLoopbackTst() fail if odd-numbered vector is used (cannot program the chip to reply with such a vector).
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/ChangeLog7
-rw-r--r--c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c9
2 files changed, 15 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/ChangeLog b/c/src/lib/libbsp/ChangeLog
index a3e30e9f86..a5fcee78ff 100644
--- a/c/src/lib/libbsp/ChangeLog
+++ b/c/src/lib/libbsp/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-09 Till Straumann <strauman@slac.stanford.edu>
+
+ * shared/vmeUniverse/vmeUniverse.c: print message and
+ let vmeUniverseIntLoopbackTst() fail if odd-numbered
+ vector is used (cannot program the chip to reply with
+ such a vector).
+
2009-04-28 Chris Johns <chrisj@rtems.org>
* Makefile.am: Add bspinit.c, a common Init task that manages
diff --git a/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c b/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c
index 3858dd9454..3f5683f084 100644
--- a/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c
+++ b/c/src/lib/libbsp/shared/vmeUniverse/vmeUniverse.c
@@ -2377,8 +2377,15 @@ LoopbackTstArgs a;
CHECK_DFLT_BASE(base);
/* arg check */
- if ( level < 1 || level > 7 || vector > 255 )
+ if ( level < 1 || level > 7 || vector > 255 ) {
+ fprintf(stderr,"Invalid level or vector argument\n");
return -1;
+ }
+
+ if ( (vector & 1) ) {
+ fprintf(stderr,"Software interrupts can only use even-numbered vectors, sorry.\n");
+ return -1;
+ }
if ( UNIV_REV(base) < 2 && vector != 0 ) {
fprintf(stderr,