isa_traits.hh (6326:008930a4ace5) isa_traits.hh (6329:5d8b91875859)
1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 19 unchanged lines hidden (view full) ---

28 * Authors: Gabe Black
29 * Ali Saidi
30 */
31
32#ifndef __ARCH_SPARC_ISA_TRAITS_HH__
33#define __ARCH_SPARC_ISA_TRAITS_HH__
34
35#include "arch/sparc/types.hh"
1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 19 unchanged lines hidden (view full) ---

28 * Authors: Gabe Black
29 * Ali Saidi
30 */
31
32#ifndef __ARCH_SPARC_ISA_TRAITS_HH__
33#define __ARCH_SPARC_ISA_TRAITS_HH__
34
35#include "arch/sparc/types.hh"
36#include "arch/sparc/max_inst_regs.hh"
37#include "arch/sparc/sparc_traits.hh"
38#include "base/types.hh"
39#include "config/full_system.hh"
40
41class StaticInstPtr;
42
43namespace BigEndianGuest {}
44
45namespace SparcISA
46{
47 const int MachineBytes = 8;
48
49 //This makes sure the big endian versions of certain functions are used.
50 using namespace BigEndianGuest;
36#include "arch/sparc/sparc_traits.hh"
37#include "base/types.hh"
38#include "config/full_system.hh"
39
40class StaticInstPtr;
41
42namespace BigEndianGuest {}
43
44namespace SparcISA
45{
46 const int MachineBytes = 8;
47
48 //This makes sure the big endian versions of certain functions are used.
49 using namespace BigEndianGuest;
51 using SparcISAInst::MaxInstSrcRegs;
52 using SparcISAInst::MaxInstDestRegs;
53
54 // SPARC has a delay slot
55 #define ISA_HAS_DELAY_SLOT 1
56
57 // SPARC NOP (sethi %(hi(0), g0)
58 const MachInst NoopMachInst = 0x01000000;
59
50
51 // SPARC has a delay slot
52 #define ISA_HAS_DELAY_SLOT 1
53
54 // SPARC NOP (sethi %(hi(0), g0)
55 const MachInst NoopMachInst = 0x01000000;
56
60 // These enumerate all the registers for dependence tracking.
61 enum DependenceTags {
62 FP_Base_DepTag = 32*3+9,
63 Ctrl_Base_DepTag = FP_Base_DepTag + 64
64 };
65
66 // semantically meaningful register indices
67 const int ZeroReg = 0; // architecturally meaningful
68 // the rest of these depend on the ABI
69 const int ReturnAddressReg = 31; // post call, precall is 15
70 const int ReturnValueReg = 8; // Post return, 24 is pre-return.
71 const int StackPointerReg = 14;
72 const int FramePointerReg = 30;
73
74 // Some OS syscall use a second register (o1) to return a second value
75 const int SyscallPseudoReturnReg = 9;
76
77 //8K. This value is implmentation specific; and should probably
78 //be somewhere else.
79 const int LogVMPageSize = 13;
80 const int VMPageSize = (1 << LogVMPageSize);
81
82 // real address virtual mapping
83 // sort of like alpha super page, but less frequently used
84 const Addr SegKPMEnd = ULL(0xfffffffc00000000);

--- 39 unchanged lines hidden ---
57 //8K. This value is implmentation specific; and should probably
58 //be somewhere else.
59 const int LogVMPageSize = 13;
60 const int VMPageSize = (1 << LogVMPageSize);
61
62 // real address virtual mapping
63 // sort of like alpha super page, but less frequently used
64 const Addr SegKPMEnd = ULL(0xfffffffc00000000);

--- 39 unchanged lines hidden ---