| # Returns true if the string $1 contains the string $2. |
| contains() { |
| case "$1" in |
| *"$2"*) |
| return 0 |
| esac |
| return 1 |
| } |
| |
| |
| log() |
| { |
| echo "$*" >&2 |
| } |
| |
| |
| signal_failure() { |
| # The address we signal back to the bootloader is the |
| # same for 7425 and 7429 chips but different for 7252. |
| # The register we're using is the last word in |
| # SYSTEM_DATA_RAMi_ARRAY_BASE. |
| read x y armplatform platform junk </proc/cpuinfo |
| if contains "$platform" "BCM742"; then |
| REG_FAILURE_COUNT="0x104083FC" |
| fi |
| |
| if [ -n "$REG_FAILURE_COUNT" ]; then |
| devmem $REG_FAILURE_COUNT 32 1 |
| fi |
| } |
| |
| |
| die() |
| { |
| log "$*" |
| log "FATAL ERROR DURING SIMPLERAMFS BOOT: rebooting immediately." |
| |
| # rebooting from the alternate boot image |
| signal_failure |
| exit 1 # kernel will auto-reboot if process#1 dies |
| } |
| |
| |
| read_cmdline() |
| { |
| ROOTDEV= |
| ROOTFSTYPE= |
| NFSROOT= |
| UBI_MTD= |
| INIT= |
| IP= |
| |
| set $(cat /proc/cmdline) |
| for i in "$@"; do |
| key=${i%%=*} |
| value=${i#*=} |
| case "$key" in |
| root) ROOTDEV=$value ;; |
| rootfstype) ROOTFSTYPE=$value ;; |
| nfsroot) NFSROOT=$value ;; |
| ubi.mtd) UBI_MTD=$value ;; |
| init) INIT=$value ;; |
| ip) IP=$value ;; |
| esac |
| done |
| } |