--- a/Makefile
+++ b/Makefile
@@ -420,7 +420,7 @@ endif
 # Disable all drivers needing raw access (memory, PCI, port I/O) on
 # architectures with unknown raw access properties.
 # Right now those architectures are alpha hppa m68k sh s390
-ifneq ($(ARCH),$(filter $(ARCH),x86 mips ppc arm sparc))
+ifneq ($(ARCH),$(filter $(ARCH),x86 mips ppc arm sparc arc))
 ifeq ($(CONFIG_INTERNAL), yes)
 UNSUPPORTED_FEATURES += CONFIG_INTERNAL=yes
 else
--- a/hwaccess.h
+++ b/hwaccess.h
@@ -87,6 +87,13 @@
 /* SPARC is big endian in general (but allows to access data in little endian too). */
 #define __FLASHROM_BIG_ENDIAN__ 1
 
+#elif IS_ARC
+#ifdef __arceb__
+#define __FLASHROM_BIG_ENDIAN__ 1
+#else
+#define __FLASHROM_LITTLE_ENDIAN__ 1
+#endif
+
 #endif /* IS_? */
 
 #if !defined (__FLASHROM_BIG_ENDIAN__) && !defined (__FLASHROM_LITTLE_ENDIAN__)
@@ -378,6 +385,8 @@ int libpayload_wrmsr(int addr, msr_t msr);
 
 /* Non memory mapped I/O is not supported on ARM. */
 
+#elif IS_ARC
+
 #else
 
 #error Unknown architecture, please check if it supports PCI port IO.
diff --git a/platform.h b/platform.h
index b2fdcd0..2e68e71 100644
--- a/platform.h
+++ b/platform.h
@@ -75,9 +75,12 @@
 #elif defined(__s390__) || defined(__s390x__) || defined(__zarch__)
 	#define __FLASHROM_ARCH__ "s390"
 	#define IS_S390 1
+#elif defined (__arc__)
+	#define __FLASHROM_ARCH__ "arc"
+	#define IS_ARC 1
 #endif
 
-#if !(IS_X86 || IS_MIPS || IS_PPC || IS_ARM || IS_SPARC || IS_ALPHA || IS_HPPA || IS_M68K || IS_SH || IS_S390)
+#if !(IS_X86 || IS_MIPS || IS_PPC || IS_ARM || IS_SPARC || IS_ALPHA || IS_HPPA || IS_M68K || IS_SH || IS_S390 || IS_ARC)
 #error Unknown architecture
 #endif