powerpc-rtems-4.7-gcc-4.0 patch commited
Joel Sherrill <joel@OARcorp.com>
joel.sherrill at OARcorp.com
Fri Feb 18 14:11:02 UTC 2005
Sergei Organov wrote:
> "Joel Sherrill <joel at OARcorp.com>" <joel.sherrill at OARcorp.com> writes:
> [...]
>
>>There is a PPC_INTERRUPTS_MAX which still remains to be addressed.
>>Ralf.. I think the the MIPS defines that in libcpu as a variable used by the
>>cpukit.
>
>
> IMHO, it's time to define generic interface between cpukit and the rest
> of RTEMS BSP that will ensure compile-time independence of cpukit, or at
> least to document some guidelines. It seems that pre-multilib BSP
> interface definitions don't address the issue as in fact every BSP is
> now split between cpukit and the rest of libs and there is no definition
> of the interface to be used on this split line. Does it sound
> reasonable?
That largely exists. When we started splitting the CPU kit from the BSP
and libcpu parts of the tree, most of the ports were clean. The porting
guide is in general pretty close. The PowerPC and MIPS were the worst
cases to handle. I reworked the MIPS a few years ago to be more general
and it has continued to evolve as we learn more about different ISA
variants.
The PowerPC port had more problems in this respect than the other ports
and now it stands alone as the biggest hurdle remaining. Without
assigning blame, this is due to a number of factors:
+ age and evolution of the port -- the 60x CPUs were included in the
first submitted port as "book based only"
+ many flags based on CPU models because there was no clear direction
5-10 years ago on how many cores there would be and what would be
common
+ old vs new exception models.
+ desire not to break existing code.
libcpu was NOT even a thought when the original PowerPC was submitted.
We are now just paying the price for history and learning as we go.
The rules for cpukit vs bspkit are actually quite simple. If gcc
distinguishes a variant, then cpukit can know about it. If that variant
is not detailed enough to distinguish two CPU cores that CPUkit has to
know about, then we have to address that. The rub is that there seems to
be one unique piece of the port for each architecture that you have to
based on cpu model not ISA variant. It might be number of interrupts or
status register bits that are valid, etc, etc.
Notice how the PowerPC port is evolving now. Ralf proposed some
conditionals to remove/consolidate, then reduced the multilibs. Then
everyone jumped in and said "you can remove that" or "why is that
there?". Once the mess is straightened out, it will really be quite
simple.
If everyone keeps offering constructive criticism and saying CPU X and Y
should be able to use the same multilib, then we will make it.
The next step will be getting help comparing .S files in various BSPs
and seeing if we can consolidate them under fewer files. No one can
test every variant but with care, we should be able to reduce them
mechanically with little risk.
--
Joel Sherrill, Ph.D. Director of Research & Development
joel at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the users
mailing list