* sapi/src/exinit.c, score/include/rtems/score/object.h,
score/include/rtems/score/thread.h, score/src/object.c,
score/src/thread.c: Conditionally compile out more code that is
specific to multiprocessor configurations.
* rtems/new-exceptions/cpu.h, rtems/old-exceptions/cpu.h,
rtems/score/cpu.h: Eliminate PowerPC specific elements from the CPU
Table. They have been replaced with variables named bsp_XXX as
needed.
* configure.ac, score/inline/rtems/score/thread.inl,
score/src/threaddispatch.c: Add ability for user to disable inlining
of _Thread_Enable_dispatch. This can save code space but more
importantly it means the binary generated does not have code inlined
that is difficult to test and very seldom executed.
* rtems/src/regioncreate.c, rtems/src/regiondelete.c,
rtems/src/regionextend.c, rtems/src/regiongetfreeinfo.c,
rtems/src/regiongetinfo.c, rtems/src/regiongetsegment.c,
rtems/src/regiongetsegmentsize.c, rtems/src/regionresizesegment.c,
rtems/src/regionreturnsegment.c: Restructed to move the OBJECTS_LOCAL
case to the top of the switch statement, have a single exit with one
call to _RTEMS_Unlock_allocator and eliminate the fall-through return
of RTEMS_INTERNAL_ERROR. These changes produced simplier assembly
code and allowed for complete test coverage.
* rtems/score/cpu.h: Eliminate the clicks_per_microsecond field in the
SuperH CPU Table and define another mechanism for drivers to obtain
this information.
* rtems/score/cpu.h: Eliminate the clicks_per_microsecond field in the
MIPS CPU Table and define another mechanism for drivers to obtain
this information.
* libi2c/libi2c.c, libi2c/libi2c.h, libi2c/README_libi2c:
Added checks so that use of 'stdio' is avoided (falling
back to 'printk') before the system is up.
Publish driver entry points so that the libi2c driver could
be added to the applications 'device driver table'.
This is not fully implemented yet, though, since in addition to
initializing libi2c the low-level i2c bus drivers as well
as high-level i2c device drivers need to be registered
with the library.
Updated README_libi2c accordingly.
* libnetworking/rtems/rtems_glue.c: let rtems_bsdnet_ifconfig
(SIOCGIFMEDIA) pass the user parameter down to the ioctl
so that it knows what PHY they want to look at.
* rtems/score/powerpc.h: Added a '__ppc_generic' CPU variant.
The goal would be making cpukit and hopefully libcpu work
for all (or at least most) CPUs/BSPs with -D__ppc_generic so
that eventually all tests [#if defined(<cpu_flavor>)] for CPU
flavors can be eliminated.
* libmisc/shell/shell.c, libmisc/shell/shell.h: Much cleanup but much
of the focus was on the beginning stages of making the login checker
pluggable just like the shell.
* sapi/src/exinit.c, score/Makefile.am,
score/include/rtems/score/apimutex.h: API Mutex calls should never
have been inlined. Inlining them lead to many inlined copies of core
mutex lock. This lead to over 2K savings in the SPARC/ERC32
minimum.exe.
* score/src/apimutex.c, score/src/apimutexallocate.c,
score/src/apimutexlock.c, score/src/apimutexunlock.c: New files.
* score/inline/rtems/score/object.inl: During test coverage analysis,
we identified this sanity check which should have been conditional on
RTEMS_DEBUG since it can NOT be tripped during normal RTEMS
operations. With all APIs enabled, this saved 352 bytes from the
minimum executable on the SPARC/ERC32.
* score/include/rtems/system.h, score/include/rtems/score/interr.h: Add
compiler conditional attribute for methods that do not return. This
avoids gcc generating unreachable code following calls to
_Internal_error_Occurred.
* cpu.c, cpu_asm.S, score/cpu.h : add support for ARM<->THUMB veneer
thumb new dir to controll CPSR/SPRS in thumb mode
2007-05-09 Ray Xu <rayx.cn@gmail.com>
* cpu.c: move do_data_abort() to libbsp/arm/shared/abort/
implement a compact do_data_abort() in simple_abort.c
Miscellaneous changes made after a review against the POSIX spec.
* posix/src/pbarrierinit.c, posix/src/prwlockinit.c: If the caller
passes a NULL in the attributes parameter, default attributes are used.
* posix/src/prwlockdestroy.c: If there is at least one thread
waiting, do not allow deletion.
* posix/src/prwlockwrlock.c: Corrected parameter passed to the core
operation used to obtain a RWLock for writing.
* posix/src/pspinlocktranslatereturncode.c,
score/include/rtems/score/corespinlock.h,
score/src/corespinlockrelease.c: If the current thread is not the
holder of the lock, do not allow an unlock and return EPERM.
* score/src/corerwlockobtainwrite.c: Corrected to use the operation
for queueing with a timeout handler.
* score/cpu/sparc/cpu.c, score/cpu/sparc/rtems/score/cpu.h,
score/include/rtems/score/context.h, score/src/threadhandler.c: Fix
stack so gdb backtrace does not print corrupted frame message after
_Thread_Handler. Daniel Hellstrom <daniel@gaisler.com> provided the
SPARC implementation and I made it more general.
* libmisc/cpuuse/cpuusagereport.c, rtems/src/ratemonreportstatistics.c:
Cleaned up reports and fixed a bug related the printf format which
resulted in lack of leading zeroes and misleading magnitude.
* score/src/timespecdivide.c: Fixed bugs related to zero divide case.
* score/Makefile.am, score/include/rtems/score/thread.h,
score/inline/rtems/score/thread.inl: No longer inline _Thread_Get. It
resulted in unnessary code explosion, many uncovered paths when
looking at binary executable coverage, and only optimized getting
self. Id translations were still getting pushed to a subroutine call
to _Objects_Get. Later the non-inlined version can be further
optimized to get Ids in range for the current API, then self, then
look at other APIs.
* score/src/threadget.c: New file.
* libcsupport/src/assoc.c: Removed. Accidentally included routine
also in another file. Mistake after splitting.
* libcsupport/Makefile.am: Reflect file removal.