From: Jake H. <jh...@an...> - 2004-11-07 00:33:18
|
Jake Hamby wrote: > I am busy preparing my next "mega-patch" for the kernel which will: > > * add support for SSE/SSE2 and lazy floating-point context switching, > * inline numerous short assembly language functions from intel.s, > * fix a few signal handling and fork/exec context initialization bugs, > * correct numerous typos and grammatical errors in the source code, > * improve the performance of allocating and freeing memory pages, and > > * integrate the latest version of <atheos/isa_io.h> and "inc/io_ports.h" > from Linux (the second one gives us more readable code since I was able > to replace "0x20" with "PIC_MASTER_CMD", "0x43" with "PIT_MODE", and so > on throughout the i8259A access code). I've just checked in the kernel improvements I mentioned last week. The main feature is that SSE/SSE2 instructions are now enabled so if you have a Pentium 3 or higher, or Athlon with SSE support, you should now be able to compile programs such as mplayer with SSE support. Here's my note from ChangeLog.Kernel: Implement lazy FPU save/restore for faster context switching and save the state of XMM registers on Pentium3 and above for SSE support. Exception handlers in fault.c send signals (SIGSEGV, SIGFPE, SIGILL) rather than exiting the process. Spelling fixes in comments. The function is_signals_pending() is now correctly spelled is_signal_pending(). The new SeqLock_s type from Linux is used in timer.c for reading the timer registers without disabling interrupts, and the "inc/io_ports.h" header defines constants for the PIC I/O ports, which are used for readability in irq.c, smp.c and timer.c. Other minor cleanups include removing useless statistical counters from array.c, adding a warning to kmalloc() when 128K or larger allocations are made, modifying bcache.c to use an area instead of kmalloc() for its hashtable, using g_sSemListSpinLock instead of g_sSchedSpinLock in sema.c, a new do_free_pages() function in mman.c that doesn't call flush_tlb_global() (used in loops by areas.c), inlined asm functions in "inc/intel.h" and atheos/kernel.h, and updated macros from Linux for atheos/isa_io.h. "macros.h" now uses a macro called __likely() on GCC 3.0 and above as a hint to the compiler in kassertw() that the expression asserted is expected to be true. NOTE: You should install the new header files from the sys/include directory with "make dist" and then rebuild your drivers along with the kernel. It takes a day or so for the changes to propagate to anonymous CVS. If you have any problems, please e-mail me or post to syllable-kernel. If the new kernel crashes on your machine (unlikely, I hope!), you can boot the previous kernel by editing the kernel line in GRUB to use "/atheos/sys/kernel.so.orig". -Jake |