# -*- mode:python -*-

# Copyright (c) 2009, 2012-2013, 2020 ARM Limited
# All rights reserved.
#
# The license below extends only to copyright in the software and shall
# not be construed as granting a license to any other intellectual
# property including but not limited to intellectual property relating
# to a hardware implementation of the functionality of the software
# licensed hereunder.  You may use the software subject to the license
# terms below provided that you ensure that this notice is replicated
# unmodified and in its entirety in all distributions of the software,
# modified or unmodified, in source code or in binary form.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met: redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer;
# redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution;
# neither the name of the copyright holders nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Import('*')

SimObject('AbstractNVM.py', sim_objects=['AbstractNVM'], tags='arm isa')
SimObject('Display.py', sim_objects=['Display'], tags='arm isa')
SimObject('Doorbell.py', sim_objects=['Doorbell'], tags='arm isa')
SimObject('FlashDevice.py', sim_objects=['FlashDevice'],
        enums=['DataDistribution'], tags='arm isa')
SimObject('GenericTimer.py', sim_objects=[
    'SystemCounter', 'GenericTimer', 'GenericTimerFrame',
    'GenericTimerMem'], tags='arm isa')
SimObject('Gic.py', sim_objects=[
    'BaseGic', 'ArmInterruptPin', 'ArmSPI', 'ArmPPI', 'ArmSigInterruptPin',
    'GicV2', 'Gicv2mFrame', 'Gicv2m', 'VGic', 'Gicv3Its', 'Gicv3'],
    enums=['ArmInterruptType'], tags='arm isa')
SimObject('RealView.py', sim_objects=[
    'AmbaPioDevice', 'AmbaIntDevice', 'AmbaDmaDevice', 'A9SCU',
    'GenericArmPciHost', 'RealViewCtrl', 'RealViewOsc',
    'RealViewTemperatureSensor', 'AmbaFake', 'Pl011', 'Sp804', 'Sp805',
    'GenericWatchdog', 'CpuLocalTimer', 'PL031', 'Pl050', 'Pl111', 'HDLcd',
    'FVPBasePwrCtrl', 'RealView'],
    enums=['ArmPciIntRouting'], tags='arm isa')
SimObject('SMMUv3.py', sim_objects=['SMMUv3DeviceInterface', 'SMMUv3'],
    tags='arm isa')
SimObject('UFSHostDevice.py', sim_objects=['UFSHostDevice'], tags='arm isa')
SimObject('EnergyCtrl.py', sim_objects=['EnergyCtrl'], tags='arm isa')
SimObject('NoMali.py', sim_objects=['NoMaliGpu', 'CustomNoMaliGpu'],
    enums=['NoMaliGpuType'], tags='arm isa')
SimObject('VirtIOMMIO.py', sim_objects=['MmioVirtIO'], tags='arm isa')
if env['USE_ARM_FASTMODEL']:
    SimObject('VExpressFastmodel.py', tags='arm isa')

Source('a9scu.cc', tags='arm isa')
Source('amba_device.cc', tags='arm isa')
Source('amba_fake.cc', tags='arm isa')
Source('base_gic.cc', tags='arm isa')
Source('display.cc', tags='arm isa')
Source('flash_device.cc', tags='arm isa')
Source('generic_timer.cc', tags='arm isa')
Source('gic_v2.cc', tags='arm isa')
Source('gic_v2m.cc', tags='arm isa')
Source('gic_v3.cc', tags='arm isa')
Source('gic_v3_cpu_interface.cc', tags='arm isa')
Source('gic_v3_distributor.cc', tags='arm isa')
Source('gic_v3_redistributor.cc', tags='arm isa')
Source('gic_v3_its.cc', tags='arm isa')
Source('pl011.cc', tags='arm isa')
Source('pl111.cc', tags='arm isa')
Source('hdlcd.cc', tags='arm isa')
Source('kmi.cc', tags='arm isa')
Source('smmu_v3.cc', tags='arm isa');
Source('smmu_v3_caches.cc', tags='arm isa');
Source('smmu_v3_cmdexec.cc', tags='arm isa');
Source('smmu_v3_events.cc', tags='arm isa');
Source('smmu_v3_ports.cc', tags='arm isa');
Source('smmu_v3_proc.cc', tags='arm isa');
Source('smmu_v3_deviceifc.cc', tags='arm isa');
Source('smmu_v3_transl.cc', tags='arm isa');
Source('timer_sp804.cc', tags='arm isa')
Source('watchdog_generic.cc', tags='arm isa')
Source('watchdog_sp805.cc', tags='arm isa')
Source('gpu_nomali.cc', tags='arm isa')
Source('pci_host.cc', tags='arm isa')
Source('rv_ctrl.cc', tags='arm isa')
Source('realview.cc', tags='arm isa')
Source('rtc_pl031.cc', tags='arm isa')
Source('timer_cpulocal.cc', tags='arm isa')
Source('vgic.cc', tags='arm isa')
Source('vio_mmio.cc', tags='arm isa')
Source('ufs_device.cc', tags='arm isa')
Source('energy_ctrl.cc', tags='arm isa')
Source('fvp_base_pwr_ctrl.cc', tags='arm isa')

DebugFlag('AMBA', tags='arm isa')
DebugFlag('FlashDevice', tags='arm isa')
DebugFlag('HDLcd', tags='arm isa')
DebugFlag('PL111', tags='arm isa')
DebugFlag('GICV2M', tags='arm isa')
DebugFlag('Pl050', tags='arm isa')
DebugFlag('GIC', tags='arm isa')
DebugFlag('ITS', tags='arm isa')
DebugFlag('RVCTRL', tags='arm isa')
DebugFlag('SMMUv3', tags='arm isa')
DebugFlag('SMMUv3Hazard', tags='arm isa')
DebugFlag('Sp805', tags='arm isa')
DebugFlag('EnergyCtrl', tags='arm isa')
DebugFlag('FVPBasePwrCtrl', tags='arm isa')
DebugFlag('UFSHostDevice', tags='arm isa')
DebugFlag('VGIC', tags='arm isa')
DebugFlag('NoMali', tags='arm isa')
