diff --git a/Makefile b/Makefile
index 54f04b9..77e9b5f 100644
--- a/Makefile
+++ b/Makefile
@@ -115,21 +115,6 @@
 # RayeR SPIPGM hardware support
 CONFIG_RAYER_SPI ?= yes
 
-# Bitbanging SPI infrastructure, default off unless needed.
-ifeq ($(CONFIG_RAYER_SPI), yes)
-override CONFIG_BITBANG_SPI = yes
-else
-ifeq ($(CONFIG_INTERNAL), yes)
-override CONFIG_BITBANG_SPI = yes
-else
-ifeq ($(CONFIG_NICINTEL_SPI), yes)
-override CONFIG_BITBANG_SPI = yes
-else
-CONFIG_BITBANG_SPI ?= no
-endif
-endif
-endif
-
 # Always enable 3Com NICs for now.
 CONFIG_NIC3COM ?= yes
 
@@ -170,6 +155,21 @@
 # Disable wiki printing by default. It is only useful if you have wiki access.
 CONFIG_PRINT_WIKI ?= no
 
+# Bitbanging SPI infrastructure, default off unless needed.
+ifeq ($(CONFIG_RAYER_SPI), yes)
+override CONFIG_BITBANG_SPI = yes
+else
+ifeq ($(CONFIG_INTERNAL), yes)
+override CONFIG_BITBANG_SPI = yes
+else
+ifeq ($(CONFIG_NICINTEL_SPI), yes)
+override CONFIG_BITBANG_SPI = yes
+else
+CONFIG_BITBANG_SPI ?= no
+endif
+endif
+endif
+
 ifeq ($(CONFIG_INTERNAL), yes)
 FEATURE_CFLAGS += -D'CONFIG_INTERNAL=1'
 PROGRAMMER_OBJS += processor_enable.o chipset_enable.o board_enable.o cbtable.o dmi.o internal.o
diff --git a/README b/README
index 5b1799b..a94cae8 100644
--- a/README
+++ b/README
@@ -42,7 +42,11 @@
 Build Instructions
 ------------------
 
-To build flashrom you need to install the following packages or ports:
+To build flashrom you need to install the following software:
+
+ * pciutils+libpci (if you want support for mainboard or PCI device flashing)
+ * libusb (if you want FT2232 or Dediprog support)
+ * libftdi (if you want FT2232 support)
 
 Linux et al:
 
@@ -111,6 +115,18 @@
  http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi7b.zip and make sure
  CWSDPMI.EXE is in the current directory.
 
+Processor architecture dependent features:
+
+ On non-x86 architectures you have to disable a few programmers because they
+ use port-based I/O which is not directly available on non-x86. Please add
+ CONFIG_RAYER_SPI=no CONFIG_NIC3COM=no CONFIG_ATAHPT=no CONFIG_NICREALTEK=no \
+ CONFIG_NICNATSEMI=no
+ as parameters to the "make" invocation.
+ Besides that, the internal programmer is only supported on x86 and MIPS. On
+ other architectures, please add
+ CONFIG_INTERNAL=no
+ as parameter to the "make" invocation.
+
 Installation
 ------------
 
diff --git a/ft2232_spi.c b/ft2232_spi.c
index ee2b693..a2ea2a8 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -148,7 +148,7 @@
 	free(arg);
 	arg = extract_programmer_param("port");
 	if (arg) {
-		switch (toupper(*arg)) {
+		switch (toupper((unsigned char)*arg)) {
 		case 'A':
 			ft2232_interface = INTERFACE_A;
 			break;
diff --git a/print_wiki.c b/print_wiki.c
index 313fdea..1b46dd0 100644
--- a/print_wiki.c
+++ b/print_wiki.c
@@ -268,8 +268,8 @@
 	time_t t = time(NULL);
 
 	printf(wiki_header, ctime(&t), flashrom_version);
-#if CONFIG_INTERNAL == 1
 	print_supported_chips_wiki(2);
+#if CONFIG_INTERNAL == 1
 	print_supported_chipsets_wiki(3);
 	print_supported_boards_wiki();
 #endif
diff --git a/processor_enable.c b/processor_enable.c
index 74caedc..b14cd33 100644
--- a/processor_enable.c
+++ b/processor_enable.c
@@ -53,22 +53,22 @@
 		if (fgets(line, sizeof(line), cpuinfo) == NULL)
 			break;
 		ptr = line;
-		while (*ptr && isspace(*ptr))
+		while (*ptr && isspace((unsigned char)*ptr))
 			ptr++;
 		/* "cpu" part appears only with some Linux versions.  */
 		if (strncmp(ptr, "cpu", sizeof("cpu") - 1) == 0)
 			ptr += sizeof("cpu") - 1;
-		while (*ptr && isspace(*ptr))
+		while (*ptr && isspace((unsigned char)*ptr))
 			ptr++;
 		if (strncmp(ptr, "model", sizeof("model") - 1) != 0)
 			continue;
 		ptr += sizeof("model") - 1;
-		while (*ptr && isspace(*ptr))
+		while (*ptr && isspace((unsigned char)*ptr))
 			ptr++;
 		if (*ptr != ':')
 			continue;
 		ptr++;
-		while (*ptr && isspace(*ptr))
+		while (*ptr && isspace((unsigned char)*ptr))
 			ptr++;
 		fclose(cpuinfo);
 		return (strncmp(ptr, "ICT Loongson-2 V0.3",
diff --git a/serial.c b/serial.c
index 053b09a..a04a138 100644
--- a/serial.c
+++ b/serial.c
@@ -106,8 +106,9 @@
 #ifdef _WIN32
 	HANDLE fd;
 	char *dev2 = dev;
-	if ((strlen(dev) > 3) && (tolower(dev[0]) == 'c')
-	    && (tolower(dev[1]) == 'o') && (tolower(dev[2]) == 'm')) {
+	if ((strlen(dev) > 3) && (tolower((unsigned char)dev[0]) == 'c') &&
+	    (tolower((unsigned char)dev[1]) == 'o') &&
+	    (tolower((unsigned char)dev[2]) == 'm')) {
 		dev2 = malloc(strlen(dev) + 5);
 		strcpy(dev2, "\\\\.\\");
 		strcpy(dev2 + 4, dev);
