コード例 #1
0
ファイル: vmm_heap.c プロジェクト: 32bitmicro/xvisor
static int heap_pa2va(struct vmm_heap_control *heap,
		      physical_addr_t pa, virtual_addr_t *va)
{
	int rc = VMM_OK;

	if ((heap->heap_start_pa <= pa) &&
	    (pa < (heap->heap_start_pa + heap->heap_size))) {
		*va = (virtual_addr_t)heap->heap_start + (pa - heap->heap_start_pa);
	} else {
		rc = vmm_host_pa2va(pa, va);
	}

	return rc;
}
コード例 #2
0
ファイル: io-pgtable-arm.c プロジェクト: avpatel/xvisor-next
/* IOPTE accessors */
static arm_lpae_iopte *iopte_deref(arm_lpae_iopte pte,
				   struct arm_lpae_io_pgtable *d)
{
	int rc;
	virtual_addr_t va = 0x0;
	physical_addr_t pa = ((pte) & ((1ULL << ARM_LPAE_MAX_ADDR_BITS) - 1)
				& ~(ARM_LPAE_GRANULE(d) - 1ULL));


	rc = vmm_host_pa2va(pa, &va);
	BUG_ON(rc);

	return (arm_lpae_iopte *)va;
}