Compare commits

..

1 Commits

Author SHA1 Message Date
cvs2git
7dd27391ef This commit was manufactured by cvs2svn to create tag 'rtems-3-5-12'.
Sprout from master 1996-03-21 20:20:40 UTC Joel Sherrill <joel.sherrill@OARcorp.com> 'minor mods to get to compile locally'
Delete:
    c/build-tools/README
    c/build-tools/cklength.c
    c/build-tools/eolstrip.c
    c/build-tools/packhex.c
    c/build-tools/unhex.c
    c/src/exec/libcsupport/include/clockdrv.h
    c/src/exec/libcsupport/include/console.h
    c/src/exec/libcsupport/include/iosupp.h
    c/src/exec/libcsupport/include/ringbuf.h
    c/src/exec/libcsupport/include/rtems/assoc.h
    c/src/exec/libcsupport/include/rtems/error.h
    c/src/exec/libcsupport/include/rtems/libcsupport.h
    c/src/exec/libcsupport/include/rtems/libio.h
    c/src/exec/libcsupport/include/spurious.h
    c/src/exec/libcsupport/include/sys/utsname.h
    c/src/exec/libcsupport/include/timerdrv.h
    c/src/exec/libcsupport/include/vmeintr.h
    c/src/exec/libcsupport/src/README
    c/src/exec/libcsupport/src/__brk.c
    c/src/exec/libcsupport/src/__gettod.c
    c/src/exec/libcsupport/src/__times.c
    c/src/exec/libcsupport/src/assoc.c
    c/src/exec/libcsupport/src/error.c
    c/src/exec/libcsupport/src/hosterr.c
    c/src/exec/libcsupport/src/libio.c
    c/src/exec/libcsupport/src/malloc.c
    c/src/exec/libcsupport/src/newlibc.c
    c/src/exec/libcsupport/src/no_libc.c
    c/src/exec/libcsupport/src/unixlibc.c
    c/src/exec/libcsupport/src/utsname.c
    c/src/exec/posix/base/aio.h
    c/src/exec/posix/base/devctl.h
    c/src/exec/posix/base/intr.h
    c/src/exec/posix/base/limits.h
    c/src/exec/posix/base/mqueue.h
    c/src/exec/posix/base/pthread.h
    c/src/exec/posix/base/sched.h
    c/src/exec/posix/base/semaphore.h
    c/src/exec/posix/base/unistd.h
    c/src/exec/posix/headers/cancel.h
    c/src/exec/posix/headers/cond.h
    c/src/exec/posix/headers/condmp.h
    c/src/exec/posix/headers/intr.h
    c/src/exec/posix/headers/key.h
    c/src/exec/posix/headers/mqueue.h
    c/src/exec/posix/headers/mqueuemp.h
    c/src/exec/posix/headers/mutex.h
    c/src/exec/posix/headers/mutexmp.h
    c/src/exec/posix/headers/priority.h
    c/src/exec/posix/headers/pthread.h
    c/src/exec/posix/headers/pthreadmp.h
    c/src/exec/posix/headers/semaphore.h
    c/src/exec/posix/headers/semaphoremp.h
    c/src/exec/posix/headers/threadsup.h
    c/src/exec/posix/headers/time.h
    c/src/exec/posix/include/aio.h
    c/src/exec/posix/include/devctl.h
    c/src/exec/posix/include/intr.h
    c/src/exec/posix/include/limits.h
    c/src/exec/posix/include/mqueue.h
    c/src/exec/posix/include/pthread.h
    c/src/exec/posix/include/rtems/posix/cancel.h
    c/src/exec/posix/include/rtems/posix/cond.h
    c/src/exec/posix/include/rtems/posix/condmp.h
    c/src/exec/posix/include/rtems/posix/intr.h
    c/src/exec/posix/include/rtems/posix/key.h
    c/src/exec/posix/include/rtems/posix/mqueue.h
    c/src/exec/posix/include/rtems/posix/mqueuemp.h
    c/src/exec/posix/include/rtems/posix/mutex.h
    c/src/exec/posix/include/rtems/posix/mutexmp.h
    c/src/exec/posix/include/rtems/posix/priority.h
    c/src/exec/posix/include/rtems/posix/pthread.h
    c/src/exec/posix/include/rtems/posix/pthreadmp.h
    c/src/exec/posix/include/rtems/posix/semaphore.h
    c/src/exec/posix/include/rtems/posix/semaphoremp.h
    c/src/exec/posix/include/rtems/posix/threadsup.h
    c/src/exec/posix/include/rtems/posix/time.h
    c/src/exec/posix/include/sched.h
    c/src/exec/posix/include/semaphore.h
    c/src/exec/posix/include/sys/utsname.h
    c/src/exec/posix/include/unistd.h
    c/src/exec/posix/inline/cond.inl
    c/src/exec/posix/inline/intr.inl
    c/src/exec/posix/inline/key.inl
    c/src/exec/posix/inline/mqueue.inl
    c/src/exec/posix/inline/mutex.inl
    c/src/exec/posix/inline/priority.inl
    c/src/exec/posix/inline/pthread.inl
    c/src/exec/posix/inline/rtems/posix/cond.inl
    c/src/exec/posix/inline/rtems/posix/intr.inl
    c/src/exec/posix/inline/rtems/posix/key.inl
    c/src/exec/posix/inline/rtems/posix/mqueue.inl
    c/src/exec/posix/inline/rtems/posix/mutex.inl
    c/src/exec/posix/inline/rtems/posix/priority.inl
    c/src/exec/posix/inline/rtems/posix/pthread.inl
    c/src/exec/posix/inline/rtems/posix/semaphore.inl
    c/src/exec/posix/inline/semaphore.inl
    c/src/exec/posix/src/aio.c
    c/src/exec/posix/src/cancel.c
    c/src/exec/posix/src/cond.c
    c/src/exec/posix/src/devctl.c
    c/src/exec/posix/src/intr.c
    c/src/exec/posix/src/key.c
    c/src/exec/posix/src/mqueue.c
    c/src/exec/posix/src/mutex.c
    c/src/exec/posix/src/psignal.c
    c/src/exec/posix/src/pthread.c
    c/src/exec/posix/src/sched.c
    c/src/exec/posix/src/semaphore.c
    c/src/exec/posix/src/time.c
    c/src/exec/posix/src/types.c
    c/src/exec/posix/src/unistd.c
    c/src/exec/posix/src/utsname.c
    c/src/exec/posix/sys/utsname.h
    c/src/exec/rtems/include/rtems.h
    c/src/exec/rtems/include/rtems/rtems/asr.h
    c/src/exec/rtems/include/rtems/rtems/attr.h
    c/src/exec/rtems/include/rtems/rtems/clock.h
    c/src/exec/rtems/include/rtems/rtems/dpmem.h
    c/src/exec/rtems/include/rtems/rtems/event.h
    c/src/exec/rtems/include/rtems/rtems/eventmp.h
    c/src/exec/rtems/include/rtems/rtems/eventset.h
    c/src/exec/rtems/include/rtems/rtems/intr.h
    c/src/exec/rtems/include/rtems/rtems/message.h
    c/src/exec/rtems/include/rtems/rtems/modes.h
    c/src/exec/rtems/include/rtems/rtems/mp.h
    c/src/exec/rtems/include/rtems/rtems/msgmp.h
    c/src/exec/rtems/include/rtems/rtems/options.h
    c/src/exec/rtems/include/rtems/rtems/part.h
    c/src/exec/rtems/include/rtems/rtems/partmp.h
    c/src/exec/rtems/include/rtems/rtems/ratemon.h
    c/src/exec/rtems/include/rtems/rtems/region.h
    c/src/exec/rtems/include/rtems/rtems/regionmp.h
    c/src/exec/rtems/include/rtems/rtems/rtemsapi.h
    c/src/exec/rtems/include/rtems/rtems/sem.h
    c/src/exec/rtems/include/rtems/rtems/semmp.h
    c/src/exec/rtems/include/rtems/rtems/signal.h
    c/src/exec/rtems/include/rtems/rtems/signalmp.h
    c/src/exec/rtems/include/rtems/rtems/status.h
    c/src/exec/rtems/include/rtems/rtems/support.h
    c/src/exec/rtems/include/rtems/rtems/taskmp.h
    c/src/exec/rtems/include/rtems/rtems/tasks.h
    c/src/exec/rtems/include/rtems/rtems/timer.h
    c/src/exec/rtems/include/rtems/rtems/types.h
    c/src/exec/rtems/inline/rtems/rtems/asr.inl
    c/src/exec/rtems/inline/rtems/rtems/attr.inl
    c/src/exec/rtems/inline/rtems/rtems/dpmem.inl
    c/src/exec/rtems/inline/rtems/rtems/event.inl
    c/src/exec/rtems/inline/rtems/rtems/eventset.inl
    c/src/exec/rtems/inline/rtems/rtems/message.inl
    c/src/exec/rtems/inline/rtems/rtems/modes.inl
    c/src/exec/rtems/inline/rtems/rtems/options.inl
    c/src/exec/rtems/inline/rtems/rtems/part.inl
    c/src/exec/rtems/inline/rtems/rtems/ratemon.inl
    c/src/exec/rtems/inline/rtems/rtems/region.inl
    c/src/exec/rtems/inline/rtems/rtems/sem.inl
    c/src/exec/rtems/inline/rtems/rtems/status.inl
    c/src/exec/rtems/inline/rtems/rtems/support.inl
    c/src/exec/rtems/inline/rtems/rtems/tasks.inl
    c/src/exec/rtems/inline/rtems/rtems/timer.inl
    c/src/exec/rtems/macros/rtems/rtems/asr.inl
    c/src/exec/rtems/macros/rtems/rtems/attr.inl
    c/src/exec/rtems/macros/rtems/rtems/dpmem.inl
    c/src/exec/rtems/macros/rtems/rtems/event.inl
    c/src/exec/rtems/macros/rtems/rtems/eventset.inl
    c/src/exec/rtems/macros/rtems/rtems/message.inl
    c/src/exec/rtems/macros/rtems/rtems/modes.inl
    c/src/exec/rtems/macros/rtems/rtems/options.inl
    c/src/exec/rtems/macros/rtems/rtems/part.inl
    c/src/exec/rtems/macros/rtems/rtems/ratemon.inl
    c/src/exec/rtems/macros/rtems/rtems/region.inl
    c/src/exec/rtems/macros/rtems/rtems/sem.inl
    c/src/exec/rtems/macros/rtems/rtems/status.inl
    c/src/exec/rtems/macros/rtems/rtems/support.inl
    c/src/exec/rtems/macros/rtems/rtems/tasks.inl
    c/src/exec/rtems/macros/rtems/rtems/timer.inl
    c/src/exec/rtems/src/rtclock.c
    c/src/exec/rtems/src/rtemstimer.c
    c/src/exec/sapi/headers/confdefs.h
    c/src/exec/sapi/include/confdefs.h
    c/src/exec/sapi/include/rtems/config.h
    c/src/exec/sapi/include/rtems/directives.h
    c/src/exec/sapi/include/rtems/extension.h
    c/src/exec/sapi/include/rtems/fatal.h
    c/src/exec/sapi/include/rtems/init.h
    c/src/exec/sapi/include/rtems/io.h
    c/src/exec/sapi/include/rtems/mptables.h
    c/src/exec/sapi/include/rtems/sptables.h
    c/src/exec/sapi/inline/rtems/extension.inl
    c/src/exec/sapi/macros/rtems/extension.inl
    c/src/exec/sapi/src/exinit.c
    c/src/exec/score/cpu/hppa1.1/cpu.c
    c/src/exec/score/cpu/hppa1.1/cpu.h
    c/src/exec/score/cpu/hppa1.1/cpu_asm.h
    c/src/exec/score/cpu/hppa1.1/cpu_asm.s
    c/src/exec/score/cpu/hppa1.1/hppa.h
    c/src/exec/score/cpu/hppa1.1/hppatypes.h
    c/src/exec/score/cpu/hppa1.1/rtems.s
    c/src/exec/score/cpu/powerpc/README
    c/src/exec/score/cpu/powerpc/TODO
    c/src/exec/score/cpu/powerpc/cpu.c
    c/src/exec/score/cpu/powerpc/cpu.h
    c/src/exec/score/cpu/powerpc/cpu_asm.s
    c/src/exec/score/cpu/powerpc/irq_stub.s
    c/src/exec/score/cpu/powerpc/ppc.h
    c/src/exec/score/cpu/powerpc/ppctypes.h
    c/src/exec/score/cpu/powerpc/rtems.s
    c/src/exec/score/include/rtems/debug.h
    c/src/exec/score/include/rtems/score/address.h
    c/src/exec/score/include/rtems/score/apiext.h
    c/src/exec/score/include/rtems/score/bitfield.h
    c/src/exec/score/include/rtems/score/chain.h
    c/src/exec/score/include/rtems/score/context.h
    c/src/exec/score/include/rtems/score/copyrt.h
    c/src/exec/score/include/rtems/score/coremsg.h
    c/src/exec/score/include/rtems/score/coremutex.h
    c/src/exec/score/include/rtems/score/coresem.h
    c/src/exec/score/include/rtems/score/heap.h
    c/src/exec/score/include/rtems/score/interr.h
    c/src/exec/score/include/rtems/score/isr.h
    c/src/exec/score/include/rtems/score/mpci.h
    c/src/exec/score/include/rtems/score/mppkt.h
    c/src/exec/score/include/rtems/score/object.h
    c/src/exec/score/include/rtems/score/objectmp.h
    c/src/exec/score/include/rtems/score/priority.h
    c/src/exec/score/include/rtems/score/stack.h
    c/src/exec/score/include/rtems/score/states.h
    c/src/exec/score/include/rtems/score/sysstate.h
    c/src/exec/score/include/rtems/score/thread.h
    c/src/exec/score/include/rtems/score/threadmp.h
    c/src/exec/score/include/rtems/score/threadq.h
    c/src/exec/score/include/rtems/score/tod.h
    c/src/exec/score/include/rtems/score/tqdata.h
    c/src/exec/score/include/rtems/score/userext.h
    c/src/exec/score/include/rtems/score/watchdog.h
    c/src/exec/score/include/rtems/score/wkspace.h
    c/src/exec/score/include/rtems/system.h
    c/src/exec/score/inline/rtems/score/address.inl
    c/src/exec/score/inline/rtems/score/chain.inl
    c/src/exec/score/inline/rtems/score/coremsg.inl
    c/src/exec/score/inline/rtems/score/coremutex.inl
    c/src/exec/score/inline/rtems/score/coresem.inl
    c/src/exec/score/inline/rtems/score/heap.inl
    c/src/exec/score/inline/rtems/score/isr.inl
    c/src/exec/score/inline/rtems/score/mppkt.inl
    c/src/exec/score/inline/rtems/score/object.inl
    c/src/exec/score/inline/rtems/score/objectmp.inl
    c/src/exec/score/inline/rtems/score/priority.inl
    c/src/exec/score/inline/rtems/score/stack.inl
    c/src/exec/score/inline/rtems/score/states.inl
    c/src/exec/score/inline/rtems/score/sysstate.inl
    c/src/exec/score/inline/rtems/score/thread.inl
    c/src/exec/score/inline/rtems/score/threadmp.inl
    c/src/exec/score/inline/rtems/score/tod.inl
    c/src/exec/score/inline/rtems/score/tqdata.inl
    c/src/exec/score/inline/rtems/score/userext.inl
    c/src/exec/score/inline/rtems/score/watchdog.inl
    c/src/exec/score/inline/rtems/score/wkspace.inl
    c/src/exec/score/macros/rtems/score/README
    c/src/exec/score/macros/rtems/score/address.inl
    c/src/exec/score/macros/rtems/score/chain.inl
    c/src/exec/score/macros/rtems/score/coremsg.inl
    c/src/exec/score/macros/rtems/score/coremutex.inl
    c/src/exec/score/macros/rtems/score/coresem.inl
    c/src/exec/score/macros/rtems/score/heap.inl
    c/src/exec/score/macros/rtems/score/isr.inl
    c/src/exec/score/macros/rtems/score/mppkt.inl
    c/src/exec/score/macros/rtems/score/object.inl
    c/src/exec/score/macros/rtems/score/objectmp.inl
    c/src/exec/score/macros/rtems/score/priority.inl
    c/src/exec/score/macros/rtems/score/stack.inl
    c/src/exec/score/macros/rtems/score/states.inl
    c/src/exec/score/macros/rtems/score/sysstate.inl
    c/src/exec/score/macros/rtems/score/thread.inl
    c/src/exec/score/macros/rtems/score/threadmp.inl
    c/src/exec/score/macros/rtems/score/tod.inl
    c/src/exec/score/macros/rtems/score/tqdata.inl
    c/src/exec/score/macros/rtems/score/userext.inl
    c/src/exec/score/macros/rtems/score/watchdog.inl
    c/src/exec/score/macros/rtems/score/wkspace.inl
    c/src/exec/score/src/coretod.c
    c/src/exec/score/tools/hppa1.1/genoffsets.c
    c/src/lib/include/rtems/assoc.h
    c/src/lib/include/rtems/error.h
    c/src/lib/include/rtems/libcsupport.h
    c/src/lib/include/rtems/libio.h
    c/src/lib/include/sys/utsname.h
    c/src/lib/libbsp/hppa1.1/simhppa/include/bsp.h
    c/src/lib/libbsp/hppa1.1/simhppa/include/coverhd.h
    c/src/lib/libbsp/hppa1.1/simhppa/include/ttydrv.h
    c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/README
    c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/addrconv.c
    c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/getcfg.c
    c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/intr.c
    c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/lock.c
    c/src/lib/libbsp/hppa1.1/simhppa/shmsupp/mpisr.c
    c/src/lib/libbsp/hppa1.1/simhppa/startup/bspclean.c
    c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c
    c/src/lib/libbsp/hppa1.1/simhppa/startup/setvec.c
    c/src/lib/libbsp/hppa1.1/simhppa/times
    c/src/lib/libbsp/hppa1.1/simhppa/tools/print_dump.c
    c/src/lib/libbsp/hppa1.1/simhppa/tty/tty.c
    c/src/lib/libbsp/powerpc/papyrus/README
    c/src/lib/libbsp/powerpc/papyrus/dlentry/dlentry.s
    c/src/lib/libbsp/powerpc/papyrus/flashentry/flashentry.s
    c/src/lib/libbsp/powerpc/papyrus/include/bsp.h
    c/src/lib/libbsp/powerpc/papyrus/include/coverhd.h
    c/src/lib/libbsp/powerpc/papyrus/startup/bspclean.c
    c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c
    c/src/lib/libbsp/powerpc/papyrus/startup/linkcmds
    c/src/lib/libbsp/powerpc/papyrus/startup/setvec.c
    c/src/lib/libbsp/powerpc/papyrus/times
    c/src/lib/libc/utsname.c
    c/src/lib/libcpu/hppa1.1/clock/clock.c
    c/src/lib/libcpu/hppa1.1/runway/runway.h
    c/src/lib/libcpu/hppa1.1/semaphore/semaphore.c
    c/src/lib/libcpu/hppa1.1/semaphore/semaphore.h
    c/src/lib/libcpu/hppa1.1/timer/timer.c
    c/src/lib/libcpu/powerpc/README
    c/src/lib/libcpu/powerpc/ppc403/README
    c/src/lib/libcpu/powerpc/ppc403/clock/clock.c
    c/src/lib/libcpu/powerpc/ppc403/console/console.c
    c/src/lib/libcpu/powerpc/ppc403/timer/timer.c
    c/src/lib/libcpu/powerpc/ppc403/vectors/README
    c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.s
    c/src/lib/libcpu/powerpc/ppc403/vectors/vectors.s
    c/src/lib/libcpu/sparc/include/erc32.h
    c/src/libchip/shmdr/README
    c/src/libchip/shmdr/addlq.c
    c/src/libchip/shmdr/cnvpkt.c
    c/src/libchip/shmdr/dump.c
    c/src/libchip/shmdr/fatal.c
    c/src/libchip/shmdr/getlq.c
    c/src/libchip/shmdr/getpkt.c
    c/src/libchip/shmdr/init.c
    c/src/libchip/shmdr/initlq.c
    c/src/libchip/shmdr/intr.c
    c/src/libchip/shmdr/mpci.h
    c/src/libchip/shmdr/mpisr.c
    c/src/libchip/shmdr/poll.c
    c/src/libchip/shmdr/receive.c
    c/src/libchip/shmdr/retpkt.c
    c/src/libchip/shmdr/send.c
    c/src/libchip/shmdr/setckvec.c
    c/src/libchip/shmdr/shm_driver.h
    c/src/optman/rtems/no-dpmem.c
    c/src/optman/rtems/no-event.c
    c/src/optman/rtems/no-mp.c
    c/src/optman/rtems/no-msg.c
    c/src/optman/rtems/no-part.c
    c/src/optman/rtems/no-region.c
    c/src/optman/rtems/no-rtmon.c
    c/src/optman/rtems/no-sem.c
    c/src/optman/rtems/no-signal.c
    c/src/optman/rtems/no-timer.c
    c/src/optman/sapi/no-ext.c
    c/src/optman/sapi/no-io.c
    cpukit/libcsupport/include/clockdrv.h
    cpukit/libcsupport/include/console.h
    cpukit/libcsupport/include/iosupp.h
    cpukit/libcsupport/include/ringbuf.h
    cpukit/libcsupport/include/rtems/assoc.h
    cpukit/libcsupport/include/rtems/error.h
    cpukit/libcsupport/include/rtems/libcsupport.h
    cpukit/libcsupport/include/rtems/libio.h
    cpukit/libcsupport/include/spurious.h
    cpukit/libcsupport/include/sys/utsname.h
    cpukit/libcsupport/include/timerdrv.h
    cpukit/libcsupport/include/vmeintr.h
    cpukit/libcsupport/src/README
    cpukit/libcsupport/src/__brk.c
    cpukit/libcsupport/src/__gettod.c
    cpukit/libcsupport/src/__times.c
    cpukit/libcsupport/src/assoc.c
    cpukit/libcsupport/src/error.c
    cpukit/libcsupport/src/hosterr.c
    cpukit/libcsupport/src/libio.c
    cpukit/libcsupport/src/malloc.c
    cpukit/libcsupport/src/newlibc.c
    cpukit/libcsupport/src/no_libc.c
    cpukit/libcsupport/src/unixlibc.c
    cpukit/libcsupport/src/utsname.c
    cpukit/libmisc/README
    cpukit/libmisc/monitor/README
    cpukit/libmisc/monitor/mon-command.c
    cpukit/libmisc/monitor/mon-config.c
    cpukit/libmisc/monitor/mon-dname.c
    cpukit/libmisc/monitor/mon-driver.c
    cpukit/libmisc/monitor/mon-extension.c
    cpukit/libmisc/monitor/mon-itask.c
    cpukit/libmisc/monitor/mon-manager.c
    cpukit/libmisc/monitor/mon-monitor.c
    cpukit/libmisc/monitor/mon-mpci.c
    cpukit/libmisc/monitor/mon-object.c
    cpukit/libmisc/monitor/mon-prmisc.c
    cpukit/libmisc/monitor/mon-queue.c
    cpukit/libmisc/monitor/mon-server.c
    cpukit/libmisc/monitor/mon-symbols.c
    cpukit/libmisc/monitor/mon-task.c
    cpukit/libmisc/monitor/monitor.h
    cpukit/libmisc/monitor/symbols.h
    cpukit/libmisc/stackchk/README
    cpukit/libmisc/stackchk/check.c
    cpukit/libmisc/stackchk/internal.h
    cpukit/libmisc/stackchk/stackchk.h
    cpukit/posix/include/aio.h
    cpukit/posix/include/devctl.h
    cpukit/posix/include/intr.h
    cpukit/posix/include/mqueue.h
    cpukit/posix/include/rtems/posix/cancel.h
    cpukit/posix/include/rtems/posix/cond.h
    cpukit/posix/include/rtems/posix/condmp.h
    cpukit/posix/include/rtems/posix/intr.h
    cpukit/posix/include/rtems/posix/key.h
    cpukit/posix/include/rtems/posix/mqueue.h
    cpukit/posix/include/rtems/posix/mqueuemp.h
    cpukit/posix/include/rtems/posix/mutex.h
    cpukit/posix/include/rtems/posix/mutexmp.h
    cpukit/posix/include/rtems/posix/priority.h
    cpukit/posix/include/rtems/posix/pthread.h
    cpukit/posix/include/rtems/posix/pthreadmp.h
    cpukit/posix/include/rtems/posix/semaphore.h
    cpukit/posix/include/rtems/posix/semaphoremp.h
    cpukit/posix/include/rtems/posix/threadsup.h
    cpukit/posix/include/rtems/posix/time.h
    cpukit/posix/include/sched.h
    cpukit/posix/include/semaphore.h
    cpukit/posix/inline/rtems/posix/cond.inl
    cpukit/posix/inline/rtems/posix/intr.inl
    cpukit/posix/inline/rtems/posix/key.inl
    cpukit/posix/inline/rtems/posix/mqueue.inl
    cpukit/posix/inline/rtems/posix/mutex.inl
    cpukit/posix/inline/rtems/posix/priority.inl
    cpukit/posix/inline/rtems/posix/pthread.inl
    cpukit/posix/inline/rtems/posix/semaphore.inl
    cpukit/posix/src/aio.c
    cpukit/posix/src/cancel.c
    cpukit/posix/src/cond.c
    cpukit/posix/src/devctl.c
    cpukit/posix/src/intr.c
    cpukit/posix/src/key.c
    cpukit/posix/src/mqueue.c
    cpukit/posix/src/mutex.c
    cpukit/posix/src/psignal.c
    cpukit/posix/src/pthread.c
    cpukit/posix/src/sched.c
    cpukit/posix/src/semaphore.c
    cpukit/posix/src/time.c
    cpukit/posix/src/types.c
    cpukit/rtems/include/rtems.h
    cpukit/rtems/include/rtems/rtems/asr.h
    cpukit/rtems/include/rtems/rtems/attr.h
    cpukit/rtems/include/rtems/rtems/clock.h
    cpukit/rtems/include/rtems/rtems/dpmem.h
    cpukit/rtems/include/rtems/rtems/event.h
    cpukit/rtems/include/rtems/rtems/eventmp.h
    cpukit/rtems/include/rtems/rtems/eventset.h
    cpukit/rtems/include/rtems/rtems/intr.h
    cpukit/rtems/include/rtems/rtems/message.h
    cpukit/rtems/include/rtems/rtems/modes.h
    cpukit/rtems/include/rtems/rtems/mp.h
    cpukit/rtems/include/rtems/rtems/msgmp.h
    cpukit/rtems/include/rtems/rtems/options.h
    cpukit/rtems/include/rtems/rtems/part.h
    cpukit/rtems/include/rtems/rtems/partmp.h
    cpukit/rtems/include/rtems/rtems/ratemon.h
    cpukit/rtems/include/rtems/rtems/region.h
    cpukit/rtems/include/rtems/rtems/regionmp.h
    cpukit/rtems/include/rtems/rtems/rtemsapi.h
    cpukit/rtems/include/rtems/rtems/sem.h
    cpukit/rtems/include/rtems/rtems/semmp.h
    cpukit/rtems/include/rtems/rtems/signal.h
    cpukit/rtems/include/rtems/rtems/signalmp.h
    cpukit/rtems/include/rtems/rtems/status.h
    cpukit/rtems/include/rtems/rtems/support.h
    cpukit/rtems/include/rtems/rtems/taskmp.h
    cpukit/rtems/include/rtems/rtems/tasks.h
    cpukit/rtems/include/rtems/rtems/timer.h
    cpukit/rtems/include/rtems/rtems/types.h
    cpukit/rtems/inline/rtems/rtems/asr.inl
    cpukit/rtems/inline/rtems/rtems/attr.inl
    cpukit/rtems/inline/rtems/rtems/dpmem.inl
    cpukit/rtems/inline/rtems/rtems/event.inl
    cpukit/rtems/inline/rtems/rtems/eventset.inl
    cpukit/rtems/inline/rtems/rtems/message.inl
    cpukit/rtems/inline/rtems/rtems/modes.inl
    cpukit/rtems/inline/rtems/rtems/options.inl
    cpukit/rtems/inline/rtems/rtems/part.inl
    cpukit/rtems/inline/rtems/rtems/ratemon.inl
    cpukit/rtems/inline/rtems/rtems/region.inl
    cpukit/rtems/inline/rtems/rtems/sem.inl
    cpukit/rtems/inline/rtems/rtems/status.inl
    cpukit/rtems/inline/rtems/rtems/support.inl
    cpukit/rtems/inline/rtems/rtems/tasks.inl
    cpukit/rtems/inline/rtems/rtems/timer.inl
    cpukit/rtems/macros/rtems/rtems/asr.inl
    cpukit/rtems/macros/rtems/rtems/attr.inl
    cpukit/rtems/macros/rtems/rtems/dpmem.inl
    cpukit/rtems/macros/rtems/rtems/event.inl
    cpukit/rtems/macros/rtems/rtems/eventset.inl
    cpukit/rtems/macros/rtems/rtems/message.inl
    cpukit/rtems/macros/rtems/rtems/modes.inl
    cpukit/rtems/macros/rtems/rtems/options.inl
    cpukit/rtems/macros/rtems/rtems/part.inl
    cpukit/rtems/macros/rtems/rtems/ratemon.inl
    cpukit/rtems/macros/rtems/rtems/region.inl
    cpukit/rtems/macros/rtems/rtems/sem.inl
    cpukit/rtems/macros/rtems/rtems/status.inl
    cpukit/rtems/macros/rtems/rtems/support.inl
    cpukit/rtems/macros/rtems/rtems/tasks.inl
    cpukit/rtems/macros/rtems/rtems/timer.inl
    cpukit/rtems/src/dpmem.c
    cpukit/rtems/src/event.c
    cpukit/rtems/src/eventmp.c
    cpukit/rtems/src/intr.c
    cpukit/rtems/src/mp.c
    cpukit/rtems/src/msg.c
    cpukit/rtems/src/msgmp.c
    cpukit/rtems/src/part.c
    cpukit/rtems/src/partmp.c
    cpukit/rtems/src/ratemon.c
    cpukit/rtems/src/region.c
    cpukit/rtems/src/regionmp.c
    cpukit/rtems/src/rtclock.c
    cpukit/rtems/src/rtemstimer.c
    cpukit/rtems/src/sem.c
    cpukit/rtems/src/semmp.c
    cpukit/rtems/src/signal.c
    cpukit/rtems/src/signalmp.c
    cpukit/rtems/src/taskmp.c
    cpukit/rtems/src/tasks.c
    cpukit/sapi/include/confdefs.h
    cpukit/sapi/include/rtems/config.h
    cpukit/sapi/include/rtems/extension.h
    cpukit/sapi/include/rtems/fatal.h
    cpukit/sapi/include/rtems/init.h
    cpukit/sapi/include/rtems/io.h
    cpukit/sapi/include/rtems/mptables.h
    cpukit/sapi/inline/rtems/extension.inl
    cpukit/sapi/macros/rtems/extension.inl
    cpukit/sapi/src/debug.c
    cpukit/sapi/src/exinit.c
    cpukit/sapi/src/extension.c
    cpukit/sapi/src/fatal.c
    cpukit/sapi/src/io.c
    cpukit/sapi/src/rtemsapi.c
    cpukit/score/cpu/hppa1.1/cpu.c
    cpukit/score/cpu/i386/asm.h
    cpukit/score/cpu/i386/cpu.c
    cpukit/score/cpu/i386/rtems/asm.h
    cpukit/score/cpu/i960/asm.h
    cpukit/score/cpu/i960/cpu.c
    cpukit/score/cpu/m68k/asm.h
    cpukit/score/cpu/m68k/cpu.c
    cpukit/score/cpu/m68k/m68302.h
    cpukit/score/cpu/m68k/qsm.h
    cpukit/score/cpu/m68k/rtems/asm.h
    cpukit/score/cpu/m68k/rtems/m68k/m68302.h
    cpukit/score/cpu/m68k/rtems/m68k/qsm.h
    cpukit/score/cpu/m68k/rtems/m68k/sim.h
    cpukit/score/cpu/m68k/sim.h
    cpukit/score/cpu/no_cpu/asm.h
    cpukit/score/cpu/no_cpu/cpu.c
    cpukit/score/cpu/no_cpu/cpu_asm.c
    cpukit/score/cpu/no_cpu/rtems/asm.h
    cpukit/score/cpu/sparc/README
    cpukit/score/cpu/sparc/asm.h
    cpukit/score/cpu/sparc/cpu.c
    cpukit/score/cpu/sparc/rtems/asm.h
    cpukit/score/cpu/unix/cpu.c
    cpukit/score/include/rtems/debug.h
    cpukit/score/include/rtems/score/address.h
    cpukit/score/include/rtems/score/apiext.h
    cpukit/score/include/rtems/score/bitfield.h
    cpukit/score/include/rtems/score/chain.h
    cpukit/score/include/rtems/score/context.h
    cpukit/score/include/rtems/score/copyrt.h
    cpukit/score/include/rtems/score/coremsg.h
    cpukit/score/include/rtems/score/coremutex.h
    cpukit/score/include/rtems/score/coresem.h
    cpukit/score/include/rtems/score/heap.h
    cpukit/score/include/rtems/score/interr.h
    cpukit/score/include/rtems/score/isr.h
    cpukit/score/include/rtems/score/mpci.h
    cpukit/score/include/rtems/score/mppkt.h
    cpukit/score/include/rtems/score/object.h
    cpukit/score/include/rtems/score/objectmp.h
    cpukit/score/include/rtems/score/priority.h
    cpukit/score/include/rtems/score/stack.h
    cpukit/score/include/rtems/score/states.h
    cpukit/score/include/rtems/score/sysstate.h
    cpukit/score/include/rtems/score/thread.h
    cpukit/score/include/rtems/score/threadmp.h
    cpukit/score/include/rtems/score/threadq.h
    cpukit/score/include/rtems/score/tod.h
    cpukit/score/include/rtems/score/tqdata.h
    cpukit/score/include/rtems/score/userext.h
    cpukit/score/include/rtems/score/watchdog.h
    cpukit/score/include/rtems/score/wkspace.h
    cpukit/score/include/rtems/system.h
    cpukit/score/inline/rtems/score/address.inl
    cpukit/score/inline/rtems/score/chain.inl
    cpukit/score/inline/rtems/score/coremsg.inl
    cpukit/score/inline/rtems/score/coremutex.inl
    cpukit/score/inline/rtems/score/coresem.inl
    cpukit/score/inline/rtems/score/heap.inl
    cpukit/score/inline/rtems/score/isr.inl
    cpukit/score/inline/rtems/score/mppkt.inl
    cpukit/score/inline/rtems/score/object.inl
    cpukit/score/inline/rtems/score/objectmp.inl
    cpukit/score/inline/rtems/score/priority.inl
    cpukit/score/inline/rtems/score/stack.inl
    cpukit/score/inline/rtems/score/states.inl
    cpukit/score/inline/rtems/score/sysstate.inl
    cpukit/score/inline/rtems/score/thread.inl
    cpukit/score/inline/rtems/score/threadmp.inl
    cpukit/score/inline/rtems/score/tod.inl
    cpukit/score/inline/rtems/score/tqdata.inl
    cpukit/score/inline/rtems/score/userext.inl
    cpukit/score/inline/rtems/score/watchdog.inl
    cpukit/score/inline/rtems/score/wkspace.inl
    cpukit/score/macros/README
    cpukit/score/macros/rtems/score/README
    cpukit/score/macros/rtems/score/address.inl
    cpukit/score/macros/rtems/score/chain.inl
    cpukit/score/macros/rtems/score/coremsg.inl
    cpukit/score/macros/rtems/score/coremutex.inl
    cpukit/score/macros/rtems/score/coresem.inl
    cpukit/score/macros/rtems/score/heap.inl
    cpukit/score/macros/rtems/score/isr.inl
    cpukit/score/macros/rtems/score/mppkt.inl
    cpukit/score/macros/rtems/score/object.inl
    cpukit/score/macros/rtems/score/objectmp.inl
    cpukit/score/macros/rtems/score/priority.inl
    cpukit/score/macros/rtems/score/stack.inl
    cpukit/score/macros/rtems/score/states.inl
    cpukit/score/macros/rtems/score/sysstate.inl
    cpukit/score/macros/rtems/score/thread.inl
    cpukit/score/macros/rtems/score/threadmp.inl
    cpukit/score/macros/rtems/score/tod.inl
    cpukit/score/macros/rtems/score/tqdata.inl
    cpukit/score/macros/rtems/score/userext.inl
    cpukit/score/macros/rtems/score/watchdog.inl
    cpukit/score/macros/rtems/score/wkspace.inl
    cpukit/score/src/apiext.c
    cpukit/score/src/chain.c
    cpukit/score/src/coremsg.c
    cpukit/score/src/coremutex.c
    cpukit/score/src/coresem.c
    cpukit/score/src/coretod.c
    cpukit/score/src/heap.c
    cpukit/score/src/interr.c
    cpukit/score/src/isr.c
    cpukit/score/src/mpci.c
    cpukit/score/src/object.c
    cpukit/score/src/objectmp.c
    cpukit/score/src/thread.c
    cpukit/score/src/threadmp.c
    cpukit/score/src/threadq.c
    cpukit/score/src/userext.c
    cpukit/score/src/watchdog.c
    cpukit/score/src/wkspace.c
    testsuites/README
    testsuites/libtests/README
    testsuites/libtests/stackchk/blow.c
    testsuites/libtests/stackchk/init.c
    testsuites/libtests/stackchk/stackchk.scn
    testsuites/libtests/stackchk/system.h
    testsuites/libtests/stackchk/task1.c
    testsuites/mptests/README
    testsuites/mptests/mp01/init.c
    testsuites/mptests/mp01/node1/mp01.doc
    testsuites/mptests/mp01/node1/mp01.scn
    testsuites/mptests/mp01/node2/mp01.doc
    testsuites/mptests/mp01/node2/mp01.scn
    testsuites/mptests/mp01/system.h
    testsuites/mptests/mp01/task1.c
    testsuites/mptests/mp02/init.c
    testsuites/mptests/mp02/node1/mp02.doc
    testsuites/mptests/mp02/node1/mp02.scn
    testsuites/mptests/mp02/node2/mp02.doc
    testsuites/mptests/mp02/node2/mp02.scn
    testsuites/mptests/mp02/system.h
    testsuites/mptests/mp02/task1.c
    testsuites/mptests/mp03/delay.c
    testsuites/mptests/mp03/init.c
    testsuites/mptests/mp03/node1/mp03.doc
    testsuites/mptests/mp03/node1/mp03.scn
    testsuites/mptests/mp03/node2/mp03.doc
    testsuites/mptests/mp03/node2/mp03.scn
    testsuites/mptests/mp03/system.h
    testsuites/mptests/mp03/task1.c
    testsuites/mptests/mp04/init.c
    testsuites/mptests/mp04/node1/mp04.doc
    testsuites/mptests/mp04/node1/mp04.scn
    testsuites/mptests/mp04/node2/mp04.doc
    testsuites/mptests/mp04/node2/mp04.scn
    testsuites/mptests/mp04/system.h
    testsuites/mptests/mp04/task1.c
    testsuites/mptests/mp05/asr.c
    testsuites/mptests/mp05/init.c
    testsuites/mptests/mp05/node1/mp05.doc
    testsuites/mptests/mp05/node1/mp05.scn
    testsuites/mptests/mp05/node2/mp05.doc
    testsuites/mptests/mp05/node2/mp05.scn
    testsuites/mptests/mp05/system.h
    testsuites/mptests/mp05/task1.c
    testsuites/mptests/mp06/init.c
    testsuites/mptests/mp06/node1/mp06.doc
    testsuites/mptests/mp06/node1/mp06.scn
    testsuites/mptests/mp06/node2/mp06.doc
    testsuites/mptests/mp06/node2/mp06.scn
    testsuites/mptests/mp06/system.h
    testsuites/mptests/mp06/task1.c
    testsuites/mptests/mp07/init.c
    testsuites/mptests/mp07/node1/mp07.doc
    testsuites/mptests/mp07/node1/mp07.scn
    testsuites/mptests/mp07/node2/mp07.doc
    testsuites/mptests/mp07/node2/mp07.scn
    testsuites/mptests/mp07/system.h
    testsuites/mptests/mp07/task1.c
    testsuites/mptests/mp08/init.c
    testsuites/mptests/mp08/node1/mp08.doc
    testsuites/mptests/mp08/node1/mp08.scn
    testsuites/mptests/mp08/node2/mp08.doc
    testsuites/mptests/mp08/node2/mp08.scn
    testsuites/mptests/mp08/system.h
    testsuites/mptests/mp08/task1.c
    testsuites/mptests/mp09/init.c
    testsuites/mptests/mp09/node1/mp09.doc
    testsuites/mptests/mp09/node1/mp09.scn
    testsuites/mptests/mp09/node2/mp09.doc
    testsuites/mptests/mp09/node2/mp09.scn
    testsuites/mptests/mp09/recvmsg.c
    testsuites/mptests/mp09/sendmsg.c
    testsuites/mptests/mp09/system.h
    testsuites/mptests/mp09/task1.c
    testsuites/mptests/mp10/init.c
    testsuites/mptests/mp10/node1/mp10.doc
    testsuites/mptests/mp10/node1/mp10.scn
    testsuites/mptests/mp10/node2/mp10.doc
    testsuites/mptests/mp10/node2/mp10.scn
    testsuites/mptests/mp10/system.h
    testsuites/mptests/mp10/task1.c
    testsuites/mptests/mp10/task2.c
    testsuites/mptests/mp10/task3.c
    testsuites/mptests/mp11/init.c
    testsuites/mptests/mp11/node1/mp11.doc
    testsuites/mptests/mp11/node1/mp11.scn
    testsuites/mptests/mp11/node2/mp11.doc
    testsuites/mptests/mp11/node2/mp11.scn
    testsuites/mptests/mp11/system.h
    testsuites/mptests/mp12/init.c
    testsuites/mptests/mp12/node1/mp12.doc
    testsuites/mptests/mp12/node1/mp12.scn
    testsuites/mptests/mp12/node2/mp12.doc
    testsuites/mptests/mp12/node2/mp12.scn
    testsuites/mptests/mp12/system.h
    testsuites/mptests/mp13/init.c
    testsuites/mptests/mp13/node1/mp13.doc
    testsuites/mptests/mp13/node1/mp13.scn
    testsuites/mptests/mp13/node2/mp13.doc
    testsuites/mptests/mp13/node2/mp13.scn
    testsuites/mptests/mp13/system.h
    testsuites/mptests/mp13/task1.c
    testsuites/mptests/mp13/task2.c
    testsuites/mptests/mp14/delay.c
    testsuites/mptests/mp14/evtask1.c
    testsuites/mptests/mp14/evtmtask.c
    testsuites/mptests/mp14/exit.c
    testsuites/mptests/mp14/init.c
    testsuites/mptests/mp14/msgtask1.c
    testsuites/mptests/mp14/node1/mp14.doc
    testsuites/mptests/mp14/node1/mp14.scn
    testsuites/mptests/mp14/node2/mp14.doc
    testsuites/mptests/mp14/node2/mp14.scn
    testsuites/mptests/mp14/pttask1.c
    testsuites/mptests/mp14/smtask1.c
    testsuites/mptests/mp14/system.h
    testsuites/samples/README
    testsuites/samples/base_mp/apptask.c
    testsuites/samples/base_mp/init.c
    testsuites/samples/base_mp/node1/base_mp.doc
    testsuites/samples/base_mp/node1/base_mp.scn
    testsuites/samples/base_mp/node2/base_mp.doc
    testsuites/samples/base_mp/node2/base_mp.scn
    testsuites/samples/base_mp/system.h
    testsuites/samples/base_sp/apptask.c
    testsuites/samples/base_sp/base_sp.doc
    testsuites/samples/base_sp/base_sp.scn
    testsuites/samples/base_sp/init.c
    testsuites/samples/base_sp/system.h
    testsuites/samples/cdtest/cdtest.scn
    testsuites/samples/cdtest/init.c
    testsuites/samples/cdtest/main.cc
    testsuites/samples/cdtest/system.h
    testsuites/samples/hello/hello.doc
    testsuites/samples/hello/hello.scn
    testsuites/samples/hello/init.c
    testsuites/samples/hello/system.h
    testsuites/samples/paranoia/init.c
    testsuites/samples/paranoia/paranoia.c
    testsuites/samples/paranoia/paranoia.doc
    testsuites/samples/paranoia/system.h
    testsuites/samples/ticker/init.c
    testsuites/samples/ticker/system.h
    testsuites/samples/ticker/tasks.c
    testsuites/samples/ticker/ticker.doc
    testsuites/samples/ticker/ticker.scn
    testsuites/sptests/README
    testsuites/sptests/sp01/init.c
    testsuites/sptests/sp01/sp01.doc
    testsuites/sptests/sp01/sp01.scn
    testsuites/sptests/sp01/system.h
    testsuites/sptests/sp01/task1.c
    testsuites/sptests/sp02/init.c
    testsuites/sptests/sp02/preempt.c
    testsuites/sptests/sp02/sp02.doc
    testsuites/sptests/sp02/sp02.scn
    testsuites/sptests/sp02/system.h
    testsuites/sptests/sp02/task1.c
    testsuites/sptests/sp02/task2.c
    testsuites/sptests/sp02/task3.c
    testsuites/sptests/sp03/init.c
    testsuites/sptests/sp03/sp03.doc
    testsuites/sptests/sp03/sp03.scn
    testsuites/sptests/sp03/system.h
    testsuites/sptests/sp03/task1.c
    testsuites/sptests/sp03/task2.c
    testsuites/sptests/sp04/init.c
    testsuites/sptests/sp04/sp04.doc
    testsuites/sptests/sp04/sp04.scn
    testsuites/sptests/sp04/system.h
    testsuites/sptests/sp04/task1.c
    testsuites/sptests/sp04/task2.c
    testsuites/sptests/sp04/task3.c
    testsuites/sptests/sp04/tswitch.c
    testsuites/sptests/sp05/init.c
    testsuites/sptests/sp05/sp05.doc
    testsuites/sptests/sp05/sp05.scn
    testsuites/sptests/sp05/system.h
    testsuites/sptests/sp05/task1.c
    testsuites/sptests/sp05/task2.c
    testsuites/sptests/sp05/task3.c
    testsuites/sptests/sp06/init.c
    testsuites/sptests/sp06/sp06.doc
    testsuites/sptests/sp06/sp06.scn
    testsuites/sptests/sp06/system.h
    testsuites/sptests/sp06/task1.c
    testsuites/sptests/sp06/task2.c
    testsuites/sptests/sp06/task3.c
    testsuites/sptests/sp07/init.c
    testsuites/sptests/sp07/sp07.doc
    testsuites/sptests/sp07/sp07.scn
    testsuites/sptests/sp07/system.h
    testsuites/sptests/sp07/task1.c
    testsuites/sptests/sp07/task2.c
    testsuites/sptests/sp07/task3.c
    testsuites/sptests/sp07/task4.c
    testsuites/sptests/sp07/taskexit.c
    testsuites/sptests/sp07/tcreate.c
    testsuites/sptests/sp07/tdelete.c
    testsuites/sptests/sp07/trestart.c
    testsuites/sptests/sp07/tstart.c
    testsuites/sptests/sp08/init.c
    testsuites/sptests/sp08/sp08.doc
    testsuites/sptests/sp08/sp08.scn
    testsuites/sptests/sp08/system.h
    testsuites/sptests/sp08/task1.c
    testsuites/sptests/sp09/delay.c
    testsuites/sptests/sp09/init.c
    testsuites/sptests/sp09/isr.c
    testsuites/sptests/sp09/screen01.c
    testsuites/sptests/sp09/screen02.c
    testsuites/sptests/sp09/screen03.c
    testsuites/sptests/sp09/screen04.c
    testsuites/sptests/sp09/screen05.c
    testsuites/sptests/sp09/screen06.c
    testsuites/sptests/sp09/screen07.c
    testsuites/sptests/sp09/screen08.c
    testsuites/sptests/sp09/screen09.c
    testsuites/sptests/sp09/screen10.c
    testsuites/sptests/sp09/screen11.c
    testsuites/sptests/sp09/screen12.c
    testsuites/sptests/sp09/screen13.c
    testsuites/sptests/sp09/screen14.c
    testsuites/sptests/sp09/sp09.doc
    testsuites/sptests/sp09/sp09.scn
    testsuites/sptests/sp09/system.h
    testsuites/sptests/sp09/task1.c
    testsuites/sptests/sp09/task2.c
    testsuites/sptests/sp09/task3.c
    testsuites/sptests/sp09/task4.c
    testsuites/sptests/sp11/init.c
    testsuites/sptests/sp11/sp11.doc
    testsuites/sptests/sp11/sp11.scn
    testsuites/sptests/sp11/system.h
    testsuites/sptests/sp11/task1.c
    testsuites/sptests/sp11/task2.c
    testsuites/sptests/sp11/timer.c
    testsuites/sptests/sp12/init.c
    testsuites/sptests/sp12/pridrv.c
    testsuites/sptests/sp12/pritask.c
    testsuites/sptests/sp12/sp12.doc
    testsuites/sptests/sp12/sp12.scn
    testsuites/sptests/sp12/system.h
    testsuites/sptests/sp12/task1.c
    testsuites/sptests/sp12/task2.c
    testsuites/sptests/sp12/task3.c
    testsuites/sptests/sp12/task4.c
    testsuites/sptests/sp12/task5.c
    testsuites/sptests/sp13/fillbuff.c
    testsuites/sptests/sp13/init.c
    testsuites/sptests/sp13/putbuff.c
    testsuites/sptests/sp13/sp13.doc
    testsuites/sptests/sp13/sp13.scn
    testsuites/sptests/sp13/system.h
    testsuites/sptests/sp13/task1.c
    testsuites/sptests/sp13/task2.c
    testsuites/sptests/sp13/task3.c
    testsuites/sptests/sp14/asr.c
    testsuites/sptests/sp14/init.c
    testsuites/sptests/sp14/sp14.doc
    testsuites/sptests/sp14/sp14.scn
    testsuites/sptests/sp14/system.h
    testsuites/sptests/sp14/task1.c
    testsuites/sptests/sp14/task2.c
    testsuites/sptests/sp15/init.c
    testsuites/sptests/sp15/sp15.doc
    testsuites/sptests/sp15/sp15.scn
    testsuites/sptests/sp15/system.h
    testsuites/sptests/sp15/task1.c
    testsuites/sptests/sp16/init.c
    testsuites/sptests/sp16/sp16.doc
    testsuites/sptests/sp16/sp16.scn
    testsuites/sptests/sp16/system.h
    testsuites/sptests/sp16/task1.c
    testsuites/sptests/sp16/task2.c
    testsuites/sptests/sp16/task3.c
    testsuites/sptests/sp16/task4.c
    testsuites/sptests/sp16/task5.c
    testsuites/sptests/sp17/asr.c
    testsuites/sptests/sp17/init.c
    testsuites/sptests/sp17/sp17.doc
    testsuites/sptests/sp17/sp17.scn
    testsuites/sptests/sp17/system.h
    testsuites/sptests/sp17/task1.c
    testsuites/sptests/sp17/task2.c
    testsuites/sptests/sp19/first.c
    testsuites/sptests/sp19/fptask.c
    testsuites/sptests/sp19/fptest.h
    testsuites/sptests/sp19/init.c
    testsuites/sptests/sp19/inttest.h
    testsuites/sptests/sp19/sp19.doc
    testsuites/sptests/sp19/sp19.scn
    testsuites/sptests/sp19/system.h
    testsuites/sptests/sp19/task1.c
    testsuites/sptests/sp20/getall.c
    testsuites/sptests/sp20/init.c
    testsuites/sptests/sp20/sp20.doc
    testsuites/sptests/sp20/sp20.scn
    testsuites/sptests/sp20/system.h
    testsuites/sptests/sp20/task1.c
    testsuites/sptests/sp21/init.c
    testsuites/sptests/sp21/sp21.doc
    testsuites/sptests/sp21/sp21.scn
    testsuites/sptests/sp21/system.h
    testsuites/sptests/sp21/task1.c
    testsuites/sptests/sp22/delay.c
    testsuites/sptests/sp22/init.c
    testsuites/sptests/sp22/prtime.c
    testsuites/sptests/sp22/sp22.doc
    testsuites/sptests/sp22/sp22.scn
    testsuites/sptests/sp22/system.h
    testsuites/sptests/sp22/task1.c
    testsuites/sptests/sp23/init.c
    testsuites/sptests/sp23/sp23.doc
    testsuites/sptests/sp23/sp23.scn
    testsuites/sptests/sp23/system.h
    testsuites/sptests/sp23/task1.c
    testsuites/sptests/sp24/init.c
    testsuites/sptests/sp24/resume.c
    testsuites/sptests/sp24/sp24.doc
    testsuites/sptests/sp24/sp24.scn
    testsuites/sptests/sp24/system.h
    testsuites/sptests/sp24/task1.c
    testsuites/sptests/sp25/init.c
    testsuites/sptests/sp25/sp25.doc
    testsuites/sptests/sp25/sp25.scn
    testsuites/sptests/sp25/system.h
    testsuites/sptests/sp25/task1.c
    testsuites/sptests/spfatal/fatal.c
    testsuites/sptests/spfatal/init.c
    testsuites/sptests/spfatal/puterr.c
    testsuites/sptests/spfatal/spfatal.doc
    testsuites/sptests/spfatal/spfatal.scn
    testsuites/sptests/spfatal/system.h
    testsuites/sptests/spfatal/task1.c
    testsuites/sptests/spsize/getint.c
    testsuites/sptests/spsize/init.c
    testsuites/sptests/spsize/size.c
    testsuites/sptests/spsize/system.h
    testsuites/support/include/tmacros.h
    testsuites/tmtests/README
    testsuites/tmtests/include/timesys.h
    testsuites/tmtests/tm01/system.h
    testsuites/tmtests/tm01/task1.c
    testsuites/tmtests/tm01/tm01.doc
    testsuites/tmtests/tm02/system.h
    testsuites/tmtests/tm02/task1.c
    testsuites/tmtests/tm02/tm02.doc
    testsuites/tmtests/tm03/system.h
    testsuites/tmtests/tm03/task1.c
    testsuites/tmtests/tm03/tm03.doc
    testsuites/tmtests/tm04/system.h
    testsuites/tmtests/tm04/task1.c
    testsuites/tmtests/tm04/tm04.doc
    testsuites/tmtests/tm05/system.h
    testsuites/tmtests/tm05/task1.c
    testsuites/tmtests/tm05/tm05.doc
    testsuites/tmtests/tm06/system.h
    testsuites/tmtests/tm06/task1.c
    testsuites/tmtests/tm06/tm06.doc
    testsuites/tmtests/tm07/system.h
    testsuites/tmtests/tm07/task1.c
    testsuites/tmtests/tm07/tm07.doc
    testsuites/tmtests/tm08/system.h
    testsuites/tmtests/tm08/task1.c
    testsuites/tmtests/tm08/tm08.doc
    testsuites/tmtests/tm09/system.h
    testsuites/tmtests/tm09/task1.c
    testsuites/tmtests/tm09/tm09.doc
    testsuites/tmtests/tm10/system.h
    testsuites/tmtests/tm10/task1.c
    testsuites/tmtests/tm10/tm10.doc
    testsuites/tmtests/tm11/system.h
    testsuites/tmtests/tm11/task1.c
    testsuites/tmtests/tm11/tm11.doc
    testsuites/tmtests/tm12/system.h
    testsuites/tmtests/tm12/task1.c
    testsuites/tmtests/tm12/tm12.doc
    testsuites/tmtests/tm13/system.h
    testsuites/tmtests/tm13/task1.c
    testsuites/tmtests/tm13/tm13.doc
    testsuites/tmtests/tm14/system.h
    testsuites/tmtests/tm14/task1.c
    testsuites/tmtests/tm14/tm14.doc
    testsuites/tmtests/tm15/system.h
    testsuites/tmtests/tm15/task1.c
    testsuites/tmtests/tm15/tm15.doc
    testsuites/tmtests/tm16/system.h
    testsuites/tmtests/tm16/task1.c
    testsuites/tmtests/tm16/tm16.doc
    testsuites/tmtests/tm17/system.h
    testsuites/tmtests/tm17/task1.c
    testsuites/tmtests/tm17/tm17.doc
    testsuites/tmtests/tm18/system.h
    testsuites/tmtests/tm18/task1.c
    testsuites/tmtests/tm18/tm18.doc
    testsuites/tmtests/tm19/system.h
    testsuites/tmtests/tm19/task1.c
    testsuites/tmtests/tm19/tm19.doc
    testsuites/tmtests/tm20/system.h
    testsuites/tmtests/tm20/task1.c
    testsuites/tmtests/tm20/tm20.doc
    testsuites/tmtests/tm21/system.h
    testsuites/tmtests/tm21/task1.c
    testsuites/tmtests/tm21/tm21.doc
    testsuites/tmtests/tm22/system.h
    testsuites/tmtests/tm22/task1.c
    testsuites/tmtests/tm22/tm22.doc
    testsuites/tmtests/tm23/system.h
    testsuites/tmtests/tm23/task1.c
    testsuites/tmtests/tm23/tm23.doc
    testsuites/tmtests/tm24/system.h
    testsuites/tmtests/tm24/task1.c
    testsuites/tmtests/tm24/tm24.doc
    testsuites/tmtests/tm25/system.h
    testsuites/tmtests/tm25/task1.c
    testsuites/tmtests/tm25/tm25.doc
    testsuites/tmtests/tm26/fptest.h
    testsuites/tmtests/tm26/system.h
    testsuites/tmtests/tm26/task1.c
    testsuites/tmtests/tm26/tm26.doc
    testsuites/tmtests/tm27/system.h
    testsuites/tmtests/tm27/task1.c
    testsuites/tmtests/tm27/tm27.doc
    testsuites/tmtests/tm28/system.h
    testsuites/tmtests/tm28/task1.c
    testsuites/tmtests/tm28/tm28.doc
    testsuites/tmtests/tm29/system.h
    testsuites/tmtests/tm29/task1.c
    testsuites/tmtests/tm29/tm29.doc
    testsuites/tmtests/tmck/system.h
    testsuites/tmtests/tmck/task1.c
    testsuites/tmtests/tmck/tmck.doc
    testsuites/tmtests/tmoverhd/dumrtems.h
    testsuites/tmtests/tmoverhd/empty.c
    testsuites/tmtests/tmoverhd/system.h
    testsuites/tmtests/tmoverhd/testtask.c
    testsuites/tmtests/tmoverhd/tmoverhd.doc
    tools/build/README
    tools/build/cklength.c
    tools/build/eolstrip.c
    tools/build/os/msdos/README
    tools/build/os/msdos/cklength.uue
    tools/build/os/msdos/fixtimer.c
    tools/build/os/msdos/fixtimer.uue
    tools/build/os/msdos/ifc.c
    tools/build/os/msdos/ifc_exe.uue
    tools/build/packhex.c
    tools/build/scripts/README
    tools/build/src/cklength.c
    tools/build/src/eolstrip.c
    tools/build/src/packhex.c
    tools/build/src/unhex.c
    tools/build/unhex.c
    tools/cpu/hppa1.1/genoffsets.c
    tools/cpu/unix/gensize.c
    tools/update/310_to_320_list
    tools/update/README
