Ejemplo n.º 1
0
 private void sysregInterruptToOther(int value)
 {
     if (value != 0)
     {
         if (RuntimeContextLLE.MainCpu)
         {
             // Interrupt from the main cpu to the Media Engine cpu
             //if (log.DebugEnabled)
             {
                 Console.WriteLine(string.Format("sysregInterruptToOther to ME on {0}", MMIOHandlerMeCore.Instance.ToString()));
             }
             RuntimeContextLLE.triggerInterrupt(RuntimeContextLLE.MediaEngineProcessor, PSP_MECODEC_INTR);
             RuntimeContextLLE.MediaEngineProcessor.triggerException(ExceptionManager.IP2);
         }
         else
         {
             // Interrupt from the Media Engine cpu to the main cpu
             //if (log.DebugEnabled)
             {
                 Console.WriteLine(string.Format("sysregInterruptToOther from ME on {0}", MMIOHandlerMeCore.Instance.ToString()));
             }
             RuntimeContextLLE.triggerInterrupt(RuntimeContextLLE.MainProcessor, PSP_MECODEC_INTR);
         }
     }
 }
Ejemplo n.º 2
0
 private void checkInterrupt()
 {
     if (interrupt != 0)
     {
         RuntimeContextLLE.triggerInterrupt(Processor, PSP_AUDIO_INTR);
     }
     else
     {
         RuntimeContextLLE.clearInterrupt(Processor, PSP_AUDIO_INTR);
     }
 }
Ejemplo n.º 3
0
 private void checkInterrupt()
 {
     if ((isInterruptTriggered & isInterruptEnabled) != 0)
     {
         RuntimeContextLLE.triggerInterrupt(Processor, PSP_GPIO_INTR);
     }
     else
     {
         RuntimeContextLLE.clearInterrupt(Processor, PSP_GPIO_INTR);
     }
 }
Ejemplo n.º 4
0
        public override void run()
        {
            RuntimeContext.start();
            RuntimeContextLLE.start();
            GEProfiler.initialise();

            clock.resume();

            while (true)
            {
                if (pause)
                {
                    clock.pause();
                    try
                    {
                        lock (this)
                        {
                            while (pause)
                            {
                                Monitor.Wait(this);
                            }
                        }
                    }
                    catch (InterruptedException)
                    {
                        // Ignore exception
                    }
                    clock.resume();
                }

                if (RuntimeContext.CompilerEnabled)
                {
                    RuntimeContext.run();
                }
                else
                {
                    processor.step();
                    Modules.sceGe_userModule.step();
                    Modules.ThreadManForUserModule.step();
                    scheduler.step();
                    Modules.sceDisplayModule.step();

                    if (State.debugger != null)
                    {
                        State.debugger.step();
                    }
                }
            }
        }
Ejemplo n.º 5
0
        private void clearUsbMemoryStick(int mask)
        {
            int oldUsbAndMemoryStick = usbAndMemoryStick;

            mask &= SYSREG_USBMS_USB_INTERRUPT_MASK | SYSREG_USBMS_MS0_INTERRUPT_MASK | SYSREG_USBMS_MS1_INTERRUPT_MASK;
            usbAndMemoryStick &= ~mask;

            if (isFalling(oldUsbAndMemoryStick, usbAndMemoryStick, SYSREG_USBMS_USB_INTERRUPT1))
            {
                RuntimeContextLLE.clearInterrupt(Processor, IntrManager.PSP_USB_58);
            }
            if (isFalling(oldUsbAndMemoryStick, usbAndMemoryStick, SYSREG_USBMS_USB_INTERRUPT2))
            {
                RuntimeContextLLE.clearInterrupt(Processor, IntrManager.PSP_USB_59);
            }
            if (isFalling(oldUsbAndMemoryStick, usbAndMemoryStick, SYSREG_USBMS_USB_INTERRUPT3))
            {
                RuntimeContextLLE.clearInterrupt(Processor, IntrManager.PSP_USB_57);
            }
            if (isFalling(oldUsbAndMemoryStick, usbAndMemoryStick, SYSREG_USBMS_USB_INTERRUPT4))
            {
                RuntimeContextLLE.clearInterrupt(Processor, IntrManager.PSP_USB_56);
            }
        }