1 /* The kernel call implemented in this file:
4 * The parameters for this kernel call are:
5 * m5_l1: CP_SRC_ADDR (virtual address)
6 * m5_l3: CP_NR_BYTES (size of datastructure)
11 /*==========================================================================*
13 *==========================================================================*/
14 PUBLIC
int do_mapdma(m_ptr
)
15 register message
*m_ptr
; /* pointer to request message */
25 proc_e
= m_ptr
->CP_SRC_ENDPT
;
26 base
= m_ptr
->CP_SRC_ADDR
;
27 size
= m_ptr
->CP_NR_BYTES
;
29 if (!isokendpt(proc_e
, &proc_p
))
32 proc
= proc_addr(proc_p
);
34 phys_base
= umap_local(proc
, D
, base
, size
);
37 kprintf("do_mapdma: umap_local failed\n");
41 m_ptr
->CP_DST_ADDR
= phys_base
;