Hola kYp. No sé si ya habrás arreglado el código, pero visto que no hay respuestas, este sería un código que por lo menos tira.
/* WARNING: This sample currently crashes, due to a bug in the PSP's kernel.  We're working on a fix. */
#include <pspuser.h>
#include <pspdebug.h>
#include <pspsdk.h>
#include <string.h>
/* Define the module info section, note the 0x1000 flag to enable start in kernel mode */
PSP_MODULE_INFO("SDKTEST", 0x1000, 1, 1);
PSP_MAIN_THREAD_ATTR(0);
/* Define printf, just to make typing easier */
#define printf   pspDebugScreenPrintf
/* List of modules to load - type is 0 if the module belongs to the kernel, 1 if it's a user module. */
struct module_list {
   int         type;
   const char *path;
} module_list[] = {
   { 0, "flash0:/kd/ifhandle.prx" },
   { 1, "flash0:/kd/pspnet.prx" }
};
const int module_count = sizeof(module_list) / sizeof(module_list[0]);
SceUID load_module(const char *path, int flags, int type);
void MyExceptionHandler(PspDebugRegBlock *regs)
{
        printf("\n\n");
   pspDebugDumpException(regs);
}
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common)
{
   sceKernelExitGame();
   return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp)
{
   int cbid;
   cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
   sceKernelRegisterExitCallback(cbid);
   sceKernelSleepThreadCB();
   return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void)
{
   int thid = 0;
   /* Note the use of THREAD_ATTR_USER to ensure the callback thread is in user mode */
   thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, PSP_THREAD_ATTR_USER, NULL);
   if(thid >= 0)
   {
      sceKernelStartThread(thid, 0, 0);
   }
   return thid;
}
SceUID load_module(const char *path, int flags, int type)
{
   SceKernelLMOption option;
   SceUID mpid;
   /* If the type is 0, then load the module in the kernel partition, otherwise load it
      in the user partition. */
   if (type == 0) {
      mpid = 1;
   } else {
      mpid = 2;
   }
   memset(&option, 0, sizeof(option));
   option.size = sizeof(option);
   option.mpidtext = mpid;
   option.mpiddata = mpid;
   option.position = 0;
   option.access = 1;
   return sceKernelLoadModule(path, flags, &option);
}
int main(void)
{
   int i;
   SetupCallbacks();
   pspDebugInstallKprintfHandler(NULL);
   pspDebugInstallErrorHandler(MyExceptionHandler);
   // Very important - patch the module manager so that we can load modules from user mode.
   pspSdkInstallNoDeviceCheckPatch();
   pspDebugScreenInit();
   printf("Loadmodule sample program.\n\n");
   /* Try loading and starting the network modules. */
   for (i = 0; i < module_count; i++) {
      SceUID modid;
      int res, status;
      modid = load_module(module_list[i].path, 0, module_list[i].type);
      if (modid < 0) {
         printf("sceKernelLoadModule('%s') failed with %x\n", module_list[i].path, modid);
         break;
      }
      res = sceKernelStartModule(modid, 0, NULL, &status, NULL);
      if (res < 0) {
         printf("sceKernelStartModule('%s') failed with %x\n", module_list[i].path, res);
         break;
      }
      printf("Load and start '%s' - Success\n", module_list[i].path);
   }
   printf("\nAll done!\n");
   sceKernelSleepThread();
   return 0;
}
He cambiado un par de cosas.
Por un lado, la aplicación se debería ejecutar en modo kernel, y así lo indicas en la información que se guarda del módulo con "PSP_MODULE_INFO("SDKTEST", 0x1000, 1, 1);" pero después declaras el hilo como de usuario con "PSP_THREAD_ATTR_USER", lo cual debes cambiar por 0, para indicar que el hilo correrá en modo kernel.
Por otro lado, parece que el uso de la función "KernelSetup" con el modificador "__attribute__((constructor))", que es el que indica que se ejecute antes del propio main, parece dar algún tipo de problema, así que basicamente la cuestión es ejecutar las instrucciones de esa función al principio del main.
Con esos cambios debería funcionarte.
Por otro lado, y por si te sirve de ayuda, el Makefile que he usado para compilar es este.
TARGET = SDKTEST
OBJS = main.o
INCDIR = 
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS = -lpspwlan
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = sdktest
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
Saludos.