blob: 73252251ab34a83b65bbe29e19599e18acc6a89f [file] [log] [blame]
#!/bin/bash
# Refer to help text in the usage function for details.
function usage()
{
echo
echo "This script runs on HOST OS and gives translated SCOM address."
echo "usage: $0: <scom_addr> <core_id>"
echo
echo " <scom_addr>:"
echo " SCOM address that needs translation (e.g. '10010800')."
echo " <core_id>:"
echo " Core id as obtained from probe_cpu.sh."
echo " Should be between 0-23 (e.g. '0')."
exit 1
}
[ $# -lt 2 ] && usage
SCOM_ADDR=$1
SCOM_ADDR=$(echo $SCOM_ADDR | sed 's/^0x//')
CORE_ID=$2
CORE_ID=$(echo $CORE_ID | sed 's/^0x//')
[ $CORE_ID -gt 23 ] && echo "<core-id> should be between 0-23" && exit
# per Chip level
perl -e '{printf("EQ[%2d]: 0x%x\n", ((('$CORE_ID' & 0x1c)) >> 2), 0x'$SCOM_ADDR' | ((('$CORE_ID' & 0x1c) + 0x40) << 22));}'
perl -e '{printf("EX[%2d]: 0x%x\n", ((('$CORE_ID')) >> 1), (0x'$SCOM_ADDR' | (('$CORE_ID' & 2) << 9 )) | ((('$CORE_ID' & 0x1c) + 0x40) << 22));}'
perl -e '{printf(" C[%2d]: 0x%x\n", '$CORE_ID', 0x'$SCOM_ADDR' | ((('$CORE_ID' & 0x1f) + 0x20) << 24));}'