Index: uspace/drv/nic/e1k/e1k.c
===================================================================
--- uspace/drv/nic/e1k/e1k.c	(revision ee7f78a5c14921259ade650857bc3495b642f4f1)
+++ uspace/drv/nic/e1k/e1k.c	(revision fada53f4d09acb482f1a81883a0cf0fd893f9b47)
@@ -129,20 +129,20 @@
 	
 	/** Physical tx ring address */
-	void *tx_ring_phys;
+	uintptr_t tx_ring_phys;
 	/** Virtual tx ring address */
 	void *tx_ring_virt;
 	
 	/** Ring of TX frames, physical address */
-	void **tx_frame_phys;
+	uintptr_t *tx_frame_phys;
 	/** Ring of TX frames, virtual address */
 	void **tx_frame_virt;
 	
 	/** Physical rx ring address */
-	void *rx_ring_phys;
+	uintptr_t rx_ring_phys;
 	/** Virtual rx ring address */
 	void *rx_ring_virt;
 	
 	/** Ring of RX frames, physical address */
-	void **rx_frame_phys;
+	uintptr_t *rx_frame_phys;
 	/** Ring of RX frames, virtual address */
 	void **rx_frame_virt;
@@ -1377,6 +1377,6 @@
 	int rc = dmamem_map_anonymous(
 	    E1000_RX_FRAME_COUNT * sizeof(e1000_rx_descriptor_t),
-	    AS_AREA_READ | AS_AREA_WRITE, 0, &e1000->rx_ring_phys,
-	    &e1000->rx_ring_virt);
+	    DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE, 0,
+	    &e1000->rx_ring_phys, &e1000->rx_ring_virt);
 	if (rc != EOK)
 		return rc;
@@ -1387,9 +1387,9 @@
 	    (uint32_t) PTR_TO_U64(e1000->rx_ring_phys));
 	
-	e1000->rx_frame_phys =
-	    calloc(E1000_RX_FRAME_COUNT, sizeof(void *));
+	e1000->rx_frame_phys = (uintptr_t *)
+	    calloc(E1000_RX_FRAME_COUNT, sizeof(uintptr_t));
 	e1000->rx_frame_virt =
 	    calloc(E1000_RX_FRAME_COUNT, sizeof(void *));
-	if (e1000->rx_frame_phys == NULL || e1000->rx_frame_virt == NULL) {
+	if ((e1000->rx_frame_phys == NULL) || (e1000->rx_frame_virt == NULL)) {
 		rc = ENOMEM;
 		goto error;
@@ -1397,16 +1397,16 @@
 	
 	size_t i;
+	uintptr_t frame_phys;
 	void *frame_virt;
-	void *frame_phys;
 	
 	for (i = 0; i < E1000_RX_FRAME_COUNT; i++) {
-		rc = dmamem_map_anonymous(
-		    E1000_MAX_SEND_FRAME_SIZE, AS_AREA_READ | AS_AREA_WRITE,
-		    0, &frame_phys, &frame_virt);
+		rc = dmamem_map_anonymous(E1000_MAX_SEND_FRAME_SIZE,
+		    DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE, 0,
+		    &frame_phys, &frame_virt);
 		if (rc != EOK)
 			goto error;
 		
+		e1000->rx_frame_phys[i] = frame_phys;
 		e1000->rx_frame_virt[i] = frame_virt;
-		e1000->rx_frame_phys[i] = frame_phys;
 	}
 	
@@ -1424,6 +1424,6 @@
 		if (e1000->rx_frame_virt[i] != NULL) {
 			dmamem_unmap_anonymous(e1000->rx_frame_virt[i]);
+			e1000->rx_frame_phys[i] = 0;
 			e1000->rx_frame_virt[i] = NULL;
-			e1000->rx_frame_phys[i] = NULL;
 		}
 	}
@@ -1436,5 +1436,5 @@
 	if (e1000->rx_frame_virt != NULL) {
 		free(e1000->rx_frame_virt);
-		e1000->rx_frame_phys = NULL;
+		e1000->rx_frame_virt = NULL;
 	}
 	
@@ -1454,12 +1454,13 @@
 	for (unsigned int offset = 0; offset < E1000_RX_FRAME_COUNT; offset++) {
 		dmamem_unmap_anonymous(e1000->rx_frame_virt[offset]);
+		e1000->rx_frame_phys[offset] = 0;
 		e1000->rx_frame_virt[offset] = NULL;
-		e1000->rx_frame_phys[offset] = NULL;
 	}
 	
 	free(e1000->rx_frame_virt);
-	free(e1000->rx_frame_phys);
+	
+	e1000->rx_frame_phys = NULL;
 	e1000->rx_frame_virt = NULL;
-	e1000->rx_frame_phys = NULL;
+	
 	dmamem_unmap_anonymous(e1000->rx_ring_virt);
 }
@@ -1569,6 +1570,7 @@
 	fibril_mutex_lock(&e1000->tx_lock);
 	
-	e1000->tx_ring_phys = NULL;
+	e1000->tx_ring_phys = 0;
 	e1000->tx_ring_virt = NULL;
+	
 	e1000->tx_frame_phys = NULL;
 	e1000->tx_frame_virt = NULL;
@@ -1576,6 +1578,6 @@
 	int rc = dmamem_map_anonymous(
 	    E1000_TX_FRAME_COUNT * sizeof(e1000_tx_descriptor_t),
-	    AS_AREA_READ | AS_AREA_WRITE, 0, &e1000->tx_ring_phys,
-	    &e1000->tx_ring_virt);
+	    DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE, 0,
+	    &e1000->tx_ring_phys, &e1000->tx_ring_virt);
 	if (rc != EOK)
 		goto error;
