Now About Social Code
summaryrefslogtreecommitdiff
path: root/src/wrap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wrap.c')
-rw-r--r--src/wrap.c69
1 files changed, 9 insertions, 60 deletions
diff --git a/src/wrap.c b/src/wrap.c
index 2801211..0d350eb 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -48,60 +48,7 @@
#define DRM_COMMAND_BASE 0x40
-typedef struct __attribute__((__packed__)) Register {
- unsigned int addr;
- unsigned int val;
-} Register;
-
-//XXX: this is probably wrong
-typedef struct __attribute__((__packed__)) CCBEntry
-{
- uint32_t length;
- uint32_t unk0;
- uint32_t unk1; // Indirect points to 0x67 PDSPixelCodeData with 0xdcxxxx0
- uint32_t unk2;
- uint32_t unk3; // Indirect points to 0x67 PDSPixelCodeData with 0xdcxxxx0 offset by 4
- uint32_t unk4;
- uint32_t unk5;
- uint32_t unk6;
- uint32_t frame_number;
- IMG_DEV_VIRTADDR dev_addr_0;
- uint32_t unk7;
- uint32_t unk8;
- uint32_t unk9;
- uint32_t unk10;
- uint32_t unk11;
- uint32_t unk12;
- uint32_t unk13;
- IMG_DEV_VIRTADDR dev_addr_1;
- uint32_t unk14;
- IMG_DEV_VIRTADDR dev_addr_2;
- IMG_DEV_VIRTADDR dev_addr_3;
- IMG_DEV_VIRTADDR dev_addr_4;
- IMG_DEV_VIRTADDR dev_addr_5;
- IMG_DEV_VIRTADDR dev_addr_6;
- uint32_t num_regs;
- SGXMKIF_CMDTA_SHARED shared_data;
- uint32_t unk15;
- uint32_t unk16;
- uint32_t unk17;
- uint32_t unk18;
- uint32_t unk19;
- uint32_t unk20;
- uint32_t vdm_command_stream;
- uint32_t unk21;
- IMG_DEV_VIRTADDR dev_addr_ta_0; // points to 0x95 TAData buffer, size is 0xc00 and all zeros
- IMG_DEV_VIRTADDR dev_addr_ta_1; // points to 0x8d TAData buffer, size is 0x400 and not all zeros
- uint32_t unk24;
- uint32_t unk25;
- uint32_t unk26;
- uint32_t unk27;
- uint32_t unk28;
- IMG_DEV_VIRTADDR dev_addr_per3d_0; // points to 0x12 PerContext3DParameters, size is 0x3dd000 and all zeros
- uint32_t unk30;
- //this is probably variable length
- Register r[1];
-} CCBEntry;
+#include "ccb.h"
#define DEBUG_SYSCALL(msg) write(-1, (msg), sizeof(msg))
@@ -658,6 +605,7 @@ static void pvrsrv_ioctl_post(int fd, PVRSRV_BRIDGE_PACKAGE *bridge_package, int
{
PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY *in = bridge_package->pvParamIn;
PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY *out_data = bridge_package->pvParamOut;
+ //out_data->sDstClientMemInfo.hKernelMemInfo = (void*)0xdeadbeef;
track_buffer(&out_data->sDstClientMemInfo, MEM_TYPE_MAP);
printf("Map dev mem %p\n", out_data->sDstClientMemInfo.hKernelMemInfo);
printf("Mapping %p %p\n", in->hKernelMemInfo, in->hDstDevMemHeap);
@@ -729,12 +677,13 @@ static bool pvrsrv_ioctl(int fd, PVRSRV_BRIDGE_PACKAGE *bridge_package) {
printf("Created buffer to offset\n");
}
#endif
-#if 0
+
/* Before buffer is allocated, allocate an identical buffer so addresses will be offset */
- create_buffer(fd, bridge_package, mem_data->hDevCookie, (uintptr_t)mem_data->hDevMemHeap,
- mem_data->uSize, mem_data->ui32Attribs, mem_data->uAlignment);
+ char *realloc = getenv("REALLOC");
+ if (realloc && strcmp(realloc, "1") == 0)
+ create_buffer(fd, bridge_package, mem_data->hDevCookie, (uintptr_t)mem_data->hDevMemHeap,
+ mem_data->uSize, mem_data->ui32Attribs, mem_data->uAlignment);
-#endif
#if 0
if (current_alloc == 5) {
@@ -864,9 +813,9 @@ static bool pvrsrv_ioctl(int fd, PVRSRV_BRIDGE_PACKAGE *bridge_package) {
printf("Num Regs is %d\n", entry->num_regs);
DPRI(entry->length);
DPRI(entry->unk0);
- DPRI(entry->unk1);
+ DPRI(entry->pds_pixel_code_data_0.uiAddr);
DPRI(entry->unk2);
- DPRI(entry->unk3);
+ DPRI(entry->pds_pixel_code_data_0_4.uiAddr);
DPRI(entry->unk4);
DPRI(entry->unk5);
DPRI(entry->unk6);