1996-03-21 20:20:41 +00:00
253 changed files with 790 additions and 7744 deletions

View File

@@ -21,10 +21,10 @@ The following persons/organizations have made contributions:
Research to port RTEMS to the Hewlett-Packard PA-RISC architecture (V1.1)
and the addition of HP-UX as a development host. Tony Bennett
(tbennett@divnc.com) was assisted in this effort by Joel Sherrill
(joel@OARcorp.com). Tony also deserves a big pat on the back for
contributing significantly to the overall organization of the development
environment and directory structure. RTEMS is much easier to build
because of Tony.
(jsherril@redstone.army.mil). Tony also deserves a big pat on the
back for contributing significantly to the overall organization
of the development environment and directory structure. RTEMS
is much easier to build because of Tony.
+ Greg Allen of Division Inc. of Chapel Hill, NC for
porting RTEMS to HP-UX. This port treats a UNIX computer as simply
@@ -75,10 +75,6 @@ The following persons/organizations have made contributions:
Laboratory submitted the support for the Motorola MC68360 CPU
including the `gen68360' BSP.
+ Dominique le Campion (Dominique.LECAMPION@enst-bretagne.fr), for
Telecom Bretagne and T.N.I. (Brest, France) submitted the BSP for
the Motorola MVME147 board (68030 CPU + 68881 FPU).
Finally, the RTEMS project would like to thank those who have contributed
to the other free software efforts which RTEMS utilizes. The primary RTEMS
development environment is from the Free Software Foundation (the GNU

View File

@@ -54,16 +54,6 @@ typedef enum {
EVENT_SYNC_SATISFIED
} Event_Sync_states;
/*
* Event_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Event_Manager_initialization( void );
/*
* rtems_event_send
*

View File

@@ -85,9 +85,7 @@ extern "C" {
#define RTEMS_MILLISECONDS_TO_TICKS(_ms) \
TOD_MILLISECONDS_TO_TICKS(_ms)
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/support.inl>
#endif
#ifdef __cplusplus
}

View File

@@ -17,5 +17,24 @@
#ifndef __MACROS_EVENT_inl
#define __MACROS_EVENT_inl
/*
* Event_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
STATIC INLINE void _Event_Manager_initialization( void )
{
_Event_Sync_state = EVENT_SYNC_SYNCHRONIZED;
/*
* Register the MP Process Packet routine.
*/
_MPCI_Register_packet_processor( MP_PACKET_EVENT, _Event_MP_Process_packet );
}
#endif
/* end of include file */

View File

@@ -17,5 +17,24 @@
#ifndef __MACROS_EVENT_h
#define __MACROS_EVENT_h
/*
* Event_Manager_initialization
*/
#define _Event_Manager_initialization() \
do { \
\
_Event_Sync_state = EVENT_SYNC_SYNCHRONIZED; \
\
/* \
* Register the MP Process Packet routine. \
*/ \
\
_MPCI_Register_packet_processor( \
MP_PACKET_EVENT, \
_Event_MP_Process_packet \
); \
} while ( 0 )
#endif
/* end of include file */

View File

@@ -16,7 +16,6 @@
#include <rtems/score/address.h>
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
#include <rtems/score/interr.h>
#include <rtems/rtems/status.h>
#include <rtems/rtems/types.h>
@@ -36,11 +35,6 @@ rtems_status_code rtems_port_create(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -49,11 +43,6 @@ rtems_status_code rtems_port_ident(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -61,11 +50,6 @@ rtems_status_code rtems_port_delete(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -75,11 +59,6 @@ rtems_status_code rtems_port_internal_to_external(
void **external
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -89,10 +68,5 @@ rtems_status_code rtems_port_external_to_internal(
void **internal
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -20,22 +20,12 @@
#include <rtems/rtems/options.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/interr.h>
void _Event_Manager_initialization( void )
{
}
rtems_status_code rtems_event_send(
Objects_Id id,
rtems_event_set event_in
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -46,11 +36,6 @@ rtems_status_code rtems_event_receive(
rtems_event_set *event_out
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -26,7 +26,6 @@
#include <rtems/score/tqdata.h>
#include <rtems/score/watchdog.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/interr.h>
void _Multiprocessing_Manager_initialization ( void )
{
@@ -34,11 +33,6 @@ void _Multiprocessing_Manager_initialization ( void )
void rtems_multiprocessing_announce ( void )
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
void _MPCI_Handler_initialization(
@@ -66,11 +60,6 @@ void _MPCI_Register_packet_processor(
MP_packet_Prefix *_MPCI_Get_packet ( void )
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return NULL;
}
@@ -78,11 +67,6 @@ void _MPCI_Return_packet (
MP_packet_Prefix *the_packet
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
void _MPCI_Send_process_packet (
@@ -90,11 +74,6 @@ void _MPCI_Send_process_packet (
MP_packet_Prefix *the_packet
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
unsigned32 _MPCI_Send_request_packet (
@@ -103,11 +82,6 @@ unsigned32 _MPCI_Send_request_packet (
States_Control extra_state
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return 0;
}
@@ -116,20 +90,10 @@ void _MPCI_Send_response_packet (
MP_packet_Prefix *the_packet
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
MP_packet_Prefix *_MPCI_Receive_packet ( void )
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return NULL;
}
@@ -137,11 +101,6 @@ Thread_Control *_MPCI_Process_response (
MP_packet_Prefix *the_packet
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return NULL;
}
@@ -149,20 +108,10 @@ Thread _MPCI_Receive_server(
unsigned32 ignore
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
void _MPCI_Announce ( void )
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
@@ -170,31 +119,16 @@ void _MPCI_Internal_packets_Send_process_packet (
MPCI_Internal_Remote_operations operation
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
void _MPCI_Internal_packets_Process_packet (
MP_packet_Prefix *the_packet_prefix
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
MPCI_Internal_packet *_MPCI_Internal_packets_Get_packet ( void )
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return NULL;
}

View File

@@ -24,7 +24,6 @@
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/interr.h>
void _Message_queue_Manager_initialization(
unsigned32 maximum_message_queues
@@ -40,11 +39,6 @@ rtems_status_code rtems_message_queue_create(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -54,11 +48,6 @@ rtems_status_code rtems_message_queue_ident(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -66,11 +55,6 @@ rtems_status_code rtems_message_queue_delete(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -80,11 +64,6 @@ rtems_status_code rtems_message_queue_send(
unsigned32 size
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -94,11 +73,6 @@ rtems_status_code rtems_message_queue_urgent(
unsigned32 size
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -109,11 +83,6 @@ rtems_status_code rtems_message_queue_broadcast(
unsigned32 *count
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -125,11 +94,6 @@ rtems_status_code rtems_message_queue_receive(
rtems_interval timeout
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -138,11 +102,6 @@ rtems_status_code rtems_message_queue_flush(
unsigned32 *count
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -150,12 +109,6 @@ unsigned32 _Message_queue_Flush_support(
Message_queue_Control *the_message_queue
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
return 0;
}
@@ -166,12 +119,6 @@ boolean _Message_queue_Seize(
unsigned32 *size_p
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
_Thread_Executing->Wait.return_code = RTEMS_UNSATISFIED;
return TRUE;
}
@@ -183,10 +130,5 @@ rtems_status_code _Message_queue_Submit(
Message_queue_Submit_types submit_type
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -19,7 +19,6 @@
#include <rtems/score/object.h>
#include <rtems/rtems/part.h>
#include <rtems/score/thread.h>
#include <rtems/score/interr.h>
void _Partition_Manager_initialization(
unsigned32 maximum_partitions
@@ -36,11 +35,6 @@ rtems_status_code rtems_partition_create(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -50,11 +44,6 @@ rtems_status_code rtems_partition_ident(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -62,11 +51,6 @@ rtems_status_code rtems_partition_delete(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -75,11 +59,6 @@ rtems_status_code rtems_partition_get_buffer(
void **buffer
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -88,10 +67,5 @@ rtems_status_code rtems_partition_return_buffer(
void *buffer
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -20,7 +20,6 @@
#include <rtems/rtems/region.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/interr.h>
void _Region_Manager_initialization(
unsigned32 maximum_regions
@@ -37,11 +36,6 @@ rtems_status_code rtems_region_create(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -50,11 +44,6 @@ rtems_status_code rtems_region_ident(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -62,11 +51,6 @@ rtems_status_code rtems_region_delete(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -78,11 +62,6 @@ rtems_status_code rtems_region_get_segment(
void **segment
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -92,11 +71,6 @@ rtems_status_code rtems_region_get_segment_size(
unsigned32 *size
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -105,10 +79,5 @@ rtems_status_code rtems_region_return_segment(
void *segment
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -18,7 +18,6 @@
#include <rtems/score/isr.h>
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
#include <rtems/score/interr.h>
#include <rtems/rtems/types.h>
#include <rtems/rtems/ratemon.h>
@@ -34,11 +33,6 @@ rtems_status_code rtems_rate_monotonic_create(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -47,11 +41,6 @@ rtems_status_code rtems_rate_monotonic_ident(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -59,11 +48,6 @@ rtems_status_code rtems_rate_monotonic_cancel(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -71,11 +55,6 @@ rtems_status_code rtems_rate_monotonic_delete(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -84,11 +63,6 @@ rtems_status_code rtems_rate_monotonic_period(
rtems_interval length
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -97,21 +71,11 @@ void _Rate_monotonic_Timeout(
void *ignored
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
}
boolean _Rate_monotonic_Set_state(
Rate_monotonic_Control *the_period
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return FALSE;
return( FALSE );
}

View File

@@ -23,7 +23,6 @@
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/interr.h>
void _Semaphore_Manager_initialization(
unsigned32 maximum_semaphores
@@ -39,11 +38,6 @@ rtems_status_code rtems_semaphore_create(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -53,11 +47,6 @@ rtems_status_code rtems_semaphore_ident(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -65,11 +54,6 @@ rtems_status_code rtems_semaphore_delete(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -79,11 +63,6 @@ rtems_status_code rtems_semaphore_obtain(
rtems_interval timeout
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -91,11 +70,6 @@ rtems_status_code rtems_semaphore_release(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -104,11 +78,6 @@ boolean _Semaphore_Seize(
rtems_option option_set
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
_Thread_Executing->Wait.return_code = RTEMS_UNSATISFIED;
return TRUE;
return( TRUE );
}

View File

@@ -17,7 +17,6 @@
#include <rtems/rtems/status.h>
#include <rtems/score/isr.h>
#include <rtems/score/thread.h>
#include <rtems/score/interr.h>
#include <rtems/rtems/asr.h>
#include <rtems/rtems/modes.h>
@@ -32,11 +31,6 @@ rtems_status_code rtems_signal_catch(
rtems_mode mode_set
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -45,11 +39,6 @@ rtems_status_code rtems_signal_send(
rtems_signal_set signal_set
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -19,7 +19,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
#include <rtems/score/interr.h>
#include <rtems/rtems/types.h>
#include <rtems/rtems/timer.h>
@@ -35,11 +34,6 @@ rtems_status_code rtems_timer_create(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -48,11 +42,6 @@ rtems_status_code rtems_timer_ident(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -60,11 +49,6 @@ rtems_status_code rtems_timer_cancel(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -72,11 +56,6 @@ rtems_status_code rtems_timer_delete(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -87,11 +66,6 @@ rtems_status_code rtems_timer_fire_after(
void *user_data
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -102,11 +76,6 @@ rtems_status_code rtems_timer_fire_when(
void *user_data
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -114,10 +83,5 @@ rtems_status_code rtems_timer_reset(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -22,26 +22,6 @@
#include <rtems/score/thread.h>
#include <rtems/rtems/tasks.h>
/*PAGE
*
* _Event_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Event_Manager_initialization( void )
{
_Event_Sync_state = EVENT_SYNC_SYNCHRONIZED;
/*
* Register the MP Process Packet routine.
*/
_MPCI_Register_packet_processor( MP_PACKET_EVENT, _Event_MP_Process_packet );
}
/*PAGE
*
* rtems_event_send

View File

@@ -170,8 +170,6 @@ rtems_status_code rtems_semaphore_create(
/* Add priority ceiling code here ????? */
the_mutex_attributes.priority_ceiling = priority_ceiling;
if ( count == 1 )
lock = CORE_MUTEX_UNLOCKED;
else
@@ -191,13 +189,6 @@ rtems_status_code rtems_semaphore_create(
else
the_semaphore_attributes.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
/*
* The following are just to make Purify happy.
*/
the_mutex_attributes.allow_nesting = TRUE;
the_mutex_attributes.priority_ceiling = PRIORITY_MINIMUM;
_CORE_semaphore_Initialize(
&the_semaphore->Core_control.semaphore,
OBJECTS_RTEMS_SEMAPHORES,

View File

@@ -62,7 +62,7 @@ const rtems_multiprocessing_table
*/
const char _RTEMS_version[] =
"RTEMS RELEASE V3.5.15 snapshot (" CPU_NAME "/" CPU_MODEL_NAME ")";
"RTEMS RELEASE V3.5.1 (" CPU_NAME "/" CPU_MODEL_NAME ")";
/*

View File

@@ -19,7 +19,6 @@
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
#include <rtems/extension.h>
#include <rtems/score/interr.h>
void _Extension_Manager_initialization(
unsigned32 maximum_extensions
@@ -33,11 +32,6 @@ rtems_status_code rtems_extension_create(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -46,11 +40,6 @@ rtems_status_code rtems_extension_ident(
Objects_Id *id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -58,10 +47,5 @@ rtems_status_code rtems_extension_delete(
Objects_Id id
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -19,7 +19,6 @@
#include <rtems/io.h>
#include <rtems/score/isr.h>
#include <rtems/score/thread.h>
#include <rtems/score/interr.h>
void _IO_Manager_initialization(
rtems_driver_address_table *driver_table,
@@ -37,26 +36,16 @@ rtems_status_code rtems_io_register_name(
char *device_name,
rtems_device_major_number major,
rtems_device_minor_number minor
)
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
rtems_status_code rtems_io_lookup_name(
const char *pathname,
rtems_driver_name_t **rnp
)
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -66,11 +55,6 @@ rtems_status_code rtems_io_initialize(
void *argument
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -80,11 +64,6 @@ rtems_status_code rtems_io_open(
void *argument
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -94,11 +73,6 @@ rtems_status_code rtems_io_close(
void *argument
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -108,11 +82,6 @@ rtems_status_code rtems_io_read(
void *argument
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -122,11 +91,6 @@ rtems_status_code rtems_io_write(
void *argument
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}
@@ -136,10 +100,5 @@ rtems_status_code rtems_io_control(
void *argument
)
{
_Internal_error_Occurred(
INTERNAL_ERROR_RTEMS_API,
FALSE,
RTEMS_NOT_CONFIGURED
);
return RTEMS_NOT_CONFIGURED;
}

View File

@@ -1,72 +0,0 @@
/*
* RTEMS API Initialization Support
*
* NOTE:
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* $Id$
*/
#include <assert.h>
#include <rtems/system.h>
#define INIT
#include <rtems/posix/cond.h>
#include <rtems/posix/condmp.h>
#include <rtems/posix/config.h>
#include <rtems/posix/key.h>
#include <rtems/posix/mutex.h>
#include <rtems/posix/mutexmp.h>
#include <rtems/posix/priority.h>
#include <rtems/posix/pthread.h>
#include <rtems/posix/pthreadmp.h>
#include <rtems/posix/time.h>
/*PAGE
*
* _POSIX_API_Initialize
*
* XXX
*/
void _POSIX_API_Initialize(
rtems_configuration_table *configuration_table
)
{
posix_api_configuration_table *api_configuration;
api_configuration = configuration_table->POSIX_api_configuration;
assert( api_configuration );
_RTEMS_tasks_Manager_initialization(
api_configuration->maximum_tasks
#if 0
,
api_configuration->number_of_initialization_tasks,
api_configuration->User_initialization_tasks_table
#endif
);
_POSIX_Condition_variables_Manager_initialization(
api_configuration->maximum_condition_variables
);
void _POSIX_Key_Manager_initialization( api_configuration->maximum_keys );
_POSIX_Mutex_Manager_initialization(
api_configuration->maximum_mutexes
);
}
/* end of file */

View File

@@ -104,9 +104,6 @@ typedef struct {
boolean do_zero_of_workspace;
unsigned32 interrupt_stack_size;
unsigned32 extra_mpci_receive_server_stack;
void * (*stack_allocate_hook)( unsigned32 );
void (*stack_free_hook)( void* );
/* end of fields required on all CPUs */
unsigned32 interrupt_table_segment;
void *interrupt_table_offset;

View File

@@ -146,10 +146,6 @@ typedef struct {
boolean do_zero_of_workspace;
unsigned32 interrupt_stack_size;
unsigned32 extra_mpci_receive_server_stack;
void * (*stack_allocate_hook)( unsigned32 );
void (*stack_free_hook)( void* );
/* end of fields required on all CPUs */
#if defined(__i960CA__) || defined(__i960_CA__) || defined(__i960CA)
i960ca_PRCB *Prcb;
#endif

View File

@@ -139,10 +139,6 @@ typedef struct {
boolean do_zero_of_workspace;
unsigned32 interrupt_stack_size;
unsigned32 extra_mpci_receive_server_stack;
void * (*stack_allocate_hook)( unsigned32 );
void (*stack_free_hook)( void* );
/* end of fields required on all CPUs */
m68k_isr *interrupt_vector_table;
} rtems_cpu_table;
@@ -337,7 +333,7 @@ unsigned32 _CPU_ISR_Get_level( void );
/* duplicates BFFFO results for 16 bits (i.e., 15-(_priority) in
_CPU_Priority_bits_index is not needed), handles the 0 case, and
does not molest _value -- jsg */
#if ( M68K_HAS_EXTB_L == 1 )
#ifndef m68000
#define _CPU_Bitfield_Find_first_bit( _value, _output ) \
{ \
extern const unsigned char __BFFFOtable[256]; \
@@ -375,7 +371,7 @@ unsigned32 _CPU_ISR_Get_level( void );
: "d" ((_value)), "ao" ((__BFFFOtable)) \
: "cc" ) ; \
}
#endif /* M68K_HAS_EXTB_L */
#endif /* m68000 */
#endif

View File

@@ -1,880 +0,0 @@
/*
**************************************************************************
**************************************************************************
** **
** MOTOROLA MC68360 QUAD INTEGRATED COMMUNICATIONS CONTROLLER (QUICC) **
** **
** HARDWARE DECLARATIONS **
** **
** **
** Submitted By: **
** **
** W. Eric Norum **
** Saskatchewan Accelerator Laboratory **
** University of Saskatchewan **
** 107 North Road **
** Saskatoon, Saskatchewan, CANADA **
** S7N 5C6 **
** **
** eric@skatter.usask.ca **
** **
** $Id$ **
** **
**************************************************************************
**************************************************************************
*/
#ifndef __MC68360_h
#define __MC68360_h
/*
*************************************************************************
* REGISTER SUBBLOCKS *
*************************************************************************
*/
/*
* Memory controller registers
*/
typedef struct m360MEMCRegisters_ {
rtems_unsigned32 br;
rtems_unsigned32 or;
rtems_unsigned32 _pad[2];
} m360MEMCRegisters_t;
/*
* Serial Communications Controller registers
*/
typedef struct m360SCCRegisters_ {
rtems_unsigned32 gsmr_l;
rtems_unsigned32 gsmr_h;
rtems_unsigned16 psmr;
rtems_unsigned16 _pad0;
rtems_unsigned16 todr;
rtems_unsigned16 dsr;
rtems_unsigned16 scce;
rtems_unsigned16 _pad1;
rtems_unsigned16 sccm;
rtems_unsigned8 _pad2;
rtems_unsigned8 sccs;
rtems_unsigned32 _pad3[2];
} m360SCCRegisters_t;
/*
* Serial Management Controller registers
*/
typedef struct m360SMCRegisters_ {
rtems_unsigned16 _pad0;
rtems_unsigned16 smcmr;
rtems_unsigned16 _pad1;
rtems_unsigned8 smce;
rtems_unsigned8 _pad2;
rtems_unsigned16 _pad3;
rtems_unsigned8 smcm;
rtems_unsigned8 _pad4;
rtems_unsigned32 _pad5;
} m360SMCRegisters_t;
/*
*************************************************************************
* Miscellaneous Parameters *
*************************************************************************
*/
typedef struct m360MiscParms_ {
rtems_unsigned16 rev_num;
rtems_unsigned16 _res1;
rtems_unsigned32 _res2;
rtems_unsigned32 _res3;
} m360MiscParms_t;
/*
*************************************************************************
* RISC Timers *
*************************************************************************
*/
typedef struct m360TimerParms_ {
rtems_unsigned16 tm_base;
rtems_unsigned16 _tm_ptr;
rtems_unsigned16 _r_tmr;
rtems_unsigned16 _r_tmv;
rtems_unsigned32 tm_cmd;
rtems_unsigned32 tm_cnt;
} m360TimerParms_t;
/*
* RISC Controller Configuration Register (RCCR)
* All other bits in this register are either reserved or
* used only with a Motorola-supplied RAM microcode packge.
*/
#define M360_RCCR_TIME (1<<15) /* Enable timer */
#define M360_RCCR_TIMEP(x) ((x)<<8) /* Timer period */
/*
* Command register
* Set up this register before issuing a M360_CR_OP_SET_TIMER command.
*/
#define M360_TM_CMD_V (1<<31) /* Set to enable timer */
#define M360_TM_CMD_R (1<<30) /* Set for automatic restart */
#define M360_TM_CMD_TIMER(x) ((x)<<16) /* Select timer */
#define M360_TM_CMD_PERIOD(x) (x) /* Timer period (16 bits) */
/*
*************************************************************************
* DMA Controllers *
*************************************************************************
*/
typedef struct m360IDMAparms_ {
rtems_unsigned16 ibase;
rtems_unsigned16 ibptr;
rtems_unsigned32 _istate;
rtems_unsigned32 _itemp;
} m360IDMAparms_t;
/*
*************************************************************************
* Serial Communication Controllers *
*************************************************************************
*/
typedef struct m360SCCparms_ {
rtems_unsigned16 rbase;
rtems_unsigned16 tbase;
rtems_unsigned8 rfcr;
rtems_unsigned8 tfcr;
rtems_unsigned16 mrblr;
rtems_unsigned32 _rstate;
rtems_unsigned32 _pad0;
rtems_unsigned16 _rbptr;
rtems_unsigned16 _pad1;
rtems_unsigned32 _pad2;
rtems_unsigned32 _tstate;
rtems_unsigned32 _pad3;
rtems_unsigned16 _tbptr;
rtems_unsigned16 _pad4;
rtems_unsigned32 _pad5;
rtems_unsigned32 _rcrc;
rtems_unsigned32 _tcrc;
union {
struct {
rtems_unsigned32 _res0;
rtems_unsigned32 _res1;
rtems_unsigned16 max_idl;
rtems_unsigned16 _idlc;
rtems_unsigned16 brkcr;
rtems_unsigned16 parec;
rtems_unsigned16 frmec;
rtems_unsigned16 nosec;
rtems_unsigned16 brkec;
rtems_unsigned16 brklen;
rtems_unsigned16 uaddr[2];
rtems_unsigned16 _rtemp;
rtems_unsigned16 toseq;
rtems_unsigned16 character[8];
rtems_unsigned16 rccm;
rtems_unsigned16 rccr;
rtems_unsigned16 rlbc;
} uart;
} un;
} m360SCCparms_t;
typedef struct m360SCCENparms_ {
rtems_unsigned16 rbase;
rtems_unsigned16 tbase;
rtems_unsigned8 rfcr;
rtems_unsigned8 tfcr;
rtems_unsigned16 mrblr;
rtems_unsigned32 _rstate;
rtems_unsigned32 _pad0;
rtems_unsigned16 _rbptr;
rtems_unsigned16 _pad1;
rtems_unsigned32 _pad2;
rtems_unsigned32 _tstate;
rtems_unsigned32 _pad3;
rtems_unsigned16 _tbptr;
rtems_unsigned16 _pad4;
rtems_unsigned32 _pad5;
rtems_unsigned32 _rcrc;
rtems_unsigned32 _tcrc;
union {
struct {
rtems_unsigned32 _res0;
rtems_unsigned32 _res1;
rtems_unsigned16 max_idl;
rtems_unsigned16 _idlc;
rtems_unsigned16 brkcr;
rtems_unsigned16 parec;
rtems_unsigned16 frmec;
rtems_unsigned16 nosec;
rtems_unsigned16 brkec;
rtems_unsigned16 brklen;
rtems_unsigned16 uaddr[2];
rtems_unsigned16 _rtemp;
rtems_unsigned16 toseq;
rtems_unsigned16 character[8];
rtems_unsigned16 rccm;
rtems_unsigned16 rccr;
rtems_unsigned16 rlbc;
} uart;
struct {
rtems_unsigned32 c_pres;
rtems_unsigned32 c_mask;
rtems_unsigned32 crcec;
rtems_unsigned32 alec;
rtems_unsigned32 disfc;
rtems_unsigned16 pads;
rtems_unsigned16 ret_lim;
rtems_unsigned16 _ret_cnt;
rtems_unsigned16 mflr;
rtems_unsigned16 minflr;
rtems_unsigned16 maxd1;
rtems_unsigned16 maxd2;
rtems_unsigned16 _maxd;
rtems_unsigned16 dma_cnt;
rtems_unsigned16 _max_b;
rtems_unsigned16 gaddr1;
rtems_unsigned16 gaddr2;
rtems_unsigned16 gaddr3;
rtems_unsigned16 gaddr4;
rtems_unsigned32 _tbuf0data0;
rtems_unsigned32 _tbuf0data1;
rtems_unsigned32 _tbuf0rba0;
rtems_unsigned32 _tbuf0crc;
rtems_unsigned16 _tbuf0bcnt;
rtems_unsigned16 paddr_h;
rtems_unsigned16 paddr_m;
rtems_unsigned16 paddr_l;
rtems_unsigned16 p_per;
rtems_unsigned16 _rfbd_ptr;
rtems_unsigned16 _tfbd_ptr;
rtems_unsigned16 _tlbd_ptr;
rtems_unsigned32 _tbuf1data0;
rtems_unsigned32 _tbuf1data1;
rtems_unsigned32 _tbuf1rba0;
rtems_unsigned32 _tbuf1crc;
rtems_unsigned16 _tbuf1bcnt;
rtems_unsigned16 _tx_len;
rtems_unsigned16 iaddr1;
rtems_unsigned16 iaddr2;
rtems_unsigned16 iaddr3;
rtems_unsigned16 iaddr4;
rtems_unsigned16 _boff_cnt;
rtems_unsigned16 taddr_l;
rtems_unsigned16 taddr_m;
rtems_unsigned16 taddr_h;
} ethernet;
} un;
} m360SCCENparms_t;
/*
* Receive and transmit function code register bits
* These apply to the function code registers of all devices, not just SCC.
*/
#define M360_RFCR_MOT (1<<4)
#define M360_RFCR_DMA_SPACE 0x8
#define M360_TFCR_MOT (1<<4)
#define M360_TFCR_DMA_SPACE 0x8
/*
*************************************************************************
* Serial Management Controllers *
*************************************************************************
*/
typedef struct m360SMCparms_ {
rtems_unsigned16 rbase;
rtems_unsigned16 tbase;
rtems_unsigned8 rfcr;
rtems_unsigned8 tfcr;
rtems_unsigned16 mrblr;
rtems_unsigned32 _rstate;
rtems_unsigned32 _pad0;
rtems_unsigned16 _rbptr;
rtems_unsigned16 _pad1;
rtems_unsigned32 _pad2;
rtems_unsigned32 _tstate;
rtems_unsigned32 _pad3;
rtems_unsigned16 _tbptr;
rtems_unsigned16 _pad4;
rtems_unsigned32 _pad5;
union {
struct {
rtems_unsigned16 max_idl;
rtems_unsigned16 _pad0;
rtems_unsigned16 brklen;
rtems_unsigned16 brkec;
rtems_unsigned16 brkcr;
rtems_unsigned16 _r_mask;
} uart;
struct {
rtems_unsigned16 _pad0[5];
} transparent;
} un;
} m360SMCparms_t;
/*
* Mode register
*/
#define M360_SMCMR_CLEN(x) ((x)<<11) /* Character length */
#define M360_SMCMR_2STOP (1<<10) /* 2 stop bits */
#define M360_SMCMR_PARITY (1<<9) /* Enable parity */
#define M360_SMCMR_EVEN (1<<8) /* Even parity */
#define M360_SMCMR_SM_GCI (0<<4) /* GCI Mode */
#define M360_SMCMR_SM_UART (2<<4) /* UART Mode */
#define M360_SMCMR_SM_TRANSPARENT (3<<4) /* Transparent Mode */
#define M360_SMCMR_DM_LOOPBACK (1<<2) /* Local loopback mode */
#define M360_SMCMR_DM_ECHO (2<<2) /* Echo mode */
#define M360_SMCMR_TEN (1<<1) /* Enable transmitter */
#define M360_SMCMR_REN (1<<0) /* Enable receiver */
/*
* Event and mask registers (SMCE, SMCM)
*/
#define M360_SMCE_BRK (1<<4)
#define M360_SMCE_BSY (1<<2)
#define M360_SMCE_TX (1<<1)
#define M360_SMCE_RX (1<<0)
/*
*************************************************************************
* Serial Peripheral Interface *
*************************************************************************
*/
typedef struct m360SPIparms_ {
rtems_unsigned16 rbase;
rtems_unsigned16 tbase;
rtems_unsigned8 rfcr;
rtems_unsigned8 tfcr;
rtems_unsigned16 mrblr;
rtems_unsigned32 _rstate;
rtems_unsigned32 _pad0;
rtems_unsigned16 _rbptr;
rtems_unsigned16 _pad1;
rtems_unsigned32 _pad2;
rtems_unsigned32 _tstate;
rtems_unsigned32 _pad3;
rtems_unsigned16 _tbptr;
rtems_unsigned16 _pad4;
rtems_unsigned32 _pad5;
} m360SPIparms_t;
/*
* Mode register (SPMODE)
*/
#define M360_SPMODE_LOOP (1<<14) /* Local loopback mode */
#define M360_SPMODE_CI (1<<13) /* Clock invert */
#define M360_SPMODE_CP (1<<12) /* Clock phase */
#define M360_SPMODE_DIV16 (1<<11) /* Divide BRGCLK by 16 */
#define M360_SPMODE_REV (1<<10) /* Reverse data */
#define M360_SPMODE_MASTER (1<<9) /* SPI is master */
#define M360_SPMODE_EN (1<<8) /* Enable SPI */
#define M360_SPMODE_CLEN(x) ((x)<<4) /* Character length */
#define M360_SPMODE_PM(x) (x) /* Prescaler modulus */
/*
* Mode register (SPCOM)
*/
#define M360_SPCOM_STR (1<<7) /* Start transmit */
/*
* Event and mask registers (SPIE, SPIM)
*/
#define M360_SPIE_MME (1<<5) /* Multi-master error */
#define M360_SPIE_TXE (1<<4) /* Tx error */
#define M360_SPIE_BSY (1<<2) /* Busy condition*/
#define M360_SPIE_TXB (1<<1) /* Tx buffer */
#define M360_SPIE_RXB (1<<0) /* Rx buffer */
/*
*************************************************************************
* SDMA (SCC, SMC, SPI) Buffer Descriptors *
*************************************************************************
*/
typedef struct m360BufferDescriptor_ {
rtems_unsigned16 status;
rtems_unsigned16 length;
volatile void *buffer;
} m360BufferDescriptor_t;
/*
* Bits in receive buffer descriptor status word
*/
#define M360_BD_EMPTY (1<<15) /* Ethernet, SCC UART, SMC UART, SPI */
#define M360_BD_WRAP (1<<13) /* Ethernet, SCC UART, SMC UART, SPI */
#define M360_BD_INTERRUPT (1<<12) /* Ethernet, SCC UART, SMC UART, SPI */
#define M360_BD_LAST (1<<11) /* Ethernet, SPI */
#define M360_BD_CONTROL_CHAR (1<<11) /* SCC UART */
#define M360_BD_FIRST_IN_FRAME (1<<10) /* Ethernet */
#define M360_BD_ADDRESS (1<<10) /* SCC UART */
#define M360_BD_CONTINUOUS (1<<9) /* SCC UART, SMC UART, SPI */
#define M360_BD_MISS (1<<8) /* Ethernet */
#define M360_BD_IDLE (1<<8) /* SCC UART, SMC UART */
#define M360_BD_ADDRSS_MATCH (1<<7) /* SCC UART */
#define M360_BD_LONG (1<<5) /* Ethernet */
#define M360_BD_BREAK (1<<5) /* SCC UART, SMC UART */
#define M360_BD_NONALIGNED (1<<4) /* Ethernet */
#define M360_BD_FRAMING_ERROR (1<<4) /* SCC UART, SMC UART */
#define M360_BD_SHORT (1<<3) /* Ethernet */
#define M360_BD_PARITY_ERROR (1<<3) /* SCC UART, SMC UART */
#define M360_BD_CRC_ERROR (1<<2) /* Ethernet */
#define M360_BD_OVERRUN (1<<1) /* Ethernet, SCC UART, SMC UART, SPI */
#define M360_BD_COLLISION (1<<0) /* Ethernet */
#define M360_BD_CARRIER_LOST (1<<0) /* SCC UART */
#define M360_BD_MASTER_ERROR (1<<0) /* SPI */
/*
* Bits in transmit buffer descriptor status word
* Many bits have the same meaning as those in receiver buffer descriptors.
*/
#define M360_BD_READY (1<<15) /* Ethernet, SCC UART, SMC UART, SPI */
#define M360_BD_PAD (1<<14) /* Ethernet */
#define M360_BD_CTS_REPORT (1<<11) /* SCC UART */
#define M360_BD_TX_CRC (1<<10) /* Ethernet */
#define M360_BD_DEFER (1<<9) /* Ethernet */
#define M360_BD_HEARTBEAT (1<<8) /* Ethernet */
#define M360_BD_PREAMBLE (1<<8) /* SCC UART, SMC UART */
#define M360_BD_LATE_COLLISION (1<<7) /* Ethernet */
#define M360_BD_NO_STOP_BIT (1<<7) /* SCC UART */
#define M360_BD_RETRY_LIMIT (1<<6) /* Ethernet */
#define M360_BD_RETRY_COUNT(x) (((x)&0x3C)>>2) /* Ethernet */
#define M360_BD_UNDERRUN (1<<1) /* Ethernet, SPI */
#define M360_BD_CARRIER_LOST (1<<0) /* Ethernet */
#define M360_BD_CTS_LOST (1<<0) /* SCC UART */
/*
*************************************************************************
* IDMA Buffer Descriptors *
*************************************************************************
*/
typedef struct m360IDMABufferDescriptor_ {
rtems_unsigned16 status;
rtems_unsigned16 _pad;
rtems_unsigned32 length;
void *source;
void *destination;
} m360IDMABufferDescriptor_t;
/*
*************************************************************************
* RISC Communication Processor Module Command Register (CR) *
*************************************************************************
*/
#define M360_CR_RST (1<<15) /* Reset communication processor */
#define M360_CR_OP_INIT_RX_TX (0<<8) /* SCC, SMC UART, SMC GCI, SPI */
#define M360_CR_OP_INIT_RX (1<<8) /* SCC, SMC UART, SPI */
#define M360_CR_OP_INIT_TX (2<<8) /* SCC, SMC UART, SPI */
#define M360_CR_OP_INIT_HUNT (3<<8) /* SCC, SMC UART */
#define M360_CR_OP_STOP_TX (4<<8) /* SCC, SMC UART */
#define M360_CR_OP_GR_STOP_TX (5<<8) /* SCC */
#define M360_CR_OP_INIT_IDMA (5<<8) /* IDMA */
#define M360_CR_OP_RESTART_TX (6<<8) /* SCC, SMC UART */
#define M360_CR_OP_CLOSE_RX_BD (7<<8) /* SCC, SMC UART, SPI */
#define M360_CR_OP_SET_GRP_ADDR (8<<8) /* SCC */
#define M360_CR_OP_SET_TIMER (8<<8) /* Timer */
#define M360_CR_OP_GCI_TIMEOUT (9<<8) /* SMC GCI */
#define M360_CR_OP_RESERT_BCS (10<<8) /* SCC */
#define M360_CR_OP_GCI_ABORT (10<<8) /* SMC GCI */
#define M360_CR_CHAN_SCC1 (0<<4) /* Channel selection */
#define M360_CR_CHAN_SCC2 (4<<4)
#define M360_CR_CHAN_SPI (5<<4)
#define M360_CR_CHAN_TIMER (5<<4)
#define M360_CR_CHAN_SCC3 (8<<4)
#define M360_CR_CHAN_SMC1 (9<<4)
#define M360_CR_CHAN_IDMA1 (9<<4)
#define M360_CR_CHAN_SCC4 (12<<4)
#define M360_CR_CHAN_SMC2 (13<<4)
#define M360_CR_CHAN_IDMA2 (13<<4)
#define M360_CR_FLG (1<<0) /* Command flag */
/*
*************************************************************************
* System Protection Control Register (SYPCR) *
*************************************************************************
*/
#define M360_SYPCR_SWE (1<<7) /* Software watchdog enable */
#define M360_SYPCR_SWRI (1<<6) /* Software watchdog reset select */
#define M360_SYPCR_SWT1 (1<<5) /* Software watchdog timing bit 1 */
#define M360_SYPCR_SWT0 (1<<4) /* Software watchdog timing bit 0 */
#define M360_SYPCR_DBFE (1<<3) /* Double bus fault monitor enable */
#define M360_SYPCR_BME (1<<2) /* Bus monitor external enable */
#define M360_SYPCR_BMT1 (1<<1) /* Bus monitor timing bit 1 */
#define M360_SYPCR_BMT0 (1<<0) /* Bus monitor timing bit 0 */
/*
*************************************************************************
* Memory Control Registers *
*************************************************************************
*/
#define M360_GMR_RCNT(x) ((x)<<24) /* Refresh count */
#define M360_GMR_RFEN (1<<23) /* Refresh enable */
#define M360_GMR_RCYC(x) ((x)<<21) /* Refresh cycle length */
#define M360_GMR_PGS(x) ((x)<<18) /* Page size */
#define M360_GMR_DPS_32BIT (0<<16) /* DRAM port size */
#define M360_GMR_DPS_16BIT (1<<16)
#define M360_GMR_DPS_8BIT (2<<16)
#define M360_GMR_DPS_DSACK (3<<16)
#define M360_GMR_WBT40 (1<<15) /* Wait between 040 transfers */
#define M360_GMR_WBTQ (1<<14) /* Wait between 360 transfers */
#define M360_GMR_SYNC (1<<13) /* Synchronous external access */
#define M360_GMR_EMWS (1<<12) /* External master wait state */
#define M360_GMR_OPAR (1<<11) /* Odd parity */
#define M360_GMR_PBEE (1<<10) /* Parity bus error enable */
#define M360_GMR_TSS40 (1<<9) /* TS* sample for 040 */
#define M360_GMR_NCS (1<<8) /* No CPU space */
#define M360_GMR_DWQ (1<<7) /* Delay write for 360 */
#define M360_GMR_DW40 (1<<6) /* Delay write for 040 */
#define M360_GMR_GAMX (1<<5) /* Global address mux enable */
#define M360_MEMC_BR_FC(x) ((x)<<7) /* Function code limit */
#define M360_MEMC_BR_TRLXQ (1<<6) /* Relax timing requirements */
#define M360_MEMC_BR_BACK40 (1<<5) /* Burst acknowledge to 040 */
#define M360_MEMC_BR_CSNT40 (1<<4) /* CS* negate timing for 040 */
#define M360_MEMC_BR_CSNTQ (1<<3) /* CS* negate timing for 360 */
#define M360_MEMC_BR_PAREN (1<<2) /* Enable parity checking */
#define M360_MEMC_BR_WP (1<<1) /* Write Protect */
#define M360_MEMC_BR_V (1<<0) /* Base/Option register are valid */
#define M360_MEMC_OR_TCYC(x) ((x)<<28) /* Cycle length (clocks) */
#define M360_MEMC_OR_WAITS(x) M360_MEMC_OR_TCYC((x)+1)
#define M360_MEMC_OR_2KB 0x0FFFF800 /* Address range */
#define M360_MEMC_OR_4KB 0x0FFFF000
#define M360_MEMC_OR_8KB 0x0FFFE000
#define M360_MEMC_OR_16KB 0x0FFFC000
#define M360_MEMC_OR_32KB 0x0FFF8000
#define M360_MEMC_OR_64KB 0x0FFF0000
#define M360_MEMC_OR_128KB 0x0FFE0000
#define M360_MEMC_OR_256KB 0x0FFC0000
#define M360_MEMC_OR_512KB 0x0FF80000
#define M360_MEMC_OR_1MB 0x0FF00000
#define M360_MEMC_OR_2MB 0x0FE00000
#define M360_MEMC_OR_4MB 0x0FC00000
#define M360_MEMC_OR_8MB 0x0F800000
#define M360_MEMC_OR_16MB 0x0F000000
#define M360_MEMC_OR_32MB 0x0E000000
#define M360_MEMC_OR_64MB 0x0C000000
#define M360_MEMC_OR_128MB 0x08000000
#define M360_MEMC_OR_256MB 0x00000000
#define M360_MEMC_OR_FCMC(x) ((x)<<7) /* Function code mask */
#define M360_MEMC_OR_BCYC(x) ((x)<<5) /* Burst cycle length (clocks) */
#define M360_MEMC_OR_PGME (1<<3) /* Page mode enable */
#define M360_MEMC_OR_32BIT (0<<1) /* Port size */
#define M360_MEMC_OR_16BIT (1<<1)
#define M360_MEMC_OR_8BIT (2<<1)
#define M360_MEMC_OR_DSACK (3<<1)
#define M360_MEMC_OR_DRAM (1<<0) /* Dynamic RAM select */
/*
*************************************************************************
* SI Mode Register (SIMODE) *
*************************************************************************
*/
#define M360_SI_SMC2_BITS 0xFFFF0000 /* All SMC2 bits */
#define M360_SI_SMC2_TDM (1<<31) /* Multiplexed SMC2 */
#define M360_SI_SMC2_BRG1 (0<<28) /* SMC2 clock souce */
#define M360_SI_SMC2_BRG2 (1<<28)
#define M360_SI_SMC2_BRG3 (2<<28)
#define M360_SI_SMC2_BRG4 (3<<28)
#define M360_SI_SMC2_CLK5 (0<<28)
#define M360_SI_SMC2_CLK6 (1<<28)
#define M360_SI_SMC2_CLK7 (2<<28)
#define M360_SI_SMC2_CLK8 (3<<28)
#define M360_SI_SMC1_BITS 0x0000FFFF /* All SMC1 bits */
#define M360_SI_SMC1_TDM (1<<15) /* Multiplexed SMC1 */
#define M360_SI_SMC1_BRG1 (0<<12) /* SMC1 clock souce */
#define M360_SI_SMC1_BRG2 (1<<12)
#define M360_SI_SMC1_BRG3 (2<<12)
#define M360_SI_SMC1_BRG4 (3<<12)
#define M360_SI_SMC1_CLK1 (0<<12)
#define M360_SI_SMC1_CLK2 (1<<12)
#define M360_SI_SMC1_CLK3 (2<<12)
#define M360_SI_SMC1_CLK4 (3<<12)
/*
*************************************************************************
* SDMA Configuration Register (SDMA) *
*************************************************************************
*/
#define M360_SDMA_FREEZE (2<<13) /* Freeze on next bus cycle */
#define M360_SDMA_SISM_7 (7<<8) /* Normal interrupt service mask */
#define M360_SDMA_SAID_4 (4<<4) /* Normal arbitration ID */
#define M360_SDMA_INTE (1<<1) /* SBER interrupt enable */
#define M360_SDMA_INTB (1<<0) /* SBKP interrupt enable */
/*
*************************************************************************
* Baud (sic) Rate Generators *
*************************************************************************
*/
#define M360_BRG_RST (1<<17) /* Reset generator */
#define M360_BRG_EN (1<<16) /* Enable generator */
#define M360_BRG_EXTC_BRGCLK (0<<14) /* Source is BRGCLK */
#define M360_BRG_EXTC_CLK2 (1<<14) /* Source is CLK2 pin */
#define M360_BRG_EXTC_CLK6 (2<<14) /* Source is CLK6 pin */
#define M360_BRG_ATB (1<<13) /* Autobaud */
#define M360_BRG_115200 (13<<1) /* Assume 25 MHz clock */
#define M360_BRG_57600 (26<<1)
#define M360_BRG_38400 (40<<1)
#define M360_BRG_19200 (80<<1)
#define M360_BRG_9600 (162<<1)
#define M360_BRG_4800 (324<<1)
#define M360_BRG_2400 (650<<1)
#define M360_BRG_1200 (1301<<1)
#define M360_BRG_600 (2603<<1)
#define M360_BRG_300 ((324<<1) | 1)
#define M360_BRG_150 ((650<<1) | 1)
#define M360_BRG_75 ((1301<<1) | 1)
/*
*************************************************************************
* MC68360 DUAL-PORT RAM AND REGISTERS *
*************************************************************************
*/
typedef struct m360_ {
/*
* Dual-port RAM
*/
rtems_unsigned8 dpram0[0x400]; /* Microcode program */
rtems_unsigned8 dpram1[0x200];
rtems_unsigned8 dpram2[0x100]; /* Microcode scratch */
rtems_unsigned8 dpram3[0x100]; /* Not on REV A or B masks */
rtems_unsigned8 _rsv0[0xC00-0x800];
m360SCCENparms_t scc1p;
rtems_unsigned8 _rsv1[0xCB0-0xC00-sizeof(m360SCCENparms_t)];
m360MiscParms_t miscp;
rtems_unsigned8 _rsv2[0xD00-0xCB0-sizeof(m360MiscParms_t)];
m360SCCparms_t scc2p;
rtems_unsigned8 _rsv3[0xD80-0xD00-sizeof(m360SCCparms_t)];
m360SPIparms_t spip;
rtems_unsigned8 _rsv4[0xDB0-0xD80-sizeof(m360SPIparms_t)];
m360TimerParms_t tmp;
rtems_unsigned8 _rsv5[0xE00-0xDB0-sizeof(m360TimerParms_t)];
m360SCCparms_t scc3p;
rtems_unsigned8 _rsv6[0xE70-0xE00-sizeof(m360SCCparms_t)];
m360IDMAparms_t idma1p;
rtems_unsigned8 _rsv7[0xE80-0xE70-sizeof(m360IDMAparms_t)];
m360SMCparms_t smc1p;
rtems_unsigned8 _rsv8[0xF00-0xE80-sizeof(m360SMCparms_t)];
m360SCCparms_t scc4p;
rtems_unsigned8 _rsv9[0xF70-0xF00-sizeof(m360SCCparms_t)];
m360IDMAparms_t idma2p;
rtems_unsigned8 _rsv10[0xF80-0xF70-sizeof(m360IDMAparms_t)];
m360SMCparms_t smc2p;
rtems_unsigned8 _rsv11[0x1000-0xF80-sizeof(m360SMCparms_t)];
/*
* SIM Block
*/
rtems_unsigned32 mcr;
rtems_unsigned32 _pad00;
rtems_unsigned8 avr;
rtems_unsigned8 rsr;
rtems_unsigned16 _pad01;
rtems_unsigned8 clkocr;
rtems_unsigned8 _pad02;
rtems_unsigned16 _pad03;
rtems_unsigned16 pllcr;
rtems_unsigned16 _pad04;
rtems_unsigned16 cdvcr;
rtems_unsigned16 pepar;
rtems_unsigned32 _pad05[2];
rtems_unsigned16 _pad06;
rtems_unsigned8 sypcr;
rtems_unsigned8 swiv;
rtems_unsigned16 _pad07;
rtems_unsigned16 picr;
rtems_unsigned16 _pad08;
rtems_unsigned16 pitr;
rtems_unsigned16 _pad09;
rtems_unsigned8 _pad10;
rtems_unsigned8 swsr;
rtems_unsigned32 bkar;
rtems_unsigned32 bcar;
rtems_unsigned32 _pad11[2];
/*
* MEMC Block
*/
rtems_unsigned32 gmr;
rtems_unsigned16 mstat;
rtems_unsigned16 _pad12;
rtems_unsigned32 _pad13[2];
m360MEMCRegisters_t memc[8];
rtems_unsigned8 _pad14[0xF0-0xD0];
rtems_unsigned8 _pad15[0x100-0xF0];
rtems_unsigned8 _pad16[0x500-0x100];
/*
* IDMA1 Block
*/
rtems_unsigned16 iccr;
rtems_unsigned16 _pad17;
rtems_unsigned16 cmr1;
rtems_unsigned16 _pad18;
rtems_unsigned32 sapr1;
rtems_unsigned32 dapr1;
rtems_unsigned32 bcr1;
rtems_unsigned8 fcr1;
rtems_unsigned8 _pad19;
rtems_unsigned8 cmar1;
rtems_unsigned8 _pad20;
rtems_unsigned8 csr1;
rtems_unsigned8 _pad21;
rtems_unsigned16 _pad22;
/*
* SDMA Block
*/
rtems_unsigned8 sdsr;
rtems_unsigned8 _pad23;
rtems_unsigned16 sdcr;
rtems_unsigned32 sdar;
/*
* IDMA2 Block
*/
rtems_unsigned16 _pad24;
rtems_unsigned16 cmr2;
rtems_unsigned32 sapr2;
rtems_unsigned32 dapr2;
rtems_unsigned32 bcr2;
rtems_unsigned8 fcr2;
rtems_unsigned8 _pad26;
rtems_unsigned8 cmar2;
rtems_unsigned8 _pad27;
rtems_unsigned8 csr2;
rtems_unsigned8 _pad28;
rtems_unsigned16 _pad29;
rtems_unsigned32 _pad30;
/*
* CPIC Block
*/
rtems_unsigned32 cicr;
rtems_unsigned32 cipr;
rtems_unsigned32 cimr;
rtems_unsigned32 cisr;
/*
* Parallel I/O Block
*/
rtems_unsigned16 padir;
rtems_unsigned16 papar;
rtems_unsigned16 paodr;
rtems_unsigned16 padat;
rtems_unsigned32 _pad31[2];
rtems_unsigned16 pcdir;
rtems_unsigned16 pcpar;
rtems_unsigned16 pcso;
rtems_unsigned16 pcdat;
rtems_unsigned16 pcint;
rtems_unsigned16 _pad32;
rtems_unsigned32 _pad33[5];
/*
* TIMER Block
*/
rtems_unsigned16 tgcr;
rtems_unsigned16 _pad34;
rtems_unsigned32 _pad35[3];
rtems_unsigned16 tmr1;
rtems_unsigned16 tmr2;
rtems_unsigned16 trr1;
rtems_unsigned16 trr2;
rtems_unsigned16 tcr1;
rtems_unsigned16 tcr2;
rtems_unsigned16 tcn1;
rtems_unsigned16 tcn2;
rtems_unsigned16 tmr3;
rtems_unsigned16 tmr4;
rtems_unsigned16 trr3;
rtems_unsigned16 trr4;
rtems_unsigned16 tcr3;
rtems_unsigned16 tcr4;
rtems_unsigned16 tcn3;
rtems_unsigned16 tcn4;
rtems_unsigned16 ter1;
rtems_unsigned16 ter2;
rtems_unsigned16 ter3;
rtems_unsigned16 ter4;
rtems_unsigned32 _pad36[2];
/*
* CP Block
*/
rtems_unsigned16 cr;
rtems_unsigned16 _pad37;
rtems_unsigned16 rccr;
rtems_unsigned16 _pad38;
rtems_unsigned32 _pad39[3];
rtems_unsigned16 _pad40;
rtems_unsigned16 rter;
rtems_unsigned16 _pad41;
rtems_unsigned16 rtmr;
rtems_unsigned32 _pad42[5];
/*
* BRG Block
*/
rtems_unsigned32 brgc1;
rtems_unsigned32 brgc2;
rtems_unsigned32 brgc3;
rtems_unsigned32 brgc4;
/*
* SCC Block
*/
m360SCCRegisters_t scc1;
m360SCCRegisters_t scc2;
m360SCCRegisters_t scc3;
m360SCCRegisters_t scc4;
/*
* SMC Block
*/
m360SMCRegisters_t smc1;
m360SMCRegisters_t smc2;
/*
* SPI Block
*/
rtems_unsigned16 spmode;
rtems_unsigned16 _pad43[2];
rtems_unsigned8 spie;
rtems_unsigned8 _pad44;
rtems_unsigned16 _pad45;
rtems_unsigned8 spim;
rtems_unsigned8 _pad46[2];
rtems_unsigned8 spcom;
rtems_unsigned16 _pad47[2];
/*
* PIP Block
*/
rtems_unsigned16 pipc;
rtems_unsigned16 _pad48;
rtems_unsigned16 ptpr;
rtems_unsigned32 pbdir;
rtems_unsigned32 pbpar;
rtems_unsigned16 _pad49;
rtems_unsigned16 pbodr;
rtems_unsigned32 pbdat;
rtems_unsigned32 _pad50[6];
/*
* SI Block
*/
rtems_unsigned32 simode;
rtems_unsigned8 sigmr;
rtems_unsigned8 _pad51;
rtems_unsigned8 sistr;
rtems_unsigned8 sicmr;
rtems_unsigned32 _pad52;
rtems_unsigned32 sicr;
rtems_unsigned16 _pad53;
rtems_unsigned16 sirp[2];
rtems_unsigned16 _pad54;
rtems_unsigned32 _pad55[2];
rtems_unsigned8 siram[256];
} m360_t;
extern volatile m360_t m360;
#endif /* __MC68360_h */

View File

@@ -59,7 +59,7 @@ extern "C" {
* m68lc040 (no FP)
* m68ec040 (no FP)
* m68302 (no FP)
* mcpu32 (no FP) (includes m68360)
* m68360 (no FP)
*
* Primary difference (for RTEMS) between m68040, m680lc040, and
* m68ec040 is the presence or absence of the FPU.
@@ -76,17 +76,8 @@ extern "C" {
* (cause an indeterminate result). The 68EC040 and 68LC040 do not
* implement the DLE or multiplexed bus modes. The 68EC040 does not
* implement the output buffer impedance selection mode of operation."
*
* M68K_HAS_EXTB_L is used to enable/disable usage of the extb.l instruction
* which is not available for 68000 or 68ec000 cores (68000, 68001, 68008,
* 68010, 68302, 68306, 68307). This instruction is available on the 68020
* up and the cpu32 based models.
*
* NOTE:
* Eventually it would be nice to evaluate doing a lot of this section
* by having each model specigy which core it uses and then go from there.
*/
#if defined(m68000)
#define CPU_MODEL_NAME "m68000"
@@ -95,7 +86,6 @@ extern "C" {
#define M68K_HAS_FPU 0
#define M68K_HAS_BFFFO 0
#define M68K_HAS_PREINDEXING 0
#define M68K_HAS_EXTB_L 0
#elif defined(m68020)
@@ -105,7 +95,6 @@ extern "C" {
#define M68K_HAS_FPU 1
#define M68K_HAS_BFFFO 1
#define M68K_HAS_PREINDEXING 1
#define M68K_HAS_EXTB_L 1
#elif defined(m68020_nofp)
@@ -115,7 +104,6 @@ extern "C" {
#define M68K_HAS_FPU 0
#define M68K_HAS_BFFFO 1
#define M68K_HAS_PREINDEXING 1
#define M68K_HAS_EXTB_L 1
#elif defined(m68030)
@@ -125,7 +113,6 @@ extern "C" {
#define M68K_HAS_FPU 1
#define M68K_HAS_BFFFO 1
#define M68K_HAS_PREINDEXING 1
#define M68K_HAS_EXTB_L 1
#elif defined(m68040)
@@ -135,7 +122,6 @@ extern "C" {
#define M68K_HAS_FPU 1
#define M68K_HAS_BFFFO 1
#define M68K_HAS_PREINDEXING 1
#define M68K_HAS_EXTB_L 1
#elif defined(m68lc040)
@@ -145,7 +131,6 @@ extern "C" {
#define M68K_HAS_FPU 0
#define M68K_HAS_BFFFO 1
#define M68K_HAS_PREINDEXING 1
#define M68K_HAS_EXTB_L 1
#elif defined(m68ec040)
@@ -155,7 +140,6 @@ extern "C" {
#define M68K_HAS_FPU 0
#define M68K_HAS_BFFFO 1
#define M68K_HAS_PREINDEXING 1
#define M68K_HAS_EXTB_L 1
#elif defined(m68302)
/* essentially a m68000 with onboard peripherals */
@@ -165,7 +149,6 @@ extern "C" {
#define M68K_HAS_FPU 0
#define M68K_HAS_BFFFO 0
#define M68K_HAS_PREINDEXING 0
#define M68K_HAS_EXTB_L 0
#elif defined(m68332)
@@ -175,17 +158,15 @@ extern "C" {
#define M68K_HAS_FPU 0
#define M68K_HAS_BFFFO 0
#define M68K_HAS_PREINDEXING 0
#define M68K_HAS_EXTB_L 1
#elif defined(mcpu32)
#elif defined(m68360)
#define CPU_MODEL_NAME "mcpu32"
#define CPU_MODEL_NAME "m68360"
#define M68K_HAS_VBR 1
#define M68K_HAS_SEPARATE_STACKS 0
#define M68K_HAS_FPU 0
#define M68K_HAS_BFFFO 0
#define M68K_HAS_PREINDEXING 1
#define M68K_HAS_EXTB_L 1
#else

View File

@@ -328,6 +328,12 @@ typedef struct {
/*
* The following table contains the information required to configure
* the XXX processor specific parameters.
*
* NOTE: The interrupt_stack_size field is required if
* CPU_ALLOCATE_INTERRUPT_STACK is defined as TRUE.
*
* The pretasking_hook, predriver_hook, and postdriver_hook,
* and the do_zero_of_workspace fields are required on ALL CPUs.
*/
typedef struct {
@@ -338,10 +344,6 @@ typedef struct {
boolean do_zero_of_workspace;
unsigned32 interrupt_stack_size;
unsigned32 extra_mpci_receive_server_stack;
void * (*stack_allocate_hook)( unsigned32 );
void (*stack_free_hook)( void* );
/* end of fields required on all CPUs */
unsigned32 some_other_cpu_dependent_info;
} rtems_cpu_table;

View File

@@ -492,6 +492,12 @@ typedef struct {
/*
* The following table contains the information required to configure
* the processor specific parameters.
*
* NOTE: The interrupt_stack_size field is required if
* CPU_ALLOCATE_INTERRUPT_STACK is defined as TRUE.
*
* The pretasking_hook, predriver_hook, and postdriver_hook,
* and the do_zero_of_workspace fields are required on ALL CPUs.
*/
typedef struct {
@@ -502,10 +508,6 @@ typedef struct {
boolean do_zero_of_workspace;
unsigned32 interrupt_stack_size;
unsigned32 extra_mpci_receive_server_stack;
void * (*stack_allocate_hook)( unsigned32 );
void (*stack_free_hook)( void* );
/* end of fields required on all CPUs */
} rtems_cpu_table;
/*

View File

@@ -34,20 +34,18 @@
#define MALLOC_0_RETURNS_NULL
#endif
#include <sys/types.h>
#include <sys/times.h>
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
#include <signal.h>
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <string.h> /* memset */
#ifndef SA_RESTART
#define SA_RESTART 0
@@ -55,16 +53,16 @@
typedef struct {
jmp_buf regs;
unsigned32 isr_level;
sigset_t isr_level;
} Context_Control_overlay;
void _CPU_Signal_initialize(void);
void _CPU_Stray_signal(int);
void _CPU_ISR_Handler(int);
static sigset_t _CPU_Signal_mask;
static Context_Control_overlay _CPU_Context_Default_with_ISRs_enabled;
static Context_Control_overlay _CPU_Context_Default_with_ISRs_disabled;
sigset_t _CPU_Signal_mask;
Context_Control _CPU_Context_Default_with_ISRs_enabled;
Context_Control _CPU_Context_Default_with_ISRs_disabled;
/*
* Which cpu are we? Used by libcpu and libbsp.
@@ -92,7 +90,7 @@ void _CPU_ISR_From_CPU_Init()
/*
* Block all the signals except SIGTRAP for the debugger
* and fatal error signals.
* and SIGABRT for fatal errors.
*/
(void) sigfillset(&_CPU_Signal_mask);
@@ -100,9 +98,6 @@ void _CPU_ISR_From_CPU_Init()
(void) sigdelset(&_CPU_Signal_mask, SIGABRT);
(void) sigdelset(&_CPU_Signal_mask, SIGIOT);
(void) sigdelset(&_CPU_Signal_mask, SIGCONT);
(void) sigdelset(&_CPU_Signal_mask, SIGSEGV);
(void) sigdelset(&_CPU_Signal_mask, SIGBUS);
(void) sigdelset(&_CPU_Signal_mask, SIGFPE);
_CPU_ISR_Enable(1);
@@ -123,16 +118,20 @@ void _CPU_Signal_initialize( void )
{
struct sigaction act;
sigset_t mask;
/* mark them all active except for TraceTrap and Abort */
mask = _CPU_Signal_mask;
sigfillset(&mask);
sigdelset(&mask, SIGTRAP);
sigdelset(&mask, SIGABRT);
sigdelset(&mask, SIGIOT);
sigdelset(&mask, SIGCONT);
sigprocmask(SIG_UNBLOCK, &mask, 0);
act.sa_handler = _CPU_ISR_Handler;
act.sa_mask = mask;
act.sa_flags = SA_RESTART;
sigaction(SIGHUP, &act, 0);
sigaction(SIGINT, &act, 0);
sigaction(SIGQUIT, &act, 0);
@@ -166,6 +165,7 @@ void _CPU_Signal_initialize( void )
#ifdef SIGLOST
sigaction(SIGLOST, &act, 0);
#endif
}
/*PAGE
@@ -180,6 +180,8 @@ void _CPU_Context_From_CPU_Init()
/*
* HACK - set the _SYSTEM_ID to 0x20c so that setjmp/longjmp
* will handle the full 32 floating point registers.
*
* NOTE: Is this a bug in HPUX9?
*/
{
@@ -193,28 +195,16 @@ void _CPU_Context_From_CPU_Init()
* get default values to use in _CPU_Context_Initialize()
*/
(void) memset(
&_CPU_Context_Default_with_ISRs_enabled,
0,
sizeof(Context_Control)
);
(void) memset(
&_CPU_Context_Default_with_ISRs_disabled,
0,
sizeof(Context_Control)
);
_CPU_ISR_Set_level( 0 );
_CPU_Context_switch(
(Context_Control *) &_CPU_Context_Default_with_ISRs_enabled,
(Context_Control *) &_CPU_Context_Default_with_ISRs_enabled
&_CPU_Context_Default_with_ISRs_enabled,
&_CPU_Context_Default_with_ISRs_enabled
);
_CPU_ISR_Set_level( 1 );
_CPU_Context_switch(
(Context_Control *) &_CPU_Context_Default_with_ISRs_disabled,
(Context_Control *) &_CPU_Context_Default_with_ISRs_disabled
&_CPU_Context_Default_with_ISRs_disabled,
&_CPU_Context_Default_with_ISRs_disabled
);
}
@@ -223,16 +213,21 @@ void _CPU_Context_From_CPU_Init()
* _CPU_ISR_Get_level
*/
sigset_t GET_old_mask;
unsigned32 _CPU_ISR_Get_level( void )
{
sigset_t old_mask;
/* sigset_t old_mask; */
unsigned32 old_level;
sigprocmask(SIG_BLOCK, 0, &old_mask);
sigprocmask(0, 0, &GET_old_mask);
if (memcmp((void *)&posix_empty_mask, (void *)&old_mask, sizeof(sigset_t)))
return 1;
return 0;
if (memcmp((void *)&posix_empty_mask, (void *)&GET_old_mask, sizeof(sigset_t)))
old_level = 1;
else
old_level = 0;
return old_level;
}
/* _CPU_Initialize
@@ -354,15 +349,8 @@ void _CPU_Install_interrupt_stack( void )
void _CPU_Thread_Idle_body( void )
{
while (1) {
#ifdef RTEMS_DEBUG
/* interrupts had better be enabled at this point! */
if (_CPU_ISR_Get_level() != 0)
abort();
#endif
while (1)
pause();
}
}
/*PAGE
@@ -379,6 +367,7 @@ void _CPU_Context_Initialize(
boolean _is_fp
)
{
void *source;
unsigned32 *addr;
unsigned32 jmp_addr;
unsigned32 _stack_low; /* lowest "stack aligned" address */
@@ -393,28 +382,25 @@ void _CPU_Context_Initialize(
* grow up, we build the stack based on the _stack_low address.
*/
_stack_low = (unsigned32)(_stack_base) + CPU_STACK_ALIGNMENT - 1;
_stack_low = ((unsigned32)(_stack_base) + CPU_STACK_ALIGNMENT);
_stack_low &= ~(CPU_STACK_ALIGNMENT - 1);
_stack_high = (unsigned32)(_stack_base) + _size;
_stack_high = ((unsigned32)(_stack_base) + _size);
_stack_high &= ~(CPU_STACK_ALIGNMENT - 1);
if (_stack_high > _stack_low)
_the_size = _stack_high - _stack_low;
else
_the_size = _stack_low - _stack_high;
_the_size = _size & ~(CPU_STACK_ALIGNMENT - 1);
/*
* Slam our jmp_buf template into the context we are creating
*/
if ( _new_level == 0 )
*_the_context = *(Context_Control *)
&_CPU_Context_Default_with_ISRs_enabled;
source = &_CPU_Context_Default_with_ISRs_enabled;
else
*_the_context = *(Context_Control *)
&_CPU_Context_Default_with_ISRs_disabled;
source = &_CPU_Context_Default_with_ISRs_disabled;
memcpy(_the_context, source, sizeof(Context_Control) ); /* sizeof(jmp_buf)); */
addr = (unsigned32 *)_the_context;
#if defined(hppa1_1)
@@ -425,12 +411,13 @@ void _CPU_Context_Initialize(
* See if we are using shared libraries by checking
* bit 30 in 24 off of newp. If bit 30 is set then
* we are using shared libraries and the jump address
* points to the pointer, so we put that into rp instead.
* is at what 24 off of newp points to so shove that
* into 24 off of newp instead.
*/
if (jmp_addr & 0x40000000) {
jmp_addr &= 0xfffffffc;
*(addr + RP_OFF) = *(unsigned32 *)jmp_addr;
*(addr + RP_OFF) = (unsigned32)*(unsigned32 *)jmp_addr;
}
#elif defined(sparc)
@@ -487,7 +474,7 @@ void _CPU_Context_restore(
{
Context_Control_overlay *nextp = (Context_Control_overlay *)next;
_CPU_ISR_Enable(nextp->isr_level);
sigprocmask( SIG_SETMASK, &nextp->isr_level, 0 );
longjmp( nextp->regs, 0 );
}
@@ -496,11 +483,6 @@ void _CPU_Context_restore(
* _CPU_Context_switch
*/
static void do_jump(
Context_Control_overlay *currentp,
Context_Control_overlay *nextp
);
void _CPU_Context_switch(
Context_Control *current,
Context_Control *next
@@ -508,50 +490,33 @@ void _CPU_Context_switch(
{
Context_Control_overlay *currentp = (Context_Control_overlay *)current;
Context_Control_overlay *nextp = (Context_Control_overlay *)next;
#if 0
int status;
#endif
currentp->isr_level = _CPU_ISR_Disable_support();
do_jump( currentp, nextp );
#if 0
if (sigsetjmp(currentp->regs, 1) == 0) { /* Save the current context */
siglongjmp(nextp->regs, 0); /* Switch to the new context */
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
status
);
}
#endif
#ifdef RTEMS_DEBUG
if (_CPU_ISR_Get_level() == 0)
abort();
#endif
_CPU_ISR_Enable(currentp->isr_level);
}
static void do_jump(
Context_Control_overlay *currentp,
Context_Control_overlay *nextp
)
{
int status;
/*
* Switch levels in one operation
*/
status = sigprocmask( SIG_SETMASK, &nextp->isr_level, &currentp->isr_level );
if ( status )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
status
);
if (setjmp(currentp->regs) == 0) { /* Save the current context */
longjmp(nextp->regs, 0); /* Switch to the new context */
_Internal_error_Occurred(
if ( status )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
status
);
}
}
}
/*PAGE
*
* _CPU_Save_float_context
@@ -685,31 +650,17 @@ void _CPU_Stray_signal(int sig_num)
default:
{
/*
* We avoid using the stdio section of the library.
* The following is generally safe
*/
/*
* We avoid using the stdio section of the library.
* The following is generally safe.
*/
int digit;
int number = sig_num;
int len = 0;
digit = number / 100;
number %= 100;
if (digit) buffer[len++] = '0' + digit;
digit = number / 10;
number %= 10;
if (digit || len) buffer[len++] = '0' + digit;
digit = number;
buffer[len++] = '0' + digit;
buffer[ 0 ] = (sig_num >> 4) + 0x30;
buffer[ 1 ] = (sig_num & 0xf) + 0x30;
buffer[ 2 ] = '\n';
buffer[ len++ ] = '\n';
write( 2, "Stray signal ", 13 );
write( 2, buffer, len );
write( 2, "Stray signal 0x", 12 );
write( 2, buffer, 3 );
}
}
@@ -731,8 +682,7 @@ void _CPU_Stray_signal(int sig_num)
case SIGBUS:
case SIGSEGV:
case SIGTERM:
case SIGIOT:
_CPU_Fatal_error(0x100 + sig_num);
_CPU_Fatal_error(0x100 + sig_num);
}
}
@@ -791,12 +741,13 @@ void _CPU_Stop_clock( void )
* vector.
*/
(void) memset(&act, 0, sizeof(act));
act.sa_handler = SIG_IGN;
sigaction(SIGALRM, &act, 0);
(void) memset(&new, 0, sizeof(new));
new.it_value.tv_sec = 0;
new.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &new, 0);
}

View File

@@ -436,27 +436,14 @@ extern "C" {
/*
* This is really just the area for the following fields.
*
* jmp_buf regs;
* unsigned32 isr_level;
* jmp_buf regs;
* sigset_t isr_level;
*
* Doing it this way avoids conflicts between the native stuff and the
* RTEMS stuff.
*
* NOTE:
* hpux9 setjmp is optimized for the case where the setjmp buffer
* is 8 byte aligned. In a RISC world, this seems likely to enable
* 8 byte copies, especially for the float registers.
* So we always align them on 8 byte boundaries.
*/
#ifdef __GNUC__
#define CONTEXT_STRUCTURE_ALIGNMENT __attribute__ ((aligned (8)))
#else
#define CONTEXT_STRUCTURE_ALIGNMENT
#endif
typedef struct {
char Area[ CPU_CONTEXT_SIZE_IN_BYTES ] CONTEXT_STRUCTURE_ALIGNMENT;
char Area[ CPU_CONTEXT_SIZE_IN_BYTES ];
} Context_Control;
typedef struct {
@@ -468,7 +455,13 @@ typedef struct {
/*
* The following table contains the information required to configure
* the UNIX Simulator specific parameters.
* the XXX processor specific parameters.
*
* NOTE: The interrupt_stack_size field is required if
* CPU_ALLOCATE_INTERRUPT_STACK is defined as TRUE.
*
* The pretasking_hook, predriver_hook, and postdriver_hook,
* and the do_zero_of_workspace fields are required on ALL CPUs.
*/
typedef struct {
@@ -479,9 +472,6 @@ typedef struct {
boolean do_zero_of_workspace;
unsigned32 interrupt_stack_size;
unsigned32 extra_mpci_receive_server_stack;
void * (*stack_allocate_hook)( unsigned32 );
void (*stack_free_hook)( void* );
/* end of required fields */
} rtems_cpu_table;
/*

View File

@@ -83,16 +83,6 @@ void _Chain_Initialize(
unsigned32 node_size
);
/*
* _Chain_Get_first_unprotected
*/
#ifndef USE_INLINES
Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
);
#endif
/*
* _Chain_Extract
*

View File

@@ -51,8 +51,7 @@ typedef enum {
INTERNAL_ERROR_OUT_OF_PACKETS,
INTERNAL_ERROR_OUT_OF_GLOBAL_OBJECTS,
INTERNAL_ERROR_OUT_OF_PROXIES,
INTERNAL_ERROR_INVALID_GLOBAL_ID,
INTERNAL_ERROR_BAD_STACK_HOOK
INTERNAL_ERROR_INVALID_GLOBAL_ID
} Internal_errors_Core_list;
/*

View File

@@ -214,7 +214,9 @@ void _ISR_Handler( void );
void _ISR_Dispatch( void );
#ifndef __RTEMS_APPLICATION__
#include <rtems/score/isr.inl>
#endif
#ifdef __cplusplus
}

View File

@@ -100,7 +100,7 @@ typedef enum {
#define OBJECTS_CLASSES_FIRST OBJECTS_NO_CLASS
#define OBJECTS_CLASSES_LAST OBJECTS_POSIX_CONDITION_VARIABLES
#define OBJECTS_CLASSES_FIRST_THREAD_CLASS OBJECTS_INTERNAL_THREADS
#define OBJECTS_CLASSES_FIRST_THREAD_CLASS OBJECTS_MPCI_PACKETS
#define OBJECTS_CLASSES_LAST_THREAD_CLASS OBJECTS_POSIX_THREADS
/*

View File

@@ -544,20 +544,6 @@ void _Thread_Set_priority(
boolean _Thread_Evaluate_mode( void );
/*
* _Thread_Get
*
* NOTE: If we are not using static inlines, this must be a real
* subroutine call.
*/
#ifndef USE_INLINES
Thread_Control *_Thread_Get (
Objects_Id id,
Objects_Locations *location
);
#endif
/*
* _Thread_Idle_body
*

View File

@@ -32,19 +32,6 @@ extern "C" {
EXTERN Heap_Control _Workspace_Area; /* executive heap header */
/*
* _Workspace_Handler_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this handler.
*/
void _Workspace_Handler_initialization(
void *starting_address,
unsigned32 size
);
/*
* _Workspace_Allocate_or_fatal_error
*

View File

@@ -17,6 +17,53 @@
#ifndef __WORKSPACE_inl
#define __WORKSPACE_inl
/*PAGE
*
* _Workspace_Handler_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this handler.
*/
STATIC INLINE void _Workspace_Handler_initialization(
void *starting_address,
unsigned32 size
)
{
unsigned32 *zero_out_array;
unsigned32 index;
unsigned32 memory_available;
if ( !starting_address || !_Addresses_Is_aligned( starting_address ) )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS
);
if ( _CPU_Table.do_zero_of_workspace ) {
for( zero_out_array = (unsigned32 *) starting_address, index = 0 ;
index < size / 4 ;
index++ )
zero_out_array[ index ] = 0;
}
memory_available = _Heap_Initialize(
&_Workspace_Area,
starting_address,
size,
CPU_HEAP_ALIGNMENT
);
if ( memory_available == 0 )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
INTERNAL_ERROR_TOO_LITTLE_WORKSPACE
);
}
/*PAGE
*
* _Workspace_Allocate

View File

@@ -17,6 +17,47 @@
#ifndef __WORKSPACE_inl
#define __WORKSPACE_inl
/*PAGE
*
* _Workspace_Handler_initialization
*
*/
#define _Workspace_Handler_initialization( _starting_address, _size ) \
{ \
unsigned32 *zero_out_array; \
unsigned32 index; \
unsigned32 memory_available; \
\
if ( !(_starting_address) || !_Addresses_Is_aligned( (_starting_address) ) ) \
_Internal_error_Occurred( \
INTERNAL_ERROR_CORE, \
TRUE, \
INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS \
); \
\
if ( _CPU_Table.do_zero_of_workspace ) { \
for( zero_out_array = (unsigned32 *) (_starting_address), index = 0 ; \
index < (_size) / 4 ; \
index++ ) \
zero_out_array[ index ] = 0; \
} \
\
memory_available = _Heap_Initialize( \
&_Workspace_Area, \
(_starting_address), \
(_size), \
CPU_HEAP_ALIGNMENT \
); \
\
if ( memory_available == 0 ) \
_Internal_error_Occurred( \
INTERNAL_ERROR_CORE, \
TRUE, \
INTERNAL_ERROR_TOO_LITTLE_WORKSPACE \
); \
}
/*PAGE
*
* _Workspace_Allocate

View File

@@ -50,19 +50,6 @@ void _Thread_Handler_initialization(
{
unsigned32 index;
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( ( _CPU_Table.stack_allocate_hook == 0 )
== ( _CPU_Table.stack_free_hook == 0 ) ) )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Context_Switch_necessary = FALSE;
_Thread_Executing = NULL;
_Thread_Heir = NULL;
@@ -294,79 +281,6 @@ void _Thread_Dispatch( void )
}
/*PAGE
*
* _Thread_Stack_Allocate
*
* Allocate the requested stack space for the thread.
* return the actual size allocated after any adjustment
* or return zero if the allocation failed.
* Set the Start.stack field to the address of the stack
*/
static unsigned32 _Thread_Stack_Allocate(
Thread_Control *the_thread,
unsigned32 stack_size)
{
void *stack_addr = 0;
if ( !_Stack_Is_enough( stack_size ) )
stack_size = STACK_MINIMUM_SIZE;
/*
* Call ONLY the CPU table stack allocate hook, _or_ the
* the RTEMS workspace allocate. This is so the stack free
* routine can call the correct deallocation routine.
*/
if ( _CPU_Table.stack_allocate_hook )
{
stack_addr = (*_CPU_Table.stack_allocate_hook)( stack_size );
} else {
/*
* First pad the requested size so we allocate enough memory
* so the context initialization can align it properly. The address
* returned the workspace allocate must be directly stored in the
* stack control block because it is later used in the free sequence.
*
* Thus it is the responsibility of the CPU dependent code to
* get and keep the stack adjust factor, the stack alignment, and
* the context initialization sequence in sync.
*/
stack_size = _Stack_Adjust_size( stack_size );
stack_addr = _Workspace_Allocate( stack_size );
}
if ( !stack_addr )
stack_size = 0;
the_thread->Start.stack = stack_addr;
return stack_size;
}
/*
* _Thread_Stack_Free
*
* Deallocate the Thread's stack.
*/
static void _Thread_Stack_Free(void *stack_addr)
{
/*
* Call ONLY the CPU table stack free hook, or the
* the RTEMS workspace free. This is so the free
* routine properly matches the allocation of the stack.
*/
if ( _CPU_Table.stack_free_hook )
(*_CPU_Table.stack_free_hook)( stack_addr );
else
_Workspace_Free( stack_addr );
}
/*PAGE
*
* _Thread_Initialize
@@ -406,12 +320,12 @@ boolean _Thread_Initialize(
stack = stack_area;
if ( !stack ) {
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
stack = _Workspace_Allocate( actual_stack_size );
if ( !actual_stack_size )
return FALSE; /* stack allocation failed */
if ( !stack )
return FALSE;
stack = the_thread->Start.stack;
the_thread->Start.stack = stack;
} else
the_thread->Start.stack = NULL;
@@ -430,7 +344,7 @@ boolean _Thread_Initialize(
fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
if ( !fp_area ) {
if ( the_thread->Start.stack )
(void) _Thread_Stack_Free( the_thread->Start.stack );
(void) _Workspace_Free( the_thread->Start.stack );
return FALSE;
}
fp_area = _Context_Fp_start( fp_area, 0 );
@@ -443,7 +357,7 @@ boolean _Thread_Initialize(
/*
* Allocate the extensions area for this thread
* Allocate the floating point area for this thread
*/
if ( _Thread_Maximum_extensions ) {
@@ -456,7 +370,7 @@ boolean _Thread_Initialize(
(void) _Workspace_Free( fp_area );
if ( the_thread->Start.stack )
(void) _Thread_Stack_Free( the_thread->Start.stack );
(void) _Workspace_Free( the_thread->Start.stack );
return FALSE;
}
@@ -499,7 +413,7 @@ boolean _Thread_Initialize(
(void) _Workspace_Free( fp_area );
if ( the_thread->Start.stack )
(void) _Thread_Stack_Free( the_thread->Start.stack );
(void) _Workspace_Free( the_thread->Start.stack );
return FALSE;
}
@@ -630,7 +544,7 @@ void _Thread_Close(
(void) _Workspace_Free( the_thread->Start.fp_context );
if ( the_thread->Start.stack )
(void) _Thread_Stack_Free( the_thread->Start.stack );
(void) _Workspace_Free( the_thread->Start.stack );
if ( the_thread->extensions )
(void) _Workspace_Free( the_thread->extensions );
@@ -995,25 +909,10 @@ void _Thread_Load_environment(
*
* _Thread_Handler
*
* This routine is the "primal" entry point for all threads.
* _Context_Initialize() dummies up the thread's initial context
* to cause the first Context_Switch() to jump to _Thread_Handler().
*
* This routine is the default thread exitted error handler. It is
* returned to when a thread exits. The configured fatal error handler
* is invoked to process the exit.
*
* NOTE:
*
* On entry, it is assumed all interrupts are blocked and that this
* routine needs to set the initial isr level. This may or may not
* actually be needed by the context switch routine and as a result
* interrupts may already be at there proper level. Either way,
* setting the initial isr level properly here is safe.
*
* Currently this is only really needed for the posix port,
* ref: _Context_Switch in unix/cpu.c
*
* Input parameters: NONE
*
* Output parameters: NONE
@@ -1021,18 +920,9 @@ void _Thread_Load_environment(
void _Thread_Handler( void )
{
ISR_Level level;
Thread_Control *executing;
executing = _Thread_Executing;
/*
* have to put level into a register for those cpu's that use
* inline asm here
*/
level = executing->Start.isr_level;
_ISR_Enable(level);
/*
* Take care that 'begin' extensions get to complete before

View File

@@ -20,49 +20,6 @@
#include <rtems/score/wkspace.h>
#include <rtems/score/interr.h>
/*PAGE
*
* _Workspace_Handler_initialization
*/
void _Workspace_Handler_initialization(
void *starting_address,
unsigned32 size
)
{
unsigned32 *zero_out_array;
unsigned32 index;
unsigned32 memory_available;
if ( !starting_address || !_Addresses_Is_aligned( starting_address ) )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS
);
if ( _CPU_Table.do_zero_of_workspace ) {
for( zero_out_array = (unsigned32 *) starting_address, index = 0 ;
index < size / 4 ;
index++ )
zero_out_array[ index ] = 0;
}
memory_available = _Heap_Initialize(
&_Workspace_Area,
starting_address,
size,
CPU_HEAP_ALIGNMENT
);
if ( memory_available == 0 )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
INTERNAL_ERROR_TOO_LITTLE_WORKSPACE
);
}
/*PAGE
*
* _Workspace_Allocate_or_fatal_error

View File

@@ -34,8 +34,8 @@
#include <signal.h>
typedef struct {
jmp_buf regs;
int isr_level;
jmp_buf regs;
sigset_t isr_level;
} Context_Control;
int main(

View File

@@ -48,7 +48,7 @@ BEGIN_CODE
#define LOAD_SEGMENTS(_value,_segment) \
movw $ ## _value, ax ; \
movw ax, _segment
movw _segment, ax
EXTERN (establish_stack)

View File

@@ -4,8 +4,9 @@
#
# This package requires a version of GCC that has been modified
# to support the `-mcpu32' argument. I have submitted the required
# changes to the GCC maintainers.
# to support the `-m68360' argument. I have submitted the required changes
# to the GCC maintainers. Should they choose to use a different argument
# (-mcpu32 perhaps) this board support package will have to be changed.
#
#