@@ -1584,8 +1586,10 @@
 	    E1000_TX_FRAME_COUNT * sizeof(e1000_tx_descriptor_t));
 	
-	e1000->tx_frame_phys = calloc(E1000_TX_FRAME_COUNT, sizeof(void *));
-	e1000->tx_frame_virt = calloc(E1000_TX_FRAME_COUNT, sizeof(void *));
-
-	if (e1000->tx_frame_phys == NULL || e1000->tx_frame_virt == NULL) {
+	e1000->tx_frame_phys = (uintptr_t *)
+	    calloc(E1000_TX_FRAME_COUNT, sizeof(uintptr_t));
+	e1000->tx_frame_virt =
+	    calloc(E1000_TX_FRAME_COUNT, sizeof(void *));
+
+	if ((e1000->tx_frame_phys == NULL) || (e1000->tx_frame_virt == NULL)) {
 		rc = ENOMEM;
 		goto error;
@@ -1593,6 +1597,6 @@
 	
 	for (i = 0; i < E1000_TX_FRAME_COUNT; i++) {
-		rc = dmamem_map_anonymous(
-		    E1000_MAX_SEND_FRAME_SIZE, AS_AREA_READ | AS_AREA_WRITE,
+		rc = dmamem_map_anonymous(E1000_MAX_SEND_FRAME_SIZE,
+		    DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE,
 		    0, &e1000->tx_frame_phys[i], &e1000->tx_frame_virt[i]);
 		if (rc != EOK)
@@ -1616,10 +1620,10 @@
 	}
 	
-	if (e1000->tx_frame_phys != NULL && e1000->tx_frame_virt != NULL) {
+	if ((e1000->tx_frame_phys != NULL) && (e1000->tx_frame_virt != NULL)) {
 		for (i = 0; i < E1000_TX_FRAME_COUNT; i++) {
 			if (e1000->tx_frame_virt[i] != NULL) {
 				dmamem_unmap_anonymous(e1000->tx_frame_virt[i]);
+				e1000->tx_frame_phys[i] = 0;
 				e1000->tx_frame_virt[i] = NULL;
-				e1000->tx_frame_phys[i] = NULL;
 			}
 		}
@@ -1633,5 +1637,5 @@
 	if (e1000->tx_frame_virt != NULL) {
 		free(e1000->tx_frame_virt);
-		e1000->tx_frame_phys = NULL;
+		e1000->tx_frame_virt = NULL;
 	}
 	
@@ -1650,6 +1654,6 @@
 	for (i = 0; i < E1000_TX_FRAME_COUNT; i++) {
 		dmamem_unmap_anonymous(e1000->tx_frame_virt[i]);
+		e1000->tx_frame_phys[i] = 0;
 		e1000->tx_frame_virt[i] = NULL;
-		e1000->tx_frame_phys[i] = NULL;
 	}
 	
@@ -1661,5 +1665,5 @@
 	if (e1000->tx_frame_virt != NULL) {
 		free(e1000->tx_frame_virt);
-		e1000->tx_frame_phys = NULL;
+		e1000->tx_frame_virt = NULL;
 	}
 	
Index: uspace/drv/nic/rtl8139/driver.c
===================================================================
--- uspace/drv/nic/rtl8139/driver.c	(revision ee7f78a5c14921259ade650857bc3495b642f4f1)
+++ uspace/drv/nic/rtl8139/driver.c	(revision fada53f4d09acb482f1a81883a0cf0fd893f9b47)
@@ -1144,6 +1144,6 @@
 	ddf_msg(LVL_DEBUG, "Creating buffers");
 
-	rc = dmamem_map_anonymous(TX_PAGES * PAGE_SIZE, AS_AREA_WRITE, 0,
-	    &rtl8139->tx_buff_phys, &rtl8139->tx_buff_virt);
+	rc = dmamem_map_anonymous(TX_PAGES * PAGE_SIZE, DMAMEM_4GiB,
+	    AS_AREA_WRITE, 0, &rtl8139->tx_buff_phys, &rtl8139->tx_buff_virt);
 	if (rc != EOK) {
 		ddf_msg(LVL_ERROR, "Can not allocate transmitter buffers.");
@@ -1164,6 +1164,6 @@
 	    RxBUF_TOT_LENGTH);
 
-	rc = dmamem_map_anonymous(RxBUF_TOT_LENGTH, AS_AREA_READ, 0,
-	    &rtl8139->rx_buff_phys, &rtl8139->rx_buff_virt);
+	rc = dmamem_map_anonymous(RxBUF_TOT_LENGTH, DMAMEM_4GiB,
+	    AS_AREA_READ, 0, &rtl8139->rx_buff_phys, &rtl8139->rx_buff_virt);
 	if (rc != EOK) {
 		ddf_msg(LVL_ERROR, "Can not allocate receive buffer.");
Index: uspace/drv/nic/rtl8139/driver.h
===================================================================
--- uspace/drv/nic/rtl8139/driver.h	(revision ee7f78a5c14921259ade650857bc3495b642f4f1)
+++ uspace/drv/nic/rtl8139/driver.h	(revision fada53f4d09acb482f1a81883a0cf0fd893f9b47)
@@ -100,5 +100,5 @@
 	 *  Each buffer takes 2kB
 	 */
-	void *tx_buff_phys;
+	uintptr_t tx_buff_phys;
 	void *tx_buff_virt;
 
@@ -117,5 +117,5 @@
 
 	/** Buffer for receiving frames */
-	void *rx_buff_phys;
+	uintptr_t rx_buff_phys;
 	void *rx_buff_virt;
 
