I am currently writing a patch to allow more than the psp kernels maximum number of opened files to ease porting (I'm working on exult, everything running up to the point where I run into the files problem).
My current approach is wrapping the file functions (open, close, read, write, seek), to check if the passed filedescriptor is valid, and if not reopen it (after closing another).
I'm still busy writing some sort of test program to verify its function, but it *seems* to work (exult crashes in some sdl thread, but reading works as far as i can tell).
I will try this weekend to get the stuff into a state where it works verifyable, and post it here afterwards.