View File

@@ -118,8 +118,6 @@ extern m68k_isr_entry M68Kvec[]; /* vector table address */
void bsp_cleanup( void );
void M360ExecuteRISC( rtems_unsigned16 command );
m68k_isr_entry set_vector(
rtems_isr_entry handler,
rtems_vector_number vector,

View File

@@ -298,11 +298,11 @@ uhoh: nop | Leave spot for breakpoint
bra.s uhoh | Stuck forever
/*
* Place the low-order 3 octets of the board's ethernet address at
* a `well-known' fixed location relative to the beginning of ROM.
* Place the low-order 3 octets of the board's
* ethernet address at a `well-known' location.
*/
.align 2
.long ETHERNET_ADDRESS | Low-order 3 octets of ethernet address
| .long ETHERNET_ADDRESS | 08: Low-order 3 octets
/*
* Initial PC
@@ -347,36 +347,24 @@ start:
*/
jmp SYM(_Init68360) | Start C code (which never returns)
/*
* Copy DATA segment, clear BSS segment, set up real stack,
* initialize heap, start C program.
* Assume that DATA and BSS sizes are multiples of 4.
* Clear BSS, set up real stack, initialize heap, start C program
* Assume that BSS size is a multiple of 4.
* FIXME: The zero-loop should be changed to put the CPU into loop-mode.
* FIXME: PROM-based systems will have to copy data segment to RAM here
*/
PUBLIC (_CopyDataClearBSSAndStart)
SYM(_CopyDataClearBSSAndStart):
lea copy_start,a0 | Get start of DATA in RAM
lea SYM(etext),a2 | Get start of DATA in ROM
cmpl a0,a2 | Are they the same?
beq.s NOCOPY | Yes, no copy necessary
lea copy_end,a1 | Get end of DATA in RAM
bra.s COPYLOOPTEST | Branch into copy loop
COPYLOOP:
movel a2@+,a0@+ | Copy word from ROM to RAM
COPYLOOPTEST:
cmpl a1,a0 | Done?
bcs.s COPYLOOP | No, skip
NOCOPY:
lea clear_start,a0 | Get start of BSS
lea clear_end,a1 | Get end of BSS
clrl d0 | Value to set
bra.s ZEROLOOPTEST | Branch into clear loop
PUBLIC (_ClearBSSAndStart)
SYM(_ClearBSSAndStart):
movel #clear_start,a0
movel #clear_end,a1
clrl d0
bras ZEROLOOPTEST
ZEROLOOP:
movel d0,a0@+ | Clear a word
movel d0,a0@+
ZEROLOOPTEST:
cmpl a1,a0 | Done?
bcs.s ZEROLOOP | No, skip
cmpl a1,a0
bcs ZEROLOOP
movel #stack_init,a7 | set master stack pointer
movel d0,a7@- | environp
movel d0,a7@- | argv

View File

@@ -298,11 +298,11 @@ uhoh: nop | Leave spot for breakpoint
bra.s uhoh | Stuck forever
/*
* Place the low-order 3 octets of the board's ethernet address at
* a `well-known' fixed location relative to the beginning of ROM.
* Place the low-order 3 octets of the board's
* ethernet address at a `well-known' location.
*/
.align 2
.long ETHERNET_ADDRESS | Low-order 3 octets of ethernet address
| .long ETHERNET_ADDRESS | 08: Low-order 3 octets
/*
* Initial PC
@@ -347,36 +347,24 @@ start:
*/
jmp SYM(_Init68360) | Start C code (which never returns)
/*
* Copy DATA segment, clear BSS segment, set up real stack,
* initialize heap, start C program.
* Assume that DATA and BSS sizes are multiples of 4.
* Clear BSS, set up real stack, initialize heap, start C program
* Assume that BSS size is a multiple of 4.
* FIXME: The zero-loop should be changed to put the CPU into loop-mode.
* FIXME: PROM-based systems will have to copy data segment to RAM here
*/
PUBLIC (_CopyDataClearBSSAndStart)
SYM(_CopyDataClearBSSAndStart):
lea copy_start,a0 | Get start of DATA in RAM
lea SYM(etext),a2 | Get start of DATA in ROM
cmpl a0,a2 | Are they the same?
beq.s NOCOPY | Yes, no copy necessary
lea copy_end,a1 | Get end of DATA in RAM
bra.s COPYLOOPTEST | Branch into copy loop
COPYLOOP:
movel a2@+,a0@+ | Copy word from ROM to RAM
COPYLOOPTEST:
cmpl a1,a0 | Done?
bcs.s COPYLOOP | No, skip
NOCOPY:
lea clear_start,a0 | Get start of BSS
lea clear_end,a1 | Get end of BSS
clrl d0 | Value to set
bra.s ZEROLOOPTEST | Branch into clear loop
PUBLIC (_ClearBSSAndStart)
SYM(_ClearBSSAndStart):
movel #clear_start,a0
movel #clear_end,a1
clrl d0
bras ZEROLOOPTEST
ZEROLOOP:
movel d0,a0@+ | Clear a word
movel d0,a0@+
ZEROLOOPTEST:
cmpl a1,a0 | Done?
bcs.s ZEROLOOP | No, skip
cmpl a1,a0
bcs ZEROLOOP
movel #stack_init,a7 | set master stack pointer
movel d0,a7@- | environp
movel d0,a7@- | argv

View File

@@ -1,5 +1,5 @@
/*
* MC68360 support routines
* Initialize 68360 hardware
*
* W. Eric Norum
* Saskatchewan Accelerator Laboratory
@@ -12,33 +12,15 @@
#include <rtems.h>
#include <bsp.h>
#include <m68360.h>
#include "m68360.h"
/*
* Send a command to the CPM RISC processer
*/
void M360ExecuteRISC(rtems_unsigned16 command)
{
rtems_unsigned16 sr;
m68k_disable_interrupts (sr);
while (m360.cr & M360_CR_FLG)
continue;
m360.cr = command | M360_CR_FLG;
m68k_enable_interrupts (sr);
}
/*
* Initialize MC68360
*/
void _Init68360 (void)
void
_Init68360 (void)
{
int i;
extern void *_RomBase, *_RamBase;
m68k_isr_entry *vbr;
extern void _CopyDataClearBSSAndStart (void);
extern void _ClearBSSAndStart (void);
/*
* Step 6: Is this a power-up reset?
@@ -82,7 +64,7 @@ void _Init68360 (void)
*((long *)((char *)&m360 + 0xE00 + i)) = 0;
*((long *)((char *)&m360 + 0xF00 + i)) = 0;
}
M360ExecuteRISC (M360_CR_RST);
m360.cr = M360_CR_RST | M360_CR_FLG;
/*
* Step 10: Write PEPAR
@@ -147,10 +129,11 @@ void _Init68360 (void)
/*
* Step 13: Copy the exception vector table to system RAM
*/
m68k_get_vbr (vbr);
m68k_get_vbr( vbr );
for (i = 0; i < 256; ++i)
M68Kvec[i] = vbr[i];
m68k_set_vbr (M68Kvec);
m68k_set_vbr( M68Kvec );
/*
* Step 14: More system initialization
@@ -184,7 +167,7 @@ void _Init68360 (void)
m360.mcr = 0x4C7F;
/*
* Copy data, clear BSS, switch stacks and call main()
* Clear BSS, switch stacks and call main()
*/
_CopyDataClearBSSAndStart ();
_ClearBSSAndStart ();
}

View File

@@ -13,93 +13,65 @@
* Declare on-board memory
*/
MEMORY {
ram : ORIGIN = 0x00000000, LENGTH = 4M
rom : ORIGIN = 0xFF000000, LENGTH = 1M
dpram : ORIGIN = 0xFE000000, LENGTH = 8k
ram : ORIGIN = 0x00000000, LENGTH = 4M
rom : ORIGIN = 0xFF000000, LENGTH = 1M
dpram : ORIGIN = 0xFE000000, LENGTH = 8k
}
/*
* Declare some sizes
* XXX: The assignment of ". += XyzSize;" fails in older gld's if the
* number used there is not constant. If this happens to you, edit
* the lines marked below to use a constant value.
*/
HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
/*
* Declare low-order three octets of Ethernet address
*/
ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
/*
* Load objects
*/
SECTIONS {
/*
* Boot PROM
*/
rom : {
_RomBase = .;
__RomBase = .;
} >rom
/*
* Dynamic RAM
*/
ram : {
_RamBase = .;
__RamBase = .;
} >ram
/*
* Text, data and bss segments
*/
.text : {
CREATE_OBJECT_SYMBOLS
*(.text)
. = ALIGN (16);
etext = .;
_etext = .;
__RamBase = .;
CREATE_OBJECT_SYMBOLS
*(.text)
. = ALIGN (16);
_etext = .;
} >ram
.data : {
copy_start = .;
*(.data)
. = ALIGN (16);
_edata = .;
copy_end = .;
*(.data)
. = ALIGN (16);
_edata = .;
} >ram
.bss : {
M68Kvec = .;
_M68Kvec = .;
. += (256 * 4);
clear_start = .;
*(.bss)
*(COMMON)
. = ALIGN (16);
_end = .;
_M68Kvec = .;
. += (256 * 4);
clear_start = .;
*(.bss)
*(COMMON)
. = ALIGN (16);
_end = .;
_HeapStart = .;
__HeapStart = .;
. += HeapSize; /* XXX -- Old gld can't handle this */
. += StackSize; /* XXX -- Old gld can't handle this */
/* . += 0x10000; */ /* HeapSize for old gld */
/* . += 0x1000; */ /* StackSize for old gld */
. = ALIGN (16);
stack_init = .;
clear_end = .;
__HeapStart = .;
. += HeapSize;
. += StackSize;
. = ALIGN (16);
stack_init = .;
clear_end = .;
_WorkspaceBase = .;
__WorkspaceBase = .;
} >ram
__WorkspaceBase = .;
} >ram
/*
* On-chip memory/peripherals
*/
dpram : {
m360 = .;
_m360 = .;
. += (8 * 1024);
/*
* On-chip memory/peripherals
*/
dpram : {
_m360 = .;
. += (8 * 1024);
} >dpram
} >dpram
/*
* Boot PROM
*/
rom : {
__RomBase = .;
} >rom
}

View File

@@ -1,111 +0,0 @@
/*
* This file contains GNU linker directives for a generic MC68360 board.
* These linker directives are for producing a PROM version..
* To create the PROM image from the linkter output you must use objcopy
* (--adjust-section-vma) to place the data segment at the end of the text
* segment in the PROM. The start-up code takes care of copying this region
* to RAM.
*
* Saskatchewan Accelerator Laboratory
* University of Saskatchewan
* Saskatoon, Saskatchewan, CANADA
* eric@skatter.usask.ca
*
* $Id$
*/
/*
* a.out format doesn't handle prom images very well
*/
OUTPUT_FORMAT(coff-m68k)
/*
* Declare on-board memory
*/
MEMORY {
ram : ORIGIN = 0x00000000, LENGTH = 4M
rom : ORIGIN = 0xFF000000, LENGTH = 1M
dpram : ORIGIN = 0xFE000000, LENGTH = 8k
}
/*
* Declare some sizes
*/
HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
/*
* Declare low-order three octets of Ethernet address
*/
ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
/*
* Load objects
*/
SECTIONS {
/*
* Boot PROM
*/
rom : {
_RomBase = .;
__RomBase = .;
} >rom
/*
* Dynamic RAM
*/
ram : {
_RamBase = .;
__RamBase = .;
} >ram
/*
* Text, data and bss segments
*/
.text : {
CREATE_OBJECT_SYMBOLS
*(.text)
. = ALIGN (16);
etext = .;
_etext = .;
} >rom
.data : {
copy_start = .;
*(.data)
. = ALIGN (16);
_edata = .;
copy_end = .;
} >ram
.bss : {
M68Kvec = .;
_M68Kvec = .;
. += (256 * 4);
clear_start = .;
*(.bss)
*(COMMON)
. = ALIGN (16);
_end = .;
_HeapStart = .;
__HeapStart = .;
. += HeapSize;
. += StackSize;
. = ALIGN (16);
stack_init = .;
clear_end = .;
_WorkspaceBase = .;
__WorkspaceBase = .;
} >ram
/*
* On-chip memory/peripherals
*/
dpram : {
m360 = .;
_m360 = .;
. += (8 * 1024);
} >dpram
}

