Пример #1
0
    def allocX86Mem(self, cbMem):
        pR0KernVirtual = ffi.new("R0PTR *");
        pPhysX86Addr = ffi.new("X86PADDR *");

        self.rcLibLast = lib.PSPProxyCtxX86MemAlloc(self.hCtx, cbMem, pR0KernVirtual, pPhysX86Addr);
        if self.rcLibLast == 0:
            return (0, pR0KernVirtual[0], pPhysX86Addr[0]);
        return (self.rcLibLast, 0, 0);
Пример #2
0
 def branchTo(self, uPspAddrPc, fThumb, lstGprs):
     paGprs = ffi.new("uint32_t[13]")
     paGprs = lstGprs
     self.rcLibLast = lib.PSPProxyCtxBranchTo(self.hCtx, uPspAddrPc, fThumb,
                                              paGprs)
     if self.rcLibLast == 0:
         return 0
Пример #3
0
    def readX86Smn(self, idNode, uSmnAddr, cbVal):
        pVal = None;
        if cbVal == 1:
            pVal = ffi.new("uint8_t *");
        elif cbVal == 2:
            pVal = ffi.new("uint16_t *");
        elif cbVal == 4:
            pVal = ffi.new("uint32_t *");
        elif cbVal == 8:
            pVal = ffi.new("uint64_t *");
        else:
            return (-1, 0);

        self.rcLibLast = lib.PSPProxyCtxX86SmnRead(self.hCtx, idNode, uSmnAddr, cbVal, pVal);
        if self.rcLibLast == 0:
            return (0, pVal[0]);
        else:
            return (self.rcLibLast, 0);
Пример #4
0
    def readPspMmio(self, uPspAddr, cbVal):
        pVal = None
        if cbVal == 1:
            pVal = ffi.new("uint8_t *")
        elif cbVal == 2:
            pVal = ffi.new("uint16_t *")
        elif cbVal == 4:
            pVal = ffi.new("uint32_t *")
        elif cbVal == 8:
            pVal = ffi.new("uint64_t *")
        else:
            return (-1, 0)

        self.rcLibLast = lib.PSPProxyCtxPspMmioRead(self.hCtx, uPspAddr, cbVal,
                                                    pVal)
        if self.rcLibLast == 0:
            return (0, pVal[0])
        else:
            return (self.rcLibLast, 0)
Пример #5
0
    def readSmn(self, idCcdTgt, uSmnAddr, cbVal):
        pVal = None
        if cbVal == 1:
            pVal = ffi.new("uint8_t *")
        elif cbVal == 2:
            pVal = ffi.new("uint16_t *")
        elif cbVal == 4:
            pVal = ffi.new("uint32_t *")
        elif cbVal == 8:
            pVal = ffi.new("uint64_t *")
        else:
            return (-1, 0)

        self.rcLibLast = lib.PSPProxyCtxPspSmnRead(self.hCtx, idCcdTgt,
                                                   uSmnAddr, cbVal, pVal)
        if self.rcLibLast == 0:
            return (0, pVal[0])
        else:
            return (self.rcLibLast, 0)
Пример #6
0
    def readCoProc(self, idCoProc, idCrn, idCrm, idOpc1, idOpc2):
        pVal = ffi.new("uint32_t *")

        self.rcLibLast = lib.PSPProxyCtxPspCoProcRead(self.hCtx, idCoProc,
                                                      idCrn, idCrm, idOpc1,
                                                      idOpc2, pVal)
        if self.rcLibLast == 0:
            return (0, pVal[0])
        else:
            return (self.rcLibLast, 0)
Пример #7
0
    def writeSmn(self, idCcdTgt, uSmnAddr, cbVal, uVal):
        pVal = None;
        if cbVal == 1:
            pVal = ffi.new("uint8_t *");
        elif cbVal == 2:
            pVal = ffi.new("uint16_t *");
        elif cbVal == 4:
            pVal = ffi.new("uint32_t *");
        elif cbVal == 8:
            pVal = ffi.new("uint64_t *");
        else:
            return -1;

        pVal[0] = uVal;
        self.rcLibLast = lib.PSPProxyCtxPspSmnWrite(self.hCtx, idCcdTgt, uSmnAddr, cbVal, pVal);
        if self.rcLibLast == 0:
            return 0;
        else:
            return self.rcLibLast;
Пример #8
0
    def writeX86Smn(self, idNode, uSmnAddr, cbVal, uVal):
        pVal = None
        if cbVal == 1:
            pVal = ffi.new("uint8_t *")
        elif cbVal == 2:
            pVal = ffi.new("uint16_t *")
        elif cbVal == 4:
            pVal = ffi.new("uint32_t *")
        elif cbVal == 8:
            pVal = ffi.new("uint64_t *")
        else:
            return -1

        pVal[0] = uVal
        self.rcLibLast = lib.PSPProxyCtxX86SmnWrite(self.hCtx, idNode,
                                                    uSmnAddr, cbVal, pVal)
        if self.rcLibLast == 0:
            return 0
        else:
            return self.rcLibLast
Пример #9
0
    def writePspX86Mmio(self, uX86Addr, cbVal, uVal):
        pVal = None
        if cbVal == 1:
            pVal = ffi.new("uint8_t *")
        elif cbVal == 2:
            pVal = ffi.new("uint16_t *")
        elif cbVal == 4:
            pVal = ffi.new("uint32_t *")
        elif cbVal == 8:
            pVal = ffi.new("uint64_t *")
        else:
            return -1

        pVal[0] = uVal
        self.rcLibLast = lib.PSPProxyCtxPspX86MmioWrite(
            self.hCtx, uX86Addr, cbVal, pVal)
        if self.rcLibLast == 0:
            return 0
        else:
            return self.rcLibLast
Пример #10
0
    def __init__(self, sDevicePath):
        self.sDevicePath = sDevicePath;
        self.hCtx        = None;
        self.rcLibLast   = 0;

        phCtx = ffi.new("PPSPPROXYCTX");
        rcLib = lib.PSPProxyCtxCreate(phCtx, self.sDevicePath.encode("UTF-8"));
        if rcLib == 0:
            self.hCtx = phCtx[0];
        else:
            self.rcLibLast = rcLib;
Пример #11
0
    def __init__(self, sDevicePath):
        self.sDevicePath = sDevicePath
        self.hCtx = None
        self.rcLibLast = 0

        phCtx = ffi.new("PPSPPROXYCTX")
        rcLib = lib.PSPProxyCtxCreate(phCtx, self.sDevicePath.encode("UTF-8"),
                                      ffi.NULL, ffi.NULL)
        if rcLib == 0:
            self.hCtx = phCtx[0]
        else:
            self.rcLibLast = rcLib
Пример #12
0
 def queryLastReqRc(self):
     pVal = ffi.new("PSPSTS *")
     self.rcLibLast = lib.PSPProxyCtxQueryLastReqRc(self.hCtx, pVal)
     if self.rcLibLast == 0:
         return pVal[0]
     return self.rcLibLast
Пример #13
0
 def callSvc(self, idxSyscall, uR0, uR1, uR2, uR3):
     pR0Return = ffi.new("uint32_t *")
     self.rcLibLast = lib.PSPProxyCtxPspSvcCall(self.hCtx, idxSyscall, uR0,
                                                uR1, uR2, uR3, pR0Return)
     return (self.rcLibLast, pR0Return[0])