Resync brcm47xx config with generic (#1856)
[librecmc/librecmc.git] / scripts / arm-magic.sh
1 #!/usr/bin/env bash
2 #
3 #   Empty/wrong machtype-workaround generator
4 #
5 #   Copyright (C) 2006 Imre Kaloz <kaloz@openwrt.org>
6 #   based on linux/arch/arm/boot/compressed/head-xscale.S
7 #
8 #   This program is free software; you can redistribute it and/or modify
9 #   it under the terms of the GNU General Public License as published by
10 #   the Free Software Foundation; either version 2 of the License, or
11 #   (at your option) any later version.
12 #
13 #   This program is distributed in the hope that it will be useful,
14 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 #   GNU General Public License for more details.
17 #
18 #   You should have received a copy of the GNU General Public License
19 #   along with this program; if not, write to the Free Software
20 #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21
22 # NOTE: for now it's for only IXP4xx in big endian mode
23
24 # list of supported boards, in "boardname machtypeid" format
25 for board in "avila 526" "gateway7001 731" "nslu2 597" "nas100d 865" "wg302v2 890" "pronghornmetro 1040" "compex 1273" "wrt300nv2 1077" "loft 849"
26 do
27   set -- $board
28   hexid=$(printf %x\\n $2)
29   if [ "$2" -lt "256" ]; then
30     # we have a low machtypeid, we just need a "mov" (e3a)
31     printf "\xe3\xa0\x10\x$hexid" > $BIN_DIR/openwrt-$1-2.6-zImage
32   else
33     # we have a high machtypeid, we need a "mov" (e3a) and an "orr" (e38)
34     printf "\xe3\xa0\x10\x$(echo $hexid|cut -b "2 3")\xe3\x81\x1c\x$(echo $hexid|cut -b 1)" > $BIN_DIR/openwrt-$1-2.6-zImage
35   fi
36     # generate the image
37     cat $BIN_DIR/openwrt-ixp4xx-2.6-zImage >> $BIN_DIR/openwrt-$1-2.6-zImage
38 done