View File

@@ -1,86 +0,0 @@
#
# $Id$
#
Notes about the MVME147 bsp
MVME147 port for TNI - Telecom Bretagne
by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
May 1996
This bsp is essentially based on the mvme136 bsp.
Summary of the modifications that were made:
* include
- bsp.h
Peripheral Channel Controller memory mapping
Z8530 memory mapping
* startup
- bspstart.c
main () setup for VME roundrobin mode
setup for the PCC interrupt vector base
- bspclean.c
bsp_cleanup () disable timer 1 & 2 interruptions
- linkcmds set the RAM start (0x5000) and size (4Meg - 0x5000)
- setvec.c unchanged
- sbrk.c unchanged
* console
- console.c taken from the dmv152 bsp (Zilog Z8530)
with no modification
* clock
- ckinit.c entirely rewritten for the PCC tick timer 2
* timer
- timerisr.s and timer.c
entirely rewritten for the PCC tick timer 1
now gives results un 6.25 us units (mininum timer delay,
suprising big grain)
* times
- updated results for the mvme147 (beware of the 6.25 us grain)
* Makefiles
- compilation of shmsupp simply removed
To be done:
* add VMEchip memory mapping to include/bsp.h
* update the overheads in coverhead.h
* add support for serila ports 2,3 and 4.
Other notes:
* There is no MP support (no more shmsupp) because I have no
experience of the VME bus. The mvme136 shared memory support
does not seem applicable on the VMEchip of the mvme147, so
I don't know where to start. Suggestions are welcome.
* All the timing tests and sp tests have been run except tmoverhd.
The test hangs during the pause (where the task should be suspended
until a return). Maybe the rtems_initialize_executive is no more
reentrant with this bsp.
Future work:
* Add gdb serial remote support.
* Shared memory support (I don't really need it, but I can do
it if it's simple).
* Message passing on VME bus, with Ada 95 annex E (distributed
systems) in mind.

View File

@@ -1,142 +0,0 @@
/* Clock_init()
*
* This routine initializes the Tick Timer 2 on the MVME147 board.
* The tick frequency is 1 millisecond.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* MVME147 port for TNI - Telecom Bretagne
* by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
* May 1996
*
* $Id$
*/
#include <stdlib.h>
#include <bsp.h>
#include <rtems/libio.h>
#define MS_COUNT 65376 /* 1ms */
/* MS_COUNT = 0x10000 - 1e-3/6.25e-6 */
#define CLOCK_INT_LEVEL 6 /* T2's interrupt level */
rtems_unsigned32 Clock_isrs; /* ISRs until next tick */
volatile rtems_unsigned32 Clock_driver_ticks; /* ticks since initialization */
rtems_isr_entry Old_ticker;
void Clock_exit( void );
/*
* These are set by clock driver during its init
*/
rtems_device_major_number rtems_clock_major = ~0;
rtems_device_minor_number rtems_clock_minor;
/*
* ISR Handler
*/
rtems_isr Clock_isr(rtems_vector_number vector)
{
Clock_driver_ticks += 1;
pcc->timer2_int_control |= 0x80; /* Acknowledge interr. */
if (Clock_isrs == 1) {
rtems_clock_tick();
Clock_isrs = BSP_Configuration.microseconds_per_tick / 1000;
}
else
Clock_isrs -= 1;
}
void Install_clock(rtems_isr_entry clock_isr )
{
Clock_driver_ticks = 0;
Clock_isrs = BSP_Configuration.microseconds_per_tick / 1000;
if ( BSP_Configuration.ticks_per_timeslice ) {
Old_ticker =
(rtems_isr_entry) set_vector( clock_isr, TIMER_2_VECTOR, 1 );
pcc->timer2_int_control = 0x00; /* Disable T2 Interr. */
pcc->timer2_preload = MS_COUNT;
/* write preload value */
pcc->timer2_control = 0x07; /* clear T2 overflow counter, enable counter */
pcc->timer2_int_control = CLOCK_INT_LEVEL|0x08;
/* Enable Timer 2 and set its int. level */
atexit( Clock_exit );
}
}
void Clock_exit( void )
{
if ( BSP_Configuration.ticks_per_timeslice ) {
pcc->timer2_int_control = 0x00; /* Disable T2 Interr. */
}
}
rtems_device_driver Clock_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *pargp
)
{
Install_clock( Clock_isr );
/*
* make major/minor avail to others such as shared memory driver
*/
rtems_clock_major = major;
rtems_clock_minor = minor;
return RTEMS_SUCCESSFUL;
}
rtems_device_driver Clock_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *pargp
)
{
rtems_unsigned32 isrlevel;
rtems_libio_ioctl_args_t *args = pargp;
if (args == 0)
goto done;
/*
* This is hokey, but until we get a defined interface
* to do this, it will just be this simple...
*/
if (args->command == rtems_build_name('I', 'S', 'R', ' '))
{
Clock_isr(TIMER_2_VECTOR);
}
else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
{
rtems_interrupt_disable( isrlevel );
(void) set_vector( args->buffer, TIMER_2_VECTOR, 1 );
rtems_interrupt_enable( isrlevel );
}
done:
return RTEMS_SUCCESSFUL;
}

