#!/bin/bash

lspci
setpci -v -s 1: 160.l
setpci -v -s 1: 78.l

addr=$( sed -n -e 's/^  */0x/' -e '/0000:00:/s/0000-.*$//p' /proc/iomem )

if [ -z addr ]
then
    echo failed to find PLX address in /proc/iomem
    exit
fi

p0="${addr}0000"
p1="${addr}1000"
p2="${addr}2000"
p3="${addr}3000"

nozero ()
{
    sed '/00000000 00000000 00000000 00000000/d'
}

le2be ()
{
    sed 's/ \(\w\w\)\(\w\w\)\(\w\w\)\(\w\w\)/ \4\3 \2\1/g'
}

short_addr ()
{
    sed 's/^.............//'
}

dump_memory ()
{
    local addr="$1"
    local size="$2"
    local msg="$3"

    echo
    echo ========== $addr $msg ==========
    echo
    dmem "$addr" "$size" 4 | nozero | le2be | short_addr
}

dump_memory $p0 256 "CPU to PLX"
dump_memory $p1 128 "PLX to Triumph"
dump_memory $p2 128 "PLX to top Sindar"
dump_memory $p3 128 "PLX to bottom Sindar"

