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;
}
Example #2
0
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);
}
Example #4
0
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];
}
Example #6
0
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;
}
Example #7
-1
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);
}