1*17f65170SRuslan Bukin /*
2*17f65170SRuslan Bukin  * \file       trc_cmp_cfg_etmv3.cpp
3*17f65170SRuslan Bukin  * \brief      OpenCSD :
4*17f65170SRuslan Bukin  *
5*17f65170SRuslan Bukin  * \copyright  Copyright (c) 2015, ARM Limited. All Rights Reserved.
6*17f65170SRuslan Bukin  */
7*17f65170SRuslan Bukin 
8*17f65170SRuslan Bukin 
9*17f65170SRuslan Bukin /*
10*17f65170SRuslan Bukin  * Redistribution and use in source and binary forms, with or without modification,
11*17f65170SRuslan Bukin  * are permitted provided that the following conditions are met:
12*17f65170SRuslan Bukin  *
13*17f65170SRuslan Bukin  * 1. Redistributions of source code must retain the above copyright notice,
14*17f65170SRuslan Bukin  * this list of conditions and the following disclaimer.
15*17f65170SRuslan Bukin  *
16*17f65170SRuslan Bukin  * 2. Redistributions in binary form must reproduce the above copyright notice,
17*17f65170SRuslan Bukin  * this list of conditions and the following disclaimer in the documentation
18*17f65170SRuslan Bukin  * and/or other materials provided with the distribution.
19*17f65170SRuslan Bukin  *
20*17f65170SRuslan Bukin  * 3. Neither the name of the copyright holder nor the names of its contributors
21*17f65170SRuslan Bukin  * may be used to endorse or promote products derived from this software without
22*17f65170SRuslan Bukin  * specific prior written permission.
23*17f65170SRuslan Bukin  *
24*17f65170SRuslan Bukin  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
25*17f65170SRuslan Bukin  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26*17f65170SRuslan Bukin  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27*17f65170SRuslan Bukin  * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
28*17f65170SRuslan Bukin  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29*17f65170SRuslan Bukin  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30*17f65170SRuslan Bukin  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31*17f65170SRuslan Bukin  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32*17f65170SRuslan Bukin  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33*17f65170SRuslan Bukin  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34*17f65170SRuslan Bukin  */
35*17f65170SRuslan Bukin 
36*17f65170SRuslan Bukin #include "opencsd/etmv3/trc_cmp_cfg_etmv3.h"
37*17f65170SRuslan Bukin 
EtmV3Config()38*17f65170SRuslan Bukin EtmV3Config::EtmV3Config()
39*17f65170SRuslan Bukin {
40*17f65170SRuslan Bukin     // defaults set ETMv3.4, V7A, instruction only.
41*17f65170SRuslan Bukin     m_cfg.arch_ver = ARCH_V7;
42*17f65170SRuslan Bukin     m_cfg.core_prof = profile_CortexA;
43*17f65170SRuslan Bukin     m_cfg.reg_ccer = 0;
44*17f65170SRuslan Bukin     m_cfg.reg_idr = 0x4100F240; // default trace IDR value
45*17f65170SRuslan Bukin     m_cfg.reg_ctrl = 0;
46*17f65170SRuslan Bukin }
47*17f65170SRuslan Bukin 
EtmV3Config(const ocsd_etmv3_cfg * cfg_regs)48*17f65170SRuslan Bukin EtmV3Config::EtmV3Config(const ocsd_etmv3_cfg *cfg_regs)
49*17f65170SRuslan Bukin {
50*17f65170SRuslan Bukin     m_cfg = *cfg_regs;
51*17f65170SRuslan Bukin }
52*17f65170SRuslan Bukin 
GetTraceMode() const53*17f65170SRuslan Bukin EtmV3Config::EtmTraceMode const EtmV3Config::GetTraceMode() const
54*17f65170SRuslan Bukin {
55*17f65170SRuslan Bukin     int mode = 0 + ( isDataValTrace() ? 1 : 0 ) + (isDataAddrTrace() ? 2 : 0) + (isInstrTrace() ? 0 : 3);
56*17f65170SRuslan Bukin     return (EtmTraceMode)mode;
57*17f65170SRuslan Bukin }
58*17f65170SRuslan Bukin 
CtxtIDBytes() const59*17f65170SRuslan Bukin const int EtmV3Config::CtxtIDBytes() const
60*17f65170SRuslan Bukin {
61*17f65170SRuslan Bukin     int ctxtIdsizes[] = { 0, 1, 2, 4 };
62*17f65170SRuslan Bukin     return ctxtIdsizes[(m_cfg.reg_ctrl >> 14) & 0x3];
63*17f65170SRuslan Bukin }
64*17f65170SRuslan Bukin 
65*17f65170SRuslan Bukin /* End of File trc_cmp_cfg_etmv3.cpp */
66