January 31, 2010

Oh, Samantha!

Hi there!

Samantha is back! After long period of hibernation in the AROS repository Sam440 port of AROS is maintained again. Big thanks to Markus Weiss, who has restarted it and to ACube who gave me the kick in the butt :)

Since the kernel.resource in AROS did evolved a bit since last time I was writing it form Sam, it has been updated a tiny bit now. Most of the features from Efika's kernel have been back-ported to Sam440 port, including:

  • Loading and releasing of symbols from every ELF file loaded by AROS, including the kernel itself,
  • System call for cold reboot (accessible only from kernel.resource and exec.library),
  • Crash handler displays detailed information, including the byte offset of crash occurrence, relevant symbol name (if such name exists at all) and the executable name. The log includes also the backtrace (with offsets, symbol and module names) which tries to reach as far as possible.

Yes, I do know, it's not much. But it is at least a good start (eerm.... rather a good re-birth?) :).

The Sam440 port has been not only extended, but also fixed a bit. I have found there an ancient bug in the exception handler. It could have lead to random system crashes. The reason was the exception handler itself. There was a risk that an interrupt will occur during reconstruction of the CPU context.

Since the AMCC440EP CPU does not maintain cache coherency (no, it's not a bug, it's a feature fairly well documented in the manuals!), some portions of the code had to be fixed. Now, more AROS code uses CachePreDMA and CachePostDMA pair of functions. Because of that partitions on harddrive are recognised properly now. AROS on Sam440 boots nicely and coexists with OS4.1 on the same harddrive. Nice, isn't it?

Now, the last but not least, after some sleepless nights the OHCI driver of Poseidon is fixed and operates properly on Sam440ep. Wanna proof? Watch the attached screenshot :)

Stay tuned for more news. I promise to write a bit more now ;)