Page 1 of 1

devkitPPC release 23, libogc 1.8.7

Posted: Mon Jun 20, 2011 11:57 am
by WinterMute
The binaries for devkitPPC release 23 and libogc 1.8.7 are now available. As usual the windows binaries are available through the Automated Installer/Updater, for other platforms check the devkitPPC getting started page on the wiki.

devkitPPC release 23
  • updated to gcc 4.6.0.
  • updated binutils to 2.21.
  • updated newlib to 1.19.0.
libogc 1.8.7
  • enable 64-byte fetch mode for the L2 cache
  • libasnd - add support for unsigned 8-bit and little-endian 16-bit audio
  • USB DVD support
  • proper iso9660 devoptab, decoupled from disc interface
  • USB HID support
  • USB storage compatibility improvements
  • fix tinysmb on GameCube
  • update nandbootinfo before launching a title
  • fix hardware lighting (GX_SetChanCtrl)
  • increase max ipc retries. fixes reloading to ios 21
  • add large file support to tinysmb
  • try to init an unrecognized expansion device as a classic controller
With thanks to Tantric, tueidj, rodries, clava, Extrems, DacoTaco and dimok for their contributions to these releases.

Re: devkitPPC release 23, libogc 1.8.7

Posted: Wed Jun 22, 2011 2:21 pm
by Eke
Nice release.
enable 64-byte fetch mode for the L2 cache
Can you explain more what it does and how can I use it ? I see a "L2Enhance()" function in cache.c, do I need to call it on Init ?
Does it only optimize 64-bit words (u64) read from memory ?
Does it work with Gekko CPU as well ?

Re: devkitPPC release 23, libogc 1.8.7

Posted: Wed Jun 22, 2011 7:32 pm
by tueidj
Eke wrote:Can you explain more what it does and how can I use it ? I see a "L2Enhance()" function in cache.c, do I need to call it on Init ?
Does it only optimize 64-bit words (u64) read from memory ?
Does it work with Gekko CPU as well ?
It should be called as early as possible since it invalidates everything in the cache.
Basically it turns on a few extra features of the L2 cache, the main one being that a cache miss will result in a pair of cache lines (2x32) being allocated/filled instead of just the single cache line that caused the miss. So it affects all memory accesses, not just u64 reads (which are 64 bits anyway, not bytes).
There's a few caveats to using it, namely once it's enabled it can't be disabled safely without resetting the CPU. So it's not a good idea to use it if your program will be launching other programs (which will initialize the HID4 register with their own settings) directly. Launching NAND titles works fine because IOS restarts the PowerPC CPU.
I didn't know if Gekko supported it or not so I didn't #ifdef it, but emu_kidid has since told me it doesn't.

Re: devkitPPC release 23, libogc 1.8.7

Posted: Thu Jun 23, 2011 10:15 am
by Eke
Thanks for the detailled answer, I didn't notice it was 64-byte fetch and had nothing to do with 64-bit memory access, my mistake... So basically it caches twice the amount of data at the same time without performance loss ?

Re: devkitPPC release 23, libogc 1.8.7

Posted: Fri Jun 24, 2011 12:44 pm
by tueidj
Not exactly. It's more like it prefetches an extra cache line (the cache lines are always stored in pairs, so it's not causing any extra evictions)... which would be a wasted fetch if the program didn't use that memory. But in almost all cases it's beneficial.