int prom_map(int mode, unsigned long size, unsigned long vaddr, unsigned long paddr) { unsigned long args[11]; int ret; args[0] = (unsigned long) prom_callmethod_name; args[1] = 7; args[2] = 1; args[3] = (unsigned long) prom_map_name; args[4] = (unsigned int) prom_get_mmu_ihandle(); args[5] = (unsigned int) mode; args[6] = size; args[7] = vaddr; args[8] = 0; args[9] = paddr; args[10] = (unsigned long) -1; p1275_cmd_direct(args); ret = (int) args[10]; if (ret == 0) ret = -1; return ret; }
void prom_unmap(unsigned long size, unsigned long vaddr) { p1275_cmd("call-method", (P1275_ARG(0, P1275_ARG_IN_STRING) | P1275_ARG(2, P1275_ARG_IN_64B) | P1275_ARG(3, P1275_ARG_IN_64B) | P1275_INOUT(4, 0)), "unmap", prom_get_mmu_ihandle(), size, vaddr); }
void prom_unmap(unsigned long size, unsigned long vaddr) { unsigned long args[7]; args[0] = (unsigned long) prom_callmethod_name; args[1] = 4; args[2] = 0; args[3] = (unsigned long) prom_unmap_name; args[4] = (unsigned int) prom_get_mmu_ihandle(); args[5] = size; args[6] = vaddr; p1275_cmd_direct(args); }
long prom_dtlb_load(unsigned long index, unsigned long tte_data, unsigned long vaddr) { return p1275_cmd(prom_callmethod_name, (P1275_ARG(0, P1275_ARG_IN_STRING) | P1275_ARG(2, P1275_ARG_IN_64B) | P1275_ARG(3, P1275_ARG_IN_64B) | P1275_INOUT(5, 1)), "SUNW,dtlb-load", prom_get_mmu_ihandle(), /* And then our actual args are pushed backwards. */ vaddr, tte_data, index); }
/* Load explicit I/D TLB entries. */ static long tlb_load(const char *type, unsigned long index, unsigned long tte_data, unsigned long vaddr) { unsigned long args[9]; args[0] = (unsigned long) prom_callmethod_name; args[1] = 5; args[2] = 1; args[3] = (unsigned long) type; args[4] = (unsigned int) prom_get_mmu_ihandle(); args[5] = vaddr; args[6] = tte_data; args[7] = index; args[8] = (unsigned long) -1; p1275_cmd_direct(args); return (long) args[8]; }
int prom_map(int mode, unsigned long size, unsigned long vaddr, unsigned long paddr) { int ret = p1275_cmd(prom_callmethod_name, (P1275_ARG(0, P1275_ARG_IN_STRING) | P1275_ARG(3, P1275_ARG_IN_64B) | P1275_ARG(4, P1275_ARG_IN_64B) | P1275_ARG(6, P1275_ARG_IN_64B) | P1275_INOUT(7, 1)), prom_map_name, prom_get_mmu_ihandle(), mode, size, vaddr, 0, paddr); if (ret == 0) ret = -1; return ret; }
void prom_unmap(unsigned long size, unsigned long vaddr) { p1275_cmd(prom_callmethod_name, (P1275_ARG(0, P1275_ARG_IN_STRING) | P1275_ARG(2, P1275_ARG_IN_64B) | P1275_ARG(3, P1275_ARG_IN_64B) | P1275_INOUT(4, 0)), prom_unmap_name, prom_get_mmu_ihandle(), size, vaddr); }