Index: kernel/genarch/include/genarch/drivers/amdm37x/gpt.h
===================================================================
--- kernel/genarch/include/genarch/drivers/amdm37x/gpt.h	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/include/genarch/drivers/amdm37x/gpt.h	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -208,5 +208,6 @@
 	// TODO find a nicer way to setup 32kHz clock source for timer1
 	// reg 0x48004C40 is CM_CLKSEL_WKUP see page 485 of the manual
-	ioport32_t *clksel = (void *) km_map(0x48004C40, 4, PAGE_NOT_CACHEABLE);
+	ioport32_t *clksel = (void *) km_map(0x48004C40, 4, PAGE_SIZE,
+	    PAGE_NOT_CACHEABLE);
 	*clksel &= ~1;
 	km_unmap((uintptr_t)clksel, 4);
@@ -214,5 +215,6 @@
 	assert(timer);
 	/* Map control register */
-	timer->regs = (void *) km_map(ioregs, iosize, PAGE_NOT_CACHEABLE);
+	timer->regs = (void *) km_map(ioregs, iosize, KM_NATURAL_ALIGNMENT,
+	    PAGE_NOT_CACHEABLE);
 
 	/* Reset the timer */
Index: kernel/genarch/src/acpi/acpi.c
===================================================================
--- kernel/genarch/src/acpi/acpi.c	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/src/acpi/acpi.c	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -105,9 +105,11 @@
 	/* Start with mapping the header only. */
 	vhdr = (struct acpi_sdt_header *) km_map((uintptr_t) psdt,
-	    sizeof(struct acpi_sdt_header), PAGE_READ | PAGE_NOT_CACHEABLE);
+	    sizeof(struct acpi_sdt_header), KM_NATURAL_ALIGNMENT,
+	    PAGE_READ | PAGE_NOT_CACHEABLE);
 
 	/* Now we can map the entire structure. */
 	vsdt = (struct acpi_sdt_header *) km_map((uintptr_t) psdt,
-	    vhdr->length, PAGE_WRITE | PAGE_NOT_CACHEABLE);
+	    vhdr->length, KM_NATURAL_ALIGNMENT,
+	    PAGE_WRITE | PAGE_NOT_CACHEABLE);
 
 	// TODO: do not leak vtmp
Index: kernel/genarch/src/drivers/am335x/timer.c
===================================================================
--- kernel/genarch/src/drivers/am335x/timer.c	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/src/drivers/am335x/timer.c	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -101,5 +101,6 @@
 	size = regs_map[id].size;
 
-	timer->regs = (void *) km_map(base_addr, size, PAGE_NOT_CACHEABLE);
+	timer->regs = (void *) km_map(base_addr, size, KM_NATURAL_ALIGNMENT,
+	    PAGE_NOT_CACHEABLE);
 	assert(timer->regs != NULL);
 
Index: kernel/genarch/src/drivers/bcm2835/mbox.c
===================================================================
--- kernel/genarch/src/drivers/bcm2835/mbox.c	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/src/drivers/bcm2835/mbox.c	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -93,5 +93,5 @@
 
 	fb_mbox = (void *) km_map(BCM2835_MBOX0_ADDR, sizeof(bcm2835_mbox_t),
-	    PAGE_NOT_CACHEABLE);
+	    KM_NATURAL_ALIGNMENT, PAGE_NOT_CACHEABLE);
 
 	fb_desc->width = 640;
Index: kernel/genarch/src/drivers/ega/ega.c
===================================================================
--- kernel/genarch/src/drivers/ega/ega.c	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/src/drivers/ega/ega.c	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -601,5 +601,5 @@
 	instance->base = base;
 	instance->addr = (uint8_t *) km_map(addr, EGA_VRAM_SIZE,
-	    PAGE_WRITE | PAGE_NOT_CACHEABLE);
+	    KM_NATURAL_ALIGNMENT, PAGE_WRITE | PAGE_NOT_CACHEABLE);
 	if (!instance->addr) {
 		LOG("Unable to EGA video memory.");
Index: kernel/genarch/src/drivers/omap/uart.c
===================================================================
--- kernel/genarch/src/drivers/omap/uart.c	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/src/drivers/omap/uart.c	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -88,5 +88,6 @@
 {
 	assert(uart);
-	uart->regs = (void *)km_map(addr, size, PAGE_NOT_CACHEABLE);
+	uart->regs = (void *)km_map(addr, size, KM_NATURAL_ALIGNMENT,
+	    PAGE_NOT_CACHEABLE);
 
 	assert(uart->regs);
Index: kernel/genarch/src/drivers/pl011/pl011.c
===================================================================
--- kernel/genarch/src/drivers/pl011/pl011.c	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/src/drivers/pl011/pl011.c	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -100,5 +100,5 @@
 	assert(uart);
 	uart->regs = (void *)km_map(addr, sizeof(pl011_uart_regs_t),
-	    PAGE_NOT_CACHEABLE);
+	    KM_NATURAL_ALIGNMENT, PAGE_NOT_CACHEABLE);
 	assert(uart->regs);
 
Index: kernel/genarch/src/drivers/s3c24xx/uart.c
===================================================================
--- kernel/genarch/src/drivers/s3c24xx/uart.c	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/src/drivers/s3c24xx/uart.c	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -116,5 +116,5 @@
 	uart_dev->data = uart;
 
-	uart->io = (s3c24xx_uart_io_t *) km_map(paddr, PAGE_SIZE,
+	uart->io = (s3c24xx_uart_io_t *) km_map(paddr, PAGE_SIZE, PAGE_SIZE,
 	    PAGE_WRITE | PAGE_NOT_CACHEABLE);
 	uart->indev = NULL;
Index: kernel/genarch/src/fb/fb.c
===================================================================
--- kernel/genarch/src/fb/fb.c	(revision b1834a01038fc2eeb50637bb5cb48a741a03b9fb)
+++ kernel/genarch/src/fb/fb.c	(revision 6bf5b8cd8ea2cab6203e1dd42e25d90fd7628fa6)
@@ -610,5 +610,5 @@
 
 	instance->addr = (uint8_t *) km_map((uintptr_t) props->addr, fbsize,
-	    PAGE_WRITE | PAGE_NOT_CACHEABLE);
+	    KM_NATURAL_ALIGNMENT, PAGE_WRITE | PAGE_NOT_CACHEABLE);
 	if (!instance->addr) {
 		LOG("Unable to map framebuffer.");
