crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianETMLib/Common/Utilities/ETMTextToEnumConverter.cs
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:50:58 +0200
changeset 0 818e61de6cd1
permissions -rw-r--r--
Add initial version of Crash Analyser cmdline under EPL

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*
*/

using System;
using System.Collections.Generic;
using System.Text;
using SymbianETMLib.Common.Types;
using SymbianStructuresLib.Arm.Exceptions;
using SymbianStructuresLib.Arm.Registers;

namespace SymbianETMLib.Common.Utilities
{
    internal static class ETMTextToEnumConverter
    {
        public static TArmRegisterType ToRegisterType( string aText )
        {
            TArmRegisterType ret = TArmRegisterType.EArmReg_Other;
            //
            string text = aText.ToUpper();
            if ( text == "ETB11_IDENTIFICATION" )
            {
                ret = TArmRegisterType.EArmReg_ETB_Id;
            }
            else if ( text == "ETB11_RAM_DEPTH" )
            {
                ret = TArmRegisterType.EArmReg_ETB_RamDepth;
            }
            else if ( text == "ETB11_RAM_WIDTH" )
            {
                ret = TArmRegisterType.EArmReg_ETB_RamWidth;
            }
            else if ( text == "ETB11_STATUS" )
            {
                ret = TArmRegisterType.EArmReg_ETB_Status;
            }
            else if ( text == "ETB11_RAM_WRITE_POINTER" )
            {
                ret = TArmRegisterType.EArmReg_ETB_RamWritePointer;
            }
            else if ( text == "ETB11_TRIGGER_COUNTER" )
            {
                ret = TArmRegisterType.EArmReg_ETB_TriggerCounter;
            }
            else if ( text == "ETB11_CONTROL" )
            {
                ret = TArmRegisterType.EArmReg_ETB_Control;
            }
            else if ( text == "ETM_ETM_CONTROL" )
            {
                ret = TArmRegisterType.EArmReg_ETM_Control;
            }
            else if ( text == "ETM_ETM_ID" )
            {
                ret = TArmRegisterType.EArmReg_ETM_Id;
            }
            //
            return ret;
        }

        public static TArmExceptionVector ToExceptionVector( string aText )
        {
            TArmExceptionVector ret = TArmExceptionVector.EUndefinedInstruction;
            //
            string text = aText.ToUpper();
            if ( text == "RST" )
            {
                ret = TArmExceptionVector.EReset;
            }
            else if ( text == "UND" )
            {
                ret = TArmExceptionVector.EUndefinedInstruction;
            }
            else if ( text == "SWI" )
            {
                ret = TArmExceptionVector.ESVC;
            }
            else if ( text == "ETB11_STATUS" )
            {
                ret = TArmExceptionVector.EPrefetchAbort;
            }
            else if ( text == "PRE" )
            {
                ret = TArmExceptionVector.EPrefetchAbort;
            }
            else if ( text == "DAT" )
            {
                ret = TArmExceptionVector.EDataAbort;
            }
            else if ( text == "IRQ" )
            {
                ret = TArmExceptionVector.EIRQ;
            }
            else if ( text == "FIQ" )
            {
                ret = TArmExceptionVector.EFIQ;
            }
            //
            return ret;
        }
    }
}