Instruction cache for leon3
Jerry Needell
jerry.needell at unh.edu
Mon Jul 30 15:56:36 UTC 2007
Joel and all,
After a great deal of head scratching and and very odd behavior, I have
found a very simple problem that needs to be corrected:
in c/src/lib/libcpu/sparc/configure.ac the line
AM_CONDITIONAL(has_instruction_cache, test "$RTEMS_CPU_MODEL" = "leon1" \
|| test "$RTEMS_CPU_MODEL" = "leon2" )
should be modified to also allow for the instruction cache in the leon3!!
For anyone interested, it took me a very long time to trace this
problem, which manifested itself very intermittently when I would load a
new interrupt vector via rtems_interrupt_catch or set_vector. Since the
vector is inserted in the trap table, the instruction cache must be
flushed but since the leon3 was not identified as having an instruction
cache, the function to flush it was dummied out! The result was very
unpredictable but often resulted in an unexpected "ta 0" on the first
occurrence of the newly installed interrupt since the trap table is
populated with "ta 0" handlers by default and while the new vector was
loader into table, the default vector was still in the cache from a
previous execution of a nearby interrupt.
Do you know of any other area that should be scrubbed for similar problems?
- Jerry
More information about the users
mailing list