utility.hh (4240:cde9d7751cce) | utility.hh (4661:44458219add1) |
---|---|
1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007 MIPS Technologies, Inc. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright --- 21 unchanged lines hidden (view full) --- 30 * Steve Reinhardt 31 * Korey Sewell 32 */ 33 34#ifndef __ARCH_MIPS_UTILITY_HH__ 35#define __ARCH_MIPS_UTILITY_HH__ 36 37#include "arch/mips/types.hh" | 1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007 MIPS Technologies, Inc. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright --- 21 unchanged lines hidden (view full) --- 30 * Steve Reinhardt 31 * Korey Sewell 32 */ 33 34#ifndef __ARCH_MIPS_UTILITY_HH__ 35#define __ARCH_MIPS_UTILITY_HH__ 36 37#include "arch/mips/types.hh" |
38#include "arch/mips/isa_traits.hh" |
|
38#include "base/misc.hh" 39#include "config/full_system.hh" | 39#include "base/misc.hh" 40#include "config/full_system.hh" |
40#include "cpu/thread_context.hh" | |
41//XXX This is needed for size_t. We should use something other than size_t 42//#include "kern/linux/linux.hh" 43#include "sim/host.hh" 44 | 41//XXX This is needed for size_t. We should use something other than size_t 42//#include "kern/linux/linux.hh" 43#include "sim/host.hh" 44 |
45#include "cpu/thread_context.hh" 46 |
|
45class ThreadContext; 46 47namespace MipsISA { 48 49 //Floating Point Utility Functions 50 uint64_t fpConvert(ConvertType cvt_type, double fp_val); 51 double roundFP(double val, int digits); 52 double truncFP(double val); --- 8 unchanged lines hidden (view full) --- 61 62 /** 63 * Function to insure ISA semantics about 0 registers. 64 * @param tc The thread context. 65 */ 66 template <class TC> 67 void zeroRegisters(TC *tc); 68 | 47class ThreadContext; 48 49namespace MipsISA { 50 51 //Floating Point Utility Functions 52 uint64_t fpConvert(ConvertType cvt_type, double fp_val); 53 double roundFP(double val, int digits); 54 double truncFP(double val); --- 8 unchanged lines hidden (view full) --- 63 64 /** 65 * Function to insure ISA semantics about 0 registers. 66 * @param tc The thread context. 67 */ 68 template <class TC> 69 void zeroRegisters(TC *tc); 70 |
71 void startupCPU(ThreadContext *tc, int cpuId); 72 |
|
69 void copyRegs(ThreadContext *src, ThreadContext *dest); 70 71 // Instruction address compression hooks 72 static inline Addr realPCToFetchPC(const Addr &addr) { 73 return addr; 74 } 75 76 static inline Addr fetchPCToRealPC(const Addr &addr) { --- 6 unchanged lines hidden (view full) --- 83 return sizeof(MachInst); 84 } 85 86 static inline MachInst makeRegisterCopy(int dest, int src) { 87 panic("makeRegisterCopy not implemented"); 88 return 0; 89 } 90 | 73 void copyRegs(ThreadContext *src, ThreadContext *dest); 74 75 // Instruction address compression hooks 76 static inline Addr realPCToFetchPC(const Addr &addr) { 77 return addr; 78 } 79 80 static inline Addr fetchPCToRealPC(const Addr &addr) { --- 6 unchanged lines hidden (view full) --- 87 return sizeof(MachInst); 88 } 89 90 static inline MachInst makeRegisterCopy(int dest, int src) { 91 panic("makeRegisterCopy not implemented"); 92 return 0; 93 } 94 |
91 inline void startupCPU(ThreadContext *tc, int cpuId) 92 { 93 tc->activate(0); | 95 static inline ExtMachInst 96 makeExtMI(MachInst inst, ThreadContext * xc) { 97#if FULL_SYSTEM 98 ExtMachInst ext_inst = inst; 99 if (xc->readPC() && 0x1) 100 return ext_inst|=(static_cast<ExtMachInst>(xc->readPC() & 0x1) << 32); 101 else 102 return ext_inst; 103#else 104 return ExtMachInst(inst); 105#endif |
94 } 95}; 96 97 98#endif | 106 } 107}; 108 109 110#endif |