diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
index 7e190d15c60e98be1b2a68f191e33f19b5ed42d8..584cbce358c5aedeff87fb780bf5f9c4b99e95ed 100644
--- a/arch/microblaze/include/asm/io.h
+++ b/arch/microblaze/include/asm/io.h
@@ -25,7 +25,7 @@
 #define readw(addr) \
   ({ unsigned short __v = (*(volatile unsigned short *) (addr)); __v; })
 #define readl(addr) \
-  ({ unsigned long __v = (*(volatile unsigned long *) (addr)); __v; })
+	({ unsigned int __v = (*(volatile unsigned int *) (addr)); __v; })
 
 #define writeb(b, addr) \
   (void)((*(volatile unsigned char *) (addr)) = (b))
diff --git a/board/xilinx/microblaze-generic/microblaze-generic.c b/board/xilinx/microblaze-generic/microblaze-generic.c
index 9b2952f04eeeac01e4ef96cfe77e52f7d754f59c..c4c13a668277611e6d70712c18a92bda104eeacf 100644
--- a/board/xilinx/microblaze-generic/microblaze-generic.c
+++ b/board/xilinx/microblaze-generic/microblaze-generic.c
@@ -72,6 +72,12 @@ int fsl_init2 (void) {
 int board_eth_init(bd_t *bis)
 {
 	int ret = 0;
+
+#ifdef CONFIG_XILINX_AXIEMAC
+	ret |= xilinx_axiemac_initialize(bis, XILINX_AXIEMAC_BASEADDR,
+						XILINX_AXIDMA_BASEADDR);
+#endif
+
 #ifdef CONFIG_XILINX_EMACLITE
 	u32 txpp = 0;
 	u32 rxpp = 0;
diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h
index 09ff7c4fb936cae7beffb3a8d89c872082f1c4c9..6b3fd7600371cdbc66f428b3d53c7f3f915a5bcf 100644
--- a/include/configs/microblaze-generic.h
+++ b/include/configs/microblaze-generic.h
@@ -68,6 +68,10 @@
 # define CONFIG_XILINX_LL_TEMAC		1
 # define CONFIG_SYS_ENET
 #endif
+#if defined(XILINX_AXIEMAC_BASEADDR)
+# define CONFIG_XILINX_AXIEMAC	1
+# define CONFIG_SYS_ENET
+#endif
 
 #undef ET_DEBUG