View File

@@ -1,258 +0,0 @@
/*
* This file contains the MVME147 console IO package.
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* MVME147 port for TNI - Telecom Bretagne
* by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
* May 1996
*
* This file was taken from the DMV152 bsp
*
* $Id$
*/
#define M147_INIT
#include <bsp.h>
#include <rtems/libio.h>
#include <z8530.h>
/* console_initialize
*
* This routine initializes the console IO driver.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* Return values:
*/
rtems_device_driver console_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
rtems_status_code status;
status = rtems_io_register_name(
"/dev/console",
major,
(rtems_device_minor_number) 0
);
if (status != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred(status);
return RTEMS_SUCCESSFUL;
}
/* is_character_ready
*
* This routine returns TRUE if a character is available.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* Return values:
*/
rtems_boolean is_character_ready(
char *ch
)
{
rtems_unsigned8 rr_0;
for ( ; ; ) {
Z8x30_READ_CONTROL( CONSOLE_CONTROL, RR_0, rr_0 );
if ( !(rr_0 & RR_0_RX_DATA_AVAILABLE) )
return( FALSE );
Z8x30_READ_DATA( CONSOLE_DATA, *ch );
return( TRUE );
}
}
/* inbyte
*
* This routine reads a character from the SCC.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* Return values:
* character read from SCC
*/
char inbyte( void )
{
rtems_unsigned8 rr_0;
char ch;
for ( ; ; ) {
Z8x30_READ_CONTROL( CONSOLE_CONTROL, RR_0, rr_0 );
if ( (rr_0 & RR_0_RX_DATA_AVAILABLE) != 0 )
break;
}
Z8x30_READ_DATA( CONSOLE_DATA, ch );
return ( ch );
}
/* outbyte
*
* This routine transmits a character out the SCC. It supports
* XON/XOFF flow control.
*
* Input parameters:
* ch - character to be transmitted
*
* Output parameters: NONE
*/
void outbyte(
char ch
)
{
rtems_unsigned8 rr_0;
char flow_control;
for ( ; ; ) {
Z8x30_READ_CONTROL( CONSOLE_CONTROL, RR_0, rr_0 );
if ( (rr_0 & RR_0_TX_BUFFER_EMPTY) != 0 )
break;
}
for ( ; ; ) {
Z8x30_READ_CONTROL( CONSOLE_CONTROL, RR_0, rr_0 );
if ( (rr_0 & RR_0_RX_DATA_AVAILABLE) == 0 )
break;
Z8x30_READ_DATA( CONSOLE_DATA, flow_control );
if ( flow_control == XOFF )
do {
do {
Z8x30_READ_CONTROL( CONSOLE_CONTROL, RR_0, rr_0 );
} while ( (rr_0 & RR_0_RX_DATA_AVAILABLE) == 0 );
Z8x30_READ_DATA( CONSOLE_DATA, flow_control );
} while ( flow_control != XON );
}
Z8x30_WRITE_DATA( CONSOLE_DATA, ch );
}
/*
* Open entry point
*/
rtems_device_driver console_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return RTEMS_SUCCESSFUL;
}
/*
* Close entry point
*/
rtems_device_driver console_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return RTEMS_SUCCESSFUL;
}
/*
* read bytes from the serial port. We only have stdin.
*/
rtems_device_driver console_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
rtems_libio_rw_args_t *rw_args;
char *buffer;
int maximum;
int count = 0;
rw_args = (rtems_libio_rw_args_t *) arg;
buffer = rw_args->buffer;
maximum = rw_args->count;
for (count = 0; count < maximum; count++) {
buffer[ count ] = inbyte();
if (buffer[ count ] == '\n' || buffer[ count ] == '\r') {
buffer[ count++ ] = '\n';
buffer[ count ] = 0;
break;
}
}
rw_args->bytes_moved = count;
return (count >= 0) ? RTEMS_SUCCESSFUL : RTEMS_UNSATISFIED;
}
/*
* write bytes to the serial port. Stdout and stderr are the same.
*/
rtems_device_driver console_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
int count;
int maximum;
rtems_libio_rw_args_t *rw_args;
char *buffer;
rw_args = (rtems_libio_rw_args_t *) arg;
buffer = rw_args->buffer;
maximum = rw_args->count;
for (count = 0; count < maximum; count++) {
if ( buffer[ count ] == '\n') {
outbyte('\r');
}
outbyte( buffer[ count ] );
}
rw_args->bytes_moved = maximum;
return 0;
}
/*
* IO Control entry point
*/
rtems_device_driver console_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return RTEMS_SUCCESSFUL;
}

