From: Stuart M. <Stu...@st...> - 2000-07-27 21:37:47
|
Folks Sorry about having been 'off-line' for so long, a trip to France and a small mountain of other work over the last few weeks has been keeping me otherwise engaged. Anyway, I've just uploaded a couple of patches to the patch manager which you may be interested in. They are both fairly large (100K and 250K respectivly), which is why I'm not including them here. The first patch is probably the one most people will be interested in. It's primary aim is to add support for 'generic' kernels, i.e. a single kernel which can be booted onto multiple machines. At the moment its main focus is on the board/machine level aspects of this, so all the SolutionEngine/HP600/Overdrive #ifdefs have now been removed from the code. However it doesn't cover: - endianness I don't propose to do anything about this! - instruction set: SH3/SH4 this could be done, I think, but I've yet to convince myself that gcc generated code for an SH3 will always run on an SH4 - sub-architectue: 7708/9/20, 7750/1 (caches, uarts etc) this should not be too difficult now the basic structure is in place - where the kernel executes from and where RAM starts could be covered by running the kernel from P3 if we think it is worth doing, but will almost certainly require some assistance from the boot loader. The changes have been modelled on the Alpha way of handling this, so there should be virtually no code size or performance penalty for building a machine specific kernel, and while the generic kernel is inevitabley going to be slightly slower and larger, its not a major change. The machine is selected from the command line, for example: sh_mv=solutionengine If the machine is not recognised then it defaulst to 'unknown', which provides support for on-chip peripherials only. If you want a little more detail, have a look in: Documentation/sh/new-machine.txt There are also some 'incidental' changes which are included, which are worth pointing out: - marking an interrupt as type IPR, without calling set_ipr_data, caused the IRQ probing code to crash, so make_ipr_data now takes the extra parameters set_ipr_data used to. - record number of chars sent and received on SCI(F) - a bug fix to the TCP/IP checksumming code for when the src and/or destination addresses are misaligned. The second patch adds PCI support for the Overdrive. Because this is now so large (mainly becuause of a big FPG program) I've moved all Overdrive related files into a separate directory. As this is probably only a temporary measure (this is only needed for prototype boards), I suggest we don't try and get this directory included in the mainstream sources yet. Everything will build quite happily with it missing. Note I've not been able to test on anything other than SH4 SolutionEngine and Overdrive, so I'd welcome some comments from people with other hardware, in particular HP600. Anyway, see what you think, any comments, please let me know. Stuart |