devkitPPC release 23, libogc 1.8.7

Latest devkitPro news and announcements
Post Reply
WinterMute
Site Admin
Posts: 1986
Joined: Tue Aug 09, 2005 3:21 am
Location: UK
Contact:

devkitPPC release 23, libogc 1.8.7

Post by WinterMute » Mon Jun 20, 2011 11:57 am

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.
Help keep devkitPro toolchains free, Donate today

Personal Blog

Eke
Posts: 64
Joined: Sat Mar 01, 2008 11:01 am

Re: devkitPPC release 23, libogc 1.8.7

Post by Eke » Wed Jun 22, 2011 2:21 pm

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 ?

tueidj
Posts: 40
Joined: Thu Dec 10, 2009 9:26 am

Re: devkitPPC release 23, libogc 1.8.7

Post by tueidj » Wed Jun 22, 2011 7:32 pm

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.

Eke
Posts: 64
Joined: Sat Mar 01, 2008 11:01 am

Re: devkitPPC release 23, libogc 1.8.7

Post by Eke » Thu Jun 23, 2011 10:15 am

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 ?

tueidj
Posts: 40
Joined: Thu Dec 10, 2009 9:26 am

Re: devkitPPC release 23, libogc 1.8.7

Post by tueidj » Fri Jun 24, 2011 12:44 pm

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.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest