private void triggerAsyncCallback( int cbid, int listId, int listPc, int behavior, int signalId, HashMap<Integer, SceKernelCallbackInfo> callbacks) { SceKernelCallbackInfo callback = callbacks.get(cbid); if (callback != null && callback.callback_addr != 0) { if (log.isDebugEnabled()) { log.debug( String.format( "Scheduling Async Callback %s, listId=0x%X, listPc=0x%08X, behavior=%d, signalId=0x%X", callback.toString(), listId, listPc, behavior, signalId)); } GeCallbackInterruptHandler geCallbackInterruptHandler = new GeCallbackInterruptHandler( callback.callback_addr, callback.callback_arg_addr, listPc); GeInterruptHandler geInterruptHandler = new GeInterruptHandler(geCallbackInterruptHandler, listId, behavior, signalId); Emulator.getScheduler().addAction(geInterruptHandler); } else { hleGeOnAfterCallback(listId, behavior, false); } }