diff --git a/MAKEALL b/MAKEALL
index bed99de..c0d04fb 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -106,9 +106,9 @@
 	-s|--soc)
 		# echo "Option SoC: argument \`$2'"
 		if [ "$opt_s" ] ; then
-			opt_s="${opt_s%)} || \$6 == \"$2\" || \$6 ~ /$2/)"
+			opt_s="${opt_s%)} || \$4 == \"$2\" || \$4 ~ /$2/)"
 		else
-			opt_s="(\$6 == \"$2\" || \$6 ~ /$2/)"
+			opt_s="(\$4 == \"$2\" || \$4 ~ /$2/)"
 		fi
 		SELECTED='y'
 		shift 2 ;;
@@ -160,7 +160,7 @@
 [ "$opt_v" ] && FILTER="${FILTER} && $opt_v"
 
 if [ "$SELECTED" ] ; then
-	SELECTED=$(awk '('"$FILTER"') { print $1 }' boards.cfg)
+	SELECTED=$(awk '('"$FILTER"') { print $7 }' boards.cfg)
 
 	# Make sure some boards from boards.cfg are actually found
 	if [ -z "$SELECTED" ] ; then
@@ -232,12 +232,12 @@
 		-v field="$1" \
 		-v select="$2" \
 		-F "$FS" \
-		'($1 !~ /^#/ && $field == select) { print $1 }' \
+		'($1 !~ /^#/ && $field == select) { print $7 }' \
 		boards.cfg
 }
 boards_by_arch() { boards_by_field 2 "$@" ; }
 boards_by_cpu()  { boards_by_field 3 "$@" "[: \t]+" ; }
-boards_by_soc()  { boards_by_field 6 "$@" ; }
+boards_by_soc()  { boards_by_field 4 "$@" ; }
 
 #########################################################################
 ## MPC5xx Systems
@@ -519,56 +519,53 @@
 	local vendor=""
 
 	# Automatic mode
-	local line=`egrep -i "^[[:space:]]*${target}[[:space:]]" boards.cfg`
-
+	local line=`awk -F '\ +' '\$7 == "'"$target"'" { print \$0 }' boards.cfg`
 	if [ -z "${line}" ] ; then echo "" ; return ; fi
 
 	set ${line}
 
-	# add default board name if needed
-	[ $# = 3 ] && set ${line} ${1}
+	CONFIG_NAME="${7%_config}"
 
-	CONFIG_NAME="${1%_config}"
+	[ "${BOARD_NAME}" ] || BOARD_NAME="${7%_config}"
 
-	[ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}"
-
-	if [ "$4" = "-" ] ; then
-		board=${BOARD_NAME}
-	else
-		board="$4"
+	if [ $# -gt 5 ]; then
+		if [ "$6" = "-" ] ; then
+			board=${BOARD_NAME}
+		else
+			board="$6"
+		fi
 	fi
 
 	[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5"
-	[ $# -gt 6 ] && [ "$7" != "-" ] && {
-		tmp="${7%:*}"
+	[ $# -gt 6 ] && [ "$8" != "-" ] && {
+		tmp="${8%:*}"
 		if [ "$tmp" ] ; then
 			CONFIG_NAME="$tmp"
 		fi
 	}
 
 	# Assign board directory to BOARDIR variable
-	if [ -z "${vendor}" ] ; then
+	if [ "${vendor}" == "-" ] ; then
 	    BOARDDIR=${board}
 	else
 	    BOARDDIR=${vendor}/${board}
 	fi
 
-	echo "${CONFIG_NAME}:${BOARDDIR}"
+	echo "${CONFIG_NAME}:${BOARDDIR}:${BOARD_NAME}"
 }
 
 get_target_maintainers() {
-	local name=`echo $1 | cut -d : -f 1`
+	local name=`echo $1 | cut -d : -f 3`
 
-	if ! grep -qsi "[[:blank:]]${name}[[:blank:]]" MAINTAINERS ; then
+	local line=`awk -F '\ +' '\$7 == "'"$target"'" { print \$0 }' boards.cfg`
+	if [ -z "${line}" ]; then
 		echo ""
 		return ;
 	fi
 
-	local line=`tac MAINTAINERS | grep -ni "[[:blank:]]${name}[[:blank:]]" | cut -d : -f 1`
-	local mail=`tac MAINTAINERS | tail -n +${line} | \
-		sed -n ":start /.*@.*/ { b mail } ; n ; b start ; :mail /.*@.*/ { p ; n ; b mail } ; q" | \
-		sed "s/^.*<//;s/>.*$//"`
-	echo "$mail"
+	local mails=`echo ${line} | cut -d ' ' -f 9- | sed -e 's/[^<]*<//' -e 's/>.*</ /' -e 's/>[^>]*$//'`
+	[ "$mails" == "-" ] && mails=""
+	echo "$mails"
 }
 
 get_target_arch() {
