/* * Copyright (c) 2007-2008 The Florida State University * Copyright (c) 2009 The University of Edinburgh * Copyright (c) 2021 IBM Corporation * All rights reserved. * * 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. */ #ifndef __POWER_PROCESS_HH__ #define __POWER_PROCESS_HH__ #include "sim/process.hh" namespace gem5 { GEM5_DEPRECATED_NAMESPACE(Loader, loader); namespace loader { class ObjectFile; } // namespace loader class PowerProcess : public Process { protected: void initState() override; public: PowerProcess(const ProcessParams ¶ms, loader::ObjectFile *objFile); template void argsInit(int pageSize); }; } // namespace gem5 enum PowerHWCAPFeature { HWCAP_FEATURE_32 = 1ULL << 31, // Always set for powerpc64 HWCAP_FEATURE_64 = 1ULL << 30, // Always set for powerpc64 HWCAP_FEATURE_HAS_ALTIVEC = 1ULL << 28, HWCAP_FEATURE_HAS_FPU = 1ULL << 27, HWCAP_FEATURE_HAS_MMU = 1ULL << 26, HWCAP_FEATURE_UNIFIED_CACHE = 1ULL << 24, HWCAP_FEATURE_NO_TB = 1ULL << 20, // 601/403gx have no timebase HWCAP_FEATURE_POWER4 = 1ULL << 19, // POWER4 ISA 2.00 HWCAP_FEATURE_POWER5 = 1ULL << 18, // POWER5 ISA 2.02 HWCAP_FEATURE_POWER5_PLUS = 1ULL << 17, // POWER5+ ISA 2.03 HWCAP_FEATURE_CELL_BE = 1ULL << 16, // CELL Broadband Engine HWCAP_FEATURE_BOOKE = 1ULL << 15, // ISA Category Embedded HWCAP_FEATURE_SMT = 1ULL << 14, // Simultaneous Multi-Threading HWCAP_FEATURE_ICACHE_SNOOP = 1ULL << 13, HWCAP_FEATURE_ARCH_2_05 = 1ULL << 12, // ISA 2.05 HWCAP_FEATURE_PA6T = 1ULL << 11, // PA Semi 6T Core HWCAP_FEATURE_HAS_DFP = 1ULL << 10, // Decimal FP Unit HWCAP_FEATURE_POWER6_EXT = 1ULL << 9, // P6 + mffgpr/mftgpr HWCAP_FEATURE_ARCH_2_06 = 1ULL << 8, // ISA 2.06 HWCAP_FEATURE_HAS_VSX = 1ULL << 7, // P7 Vector Extension HWCAP_FEATURE_PSERIES_PERFMON_COMPAT = 1ULL << 6, HWCAP_FEATURE_TRUE_LE = 1ULL << 1, HWCAP_FEATURE_PPC_LE = 1ULL << 0 }; enum PowerHWCAP2Feature { HWCAP2_FEATURE_ARCH_2_07 = 1ULL << 31, // ISA 2.07 HWCAP2_FEATURE_HAS_HTM = 1ULL << 30, // Hardware Transactional Memory HWCAP2_FEATURE_HAS_DSCR = 1ULL << 29, // Data Stream Control Register HWCAP2_FEATURE_HAS_EBB = 1ULL << 28, // Event Base Branching HWCAP2_FEATURE_HAS_ISEL = 1ULL << 27, // Integer Select HWCAP2_FEATURE_HAS_TAR = 1ULL << 26, // Target Address Register HWCAP2_FEATURE_HAS_VCRYPTO = 1ULL << 25, // Vector AES category HWCAP2_FEATURE_HTM_NOSC = 1ULL << 24, HWCAP2_FEATURE_ARCH_3_00 = 1ULL << 23, // ISA 3.0 HWCAP2_FEATURE_HAS_IEEE128 = 1ULL << 22, // VSX IEEE Binary Float 128-bit }; #endif // __POWER_PROCESS_HH__