View File

@@ -1,189 +0,0 @@
/* bsp.h
*
* This include file contains all MVME147 board IO definitions.
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* MVME147 port for TNI - Telecom Bretagne
* by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
* May 1996
*
* $Id$
*/
#ifndef __MVME147_h
#define __MVME147_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems.h>
#include <clockdrv.h>
#include <console.h>
#include <iosupp.h>
/* Constants */
#define RAM_START 0x00005000
#define RAM_END 0x00400000
/* MVME 147 Peripheral controller chip
see MVME147/D1, 3.4 */
struct pcc_map {
/* 32 bit registers */
rtems_unsigned32 dma_table_address; /* 0xfffe1000 */
rtems_unsigned32 dma_data_address; /* 0xfffe1004 */
rtems_unsigned32 dma_bytecount; /* 0xfffe1008 */
rtems_unsigned32 dma_data_holding; /* 0xfffe100c */
/* 16 bit registers */
rtems_unsigned16 timer1_preload; /* 0xfffe1010 */
rtems_unsigned16 timer1_count; /* 0xfffe1012 */
rtems_unsigned16 timer2_preload; /* 0xfffe1014 */
rtems_unsigned16 timer2_count; /* 0xfffe1016 */
/* 8 bit registers */
rtems_unsigned8 timer1_int_control; /* 0xfffe1018 */
rtems_unsigned8 timer1_control; /* 0xfffe1019 */
rtems_unsigned8 timer2_int_control; /* 0xfffe101a */
rtems_unsigned8 timer2_control; /* 0xfffe101b */
rtems_unsigned8 acfail_int_control; /* 0xfffe101c */
rtems_unsigned8 watchdog_control; /* 0xfffe101d */
rtems_unsigned8 printer_int_control; /* 0xfffe101e */
rtems_unsigned8 printer_control; /* 0xfffe102f */
rtems_unsigned8 dma_int_control; /* 0xfffe1020 */
rtems_unsigned8 dma_control; /* 0xfffe1021 */
rtems_unsigned8 bus_error_int_control; /* 0xfffe1022 */
rtems_unsigned8 dma_status; /* 0xfffe1023 */
rtems_unsigned8 abort_int_control; /* 0xfffe1024 */
rtems_unsigned8 table_address_function_code; /* 0xfffe1025 */
rtems_unsigned8 serial_port_int_control; /* 0xfffe1026 */
rtems_unsigned8 general_purpose_control; /* 0xfffe1027 */
rtems_unsigned8 lan_int_control; /* 0xfffe1028 */
rtems_unsigned8 general_purpose_status; /* 0xfffe1029 */
rtems_unsigned8 scsi_port_int_control; /* 0xfffe102a */
rtems_unsigned8 slave_base_address; /* 0xfffe102b */
rtems_unsigned8 software_int_1_control; /* 0xfffe102c */
rtems_unsigned8 int_base_vector; /* 0xfffe102d */
rtems_unsigned8 software_int_2_control; /* 0xfffe102e */
rtems_unsigned8 revision_level; /* 0xfffe102f */
};
#define pcc ((volatile struct pcc_map * const) 0xfffe1000)
#define z8530 0xfffe3001
/* interrupt vectors - see MVME146/D1 4.14 */
#define PCC_BASE_VECTOR 0x40 /* First user int */
#define SCC_VECTOR PCC_BASE_VECTOR+3
#define TIMER_1_VECTOR PCC_BASE_VECTOR+8
#define TIMER_2_VECTOR PCC_BASE_VECTOR+9
#define SOFT_1_VECTOR PCC_BASE_VECTOR+10
#define SOFT_2_VECTOR PCC_BASE_VECTOR+11
#define USE_CHANNEL_A 1 /* 1 = use channel A for console */
#define USE_CHANNEL_B 0 /* 1 = use channel B for console */
#if (USE_CHANNEL_A == 1)
#define CONSOLE_CONTROL 0xfffe3002
#define CONSOLE_DATA 0xfffe3003
#elif (USE_CHANNEL_B == 1)
#define CONSOLE_CONTROL 0xfffe3000
#define CONSOLE_DATA 0xfffe3001
#endif
#define FOREVER 1 /* infinite loop */
#ifdef M147_INIT
#undef EXTERN
#define EXTERN
#else
#undef EXTERN
#define EXTERN extern
#endif
/*
* Define the time limits for RTEMS Test Suite test durations.
* Long test and short test duration limits are provided. These
* values are in seconds and need to be converted to ticks for the
* application.
*
*/
#define MAX_LONG_TEST_DURATION 300 /* 5 minutes = 300 seconds */
#define MAX_SHORT_TEST_DURATION 3 /* 3 seconds */
/*
* Define the interrupt mechanism for Time Test 27
*
* NOTE: Use the MPCSR vector for the MVME147
*/
#define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector( handler ) set_vector( (handler), \
SOFT_1_VECTOR, 1 )
#define Cause_tm27_intr() pcc->software_int_1_control = 0x0c
/* generate level 4 sotware int. */
#define Clear_tm27_intr() pcc->software_int_1_control = 0x00
#define Lower_tm27_intr()
/* miscellaneous stuff assumed to exist */
extern rtems_configuration_table BSP_Configuration;
extern m68k_isr_entry M68Kvec[]; /* vector table address */
/*
* Device Driver Table Entries
*/
/*
* NOTE: Use the standard Console driver entry
*/
/*
* NOTE: Use the standard Clock driver entry
*/
/*
* How many libio files we want
*/
#define BSP_LIBIO_MAX_FDS 20
/* functions */
void bsp_cleanup( void );
m68k_isr_entry set_vector(
rtems_isr_entry handler,
rtems_vector_number vector,
int type
);
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,104 +0,0 @@
/* coverhd.h
*
* This include file has defines to represent the overhead associated
* with calling a particular directive from C on this target.
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* $Id$
*/
#ifndef __COVERHD_h
#define __COVERHD_h
#ifdef __cplusplus
extern "C" {
#endif
#define CALLING_OVERHEAD_INITIALIZE_EXECUTIVE 2
#define CALLING_OVERHEAD_SHUTDOWN_EXECUTIVE 1
#define CALLING_OVERHEAD_TASK_CREATE 3
#define CALLING_OVERHEAD_TASK_IDENT 2
#define CALLING_OVERHEAD_TASK_START 2
#define CALLING_OVERHEAD_TASK_RESTART 2
#define CALLING_OVERHEAD_TASK_DELETE 1
#define CALLING_OVERHEAD_TASK_SUSPEND 1
#define CALLING_OVERHEAD_TASK_RESUME 2
#define CALLING_OVERHEAD_TASK_SET_PRIORITY 2
#define CALLING_OVERHEAD_TASK_MODE 2
#define CALLING_OVERHEAD_TASK_GET_NOTE 2
#define CALLING_OVERHEAD_TASK_SET_NOTE 2
#define CALLING_OVERHEAD_TASK_WAKE_WHEN 4
#define CALLING_OVERHEAD_TASK_WAKE_AFTER 1
#define CALLING_OVERHEAD_INTERRUPT_CATCH 2
#define CALLING_OVERHEAD_CLOCK_GET 5
#define CALLING_OVERHEAD_CLOCK_SET 4
#define CALLING_OVERHEAD_CLOCK_TICK 1
#define CALLING_OVERHEAD_TIMER_CREATE 2
#define CALLING_OVERHEAD_TIMER_IDENT 1
#define CALLING_OVERHEAD_TIMER_DELETE 2
#define CALLING_OVERHEAD_TIMER_FIRE_AFTER 2
#define CALLING_OVERHEAD_TIMER_FIRE_WHEN 5
#define CALLING_OVERHEAD_TIMER_RESET 1
#define CALLING_OVERHEAD_TIMER_CANCEL 1
#define CALLING_OVERHEAD_SEMAPHORE_CREATE 3
#define CALLING_OVERHEAD_SEMAPHORE_DELETE 1
#define CALLING_OVERHEAD_SEMAPHORE_IDENT 2
#define CALLING_OVERHEAD_SEMAPHORE_OBTAIN 2
#define CALLING_OVERHEAD_SEMAPHORE_RELEASE 1
#define CALLING_OVERHEAD_MESSAGE_QUEUE_CREATE 2
#define CALLING_OVERHEAD_MESSAGE_QUEUE_IDENT 2
#define CALLING_OVERHEAD_MESSAGE_QUEUE_DELETE 1
#define CALLING_OVERHEAD_MESSAGE_QUEUE_SEND 2
#define CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT 2
#define CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST 2
#define CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE 3
#define CALLING_OVERHEAD_MESSAGE_QUEUE_FLUSH 2
#define CALLING_OVERHEAD_EVENT_SEND 2
#define CALLING_OVERHEAD_EVENT_RECEIVE 2
#define CALLING_OVERHEAD_SIGNAL_CATCH 2
#define CALLING_OVERHEAD_SIGNAL_SEND 2
#define CALLING_OVERHEAD_PARTITION_CREATE 3
#define CALLING_OVERHEAD_PARTITION_IDENT 2
#define CALLING_OVERHEAD_PARTITION_DELETE 1
#define CALLING_OVERHEAD_PARTITION_GET_BUFFER 2
#define CALLING_OVERHEAD_PARTITION_RETURN_BUFFER 2
#define CALLING_OVERHEAD_REGION_CREATE 3
#define CALLING_OVERHEAD_REGION_IDENT 2
#define CALLING_OVERHEAD_REGION_DELETE 2
#define CALLING_OVERHEAD_REGION_GET_SEGMENT 3
#define CALLING_OVERHEAD_REGION_RETURN_SEGMENT 2
#define CALLING_OVERHEAD_PORT_CREATE 3
#define CALLING_OVERHEAD_PORT_IDENT 2
#define CALLING_OVERHEAD_PORT_DELETE 1
#define CALLING_OVERHEAD_PORT_EXTERNAL_TO_INTERNAL 2
#define CALLING_OVERHEAD_PORT_INTERNAL_TO_EXTERNAL 2
#define CALLING_OVERHEAD_IO_INITIALIZE 2
#define CALLING_OVERHEAD_IO_OPEN 2
#define CALLING_OVERHEAD_IO_CLOSE 3
#define CALLING_OVERHEAD_IO_READ 2
#define CALLING_OVERHEAD_IO_WRITE 2
#define CALLING_OVERHEAD_IO_CONTROL 2
#define CALLING_OVERHEAD_FATAL_ERROR_OCCURRED 1
#define CALLING_OVERHEAD_RATE_MONOTONIC_CREATE 2
#define CALLING_OVERHEAD_RATE_MONOTONIC_IDENT 2
#define CALLING_OVERHEAD_RATE_MONOTONIC_DELETE 1
#define CALLING_OVERHEAD_RATE_MONOTONIC_CANCEL 1
#define CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD 2
#define CALLING_OVERHEAD_MULTIPROCESSING_ANNOUNCE 1
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,45 +0,0 @@
/*
* This routine returns control to 147Bug.
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* MVME147 port for TNI - Telecom Bretagne
* by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
* May 1996
*
* $Id$
*/
#include <rtems.h>
#include <bsp.h>
#include <clockdrv.h>
void bsp_return_to_monitor_trap()
{
extern void start( void );
register volatile void *start_addr;
m68k_set_vbr( 0 ); /* restore 147Bug vectors */
asm volatile( "trap #15" ); /* trap to 147Bug */
asm volatile( ".short 0x63" ); /* return to 147Bug (.RETURN) */
/* restart program */
start_addr = start;
asm volatile ( "jmp %0@" : "=a" (start_addr) : "0" (start_addr) );
}
void bsp_cleanup( void )
{
pcc->timer1_int_control = 0; /* Disable Timer 1 */
pcc->timer2_int_control = 0; /* Disable Timer 2 */
M68Kvec[ 45 ] = bsp_return_to_monitor_trap; /* install handler */
asm volatile( "trap #13" ); /* insures SUPV mode */
}

View File

@@ -1,245 +0,0 @@
/* bsp_start()
*
* This routine starts the application. It includes application,
* board, and monitor specific initialization and configuration.
* The generic CPU dependent initialization has been performed
* before this routine is invoked.
*
* INPUT: NONE
*
* OUTPUT: NONE
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* MVME147 port for TNI - Telecom Bretagne
* by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
* May 1996
*
* $Id$
*/
#include <bsp.h>
#include <rtems/libio.h>
#include <libcsupport.h>
#include <string.h>
#include <fcntl.h>
#ifdef STACK_CHECKER_ON
#include <stackchk.h>
#endif
/*
* The original table from the application and our copy of it with
* some changes.
*/
extern rtems_configuration_table Configuration;
rtems_configuration_table BSP_Configuration;
rtems_cpu_table Cpu_table;
char *rtems_progname;
/* Initialize whatever libc we are using
* called from postdriver hook
*/
void bsp_libc_init()
{
extern int end;
rtems_unsigned32 heap_start;
heap_start = (rtems_unsigned32) &end;
if (heap_start & (CPU_ALIGNMENT-1))
heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
RTEMS_Malloc_Initialize((void *) heap_start, 64 * 1024, 0);
/*
* Init the RTEMS libio facility to provide UNIX-like system
* calls for use by newlib (ie: provide __open, __close, etc)
* Uses malloc() to get area for the iops, so must be after malloc init
*/
rtems_libio_init();
/*
* Set up for the libc handling.
*/
if (BSP_Configuration.ticks_per_timeslice > 0)
libc_init(1); /* reentrant if possible */
else
libc_init(0); /* non-reentrant */
}
/*
* Function: bsp_pretasking_hook
* Created: 95/03/10
*
* Description:
* BSP pretasking hook. Called just before drivers are initialized.
* Used to setup libc and install any BSP extensions.
*
* NOTES:
* Must not use libc (to do io) from here, since drivers are
* not yet initialized.
*
*/
void
bsp_pretasking_hook(void)
{
bsp_libc_init();
#ifdef STACK_CHECKER_ON
/*
* Initialize the stack bounds checker
* We can either turn it on here or from the app.
*/
Stack_check_Initialize();
#endif
#ifdef RTEMS_DEBUG
rtems_debug_enable( RTEMS_DEBUG_ALL_MASK );
#endif
}
/*
* After drivers are setup, register some "filenames"
* and open stdin, stdout, stderr files
*
* Newlib will automatically associate the files with these
* (it hardcodes the numbers)
*/
void
bsp_postdriver_hook(void)
{
int stdin_fd, stdout_fd, stderr_fd;
int error_code;
error_code = 'S' << 24 | 'T' << 16;
if ((stdin_fd = __open("/dev/console", O_RDONLY, 0)) == -1)
rtems_fatal_error_occurred( error_code | 'D' << 8 | '0' );
if ((stdout_fd = __open("/dev/console", O_WRONLY, 0)) == -1)
rtems_fatal_error_occurred( error_code | 'D' << 8 | '1' );
if ((stderr_fd = __open("/dev/console", O_WRONLY, 0)) == -1)
rtems_fatal_error_occurred( error_code | 'D' << 8 | '2' );
if ((stdin_fd != 0) || (stdout_fd != 1) || (stderr_fd != 2))
rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' );
}
int main(
int argc,
char **argv,
char **environp
)
{
m68k_isr_entry *monitors_vector_table;
int index;
if ((argc > 0) && argv && argv[0])
rtems_progname = argv[0];
else
rtems_progname = "RTEMS";
monitors_vector_table = (m68k_isr_entry *)0; /* 135Bug Vectors are at 0 */
m68k_set_vbr( monitors_vector_table );
for ( index=2 ; index<=255 ; index++ )
M68Kvec[ index ] = monitors_vector_table[ 32 ];
M68Kvec[ 2 ] = monitors_vector_table[ 2 ]; /* bus error vector */
M68Kvec[ 4 ] = monitors_vector_table[ 4 ]; /* breakpoints vector */
M68Kvec[ 9 ] = monitors_vector_table[ 9 ]; /* trace vector */
M68Kvec[ 47 ] = monitors_vector_table[ 47 ]; /* system call vector */
m68k_set_vbr( &M68Kvec );
pcc->int_base_vector = PCC_BASE_VECTOR; /* Set the PCC int vectors base */
(*(rtems_unsigned8 *)0xfffe2001) = 0x08;
/* make VME access round-robin */
m68k_enable_caching();
/*
* we only use a hook to get the C library initialized.
*/
Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
Cpu_table.predriver_hook = NULL;
Cpu_table.postdriver_hook = bsp_postdriver_hook;
Cpu_table.idle_task = NULL; /* do not override system IDLE task */
Cpu_table.do_zero_of_workspace = TRUE;
Cpu_table.interrupt_vector_table = (m68k_isr_entry *) &M68Kvec;
Cpu_table.interrupt_stack_size = 4096;
Cpu_table.extra_mpci_receive_server_stack = 0;
/*
* Copy the table
*/
BSP_Configuration = Configuration;
BSP_Configuration.work_space_start = (void *)
(RAM_END - BSP_Configuration.work_space_size);
/*
* Add 1 region for the RTEMS Malloc
*/
BSP_Configuration.maximum_regions++;
/*
* Add 1 extension for newlib libc
*/
#ifdef RTEMS_NEWLIB
BSP_Configuration.maximum_extensions++;
#endif
/*
* Add another extension if using the stack checker
*/
#ifdef STACK_CHECKER_ON
BSP_Configuration.maximum_extensions++;
#endif
/*
* Tell libio how many fd's we want and allow it to tweak config
*/
rtems_libio_config(&BSP_Configuration, BSP_LIBIO_MAX_FDS);
rtems_initialize_executive( &BSP_Configuration, &Cpu_table );
/* does not return */
bsp_cleanup();
return 0;
}

View File

@@ -1,52 +0,0 @@
/*
* This file contains directives for the GNU linker which are specific
* to the Motorola MVME147 boards.
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* MVME147 port for TNI - Telecom Bretagne
* by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
* May 1996
*
* $Id$
*/
MEMORY
{
ram : org = 0x5000, l = 0x3fafff
}
SECTIONS
{
.text 0x5000 :
{
text_start = . ;
_text_start = . ;
*(.text)
etext = ALIGN( 0x10 ) ;
_etext = .;
}
.data ADDR( .text ) + SIZEOF( .text ):
{
data_start = . ;
_data_start = .;
*(.data)
edata = ALIGN( 0x10 ) ;
_edata = .;
}
.bss ADDR( .data ) + SIZEOF( .data ):
{
bss_start = . ;
_bss_start = . ;
*(.bss)
*(COMMON)
end = . ;
_end = . ;
}
}

View File

@@ -1,84 +0,0 @@
/* Timer_init()
*
* This routine initializes the PCC timer on the MVME147 board.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* NOTE: It is important that the timer start/stop overhead be
* determined when porting or modifying this code.
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* MVME147 port for TNI - Telecom Bretagne
* by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
* May 1996
*
* $Id$
*/
#include <bsp.h>
#define TIMER_INT_LEVEL 6
#define COUNTDOWN_VALUE 0
/* Allows 0.4096 second delay betwin ints */
/* Each tick is 6.25 us */
int Ttimer_val;
rtems_boolean Timer_driver_Find_average_overhead;
rtems_isr timerisr();
void Timer_initialize()
{
(void) set_vector(timerisr, TIMER_1_VECTOR, 0); /* install ISR */
Ttimer_val = 0; /* clear timer ISR count */
pcc->timer1_int_control = 0x00; /* Disable T1 Interr. */
pcc->timer1_preload = COUNTDOWN_VALUE;
/* write countdown preload value */
pcc->timer1_control = 0x00; /* load preload value */
pcc->timer1_control = 0x07; /* clear T1 overflow counter, enable counter */
pcc->timer1_int_control = TIMER_INT_LEVEL|0x08;
/* Enable Timer 1 and set its int. level */
}
#define AVG_OVERHEAD 0 /* No need to start/stop the timer to read
its value on the MVME147 PCC: reads are not
synchronized whith the counter updates*/
#define LEAST_VALID 10 /* Don't trust a value lower than this */
int Read_timer()
{
rtems_unsigned32 total;
rtems_unsigned16 counter_value;
counter_value = pcc->timer1_count; /* read the counter value */
total = ((Ttimer_val * 0x10000) + counter_value); /* in 6.25 us units */
/* DC note : just look at the assembly generated
to see gcc's impressive optimization ! */
return total;
}
rtems_status_code Empty_function( void )
{
return RTEMS_SUCCESSFUL;
}
void Set_find_average_overhead(
rtems_boolean find_flag
)
{
Timer_driver_Find_average_overhead = find_flag;
}

View File

@@ -1,28 +0,0 @@
# timer_isr()
#
# This routine provides the ISR for the PCC timer on the MVME147
# board. The timer is set up to generate an interrupt at maximum
# intervals.
#
# MVME147 port for TNI - Telecom Bretagne
# by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
# May 1996
#
# $Id$
#
#include "asm.h"
BEGIN_CODE
.set T1_CONTROL_REGISTER, 0xfffe1018 | timer 1 control register
PUBLIC (timerisr)
SYM (timerisr):
orb #0x80, T1_CONTROL_REGISTER | clear T1 int status bit
addql #1, SYM (Ttimer_val) | increment timer value
end_timerisr:
rte
END_CODE
END

View File

@@ -1,194 +0,0 @@
#
# Timing Test Suite Results for the Motorola MVME147 BSP
#
# MVME147 port for TNI - Telecom Bretagne
# by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
# May 1996
#
# $Id$
#
Board: Motorola MVME147S
CPU: Motorola MC68030 + MC68882 FPU
Clock Speed: 20 Mhz
Memory Configuration: DRAM w/no cache
Wait States: ? wait state
Times Reported in: microseconds (6.25 us grain)
Timer Source: MVME147 Peripheral Channel Controller tick timer
Column A: 3.5.1 pre-release
# DESCRIPTION A
== ================================================================= ====
1 rtems_semaphore_create 69
rtems_semaphore_delete 69
rtems_semaphore_obtain: available 44
rtems_semaphore_obtain: not available -- NO_WAIT 44
rtems_semaphore_release: no waiting tasks 56
2 rtems_semaphore_obtain: not available -- caller blocks 125
3 rtems_semaphore_release: task readied -- preempts caller 106
4 rtems_task_restart: blocked task -- preempts caller 181
rtems_task_restart: ready task -- preempts caller 169
rtems_semaphore_release: task readied -- returns to caller 81
rtems_task_create 169
rtems_task_start 87
rtems_task_restart: suspended task -- returns to caller 106
rtems_task_delete: suspended task 169
rtems_task_restart: ready task -- returns to caller 112
rtems_task_restart: blocked task -- returns to caller 150
rtems_task_delete: blocked task 175
5 rtems_task_suspend: calling task 87
rtems_task_resume: task readied -- preempts caller 75
6 rtems_task_restart: calling task 112
rtems_task_suspend: returns to caller 56
rtems_task_resume: task readied -- returns to caller 50
rtems_task_delete: ready task 169
7 rtems_task_restart: suspended task -- preempts caller 143
8 rtems_task_set_priority: obtain current priority 37
rtems_task_set_priority: returns to caller 75
rtems_task_mode: obtain current mode 6
rtems_task_mode: no reschedule 6
rtems_task_mode: reschedule -- returns to caller 19
rtems_task_mode: reschedule -- preempts caller 75
rtems_task_set_note 37
rtems_task_get_note 37
rtems_clock_set 87
rtems_clock_get 0
9 rtems_message_queue_create 225
rtems_message_queue_send: no waiting tasks 112
rtems_message_queue_urgent: no waiting tasks 112
rtems_message_queue_receive: available 87
rtems_message_queue_flush: no messages flushed 37
rtems_message_queue_flush: messages flushed 50
rtems_message_queue_delete 106
10 rtems_message_queue_receive: not available -- NO_WAIT 44
rtems_message_queue_receive: not available -- caller blocks 125
11 rtems_message_queue_send: task readied -- preempts caller 144
12 rtems_message_queue_send: task readied -- returns to caller 119
13 rtems_message_queue_urgent: task readied -- preempts caller 144
14 rtems_message_queue_urgent: task readied -- returns to caller 119
15 rtems_event_receive: obtain current events 0
rtems_event_receive: not available -- NO_WAIT 25
rtems_event_receive: not available -- caller blocks 100
rtems_event_send: no task readied 31
rtems_event_receive: available 37
rtems_event_send: task readied -- returns to caller 69
16 rtems_event_send: task readied -- preempts caller 100
17 rtems_task_set_priority: preempts caller 125
18 rtems_task_delete: calling task 200
19 rtems_signal_catch 19
rtems_signal_send: returns to caller 50
rtems_signal_send: signal to self 56
exit ASR overhead: returns to calling task 44
exit ASR overhead: returns to preempting task 75
20 rtems_partition_create 81
rtems_region_create 75
rtems_partition_get_buffer: available 44
rtems_partition_get_buffer: not available 44
rtems_partition_return_buffer 56
rtems_partition_delete 62
rtems_region_get_segment: available 56
rtems_region_get_segment: not available -- NO_WAIT 56
rtems_region_return_segment: no waiting tasks 69
rtems_region_get_segment: not available -- caller blocks 144
rtems_region_return_segment: task readied -- preempts caller 169
rtems_region_return_segment: task readied -- returns to caller 137
rtems_region_delete 56
rtems_io_initialize 0
rtems_io_open 0
rtems_io_close 0
rtems_io_read 0
rtems_io_write 0
rtems_io_control 0
21 rtems_task_ident 375
rtems_message_queue_ident 362
rtems_semaphore_ident 394
rtems_partition_ident 362
rtems_region_ident 369
rtems_port_ident 362
rtems_timer_ident 369
rtems_rate_monotonic_ident 362
22 rtems_message_queue_broadcast: task readied -- returns to caller 131
rtems_message_queue_broadcast: no waiting tasks 62
rtems_message_queue_broadcast: task readied -- preempts caller 156
23 rtems_timer_create 31
rtems_timer_fire_after: inactive 69
rtems_timer_fire_after: active 69
rtems_timer_cancel: active 44
rtems_timer_cancel: inactive 37
rtems_timer_reset: inactive 69
rtems_timer_reset: active 69
rtems_timer_fire_when: inactive 87
rtems_timer_fire_when: active 87
rtems_timer_delete: active 56
rtems_timer_delete: inactive 50
rtems_task_wake_when 125
24 rtems_task_wake_after: yield -- returns to caller 19
rtems_task_wake_after: yields -- preempts caller 69
25 rtems_clock_tick 19
26 _ISR_Disable 6
_ISR_Flash 6
_ISR_Enable 6
_Thread_Disable_dispatch 6
_Thread_Enable_dispatch 25
_Thread_Set_state 31
_Thread_Disptach (NO FP) 62
context switch: no floating point contexts 50
context switch: self 12
context switch: to another task 12
context switch: restore 1st FP task 56
fp context switch: save idle, restore idle 87
fp context switch: save idle, restore initialized 75
fp context switch: save initialized, restore initialized 75
_Thread_Resume 25
_Thread_Unblock 25
_Thread_Ready 31
_Thread_Get 12
_Semaphore_Get 6
_Thread_Get: invalid id 0
27 interrupt entry overhead: returns to interrupted task 12
interrupt exit overhead: returns to interrupted task 12
interrupt entry overhead: returns to nested interrupt 19
interrupt exit overhead: returns to nested interrupt 6
interrupt entry overhead: returns to preempting task 12
interrupt exit overhead: returns to preempting task 81
28 rtems_port_create 37
rtems_port_external_to_internal 31
rtems_port_internal_to_external 31
rtems_port_delete 56
29 rtems_rate_monotonic_create 44
rtems_rate_monotonic_period: initiate period -- returns to caller 62
rtems_rate_monotonic_period: obtain status 37
rtems_rate_monotonic_cancel 56
rtems_rate_monotonic_delete: inactive 62
rtems_rate_monotonic_delete: active 69
rtems_rate_monotonic_period: conclude periods -- caller blocks 87

View File

@@ -34,8 +34,6 @@ Shm_Print_statistics(void)
(void) rtems_clock_get( RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticks_per_second );
seconds = ticks / ticks_per_second;
if ( seconds == 0 )
seconds = 1;
packets_per_second = Shm_Receive_message_count / seconds;
if ( (Shm_Receive_message_count % seconds) >= (seconds / 2) )

View File

@@ -24,8 +24,6 @@
#include <shm.h>
#include <string.h> /* memset() */
#include <stdlib.h> /* malloc() */
#include <assert.h>
/*
* User extension to install MPCI_Fatal as a fatal error
@@ -55,13 +53,6 @@ rtems_mpci_entry Shm_Initialization( void )
Shm_Get_configuration( Shm_Local_node, &Shm_Configuration );
Shm_Interrupt_table = (Shm_Interrupt_information *) malloc(
sizeof(Shm_Interrupt_information) * (Shm_Maximum_nodes + 1)
);
assert( Shm_Interrupt_table );
Shm_Receive_message_count = 0;
Shm_Null_message_count = 0;
Shm_Interrupt_count = 0;

View File

@@ -430,7 +430,7 @@ typedef struct shm_config_info shm_config_table;
#endif
SHM_EXTERN shm_config_table *Shm_Configuration;
SHM_EXTERN Shm_Interrupt_information *Shm_Interrupt_table;
SHM_EXTERN Shm_Interrupt_information Shm_Interrupt_table[16];
SHM_EXTERN Shm_Node_status_control *Shm_Node_statuses;
SHM_EXTERN Shm_Locked_queue_Control *Shm_Locked_queues;
SHM_EXTERN Shm_Envelope_control *Shm_Envelopes;

View File

@@ -430,7 +430,7 @@ typedef struct shm_config_info shm_config_table;
#endif
SHM_EXTERN shm_config_table *Shm_Configuration;
SHM_EXTERN Shm_Interrupt_information *Shm_Interrupt_table;
SHM_EXTERN Shm_Interrupt_information Shm_Interrupt_table[16];
SHM_EXTERN Shm_Node_status_control *Shm_Node_statuses;
SHM_EXTERN Shm_Locked_queue_Control *Shm_Locked_queues;
SHM_EXTERN Shm_Envelope_control *Shm_Envelopes;

View File

@@ -91,6 +91,7 @@ extern rtems_cpu_table Cpu_table; /* owned by BSP */
extern int rtems_argc;
extern char **rtems_argv;
extern char **rtems_envp;
extern rtems_unsigned32 bsp_isr_level;

View File

@@ -1,3 +1,8 @@
/*
* @(#)bspstart.c 1.7 - 95/04/07
*
*/
/* bsp_start()
*
* This routine starts the application. It includes application,
@@ -50,6 +55,7 @@ rtems_unsigned32 bsp_isr_level;
rtems_unsigned32 Heap_size;
int rtems_argc;
char **rtems_argv;
char **rtems_envp;
/*
* May be overridden by RTEMS_WORKSPACE_SIZE and RTEMS_HEAPSPACE_SIZE
@@ -161,13 +167,6 @@ bsp_pretasking_hook(void)
#ifdef RTEMS_DEBUG
rtems_debug_enable( RTEMS_DEBUG_ALL_MASK );
#endif
/*
* Dump malloc stats on exit...
*/
#if defined(RTEMS_DEBUG)
atexit(malloc_dump);
#endif
}
/*
@@ -199,6 +198,11 @@ bsp_postdriver_hook(void)
if ((stdin_fd != 0) || (stdout_fd != 1) || (stderr_fd != 2))
rtems_fatal_error_occurred( error_code | 'I' << 8 | 'O' );
#endif
#if defined(MALLOC_STATS)
atexit(malloc_dump);
#endif
}
/*

View File

@@ -1,3 +1,7 @@
//
// @(#)rtems-ctor.cc 1.6 - 95/04/25
//
/*
* rtems-ctor.cc
*
@@ -86,6 +90,7 @@ extern "C" {
{
rtems_argc = argc;
rtems_argv = argv;
rtems_envp = environp;
if ((argc > 0) && argv && argv[0])
rtems_progname = argv[0];

View File

@@ -31,7 +31,7 @@ set_vector( /* returns old vector */
int type /* RTEMS or RAW intr */
)
{
rtems_isr_entry rtems_isr_ptr = 0;
rtems_isr_entry rtems_isr_ptr;
proc_ptr raw_isr_ptr;
if ( type ) {

View File

@@ -1,4 +1,7 @@
/*
* @(#)assoc.c 1.6 - 95/10/25
*
*
* assoc.c
* rtems assoc routines
*

View File

@@ -1,4 +1,6 @@
/*
* @(#)assoc.h 1.4 - 95/10/25
*
*
* Rtems associativity routines. Mainly used to convert a value from
* one space to another (eg: our errno's to host errno's and v.v)

View File

@@ -1,4 +1,7 @@
/*
* @(#)error.c 1.6 - 95/12/12
*
*
* report errors and panics to RTEMS' stderr.
* Currently just used by RTEMS monitor.
*

View File

@@ -1,4 +1,8 @@
/*
* @(#)error.h 1.3 - 95/10/25
*
*
* Defines and externs for rtems error reporting
*
* $Id$
@@ -20,12 +24,7 @@
const char *rtems_status_text(rtems_status_code);
int rtems_error(int error_code, const char *printf_format, ...);
#ifdef __GNUC__
void rtems_panic(const char *printf_format, ...)
__attribute__ ((__noreturn__));
#else
void rtems_panic(const char *printf_format, ...);
#endif
extern int rtems_panic_in_progress;

View File

@@ -1,4 +1,7 @@
/*
* @(#)libio.c 1.1 - 95/06/02
*
*
* Provide UNIX/POSIX-like io system calls for RTEMS using the
* RTEMS IO manager
*
@@ -15,7 +18,7 @@
#if defined(solaris2)
#define O_NDELAY O_NONBLOCK
#elif defined(RTEMS_NEWLIB)
#elif defined(RTEMS_NEWLIB)
#define O_NDELAY _FNBIO
#endif

View File

@@ -1,4 +1,7 @@
/*
* @(#)libio.h 1.1 - 95/06/02
*
*
* General purpose communication channel for RTEMS to allow UNIX/POSIX
* system call behavior on top of RTEMS IO devices.
*

View File

@@ -25,14 +25,12 @@
#include <assert.h>
#include <errno.h>
#include <string.h>
#include <unistd.h> /* sbrk(2) */
rtems_id RTEMS_Malloc_Heap;
size_t RTEMS_Malloc_Sbrk_amount;
#ifdef RTEMS_DEBUG
#define MALLOC_STATS
#define MALLOC_DIRTY
#endif
#ifdef MALLOC_STATS
@@ -204,11 +202,7 @@ void *malloc(
malloc_stats.max_depth = current_depth;
}
#endif
#ifdef MALLOC_DIRTY
(void) memset(return_this, 0xCF, size);
#endif
return return_this;
}
@@ -227,8 +221,6 @@ void *calloc(
if ( cptr )
memset( cptr, '\0', length );
MSBUMP(malloc_calls, -1); /* subtract off the malloc */
return cptr;
}
@@ -252,9 +244,6 @@ void *realloc(
}
new_area = malloc( size );
MSBUMP(malloc_calls, -1); /* subtract off the malloc */
if ( !new_area ) {
free( ptr );
return (void *) 0;

View File

@@ -1,6 +1,17 @@
/*
* @(#)newlibc.c 1.9 - 95/05/16
*
*/
#if defined(RTEMS_NEWLIB)
/*
* File: newlibc.c,v
* Project: PixelFlow
* Created: 94/12/7
* Revision: 1.2
* Last Mod: 1995/05/09 20:24:37
*
* COPYRIGHT (c) 1994 by Division Incorporated
*
* To anyone who acknowledges that this file is provided "AS IS"
@@ -36,25 +47,8 @@
#include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */
/*
* NOTE: When using RTEMS fake stat, fstat, and isatty, all output
* is line buffered so this setvbuf is not necessary. This
* setvbuf insures that we can redirect the output of a test
* on the UNIX simulator and it is in the same order as for a
* real target.
* NOTE:
* There is some problem with doing this on the hpux version
* of the UNIX simulator (symptom is printf core dumps), so
* we just don't for now.
* Not sure if this is a problem with hpux, newlib, or something else.
*/
#if defined(RTEMS_UNIX) && !defined(hpux)
#define NEED_SETVBUF
#endif
#ifdef NEED_SETVBUF
#include <stdio.h>
#ifdef RTEMS_UNIX
#include <stdio.h> /* for setvbuf() */
#endif
#include "internal.h"
@@ -131,7 +125,7 @@ libc_start_hook(rtems_tcb *current_task,
* real target.
*/
#ifdef NEED_SETVBUF
#ifdef RTEMS_UNIX
rtems_extension
libc_begin_hook(rtems_tcb *current_task)
{
@@ -202,19 +196,18 @@ libc_delete_hook(rtems_tcb *current_task,
if (current_task == deleted_task)
{
ptr = _REENT;
ptr = _REENT;
}
else
{
ptr = (struct _reent *) MY_task_get_note(deleted_task, LIBC_NOTEPAD);
ptr = (struct _reent *) MY_task_get_note(deleted_task, LIBC_NOTEPAD);
}
/* if (ptr) */
if (ptr && ptr != &libc_global_reent)
{
_wrapup_reent(ptr);
_reclaim_reent(ptr);
free(ptr);
_wrapup_reent(ptr);
_reclaim_reent(ptr);
}
MY_task_set_note(deleted_task, LIBC_NOTEPAD, 0);
@@ -225,7 +218,7 @@ libc_delete_hook(rtems_tcb *current_task,
if (current_task == deleted_task)
{
_REENT = 0;
_REENT = 0;
}
}
@@ -274,7 +267,7 @@ libc_init(int reentrant)
libc_extension.thread_create = libc_create_hook;
libc_extension.thread_start = libc_start_hook;
#ifdef NEED_SETVBUF
#ifdef RTEMS_UNIX
libc_extension.thread_begin = libc_begin_hook;
#endif
libc_extension.thread_switch = libc_switch_hook;

View File

@@ -1,4 +1,7 @@
/*
* @(#)assoc.c 1.6 - 95/10/25
*
*
* assoc.c
* rtems assoc routines
*

View File

@@ -1,4 +1,6 @@
/*
* @(#)assoc.h 1.4 - 95/10/25
*
*
* Rtems associativity routines. Mainly used to convert a value from
* one space to another (eg: our errno's to host errno's and v.v)

View File

@@ -1,4 +1,7 @@
/*
* @(#)error.c 1.6 - 95/12/12
*
*
* report errors and panics to RTEMS' stderr.
* Currently just used by RTEMS monitor.
*

View File

@@ -1,4 +1,8 @@
/*
* @(#)error.h 1.3 - 95/10/25
*
*
* Defines and externs for rtems error reporting
*
* $Id$
@@ -20,12 +24,7 @@
const char *rtems_status_text(rtems_status_code);
int rtems_error(int error_code, const char *printf_format, ...);
#ifdef __GNUC__
void rtems_panic(const char *printf_format, ...)
__attribute__ ((__noreturn__));
#else
void rtems_panic(const char *printf_format, ...);
#endif
extern int rtems_panic_in_progress;

View File

@@ -1,4 +1,7 @@
/*
* @(#)command.c 1.5 - 95/08/02
*
*
* Command parsing routines for RTEMS monitor
*
* TODO:

View File

@@ -1,4 +1,7 @@
/*
* @(#)config.c 1.5 - 95/08/02
*
*
* RTEMS Config display support
*
* TODO

View File

@@ -1,4 +1,7 @@
/*
* @(#)dname.c 1.5 - 96/01/03
*
*
* RTEMS monitor driver names support.
*
* There are 2 "driver" things the monitor knows about.

View File

@@ -1,4 +1,7 @@
/*
* @(#)driver.c 1.4 - 95/08/02
*
*
* RTEMS monitor IO (device drivers) support
*
* There are 2 "driver" things the monitor knows about.

View File

@@ -1,4 +1,7 @@
/*
* @(#)extension.c 1.6 - 95/09/25
*
*
* RTEMS Monitor extension support
*
* $Id$

View File

@@ -1,5 +1,8 @@
/*
* RTEMS Monitor init task support
* @(#)itask.c 1.6 - 96/01/03
*
*
* RTEMS Monitor init task support
*
* $Id$
*/

View File

@@ -1,6 +1,9 @@
/*
* RTEMS Monitor "manager" support.
* Used to traverse object (chain) lists and print them out.
* @(#)manager.c 1.4 - 96/01/03
*
*
* RTEMS Monitor "manager" support.
* Used to traverse object (chain) lists and print them out.
*
* $Id$
*/

View File

@@ -1,4 +1,8 @@
/*
* @(#)monitor.c 1.23 - 96/01/03
*
*
*
* RTEMS monitor main body
*
* TODO:
@@ -14,7 +18,7 @@
* should have a separate monitor FILE stream (ala the debugger)
* remote request/response stuff should be cleaned up
* maybe we can use real rpc??
* 'info' command to print out:
* 'info' commadn to print out:
* interrupt stack location, direction and size
* floating point config stuff
* interrupt config stuff
@@ -258,18 +262,6 @@ rtems_monitor_wakeup(void)
status = rtems_event_send(rtems_monitor_task_id, MONITOR_WAKEUP_EVENT);
}
void
rtems_monitor_debugger_cmd(
int argc,
char **argv,
unsigned32 command_arg,
boolean verbose
)
{
#ifdef CPU_INVOKE_DEBUGGER
CPU_INVOKE_DEBUGGER;
#endif
}
void
rtems_monitor_pause_cmd(
@@ -310,6 +302,19 @@ rtems_monitor_continue_cmd(
rtems_monitor_suspend(RTEMS_NO_TIMEOUT);
}
void
rtems_monitor_debugger_cmd(
int argc,
char **argv,
unsigned32 command_arg,
boolean verbose
)
{
#ifdef CPU_INVOKE_DEBUGGER
CPU_INVOKE_DEBUGGER;
#endif
}
void
rtems_monitor_node_cmd(
int argc,
@@ -335,10 +340,8 @@ rtems_monitor_node_cmd(
break;
}
if ((new_node >= 1) &&
_Configuration_MP_table &&
(new_node <= _Configuration_MP_table->maximum_nodes))
rtems_monitor_default_node = new_node;
if ((new_node >= 1) && (new_node <= _Configuration_MP_table->maximum_nodes))
rtems_monitor_default_node = new_node;
}
@@ -380,7 +383,11 @@ rtems_monitor_symbols_loadup(void)
if (rtems_monitor_symbols == 0)
return;
#ifdef SIMHPPA
fp = fdopen(8, "r"); /* don't ask; don't tell */
#else
fp = fopen("symbols", "r");
#endif
if (fp == 0)
return;

View File

@@ -1,4 +1,7 @@
/*
* @(#)mpci.c 1.6 - 95/08/02
*
*
* RTEMS MPCI Config display support
*
* TODO

View File

@@ -1,4 +1,7 @@
/*
* @(#)object.c 1.9 - 96/01/03
*
*
* RTEMS Monitor "object" support.
*
* Used to traverse object lists and print them out.
@@ -338,7 +341,7 @@ rtems_monitor_object_cmd(
for (arg=1; argv[arg]; arg++)
{
id = (rtems_id) strtoul(argv[arg], 0, 16);
id = (rtems_id) strtoul(argv[arg], 0, 0);
id = rtems_monitor_id_fixup(id, default_node, type);
type = (rtems_monitor_object_type_t) rtems_get_class(id);

View File

@@ -1,4 +1,7 @@
/*
* @(#)prmisc.c 1.9 - 95/08/02
*
*
* Print misc stuff for the monitor dump routines
* Each routine returns the number of characters it output.
*

View File

@@ -1,4 +1,6 @@
/*
* @(#)queue.c 1.5 - 95/07/31
*
* $Id$
*/

View File

@@ -1,5 +1,8 @@
/*
* RTEMS monitor server (handles requests for info from RTEMS monitors
* @(#)server.c 1.5 - 96/01/03
*
*
* RTEMS monitor server (handles requests for info from RTEMS monitors
* running on other nodes)
*
* $Id$

View File

@@ -1,3 +1,11 @@
/*
* @(#)symbols.c 1.10 - 95/08/02
*
* $Id$
*/
/* #define qsort _quicksort */
/*
* File: symbols.c
*
@@ -7,8 +15,6 @@
*
*
* TODO:
*
* $Id$
*/
#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__
@@ -44,6 +50,11 @@ rtems_symbol_table_destroy(rtems_symbol_table_t *table)
if (table->addresses)
(void) free(table->addresses);
table->addresses = 0;
if (table->symbols)
(void) free(table->symbols);
table->symbols = 0;
p = table->string_buffer_head;
while (p)
{
@@ -82,6 +93,11 @@ rtems_symbol_create(
table->addresses = (rtems_symbol_t *) realloc((void *) table->addresses, newsize * sizeof(rtems_symbol_t));
if (table->addresses == 0) /* blew it; lost orig */
goto failed;
table->symbols = (rtems_symbol_t *) realloc((void *) table->symbols, newsize * sizeof(rtems_symbol_t));
if (table->symbols == 0) /* blew it; lost orig */
goto failed;
table->size = newsize;
}
@@ -113,6 +129,9 @@ rtems_symbol_create(
(void) strcpy(sp->name, name);
table->strings_next += symbol_length;
table->symbols[table->next] = *sp;
table->sorted = 0;
table->next++;
@@ -128,7 +147,7 @@ failed:
* Qsort entry point for compare by address
*/
static int
int
rtems_symbol_compare(const void *e1,
const void *e2)
{
@@ -143,20 +162,48 @@ rtems_symbol_compare(const void *e1,
return 0;
}
/*
* Qsort entry point for compare by string name (case independent)
*/
int
rtems_symbol_string_compare(const void *e1,
const void *e2)
{
rtems_symbol_t *s1, *s2;
s1 = (rtems_symbol_t *) e1;
s2 = (rtems_symbol_t *) e2;
return strcasecmp(s1->name, s2->name);
}
/*
* Sort the symbol table using qsort
*/
static void
void
rtems_symbol_sort(rtems_symbol_table_t *table)
{
#ifdef RTEMS_ON_SIMULATOR
printf("Sorting symbols ... "); /* so slow we need a msg */
fflush(stdout);
#endif
qsort((void *) table->addresses, (size_t) table->next,
sizeof(rtems_symbol_t), rtems_symbol_compare);
qsort((void *) table->symbols, (size_t) table->next,
sizeof(rtems_symbol_t), rtems_symbol_string_compare);
#ifdef RTEMS_ON_SIMULATOR
/* so slow we need a msg */
printf("done\n");
#endif
table->sorted = 1;
}
/*
* Search the symbol table by address
* This code based on CYGNUS newlib bsearch, but changed
@@ -214,53 +261,6 @@ rtems_symbol_value_lookup(
return best;
}
/*
* Search the symbol table for the exact matching address.
* If the symbol table has already been sorted, then
* call the regular symbol value lookup, however, it it
* has not yet been sorted, search it sequentially.
* This routine is primarily used for low level symbol
* lookups (eg. from exception handler and interrupt routines)
* where the penality of sorted is not wanted and where
* an exact match is needed such that symbol table order
* is not important.
*/
const rtems_symbol_t *
rtems_symbol_value_lookup_exact(
rtems_symbol_table_t *table,
rtems_unsigned32 value
)
{
int s;
rtems_symbol_t *sp;
if (table == 0)
{
table = rtems_monitor_symbols;
if (table == 0)
return NULL;
}
if (table->sorted)
{
sp = rtems_symbol_value_lookup(table, value);
if ( rtems_symbol_value(sp) == value )
return sp;
else
return NULL; /* not an exact match */
}
for (s = 0, sp = table->addresses; s < table->next; s++, sp++)
{
if ( sp->value == value )
return sp;
}
return NULL;
}
/*
* Search the symbol table by string name (case independent)
*/
@@ -271,23 +271,33 @@ rtems_symbol_name_lookup(
char *name
)
{
int s;
rtems_symbol_t *sp;
rtems_symbol_t *sp = 0;
rtems_symbol_t key;
if (table == 0)
{
table = rtems_monitor_symbols;
if (table == 0)
return NULL;
}
for (s = 0, sp = table->addresses; s < table->next; s++, sp++)
{
if ( strcasecmp(sp->name, name) == 0 )
return sp;
}
return NULL;
if ((table == 0) || (name == 0))
goto done;
if (table->sorted == 0)
rtems_symbol_sort(table);
/*
* dummy up one for bsearch()
*/
key.name = name;
key.value = 0;
sp = (rtems_symbol_t *) bsearch((const void *) &key,
(const void *) table->symbols,
(size_t) table->next,
sizeof(rtems_symbol_t),
rtems_symbol_string_compare);
done:
return sp;
}
void *
@@ -315,7 +325,7 @@ rtems_monitor_symbol_next(
_Thread_Disable_dispatch();
*next_id += 1;
return (void *) (table->addresses + n);
return (void *) (table->symbols + n);
failed:
*next_id = RTEMS_OBJECT_ID_FINAL;
@@ -428,7 +438,7 @@ rtems_monitor_symbol_dump_all(
if (table->sorted == 0)
rtems_symbol_sort(table);
for (s = 0, sp = table->addresses; s < table->next; s++, sp++)
for (s = 0, sp = table->symbols; s < table->next; s++, sp++)
{
rtems_monitor_symbol_t canonical_symbol;

View File

@@ -1,4 +1,7 @@
/*
* @(#)task.c 1.9 - 95/08/01
*
*
* RTEMS Monitor task support
*
* $Id$

View File

@@ -1,3 +1,10 @@
/*
* @(#)monitor.h 1.21 - 96/01/03
*
*
* monitor.h,v 1.3 1995/09/29 17:19:02 joel Exp
*/
/*
* File: monitor.h
*
@@ -5,8 +12,6 @@
* The RTEMS monitor task include file.
*
* TODO:
*
* $Id$
*/
#ifndef __MONITOR_H
@@ -20,7 +25,7 @@ extern "C" {
#endif
/*
* Monitor types are derived from rtems object classes
* XXX this should be in rtems proper when type becomes part of id
*/
typedef enum {
@@ -301,7 +306,7 @@ typedef void (*rtems_monitor_object_dump_header_fn)(boolean);
typedef void (*rtems_monitor_object_dump_fn)(void *, boolean);
typedef struct {
rtems_monitor_object_type_t type;
rtems_monitor_object_type_t type;
void *object_information;
int size; /* of canonical object */
rtems_monitor_object_next_fn next;
@@ -414,7 +419,6 @@ void rtems_symbol_table_destroy(rtems_symbol_table_t *table);
rtems_symbol_t *rtems_symbol_create(rtems_symbol_table_t *, char *, unsigned32);
rtems_symbol_t *rtems_symbol_value_lookup(rtems_symbol_table_t *, unsigned32);
const rtems_symbol_t *rtems_symbol_value_lookup_exact(rtems_symbol_table_t *, unsigned32);
rtems_symbol_t *rtems_symbol_name_lookup(rtems_symbol_table_t *, char *);
void *rtems_monitor_symbol_next(void *object_info, rtems_monitor_symbol_t *, rtems_id *);
void rtems_monitor_symbol_canonical(rtems_monitor_symbol_t *, rtems_symbol_t *);

View File

@@ -1,4 +1,7 @@
/*
* @(#)symbols.h 1.3 - 95/06/09
*
*
* RTEMS monitor symbol table functions
*
* Description:
@@ -44,6 +47,14 @@ typedef struct {
rtems_symbol_t *addresses; /* symbol array by address */
/*
* String list -- sorted by name (when we do a lookup)
* This is a duplicate of the info in table->addresses, but it's
* pretty small, so I don't worry about it.
*/
rtems_symbol_t *symbols; /* symbol array */
/*
* String pool, unsorted, a list of blocks of string data
*/

View File

@@ -20,19 +20,6 @@
#include <rtems.h>
/*
* HACK
* the stack dump information should be printed by a "fatal" extension.
* Fatal extensions only get called via rtems_fatal_error_occurred()
* and not when rtems_shutdown_executive() is called.
* I hope/think this is changing so that fatal extensions are renamed
* to "shutdown" extensions.
* When that happens, this #define should be deleted and all the code
* it marks.
*/
#define DONT_USE_FATAL_EXTENSION
extern rtems_configuration_table BSP_Configuration;
#include <assert.h>
@@ -62,11 +49,7 @@ rtems_extensions_table Stack_check_Extension_table = {
Stack_check_Switch_extension, /* task_switch */
Stack_check_Begin_extension, /* task_begin */
0, /* task_exitted */
#ifdef DONT_USE_FATAL_EXTENSION
0, /* fatal */
#else
Stack_check_Fatal_extension, /* fatal */
#endif
};
/*
@@ -184,6 +167,10 @@ void Stack_check_Initialize( void )
Stack_check_Blown_task = 0;
#ifdef STACK_CHECKER_REPORT_USAGE
atexit( Stack_check_Dump_usage );
#endif
/*
* If installed by a task, that task will not get setup properly
* since it missed out on the create hook. This will cause a
@@ -230,17 +217,6 @@ void Stack_check_Initialize( void )
stack_check_dope_stack(&stack_check_interrupt_stack);
}
#ifdef DONT_USE_FATAL_EXTENSION
#ifdef RTEMS_DEBUG
/*
* this would normally be called by a fatal extension
* handler, but we don't run fatal extensions unless
* we fatal error.
*/
atexit(Stack_check_Dump_usage);
#endif
#endif
stack_check_initialized = 1;
}
@@ -455,16 +431,14 @@ void Stack_check_Dump_threads_usage(
* Stack_check_Fatal_extension
*/
void Stack_check_Fatal_extension(
void Stack_check_Fatal_extension(
Internal_errors_Source source,
boolean is_internal,
unsigned32 status
)
{
#ifndef DONT_USE_FATAL_EXTENSION
if (status == 0)
Stack_check_Dump_usage();
#endif
}

View File

@@ -1,4 +1,7 @@
/*
* @(#)assoc.c 1.6 - 95/10/25
*
*
* assoc.c
* rtems assoc routines
*

View File

@@ -1,4 +1,6 @@
/*
* @(#)assoc.h 1.4 - 95/10/25
*
*
* Rtems associativity routines. Mainly used to convert a value from
* one space to another (eg: our errno's to host errno's and v.v)

Some files were not shown because too many files have changed in this diff Show More