style: Remove non-leading tabs everywhere they shouldn't be. Developers should configure their editors to not insert tabs

This commit is contained in:
Ali Saidi 2008-09-10 14:26:15 -04:00
parent 09a8fb0b52
commit 3a3e356f4e
125 changed files with 2209 additions and 2209 deletions

View file

@ -59,46 +59,46 @@ Benchmarks = {
'PovrayBench': [SysConfig('povray-bench.rcS', '512MB', 'povray.img')], 'PovrayBench': [SysConfig('povray-bench.rcS', '512MB', 'povray.img')],
'PovrayAutumn': [SysConfig('povray-autumn.rcS', '512MB', 'povray.img')], 'PovrayAutumn': [SysConfig('povray-autumn.rcS', '512MB', 'povray.img')],
'NetperfStream': [SysConfig('netperf-stream-client.rcS'), 'NetperfStream': [SysConfig('netperf-stream-client.rcS'),
SysConfig('netperf-server.rcS')], SysConfig('netperf-server.rcS')],
'NetperfStreamUdp': [SysConfig('netperf-stream-udp-client.rcS'), 'NetperfStreamUdp': [SysConfig('netperf-stream-udp-client.rcS'),
SysConfig('netperf-server.rcS')], SysConfig('netperf-server.rcS')],
'NetperfUdpLocal': [SysConfig('netperf-stream-udp-local.rcS')], 'NetperfUdpLocal': [SysConfig('netperf-stream-udp-local.rcS')],
'NetperfStreamNT': [SysConfig('netperf-stream-nt-client.rcS'), 'NetperfStreamNT': [SysConfig('netperf-stream-nt-client.rcS'),
SysConfig('netperf-server.rcS')], SysConfig('netperf-server.rcS')],
'NetperfMaerts': [SysConfig('netperf-maerts-client.rcS'), 'NetperfMaerts': [SysConfig('netperf-maerts-client.rcS'),
SysConfig('netperf-server.rcS')], SysConfig('netperf-server.rcS')],
'SurgeStandard': [SysConfig('surge-server.rcS', '512MB'), 'SurgeStandard': [SysConfig('surge-server.rcS', '512MB'),
SysConfig('surge-client.rcS', '256MB')], SysConfig('surge-client.rcS', '256MB')],
'SurgeSpecweb': [SysConfig('spec-surge-server.rcS', '512MB'), 'SurgeSpecweb': [SysConfig('spec-surge-server.rcS', '512MB'),
SysConfig('spec-surge-client.rcS', '256MB')], SysConfig('spec-surge-client.rcS', '256MB')],
'Nhfsstone': [SysConfig('nfs-server-nhfsstone.rcS', '512MB'), 'Nhfsstone': [SysConfig('nfs-server-nhfsstone.rcS', '512MB'),
SysConfig('nfs-client-nhfsstone.rcS')], SysConfig('nfs-client-nhfsstone.rcS')],
'Nfs': [SysConfig('nfs-server.rcS', '900MB'), 'Nfs': [SysConfig('nfs-server.rcS', '900MB'),
SysConfig('nfs-client-dbench.rcS')], SysConfig('nfs-client-dbench.rcS')],
'NfsTcp': [SysConfig('nfs-server.rcS', '900MB'), 'NfsTcp': [SysConfig('nfs-server.rcS', '900MB'),
SysConfig('nfs-client-tcp.rcS')], SysConfig('nfs-client-tcp.rcS')],
'IScsiInitiator': [SysConfig('iscsi-client.rcS', '512MB'), 'IScsiInitiator': [SysConfig('iscsi-client.rcS', '512MB'),
SysConfig('iscsi-server.rcS', '512MB')], SysConfig('iscsi-server.rcS', '512MB')],
'IScsiTarget': [SysConfig('iscsi-server.rcS', '512MB'), 'IScsiTarget': [SysConfig('iscsi-server.rcS', '512MB'),
SysConfig('iscsi-client.rcS', '512MB')], SysConfig('iscsi-client.rcS', '512MB')],
'Validation': [SysConfig('iscsi-server.rcS', '512MB'), 'Validation': [SysConfig('iscsi-server.rcS', '512MB'),
SysConfig('iscsi-client.rcS', '512MB')], SysConfig('iscsi-client.rcS', '512MB')],
'Ping': [SysConfig('ping-server.rcS',), 'Ping': [SysConfig('ping-server.rcS',),
SysConfig('ping-client.rcS')], SysConfig('ping-client.rcS')],
'ValAccDelay': [SysConfig('devtime.rcS', '512MB')], 'ValAccDelay': [SysConfig('devtime.rcS', '512MB')],
'ValAccDelay2': [SysConfig('devtimewmr.rcS', '512MB')], 'ValAccDelay2': [SysConfig('devtimewmr.rcS', '512MB')],
'ValMemLat': [SysConfig('micro_memlat.rcS', '512MB')], 'ValMemLat': [SysConfig('micro_memlat.rcS', '512MB')],
'ValMemLat2MB': [SysConfig('micro_memlat2mb.rcS', '512MB')], 'ValMemLat2MB': [SysConfig('micro_memlat2mb.rcS', '512MB')],
'ValMemLat8MB': [SysConfig('micro_memlat8mb.rcS', '512MB')], 'ValMemLat8MB': [SysConfig('micro_memlat8mb.rcS', '512MB')],
'ValMemLat': [SysConfig('micro_memlat8.rcS', '512MB')], 'ValMemLat': [SysConfig('micro_memlat8.rcS', '512MB')],
'ValTlbLat': [SysConfig('micro_tlblat.rcS', '512MB')], 'ValTlbLat': [SysConfig('micro_tlblat.rcS', '512MB')],
'ValSysLat': [SysConfig('micro_syscall.rcS', '512MB')], 'ValSysLat': [SysConfig('micro_syscall.rcS', '512MB')],
'ValCtxLat': [SysConfig('micro_ctx.rcS', '512MB')], 'ValCtxLat': [SysConfig('micro_ctx.rcS', '512MB')],
'ValStream': [SysConfig('micro_stream.rcS', '512MB')], 'ValStream': [SysConfig('micro_stream.rcS', '512MB')],
'ValStreamScale': [SysConfig('micro_streamscale.rcS', '512MB')], 'ValStreamScale': [SysConfig('micro_streamscale.rcS', '512MB')],
'ValStreamCopy': [SysConfig('micro_streamcopy.rcS', '512MB')], 'ValStreamCopy': [SysConfig('micro_streamcopy.rcS', '512MB')],
'MutexTest': [SysConfig('mutex-test.rcS', '128MB')], 'MutexTest': [SysConfig('mutex-test.rcS', '128MB')],

View file

@ -36,35 +36,35 @@
/// Funky Alpha 64-bit a.out header used for PAL code. /// Funky Alpha 64-bit a.out header used for PAL code.
/// ///
struct aout_exechdr { struct aout_exechdr {
uint16_t magic; ///< magic number uint16_t magic; ///< magic number
uint16_t vstamp; ///< version stamp? uint16_t vstamp; ///< version stamp?
uint16_t bldrev; ///< ??? uint16_t bldrev; ///< ???
uint16_t padcell; ///< padding uint16_t padcell; ///< padding
uint64_t tsize; ///< text segment size uint64_t tsize; ///< text segment size
uint64_t dsize; ///< data segment size uint64_t dsize; ///< data segment size
uint64_t bsize; ///< bss segment size uint64_t bsize; ///< bss segment size
uint64_t entry; ///< entry point uint64_t entry; ///< entry point
uint64_t text_start; ///< text base address uint64_t text_start; ///< text base address
uint64_t data_start; ///< data base address uint64_t data_start; ///< data base address
uint64_t bss_start; ///< bss base address uint64_t bss_start; ///< bss base address
uint32_t gprmask; ///< GPR mask (unused, AFAIK) uint32_t gprmask; ///< GPR mask (unused, AFAIK)
uint32_t fprmask; ///< FPR mask (unused, AFAIK) uint32_t fprmask; ///< FPR mask (unused, AFAIK)
uint64_t gp_value; ///< global pointer reg value uint64_t gp_value; ///< global pointer reg value
}; };
#define AOUT_LDPGSZ 8192 #define AOUT_LDPGSZ 8192
#define N_GETMAGIC(ex) ((ex).magic) #define N_GETMAGIC(ex) ((ex).magic)
#define N_BADMAX #define N_BADMAX
#define N_TXTADDR(ex) ((ex).text_start) #define N_TXTADDR(ex) ((ex).text_start)
#define N_DATADDR(ex) ((ex).data_start) #define N_DATADDR(ex) ((ex).data_start)
#define N_BSSADDR(ex) ((ex).bss_start) #define N_BSSADDR(ex) ((ex).bss_start)
#define N_TXTOFF(ex) \ #define N_TXTOFF(ex) \
(N_GETMAGIC(ex) == ZMAGIC ? 0 : sizeof(struct aout_exechdr)) (N_GETMAGIC(ex) == ZMAGIC ? 0 : sizeof(struct aout_exechdr))
#define N_DATOFF(ex) N_ALIGN(ex, N_TXTOFF(ex) + (ex).tsize) #define N_DATOFF(ex) N_ALIGN(ex, N_TXTOFF(ex) + (ex).tsize)
#endif /* !__AOUT_MACHDEP_H__*/ #endif /* !__AOUT_MACHDEP_H__*/

View file

@ -176,7 +176,7 @@ AlphaISA::initIPRs(ThreadContext *tc, int cpuId)
AlphaISA::MiscReg AlphaISA::MiscReg
AlphaISA::MiscRegFile::readIpr(int idx, ThreadContext *tc) AlphaISA::MiscRegFile::readIpr(int idx, ThreadContext *tc)
{ {
uint64_t retval = 0; // return value, default 0 uint64_t retval = 0; // return value, default 0
switch (idx) { switch (idx) {
case AlphaISA::IPR_PALtemp0: case AlphaISA::IPR_PALtemp0:

View file

@ -52,8 +52,8 @@ namespace AlphaISA
public: public:
union { union {
uint64_t q[NumFloatRegs]; // integer qword view uint64_t q[NumFloatRegs]; // integer qword view
double d[NumFloatRegs]; // double-precision floating point view double d[NumFloatRegs]; // double-precision floating point view
}; };
void serialize(std::ostream &os); void serialize(std::ostream &os);

View file

@ -38,89 +38,89 @@ namespace AlphaISA
md_ipr_names MiscRegIndexToIpr[NumInternalProcRegs] = md_ipr_names MiscRegIndexToIpr[NumInternalProcRegs] =
{ {
//Write only //Write only
RAW_IPR_HWINT_CLR, // H/W interrupt clear register RAW_IPR_HWINT_CLR, // H/W interrupt clear register
RAW_IPR_SL_XMIT, // serial line transmit register RAW_IPR_SL_XMIT, // serial line transmit register
RAW_IPR_DC_FLUSH, RAW_IPR_DC_FLUSH,
RAW_IPR_IC_FLUSH, // instruction cache flush control RAW_IPR_IC_FLUSH, // instruction cache flush control
RAW_IPR_ALT_MODE, // alternate mode register RAW_IPR_ALT_MODE, // alternate mode register
RAW_IPR_DTB_IA, // DTLB invalidate all register RAW_IPR_DTB_IA, // DTLB invalidate all register
RAW_IPR_DTB_IAP, // DTLB invalidate all process register RAW_IPR_DTB_IAP, // DTLB invalidate all process register
RAW_IPR_ITB_IA, // ITLB invalidate all register RAW_IPR_ITB_IA, // ITLB invalidate all register
RAW_IPR_ITB_IAP, // ITLB invalidate all process register RAW_IPR_ITB_IAP, // ITLB invalidate all process register
//Read only //Read only
RAW_IPR_INTID, // interrupt ID register RAW_IPR_INTID, // interrupt ID register
RAW_IPR_SL_RCV, // serial line receive register RAW_IPR_SL_RCV, // serial line receive register
RAW_IPR_MM_STAT, // data MMU fault status register RAW_IPR_MM_STAT, // data MMU fault status register
RAW_IPR_ITB_PTE_TEMP, // ITLB page table entry temp register RAW_IPR_ITB_PTE_TEMP, // ITLB page table entry temp register
RAW_IPR_DTB_PTE_TEMP, // DTLB page table entry temporary register RAW_IPR_DTB_PTE_TEMP, // DTLB page table entry temporary register
RAW_IPR_ISR, // interrupt summary register RAW_IPR_ISR, // interrupt summary register
RAW_IPR_ITB_TAG, // ITLB tag register RAW_IPR_ITB_TAG, // ITLB tag register
RAW_IPR_ITB_PTE, // ITLB page table entry register RAW_IPR_ITB_PTE, // ITLB page table entry register
RAW_IPR_ITB_ASN, // ITLB address space register RAW_IPR_ITB_ASN, // ITLB address space register
RAW_IPR_ITB_IS, // ITLB invalidate select register RAW_IPR_ITB_IS, // ITLB invalidate select register
RAW_IPR_SIRR, // software interrupt request register RAW_IPR_SIRR, // software interrupt request register
RAW_IPR_ASTRR, // asynchronous system trap request register RAW_IPR_ASTRR, // asynchronous system trap request register
RAW_IPR_ASTER, // asynchronous system trap enable register RAW_IPR_ASTER, // asynchronous system trap enable register
RAW_IPR_EXC_ADDR, // exception address register RAW_IPR_EXC_ADDR, // exception address register
RAW_IPR_EXC_SUM, // exception summary register RAW_IPR_EXC_SUM, // exception summary register
RAW_IPR_EXC_MASK, // exception mask register RAW_IPR_EXC_MASK, // exception mask register
RAW_IPR_PAL_BASE, // PAL base address register RAW_IPR_PAL_BASE, // PAL base address register
RAW_IPR_ICM, // instruction current mode RAW_IPR_ICM, // instruction current mode
RAW_IPR_IPLR, // interrupt priority level register RAW_IPR_IPLR, // interrupt priority level register
RAW_IPR_IFAULT_VA_FORM, // formatted faulting virtual addr register RAW_IPR_IFAULT_VA_FORM, // formatted faulting virtual addr register
RAW_IPR_IVPTBR, // virtual page table base register RAW_IPR_IVPTBR, // virtual page table base register
RAW_IPR_ICSR, // instruction control and status register RAW_IPR_ICSR, // instruction control and status register
RAW_IPR_IC_PERR_STAT, // inst cache parity error status register RAW_IPR_IC_PERR_STAT, // inst cache parity error status register
RAW_IPR_PMCTR, // performance counter register RAW_IPR_PMCTR, // performance counter register
// PAL temporary registers... // PAL temporary registers...
// register meanings gleaned from osfpal.s source code // register meanings gleaned from osfpal.s source code
RAW_IPR_PALtemp0, // local scratch RAW_IPR_PALtemp0, // local scratch
RAW_IPR_PALtemp1, // local scratch RAW_IPR_PALtemp1, // local scratch
RAW_IPR_PALtemp2, // entUna RAW_IPR_PALtemp2, // entUna
RAW_IPR_PALtemp3, // CPU specific impure area pointer RAW_IPR_PALtemp3, // CPU specific impure area pointer
RAW_IPR_PALtemp4, // memory management temp RAW_IPR_PALtemp4, // memory management temp
RAW_IPR_PALtemp5, // memory management temp RAW_IPR_PALtemp5, // memory management temp
RAW_IPR_PALtemp6, // memory management temp RAW_IPR_PALtemp6, // memory management temp
RAW_IPR_PALtemp7, // entIF RAW_IPR_PALtemp7, // entIF
RAW_IPR_PALtemp8, // intmask RAW_IPR_PALtemp8, // intmask
RAW_IPR_PALtemp9, // entSys RAW_IPR_PALtemp9, // entSys
RAW_IPR_PALtemp10, // ?? RAW_IPR_PALtemp10, // ??
RAW_IPR_PALtemp11, // entInt RAW_IPR_PALtemp11, // entInt
RAW_IPR_PALtemp12, // entArith RAW_IPR_PALtemp12, // entArith
RAW_IPR_PALtemp13, // reserved for platform specific PAL RAW_IPR_PALtemp13, // reserved for platform specific PAL
RAW_IPR_PALtemp14, // reserved for platform specific PAL RAW_IPR_PALtemp14, // reserved for platform specific PAL
RAW_IPR_PALtemp15, // reserved for platform specific PAL RAW_IPR_PALtemp15, // reserved for platform specific PAL
RAW_IPR_PALtemp16, // scratch / whami<7:0> / mces<4:0> RAW_IPR_PALtemp16, // scratch / whami<7:0> / mces<4:0>
RAW_IPR_PALtemp17, // sysval RAW_IPR_PALtemp17, // sysval
RAW_IPR_PALtemp18, // usp RAW_IPR_PALtemp18, // usp
RAW_IPR_PALtemp19, // ksp RAW_IPR_PALtemp19, // ksp
RAW_IPR_PALtemp20, // PTBR RAW_IPR_PALtemp20, // PTBR
RAW_IPR_PALtemp21, // entMM RAW_IPR_PALtemp21, // entMM
RAW_IPR_PALtemp22, // kgp RAW_IPR_PALtemp22, // kgp
RAW_IPR_PALtemp23, // PCBB RAW_IPR_PALtemp23, // PCBB
RAW_IPR_DTB_ASN, // DTLB address space number register RAW_IPR_DTB_ASN, // DTLB address space number register
RAW_IPR_DTB_CM, // DTLB current mode register RAW_IPR_DTB_CM, // DTLB current mode register
RAW_IPR_DTB_TAG, // DTLB tag register RAW_IPR_DTB_TAG, // DTLB tag register
RAW_IPR_DTB_PTE, // DTLB page table entry register RAW_IPR_DTB_PTE, // DTLB page table entry register
RAW_IPR_VA, // fault virtual address register RAW_IPR_VA, // fault virtual address register
RAW_IPR_VA_FORM, // formatted virtual address register RAW_IPR_VA_FORM, // formatted virtual address register
RAW_IPR_MVPTBR, // MTU virtual page table base register RAW_IPR_MVPTBR, // MTU virtual page table base register
RAW_IPR_DTB_IS, // DTLB invalidate single register RAW_IPR_DTB_IS, // DTLB invalidate single register
RAW_IPR_CC, // cycle counter register RAW_IPR_CC, // cycle counter register
RAW_IPR_CC_CTL, // cycle counter control register RAW_IPR_CC_CTL, // cycle counter control register
RAW_IPR_MCSR, // MTU control register RAW_IPR_MCSR, // MTU control register
RAW_IPR_DC_PERR_STAT, // Dcache parity error status register RAW_IPR_DC_PERR_STAT, // Dcache parity error status register
RAW_IPR_DC_TEST_CTL, // Dcache test tag control register RAW_IPR_DC_TEST_CTL, // Dcache test tag control register
RAW_IPR_DC_TEST_TAG, // Dcache test tag register RAW_IPR_DC_TEST_TAG, // Dcache test tag register
RAW_IPR_DC_TEST_TAG_TEMP, // Dcache test tag temporary register RAW_IPR_DC_TEST_TAG_TEMP, // Dcache test tag temporary register
RAW_IPR_DC_MODE, // Dcache mode register RAW_IPR_DC_MODE, // Dcache mode register
RAW_IPR_MAF_MODE // miss address file mode register RAW_IPR_MAF_MODE // miss address file mode register
}; };
int IprToMiscRegIndex[MaxInternalProcRegs]; int IprToMiscRegIndex[MaxInternalProcRegs];

View file

@ -40,88 +40,88 @@ namespace AlphaISA
// //
enum md_ipr_names enum md_ipr_names
{ {
RAW_IPR_ISR = 0x100, // interrupt summary register RAW_IPR_ISR = 0x100, // interrupt summary register
RAW_IPR_ITB_TAG = 0x101, // ITLB tag register RAW_IPR_ITB_TAG = 0x101, // ITLB tag register
RAW_IPR_ITB_PTE = 0x102, // ITLB page table entry register RAW_IPR_ITB_PTE = 0x102, // ITLB page table entry register
RAW_IPR_ITB_ASN = 0x103, // ITLB address space register RAW_IPR_ITB_ASN = 0x103, // ITLB address space register
RAW_IPR_ITB_PTE_TEMP = 0x104, // ITLB page table entry temp register RAW_IPR_ITB_PTE_TEMP = 0x104, // ITLB page table entry temp register
RAW_IPR_ITB_IA = 0x105, // ITLB invalidate all register RAW_IPR_ITB_IA = 0x105, // ITLB invalidate all register
RAW_IPR_ITB_IAP = 0x106, // ITLB invalidate all process register RAW_IPR_ITB_IAP = 0x106, // ITLB invalidate all process register
RAW_IPR_ITB_IS = 0x107, // ITLB invalidate select register RAW_IPR_ITB_IS = 0x107, // ITLB invalidate select register
RAW_IPR_SIRR = 0x108, // software interrupt request register RAW_IPR_SIRR = 0x108, // software interrupt request register
RAW_IPR_ASTRR = 0x109, // asynchronous system trap request register RAW_IPR_ASTRR = 0x109, // asynchronous system trap request register
RAW_IPR_ASTER = 0x10a, // asynchronous system trap enable register RAW_IPR_ASTER = 0x10a, // asynchronous system trap enable register
RAW_IPR_EXC_ADDR = 0x10b, // exception address register RAW_IPR_EXC_ADDR = 0x10b, // exception address register
RAW_IPR_EXC_SUM = 0x10c, // exception summary register RAW_IPR_EXC_SUM = 0x10c, // exception summary register
RAW_IPR_EXC_MASK = 0x10d, // exception mask register RAW_IPR_EXC_MASK = 0x10d, // exception mask register
RAW_IPR_PAL_BASE = 0x10e, // PAL base address register RAW_IPR_PAL_BASE = 0x10e, // PAL base address register
RAW_IPR_ICM = 0x10f, // instruction current mode RAW_IPR_ICM = 0x10f, // instruction current mode
RAW_IPR_IPLR = 0x110, // interrupt priority level register RAW_IPR_IPLR = 0x110, // interrupt priority level register
RAW_IPR_INTID = 0x111, // interrupt ID register RAW_IPR_INTID = 0x111, // interrupt ID register
RAW_IPR_IFAULT_VA_FORM = 0x112, // formatted faulting virtual addr register RAW_IPR_IFAULT_VA_FORM = 0x112, // formatted faulting virtual addr register
RAW_IPR_IVPTBR = 0x113, // virtual page table base register RAW_IPR_IVPTBR = 0x113, // virtual page table base register
RAW_IPR_HWINT_CLR = 0x115, // H/W interrupt clear register RAW_IPR_HWINT_CLR = 0x115, // H/W interrupt clear register
RAW_IPR_SL_XMIT = 0x116, // serial line transmit register RAW_IPR_SL_XMIT = 0x116, // serial line transmit register
RAW_IPR_SL_RCV = 0x117, // serial line receive register RAW_IPR_SL_RCV = 0x117, // serial line receive register
RAW_IPR_ICSR = 0x118, // instruction control and status register RAW_IPR_ICSR = 0x118, // instruction control and status register
RAW_IPR_IC_FLUSH = 0x119, // instruction cache flush control RAW_IPR_IC_FLUSH = 0x119, // instruction cache flush control
RAW_IPR_IC_PERR_STAT = 0x11a, // inst cache parity error status register RAW_IPR_IC_PERR_STAT = 0x11a, // inst cache parity error status register
RAW_IPR_PMCTR = 0x11c, // performance counter register RAW_IPR_PMCTR = 0x11c, // performance counter register
// PAL temporary registers... // PAL temporary registers...
// register meanings gleaned from osfpal.s source code // register meanings gleaned from osfpal.s source code
RAW_IPR_PALtemp0 = 0x140, // local scratch RAW_IPR_PALtemp0 = 0x140, // local scratch
RAW_IPR_PALtemp1 = 0x141, // local scratch RAW_IPR_PALtemp1 = 0x141, // local scratch
RAW_IPR_PALtemp2 = 0x142, // entUna RAW_IPR_PALtemp2 = 0x142, // entUna
RAW_IPR_PALtemp3 = 0x143, // CPU specific impure area pointer RAW_IPR_PALtemp3 = 0x143, // CPU specific impure area pointer
RAW_IPR_PALtemp4 = 0x144, // memory management temp RAW_IPR_PALtemp4 = 0x144, // memory management temp
RAW_IPR_PALtemp5 = 0x145, // memory management temp RAW_IPR_PALtemp5 = 0x145, // memory management temp
RAW_IPR_PALtemp6 = 0x146, // memory management temp RAW_IPR_PALtemp6 = 0x146, // memory management temp
RAW_IPR_PALtemp7 = 0x147, // entIF RAW_IPR_PALtemp7 = 0x147, // entIF
RAW_IPR_PALtemp8 = 0x148, // intmask RAW_IPR_PALtemp8 = 0x148, // intmask
RAW_IPR_PALtemp9 = 0x149, // entSys RAW_IPR_PALtemp9 = 0x149, // entSys
RAW_IPR_PALtemp10 = 0x14a, // ?? RAW_IPR_PALtemp10 = 0x14a, // ??
RAW_IPR_PALtemp11 = 0x14b, // entInt RAW_IPR_PALtemp11 = 0x14b, // entInt
RAW_IPR_PALtemp12 = 0x14c, // entArith RAW_IPR_PALtemp12 = 0x14c, // entArith
RAW_IPR_PALtemp13 = 0x14d, // reserved for platform specific PAL RAW_IPR_PALtemp13 = 0x14d, // reserved for platform specific PAL
RAW_IPR_PALtemp14 = 0x14e, // reserved for platform specific PAL RAW_IPR_PALtemp14 = 0x14e, // reserved for platform specific PAL
RAW_IPR_PALtemp15 = 0x14f, // reserved for platform specific PAL RAW_IPR_PALtemp15 = 0x14f, // reserved for platform specific PAL
RAW_IPR_PALtemp16 = 0x150, // scratch / whami<7:0> / mces<4:0> RAW_IPR_PALtemp16 = 0x150, // scratch / whami<7:0> / mces<4:0>
RAW_IPR_PALtemp17 = 0x151, // sysval RAW_IPR_PALtemp17 = 0x151, // sysval
RAW_IPR_PALtemp18 = 0x152, // usp RAW_IPR_PALtemp18 = 0x152, // usp
RAW_IPR_PALtemp19 = 0x153, // ksp RAW_IPR_PALtemp19 = 0x153, // ksp
RAW_IPR_PALtemp20 = 0x154, // PTBR RAW_IPR_PALtemp20 = 0x154, // PTBR
RAW_IPR_PALtemp21 = 0x155, // entMM RAW_IPR_PALtemp21 = 0x155, // entMM
RAW_IPR_PALtemp22 = 0x156, // kgp RAW_IPR_PALtemp22 = 0x156, // kgp
RAW_IPR_PALtemp23 = 0x157, // PCBB RAW_IPR_PALtemp23 = 0x157, // PCBB
RAW_IPR_DTB_ASN = 0x200, // DTLB address space number register RAW_IPR_DTB_ASN = 0x200, // DTLB address space number register
RAW_IPR_DTB_CM = 0x201, // DTLB current mode register RAW_IPR_DTB_CM = 0x201, // DTLB current mode register
RAW_IPR_DTB_TAG = 0x202, // DTLB tag register RAW_IPR_DTB_TAG = 0x202, // DTLB tag register
RAW_IPR_DTB_PTE = 0x203, // DTLB page table entry register RAW_IPR_DTB_PTE = 0x203, // DTLB page table entry register
RAW_IPR_DTB_PTE_TEMP = 0x204, // DTLB page table entry temporary register RAW_IPR_DTB_PTE_TEMP = 0x204, // DTLB page table entry temporary register
RAW_IPR_MM_STAT = 0x205, // data MMU fault status register RAW_IPR_MM_STAT = 0x205, // data MMU fault status register
RAW_IPR_VA = 0x206, // fault virtual address register RAW_IPR_VA = 0x206, // fault virtual address register
RAW_IPR_VA_FORM = 0x207, // formatted virtual address register RAW_IPR_VA_FORM = 0x207, // formatted virtual address register
RAW_IPR_MVPTBR = 0x208, // MTU virtual page table base register RAW_IPR_MVPTBR = 0x208, // MTU virtual page table base register
RAW_IPR_DTB_IAP = 0x209, // DTLB invalidate all process register RAW_IPR_DTB_IAP = 0x209, // DTLB invalidate all process register
RAW_IPR_DTB_IA = 0x20a, // DTLB invalidate all register RAW_IPR_DTB_IA = 0x20a, // DTLB invalidate all register
RAW_IPR_DTB_IS = 0x20b, // DTLB invalidate single register RAW_IPR_DTB_IS = 0x20b, // DTLB invalidate single register
RAW_IPR_ALT_MODE = 0x20c, // alternate mode register RAW_IPR_ALT_MODE = 0x20c, // alternate mode register
RAW_IPR_CC = 0x20d, // cycle counter register RAW_IPR_CC = 0x20d, // cycle counter register
RAW_IPR_CC_CTL = 0x20e, // cycle counter control register RAW_IPR_CC_CTL = 0x20e, // cycle counter control register
RAW_IPR_MCSR = 0x20f, // MTU control register RAW_IPR_MCSR = 0x20f, // MTU control register
RAW_IPR_DC_FLUSH = 0x210, RAW_IPR_DC_FLUSH = 0x210,
RAW_IPR_DC_PERR_STAT = 0x212, // Dcache parity error status register RAW_IPR_DC_PERR_STAT = 0x212, // Dcache parity error status register
RAW_IPR_DC_TEST_CTL = 0x213, // Dcache test tag control register RAW_IPR_DC_TEST_CTL = 0x213, // Dcache test tag control register
RAW_IPR_DC_TEST_TAG = 0x214, // Dcache test tag register RAW_IPR_DC_TEST_TAG = 0x214, // Dcache test tag register
RAW_IPR_DC_TEST_TAG_TEMP = 0x215, // Dcache test tag temporary register RAW_IPR_DC_TEST_TAG_TEMP = 0x215, // Dcache test tag temporary register
RAW_IPR_DC_MODE = 0x216, // Dcache mode register RAW_IPR_DC_MODE = 0x216, // Dcache mode register
RAW_IPR_MAF_MODE = 0x217, // miss address file mode register RAW_IPR_MAF_MODE = 0x217, // miss address file mode register
MaxInternalProcRegs // number of IPR registers MaxInternalProcRegs // number of IPR registers
}; };
enum MiscRegIpr enum MiscRegIpr
@ -215,7 +215,7 @@ namespace AlphaISA
IPR_DC_MODE, IPR_DC_MODE,
IPR_MAF_MODE, IPR_MAF_MODE,
NumInternalProcRegs // number of IPR registers NumInternalProcRegs // number of IPR registers
}; };
inline bool IprIsWritable(int index) inline bool IprIsWritable(int index)

View file

@ -123,11 +123,11 @@ namespace AlphaISA
// EV5 modes // EV5 modes
enum mode_type enum mode_type
{ {
mode_kernel = 0, // kernel mode_kernel = 0, // kernel
mode_executive = 1, // executive (unused by unix) mode_executive = 1, // executive (unused by unix)
mode_supervisor = 2, // supervisor (unused by unix) mode_supervisor = 2, // supervisor (unused by unix)
mode_user = 3, // user mode mode_user = 3, // user mode
mode_number // number of modes mode_number // number of modes
}; };
// Constants Related to the number of registers // Constants Related to the number of registers
@ -148,7 +148,7 @@ namespace AlphaISA
const int TotalDataRegs = NumIntRegs + NumFloatRegs; const int TotalDataRegs = NumIntRegs + NumFloatRegs;
// semantically meaningful register indices // semantically meaningful register indices
const int ZeroReg = 31; // architecturally meaningful const int ZeroReg = 31; // architecturally meaningful
// the rest of these depend on the ABI // the rest of these depend on the ABI
const int StackPointerReg = 30; const int StackPointerReg = 30;
const int GlobalPointerReg = 29; const int GlobalPointerReg = 29;
@ -164,7 +164,7 @@ namespace AlphaISA
const int SyscallPseudoReturnReg = ArgumentReg[4]; const int SyscallPseudoReturnReg = ArgumentReg[4];
const int SyscallSuccessReg = 19; const int SyscallSuccessReg = 19;
const int LogVMPageSize = 13; // 8K bytes const int LogVMPageSize = 13; // 8K bytes
const int VMPageSize = (1 << LogVMPageSize); const int VMPageSize = (1 << LogVMPageSize);
const int BranchPredAddrShiftAmt = 2; // instructions are 4-byte aligned const int BranchPredAddrShiftAmt = 2; // instructions are 4-byte aligned

View file

@ -35,34 +35,34 @@
// open(2) flags translation table // open(2) flags translation table
OpenFlagTransTable AlphaLinux::openFlagTable[] = { OpenFlagTransTable AlphaLinux::openFlagTable[] = {
#ifdef _MSC_VER #ifdef _MSC_VER
{ AlphaLinux::TGT_O_RDONLY, _O_RDONLY }, { AlphaLinux::TGT_O_RDONLY, _O_RDONLY },
{ AlphaLinux::TGT_O_WRONLY, _O_WRONLY }, { AlphaLinux::TGT_O_WRONLY, _O_WRONLY },
{ AlphaLinux::TGT_O_RDWR, _O_RDWR }, { AlphaLinux::TGT_O_RDWR, _O_RDWR },
{ AlphaLinux::TGT_O_APPEND, _O_APPEND }, { AlphaLinux::TGT_O_APPEND, _O_APPEND },
{ AlphaLinux::TGT_O_CREAT, _O_CREAT }, { AlphaLinux::TGT_O_CREAT, _O_CREAT },
{ AlphaLinux::TGT_O_TRUNC, _O_TRUNC }, { AlphaLinux::TGT_O_TRUNC, _O_TRUNC },
{ AlphaLinux::TGT_O_EXCL, _O_EXCL }, { AlphaLinux::TGT_O_EXCL, _O_EXCL },
#ifdef _O_NONBLOCK #ifdef _O_NONBLOCK
{ AlphaLinux::TGT_O_NONBLOCK, _O_NONBLOCK }, { AlphaLinux::TGT_O_NONBLOCK, _O_NONBLOCK },
#endif #endif
#ifdef _O_NOCTTY #ifdef _O_NOCTTY
{ AlphaLinux::TGT_O_NOCTTY, _O_NOCTTY }, { AlphaLinux::TGT_O_NOCTTY, _O_NOCTTY },
#endif #endif
#ifdef _O_SYNC #ifdef _O_SYNC
{ AlphaLinux::TGT_O_SYNC, _O_SYNC }, { AlphaLinux::TGT_O_SYNC, _O_SYNC },
#endif #endif
#else /* !_MSC_VER */ #else /* !_MSC_VER */
{ AlphaLinux::TGT_O_RDONLY, O_RDONLY }, { AlphaLinux::TGT_O_RDONLY, O_RDONLY },
{ AlphaLinux::TGT_O_WRONLY, O_WRONLY }, { AlphaLinux::TGT_O_WRONLY, O_WRONLY },
{ AlphaLinux::TGT_O_RDWR, O_RDWR }, { AlphaLinux::TGT_O_RDWR, O_RDWR },
{ AlphaLinux::TGT_O_APPEND, O_APPEND }, { AlphaLinux::TGT_O_APPEND, O_APPEND },
{ AlphaLinux::TGT_O_CREAT, O_CREAT }, { AlphaLinux::TGT_O_CREAT, O_CREAT },
{ AlphaLinux::TGT_O_TRUNC, O_TRUNC }, { AlphaLinux::TGT_O_TRUNC, O_TRUNC },
{ AlphaLinux::TGT_O_EXCL, O_EXCL }, { AlphaLinux::TGT_O_EXCL, O_EXCL },
{ AlphaLinux::TGT_O_NONBLOCK, O_NONBLOCK }, { AlphaLinux::TGT_O_NONBLOCK, O_NONBLOCK },
{ AlphaLinux::TGT_O_NOCTTY, O_NOCTTY }, { AlphaLinux::TGT_O_NOCTTY, O_NOCTTY },
#ifdef O_SYNC #ifdef O_SYNC
{ AlphaLinux::TGT_O_SYNC, O_SYNC }, { AlphaLinux::TGT_O_SYNC, O_SYNC },
#endif #endif
#endif /* _MSC_VER */ #endif /* _MSC_VER */
}; };

View file

@ -50,21 +50,21 @@ class AlphaLinux : public Linux
//@{ //@{
/// open(2) flag values. /// open(2) flag values.
static const int TGT_O_RDONLY = 00000000; //!< O_RDONLY static const int TGT_O_RDONLY = 00000000; //!< O_RDONLY
static const int TGT_O_WRONLY = 00000001; //!< O_WRONLY static const int TGT_O_WRONLY = 00000001; //!< O_WRONLY
static const int TGT_O_RDWR = 00000002; //!< O_RDWR static const int TGT_O_RDWR = 00000002; //!< O_RDWR
static const int TGT_O_NONBLOCK = 00000004; //!< O_NONBLOCK static const int TGT_O_NONBLOCK = 00000004; //!< O_NONBLOCK
static const int TGT_O_APPEND = 00000010; //!< O_APPEND static const int TGT_O_APPEND = 00000010; //!< O_APPEND
static const int TGT_O_CREAT = 00001000; //!< O_CREAT static const int TGT_O_CREAT = 00001000; //!< O_CREAT
static const int TGT_O_TRUNC = 00002000; //!< O_TRUNC static const int TGT_O_TRUNC = 00002000; //!< O_TRUNC
static const int TGT_O_EXCL = 00004000; //!< O_EXCL static const int TGT_O_EXCL = 00004000; //!< O_EXCL
static const int TGT_O_NOCTTY = 00010000; //!< O_NOCTTY static const int TGT_O_NOCTTY = 00010000; //!< O_NOCTTY
static const int TGT_O_SYNC = 00040000; //!< O_SYNC static const int TGT_O_SYNC = 00040000; //!< O_SYNC
static const int TGT_O_DRD = 00100000; //!< O_DRD static const int TGT_O_DRD = 00100000; //!< O_DRD
static const int TGT_O_DIRECTIO = 00200000; //!< O_DIRECTIO static const int TGT_O_DIRECTIO = 00200000; //!< O_DIRECTIO
static const int TGT_O_CACHE = 00400000; //!< O_CACHE static const int TGT_O_CACHE = 00400000; //!< O_CACHE
static const int TGT_O_DSYNC = 02000000; //!< O_DSYNC static const int TGT_O_DSYNC = 02000000; //!< O_DSYNC
static const int TGT_O_RSYNC = 04000000; //!< O_RSYNC static const int TGT_O_RSYNC = 04000000; //!< O_RSYNC
//@} //@}
/// For mmap(). /// For mmap().

View file

@ -60,11 +60,11 @@ namespace AlphaISA
class MiscRegFile { class MiscRegFile {
protected: protected:
uint64_t fpcr; // floating point condition codes uint64_t fpcr; // floating point condition codes
uint64_t uniq; // process-unique register uint64_t uniq; // process-unique register
bool lock_flag; // lock flag for LL/SC bool lock_flag; // lock flag for LL/SC
Addr lock_addr; // lock address for LL/SC Addr lock_addr; // lock address for LL/SC
int intr_flag; int intr_flag;
public: public:
MiscRegFile() MiscRegFile()

View file

@ -33,265 +33,265 @@
namespace { namespace {
const char *strings[PAL::NumCodes] = { const char *strings[PAL::NumCodes] = {
// Priviledged PAL instructions // Priviledged PAL instructions
"halt", // 0x00 "halt", // 0x00
"cflush", // 0x01 "cflush", // 0x01
"draina", // 0x02 "draina", // 0x02
0, // 0x03 0, // 0x03
0, // 0x04 0, // 0x04
0, // 0x05 0, // 0x05
0, // 0x06 0, // 0x06
0, // 0x07 0, // 0x07
0, // 0x08 0, // 0x08
"cserve", // 0x09 "cserve", // 0x09
"swppal", // 0x0a "swppal", // 0x0a
0, // 0x0b 0, // 0x0b
0, // 0x0c 0, // 0x0c
"wripir", // 0x0d "wripir", // 0x0d
0, // 0x0e 0, // 0x0e
0, // 0x0f 0, // 0x0f
"rdmces", // 0x10 "rdmces", // 0x10
"wrmces", // 0x11 "wrmces", // 0x11
0, // 0x12 0, // 0x12
0, // 0x13 0, // 0x13
0, // 0x14 0, // 0x14
0, // 0x15 0, // 0x15
0, // 0x16 0, // 0x16
0, // 0x17 0, // 0x17
0, // 0x18 0, // 0x18
0, // 0x19 0, // 0x19
0, // 0x1a 0, // 0x1a
0, // 0x1b 0, // 0x1b
0, // 0x1c 0, // 0x1c
0, // 0x1d 0, // 0x1d
0, // 0x1e 0, // 0x1e
0, // 0x1f 0, // 0x1f
0, // 0x20 0, // 0x20
0, // 0x21 0, // 0x21
0, // 0x22 0, // 0x22
0, // 0x23 0, // 0x23
0, // 0x24 0, // 0x24
0, // 0x25 0, // 0x25
0, // 0x26 0, // 0x26
0, // 0x27 0, // 0x27
0, // 0x28 0, // 0x28
0, // 0x29 0, // 0x29
0, // 0x2a 0, // 0x2a
"wrfen", // 0x2b "wrfen", // 0x2b
0, // 0x2c 0, // 0x2c
"wrvptptr", // 0x2d "wrvptptr", // 0x2d
0, // 0x2e 0, // 0x2e
0, // 0x2f 0, // 0x2f
"swpctx", // 0x30 "swpctx", // 0x30
"wrval", // 0x31 "wrval", // 0x31
"rdval", // 0x32 "rdval", // 0x32
"tbi", // 0x33 "tbi", // 0x33
"wrent", // 0x34 "wrent", // 0x34
"swpipl", // 0x35 "swpipl", // 0x35
"rdps", // 0x36 "rdps", // 0x36
"wrkgp", // 0x37 "wrkgp", // 0x37
"wrusp", // 0x38 "wrusp", // 0x38
"wrperfmon", // 0x39 "wrperfmon", // 0x39
"rdusp", // 0x3a "rdusp", // 0x3a
0, // 0x3b 0, // 0x3b
"whami", // 0x3c "whami", // 0x3c
"retsys", // 0x3d "retsys", // 0x3d
"wtint", // 0x3e "wtint", // 0x3e
"rti", // 0x3f "rti", // 0x3f
0, // 0x40 0, // 0x40
0, // 0x41 0, // 0x41
0, // 0x42 0, // 0x42
0, // 0x43 0, // 0x43
0, // 0x44 0, // 0x44
0, // 0x45 0, // 0x45
0, // 0x46 0, // 0x46
0, // 0x47 0, // 0x47
0, // 0x48 0, // 0x48
0, // 0x49 0, // 0x49
0, // 0x4a 0, // 0x4a
0, // 0x4b 0, // 0x4b
0, // 0x4c 0, // 0x4c
0, // 0x4d 0, // 0x4d
0, // 0x4e 0, // 0x4e
0, // 0x4f 0, // 0x4f
0, // 0x50 0, // 0x50
0, // 0x51 0, // 0x51
0, // 0x52 0, // 0x52
0, // 0x53 0, // 0x53
0, // 0x54 0, // 0x54
0, // 0x55 0, // 0x55
0, // 0x56 0, // 0x56
0, // 0x57 0, // 0x57
0, // 0x58 0, // 0x58
0, // 0x59 0, // 0x59
0, // 0x5a 0, // 0x5a
0, // 0x5b 0, // 0x5b
0, // 0x5c 0, // 0x5c
0, // 0x5d 0, // 0x5d
0, // 0x5e 0, // 0x5e
0, // 0x5f 0, // 0x5f
0, // 0x60 0, // 0x60
0, // 0x61 0, // 0x61
0, // 0x62 0, // 0x62
0, // 0x63 0, // 0x63
0, // 0x64 0, // 0x64
0, // 0x65 0, // 0x65
0, // 0x66 0, // 0x66
0, // 0x67 0, // 0x67
0, // 0x68 0, // 0x68
0, // 0x69 0, // 0x69
0, // 0x6a 0, // 0x6a
0, // 0x6b 0, // 0x6b
0, // 0x6c 0, // 0x6c
0, // 0x6d 0, // 0x6d
0, // 0x6e 0, // 0x6e
0, // 0x6f 0, // 0x6f
0, // 0x70 0, // 0x70
0, // 0x71 0, // 0x71
0, // 0x72 0, // 0x72
0, // 0x73 0, // 0x73
0, // 0x74 0, // 0x74
0, // 0x75 0, // 0x75
0, // 0x76 0, // 0x76
0, // 0x77 0, // 0x77
0, // 0x78 0, // 0x78
0, // 0x79 0, // 0x79
0, // 0x7a 0, // 0x7a
0, // 0x7b 0, // 0x7b
0, // 0x7c 0, // 0x7c
0, // 0x7d 0, // 0x7d
0, // 0x7e 0, // 0x7e
0, // 0x7f 0, // 0x7f
// Unpriviledged PAL instructions // Unpriviledged PAL instructions
"bpt", // 0x80 "bpt", // 0x80
"bugchk", // 0x81 "bugchk", // 0x81
0, // 0x82 0, // 0x82
"callsys", // 0x83 "callsys", // 0x83
0, // 0x84 0, // 0x84
0, // 0x85 0, // 0x85
"imb", // 0x86 "imb", // 0x86
0, // 0x87 0, // 0x87
0, // 0x88 0, // 0x88
0, // 0x89 0, // 0x89
0, // 0x8a 0, // 0x8a
0, // 0x8b 0, // 0x8b
0, // 0x8c 0, // 0x8c
0, // 0x8d 0, // 0x8d
0, // 0x8e 0, // 0x8e
0, // 0x8f 0, // 0x8f
0, // 0x90 0, // 0x90
0, // 0x91 0, // 0x91
"urti", // 0x92 "urti", // 0x92
0, // 0x93 0, // 0x93
0, // 0x94 0, // 0x94
0, // 0x95 0, // 0x95
0, // 0x96 0, // 0x96
0, // 0x97 0, // 0x97
0, // 0x98 0, // 0x98
0, // 0x99 0, // 0x99
0, // 0x9a 0, // 0x9a
0, // 0x9b 0, // 0x9b
0, // 0x9c 0, // 0x9c
0, // 0x9d 0, // 0x9d
"rdunique", // 0x9e "rdunique", // 0x9e
"wrunique", // 0x9f "wrunique", // 0x9f
0, // 0xa0 0, // 0xa0
0, // 0xa1 0, // 0xa1
0, // 0xa2 0, // 0xa2
0, // 0xa3 0, // 0xa3
0, // 0xa4 0, // 0xa4
0, // 0xa5 0, // 0xa5
0, // 0xa6 0, // 0xa6
0, // 0xa7 0, // 0xa7
0, // 0xa8 0, // 0xa8
0, // 0xa9 0, // 0xa9
"gentrap", // 0xaa "gentrap", // 0xaa
0, // 0xab 0, // 0xab
0, // 0xac 0, // 0xac
0, // 0xad 0, // 0xad
"clrfen", // 0xae "clrfen", // 0xae
0, // 0xaf 0, // 0xaf
0, // 0xb0 0, // 0xb0
0, // 0xb1 0, // 0xb1
0, // 0xb2 0, // 0xb2
0, // 0xb3 0, // 0xb3
0, // 0xb4 0, // 0xb4
0, // 0xb5 0, // 0xb5
0, // 0xb6 0, // 0xb6
0, // 0xb7 0, // 0xb7
0, // 0xb8 0, // 0xb8
0, // 0xb9 0, // 0xb9
0, // 0xba 0, // 0xba
0, // 0xbb 0, // 0xbb
0, // 0xbc 0, // 0xbc
0, // 0xbd 0, // 0xbd
"nphalt", // 0xbe "nphalt", // 0xbe
"copypal", // 0xbf "copypal", // 0xbf
#if 0 #if 0
0, // 0xc0 0, // 0xc0
0, // 0xc1 0, // 0xc1
0, // 0xc2 0, // 0xc2
0, // 0xc3 0, // 0xc3
0, // 0xc4 0, // 0xc4
0, // 0xc5 0, // 0xc5
0, // 0xc6 0, // 0xc6
0, // 0xc7 0, // 0xc7
0, // 0xc8 0, // 0xc8
0, // 0xc9 0, // 0xc9
0, // 0xca 0, // 0xca
0, // 0xcb 0, // 0xcb
0, // 0xcc 0, // 0xcc
0, // 0xcd 0, // 0xcd
0, // 0xce 0, // 0xce
0, // 0xcf 0, // 0xcf
0, // 0xd0 0, // 0xd0
0, // 0xd1 0, // 0xd1
0, // 0xd2 0, // 0xd2
0, // 0xd3 0, // 0xd3
0, // 0xd4 0, // 0xd4
0, // 0xd5 0, // 0xd5
0, // 0xd6 0, // 0xd6
0, // 0xd7 0, // 0xd7
0, // 0xd8 0, // 0xd8
0, // 0xd9 0, // 0xd9
0, // 0xda 0, // 0xda
0, // 0xdb 0, // 0xdb
0, // 0xdc 0, // 0xdc
0, // 0xdd 0, // 0xdd
0, // 0xde 0, // 0xde
0, // 0xdf 0, // 0xdf
0, // 0xe0 0, // 0xe0
0, // 0xe1 0, // 0xe1
0, // 0xe2 0, // 0xe2
0, // 0xe3 0, // 0xe3
0, // 0xe4 0, // 0xe4
0, // 0xe5 0, // 0xe5
0, // 0xe6 0, // 0xe6
0, // 0xe7 0, // 0xe7
0, // 0xe8 0, // 0xe8
0, // 0xe9 0, // 0xe9
0, // 0xea 0, // 0xea
0, // 0xeb 0, // 0xeb
0, // 0xec 0, // 0xec
0, // 0xed 0, // 0xed
0, // 0xee 0, // 0xee
0, // 0xef 0, // 0xef
0, // 0xf0 0, // 0xf0
0, // 0xf1 0, // 0xf1
0, // 0xf2 0, // 0xf2
0, // 0xf3 0, // 0xf3
0, // 0xf4 0, // 0xf4
0, // 0xf5 0, // 0xf5
0, // 0xf6 0, // 0xf6
0, // 0xf7 0, // 0xf7
0, // 0xf8 0, // 0xf8
0, // 0xf9 0, // 0xf9
0, // 0xfa 0, // 0xfa
0, // 0xfb 0, // 0xfb
0, // 0xfc 0, // 0xfc
0, // 0xfd 0, // 0xfd
0, // 0xfe 0, // 0xfe
0 // 0xff 0 // 0xff
#endif #endif
}; };
} }

View file

@ -110,15 +110,15 @@ namespace AlphaISA {
TlbEntry() TlbEntry()
{} {}
Addr tag; // virtual page number tag Addr tag; // virtual page number tag
Addr ppn; // physical page number Addr ppn; // physical page number
uint8_t xre; // read permissions - VMEM_PERM_* mask uint8_t xre; // read permissions - VMEM_PERM_* mask
uint8_t xwe; // write permissions - VMEM_PERM_* mask uint8_t xwe; // write permissions - VMEM_PERM_* mask
uint8_t asn; // address space number uint8_t asn; // address space number
bool asma; // address space match bool asma; // address space match
bool fonr; // fault on read bool fonr; // fault on read
bool fonw; // fault on write bool fonw; // fault on write
bool valid; // valid page table entry bool valid; // valid page table entry
Addr pageStart() Addr pageStart()
{ {

View file

@ -51,8 +51,8 @@ namespace AlphaISA
class RegFile { class RegFile {
protected: protected:
Addr pc; // program counter Addr pc; // program counter
Addr npc; // next-cycle program counter Addr npc; // next-cycle program counter
Addr nnpc; Addr nnpc;
public: public:
@ -85,14 +85,14 @@ namespace AlphaISA
{ } { }
protected: protected:
IntRegFile intRegFile; // (signed) integer register file IntRegFile intRegFile; // (signed) integer register file
FloatRegFile floatRegFile; // floating point register file FloatRegFile floatRegFile; // floating point register file
MiscRegFile miscRegFile; // control register file MiscRegFile miscRegFile; // control register file
public: public:
#if FULL_SYSTEM #if FULL_SYSTEM
int intrflag; // interrupt flag int intrflag; // interrupt flag
inline int instAsid() inline int instAsid()
{ return miscRegFile.getInstAsid(); } { return miscRegFile.getInstAsid(); }
inline int dataAsid() inline int dataAsid()

View file

@ -30,7 +30,7 @@
/* /*
* Copyright (c) 1990, 1993 * Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* This software was developed by the Computer Systems Engineering group * This software was developed by the Computer Systems Engineering group
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
@ -38,8 +38,8 @@
* *
* All advertising materials mentioning features or use of this software * All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Lawrence Berkeley Laboratories. * California, Lawrence Berkeley Laboratories.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -51,8 +51,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Berkeley and its contributors. * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors * 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
@ -69,7 +69,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94 * @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94
*/ */
/*- /*-
@ -89,8 +89,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the NetBSD * This product includes software developed by the NetBSD
* Foundation, Inc. and its contributors. * Foundation, Inc. and its contributors.
* 4. Neither the name of The NetBSD Foundation nor the names of its * 4. Neither the name of The NetBSD Foundation nor the names of its
* contributors may be used to endorse or promote products derived * contributors may be used to endorse or promote products derived
* from this software without specific prior written permission. * from this software without specific prior written permission.
@ -151,7 +151,7 @@ RemoteGDB::RemoteGDB(System *_system, ThreadContext *c)
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// RemoteGDB::acc // RemoteGDB::acc
// //
// Determine if the mapping at va..(va+len) is valid. // Determine if the mapping at va..(va+len) is valid.
// //
bool bool
RemoteGDB::acc(Addr va, size_t len) RemoteGDB::acc(Addr va, size_t len)
@ -204,8 +204,8 @@ RemoteGDB::acc(Addr va, size_t len)
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// RemoteGDB::getregs // RemoteGDB::getregs
// //
// Translate the kernel debugger register format into // Translate the kernel debugger register format into
// the GDB register format. // the GDB register format.
void void
RemoteGDB::getregs() RemoteGDB::getregs()
{ {
@ -234,8 +234,8 @@ RemoteGDB::getregs()
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// RemoteGDB::setregs // RemoteGDB::setregs
// //
// Translate the GDB register format into the kernel // Translate the GDB register format into the kernel
// debugger register format. // debugger register format.
// //
void void
RemoteGDB::setregs() RemoteGDB::setregs()

View file

@ -142,9 +142,9 @@ AlphaSystem::~AlphaSystem()
* in the procedure value register (pv aka t12 == r27). This sequence * in the procedure value register (pv aka t12 == r27). This sequence
* looks like the following: * looks like the following:
* *
* opcode Ra Rb offset * opcode Ra Rb offset
* ldah gp,X(pv) 09 29 27 X * ldah gp,X(pv) 09 29 27 X
* lda gp,Y(gp) 08 29 29 Y * lda gp,Y(gp) 08 29 29 Y
* *
* for some constant offsets X and Y. The catch is that the linker * for some constant offsets X and Y. The catch is that the linker
* (or maybe even the compiler, I'm not sure) may recognize that the * (or maybe even the compiler, I'm not sure) may recognize that the

View file

@ -55,7 +55,7 @@ bool uncacheBit39 = false;
bool uncacheBit40 = false; bool uncacheBit40 = false;
#endif #endif
#define MODE2MASK(X) (1 << (X)) #define MODE2MASK(X) (1 << (X))
TLB::TLB(const Params *p) TLB::TLB(const Params *p)
: BaseTLB(p), size(p->size), nlu(0) : BaseTLB(p), size(p->size), nlu(0)

View file

@ -85,7 +85,7 @@ getsysinfoFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
case AlphaTru64::GSI_PHYSMEM: { case AlphaTru64::GSI_PHYSMEM: {
TypedBufferArg<uint64_t> physmem(tc->getSyscallArg(1)); TypedBufferArg<uint64_t> physmem(tc->getSyscallArg(1));
*physmem = htog((uint64_t)1024 * 1024); // physical memory in KB *physmem = htog((uint64_t)1024 * 1024); // physical memory in KB
physmem.copyOut(tc->getMemPort()); physmem.copyOut(tc->getMemPort());
return 1; return 1;
} }
@ -168,11 +168,11 @@ SyscallReturn tableFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
using namespace std; using namespace std;
using namespace TheISA; using namespace TheISA;
int id = tc->getSyscallArg(0); // table ID int id = tc->getSyscallArg(0); // table ID
int index = tc->getSyscallArg(1); // index into table int index = tc->getSyscallArg(1); // index into table
// arg 2 is buffer pointer; type depends on table ID // arg 2 is buffer pointer; type depends on table ID
int nel = tc->getSyscallArg(3); // number of elements int nel = tc->getSyscallArg(3); // number of elements
int lel = tc->getSyscallArg(4); // expected element size int lel = tc->getSyscallArg(4); // expected element size
switch (id) { switch (id) {
case AlphaTru64::TBL_SYSINFO: { case AlphaTru64::TBL_SYSINFO: {

View file

@ -33,34 +33,34 @@
// open(2) flags translation table // open(2) flags translation table
OpenFlagTransTable AlphaTru64::openFlagTable[] = { OpenFlagTransTable AlphaTru64::openFlagTable[] = {
#ifdef _MSC_VER #ifdef _MSC_VER
{ AlphaTru64::TGT_O_RDONLY, _O_RDONLY }, { AlphaTru64::TGT_O_RDONLY, _O_RDONLY },
{ AlphaTru64::TGT_O_WRONLY, _O_WRONLY }, { AlphaTru64::TGT_O_WRONLY, _O_WRONLY },
{ AlphaTru64::TGT_O_RDWR, _O_RDWR }, { AlphaTru64::TGT_O_RDWR, _O_RDWR },
{ AlphaTru64::TGT_O_APPEND, _O_APPEND }, { AlphaTru64::TGT_O_APPEND, _O_APPEND },
{ AlphaTru64::TGT_O_CREAT, _O_CREAT }, { AlphaTru64::TGT_O_CREAT, _O_CREAT },
{ AlphaTru64::TGT_O_TRUNC, _O_TRUNC }, { AlphaTru64::TGT_O_TRUNC, _O_TRUNC },
{ AlphaTru64::TGT_O_EXCL, _O_EXCL }, { AlphaTru64::TGT_O_EXCL, _O_EXCL },
#ifdef _O_NONBLOCK #ifdef _O_NONBLOCK
{ AlphaTru64::TGT_O_NONBLOCK, _O_NONBLOCK }, { AlphaTru64::TGT_O_NONBLOCK, _O_NONBLOCK },
#endif #endif
#ifdef _O_NOCTTY #ifdef _O_NOCTTY
{ AlphaTru64::TGT_O_NOCTTY, _O_NOCTTY }, { AlphaTru64::TGT_O_NOCTTY, _O_NOCTTY },
#endif #endif
#ifdef _O_SYNC #ifdef _O_SYNC
{ AlphaTru64::TGT_O_SYNC, _O_SYNC }, { AlphaTru64::TGT_O_SYNC, _O_SYNC },
#endif #endif
#else /* !_MSC_VER */ #else /* !_MSC_VER */
{ AlphaTru64::TGT_O_RDONLY, O_RDONLY }, { AlphaTru64::TGT_O_RDONLY, O_RDONLY },
{ AlphaTru64::TGT_O_WRONLY, O_WRONLY }, { AlphaTru64::TGT_O_WRONLY, O_WRONLY },
{ AlphaTru64::TGT_O_RDWR, O_RDWR }, { AlphaTru64::TGT_O_RDWR, O_RDWR },
{ AlphaTru64::TGT_O_APPEND, O_APPEND }, { AlphaTru64::TGT_O_APPEND, O_APPEND },
{ AlphaTru64::TGT_O_CREAT, O_CREAT }, { AlphaTru64::TGT_O_CREAT, O_CREAT },
{ AlphaTru64::TGT_O_TRUNC, O_TRUNC }, { AlphaTru64::TGT_O_TRUNC, O_TRUNC },
{ AlphaTru64::TGT_O_EXCL, O_EXCL }, { AlphaTru64::TGT_O_EXCL, O_EXCL },
{ AlphaTru64::TGT_O_NONBLOCK, O_NONBLOCK }, { AlphaTru64::TGT_O_NONBLOCK, O_NONBLOCK },
{ AlphaTru64::TGT_O_NOCTTY, O_NOCTTY }, { AlphaTru64::TGT_O_NOCTTY, O_NOCTTY },
#ifdef O_SYNC #ifdef O_SYNC
{ AlphaTru64::TGT_O_SYNC, O_SYNC }, { AlphaTru64::TGT_O_SYNC, O_SYNC },
#endif #endif
#endif /* _MSC_VER */ #endif /* _MSC_VER */
}; };

View file

@ -46,21 +46,21 @@ class AlphaTru64 : public Tru64
//@{ //@{
/// open(2) flag values. /// open(2) flag values.
static const int TGT_O_RDONLY = 00000000; //!< O_RDONLY static const int TGT_O_RDONLY = 00000000; //!< O_RDONLY
static const int TGT_O_WRONLY = 00000001; //!< O_WRONLY static const int TGT_O_WRONLY = 00000001; //!< O_WRONLY
static const int TGT_O_RDWR = 00000002; //!< O_RDWR static const int TGT_O_RDWR = 00000002; //!< O_RDWR
static const int TGT_O_NONBLOCK = 00000004; //!< O_NONBLOCK static const int TGT_O_NONBLOCK = 00000004; //!< O_NONBLOCK
static const int TGT_O_APPEND = 00000010; //!< O_APPEND static const int TGT_O_APPEND = 00000010; //!< O_APPEND
static const int TGT_O_CREAT = 00001000; //!< O_CREAT static const int TGT_O_CREAT = 00001000; //!< O_CREAT
static const int TGT_O_TRUNC = 00002000; //!< O_TRUNC static const int TGT_O_TRUNC = 00002000; //!< O_TRUNC
static const int TGT_O_EXCL = 00004000; //!< O_EXCL static const int TGT_O_EXCL = 00004000; //!< O_EXCL
static const int TGT_O_NOCTTY = 00010000; //!< O_NOCTTY static const int TGT_O_NOCTTY = 00010000; //!< O_NOCTTY
static const int TGT_O_SYNC = 00040000; //!< O_SYNC static const int TGT_O_SYNC = 00040000; //!< O_SYNC
static const int TGT_O_DRD = 00100000; //!< O_DRD static const int TGT_O_DRD = 00100000; //!< O_DRD
static const int TGT_O_DIRECTIO = 00200000; //!< O_DIRECTIO static const int TGT_O_DIRECTIO = 00200000; //!< O_DIRECTIO
static const int TGT_O_CACHE = 00400000; //!< O_CACHE static const int TGT_O_CACHE = 00400000; //!< O_CACHE
static const int TGT_O_DSYNC = 02000000; //!< O_DSYNC static const int TGT_O_DSYNC = 02000000; //!< O_DSYNC
static const int TGT_O_RSYNC = 04000000; //!< O_RSYNC static const int TGT_O_RSYNC = 04000000; //!< O_RSYNC
//@} //@}
/// For mmap(). /// For mmap().
@ -69,12 +69,12 @@ class AlphaTru64 : public Tru64
//@{ //@{
/// For getsysinfo(). /// For getsysinfo().
static const unsigned GSI_PLATFORM_NAME = 103; //!< platform name as string static const unsigned GSI_PLATFORM_NAME = 103; //!< platform name as string
static const unsigned GSI_CPU_INFO = 59; //!< CPU information static const unsigned GSI_CPU_INFO = 59; //!< CPU information
static const unsigned GSI_PROC_TYPE = 60; //!< get proc_type static const unsigned GSI_PROC_TYPE = 60; //!< get proc_type
static const unsigned GSI_MAX_CPU = 30; //!< max # cpu's on this machine static const unsigned GSI_MAX_CPU = 30; //!< max # cpu's on this machine
static const unsigned GSI_CPUS_IN_BOX = 55; //!< number of CPUs in system static const unsigned GSI_CPUS_IN_BOX = 55; //!< number of CPUs in system
static const unsigned GSI_PHYSMEM = 19; //!< Physical memory in KB static const unsigned GSI_PHYSMEM = 19; //!< Physical memory in KB
static const unsigned GSI_CLK_TCK = 42; //!< clock freq in Hz static const unsigned GSI_CLK_TCK = 42; //!< clock freq in Hz
//@} //@}
//@{ //@{

View file

@ -116,7 +116,7 @@ t_SEMI = r';'
t_DOT = r'\.' t_DOT = r'\.'
t_COLON = r':' t_COLON = r':'
t_DBLCOLON = r'::' t_DBLCOLON = r'::'
t_ASTERISK = r'\*' t_ASTERISK = r'\*'
# Identifiers and reserved words # Identifiers and reserved words
reserved_map = { } reserved_map = { }
@ -480,7 +480,7 @@ def p_excess_args_param(t):
# #
# A decode block looks like: # A decode block looks like:
# decode <field1> [, <field2>]* [default <inst>] { ... } # decode <field1> [, <field2>]* [default <inst>] { ... }
# #
def p_decode_block(t): def p_decode_block(t):
'decode_block : DECODE ID opt_default LBRACE decode_stmt_list RBRACE' 'decode_block : DECODE ID opt_default LBRACE decode_stmt_list RBRACE'
@ -1149,7 +1149,7 @@ def buildOperandTypeMap(userDict, lineno):
ctype = 'uint%d_t' % size ctype = 'uint%d_t' % size
is_signed = 0 is_signed = 0
elif desc == 'float': elif desc == 'float':
is_signed = 1 # shouldn't really matter is_signed = 1 # shouldn't really matter
if size == 32: if size == 32:
ctype = 'float' ctype = 'float'
elif size == 64: elif size == 64:
@ -1595,9 +1595,9 @@ def buildOperandNameMap(userDict, lineno):
operands = userDict.keys() operands = userDict.keys()
operandsREString = (r''' operandsREString = (r'''
(?<![\w\.]) # neg. lookbehind assertion: prevent partial matches (?<![\w\.]) # neg. lookbehind assertion: prevent partial matches
((%s)(?:\.(\w+))?) # match: operand with optional '.' then suffix ((%s)(?:\.(\w+))?) # match: operand with optional '.' then suffix
(?![\w\.]) # neg. lookahead assertion: prevent partial matches (?![\w\.]) # neg. lookahead assertion: prevent partial matches
''' '''
% string.join(operands, '|')) % string.join(operands, '|'))

View file

@ -38,7 +38,7 @@
//To use them, do something like: //To use them, do something like:
// //
//#if THE_ISA == YOUR_FAVORITE_ISA //#if THE_ISA == YOUR_FAVORITE_ISA
// conditional_code // conditional_code
//#endif //#endif
// //
//Note that this is how this file sets up the TheISA macro. //Note that this is how this file sets up the TheISA macro.

View file

@ -147,11 +147,11 @@ namespace MipsISA
// MIPS modes // MIPS modes
enum mode_type enum mode_type
{ {
mode_kernel = 0, // kernel mode_kernel = 0, // kernel
mode_supervisor = 1, // supervisor mode_supervisor = 1, // supervisor
mode_user = 2, // user mode mode_user = 2, // user mode
mode_debug = 3, // debug mode mode_debug = 3, // debug mode
mode_number // number of modes mode_number // number of modes
}; };
inline mode_type getOperatingMode(MiscReg Stat) inline mode_type getOperatingMode(MiscReg Stat)
@ -209,7 +209,7 @@ namespace MipsISA
const int SyscallPseudoReturnReg = ReturnValueReg2; const int SyscallPseudoReturnReg = ReturnValueReg2;
const int SyscallSuccessReg = ArgumentReg3; const int SyscallSuccessReg = ArgumentReg3;
const int LogVMPageSize = 13; // 8K bytes const int LogVMPageSize = 13; // 8K bytes
const int VMPageSize = (1 << LogVMPageSize); const int VMPageSize = (1 << LogVMPageSize);
const int BranchPredAddrShiftAmt = 2; // instructions are 4-byte aligned const int BranchPredAddrShiftAmt = 2; // instructions are 4-byte aligned

View file

@ -35,34 +35,34 @@
// open(2) flags translation table // open(2) flags translation table
OpenFlagTransTable MipsLinux::openFlagTable[] = { OpenFlagTransTable MipsLinux::openFlagTable[] = {
#ifdef _MSC_VER #ifdef _MSC_VER
{ MipsLinux::TGT_O_RDONLY, _O_RDONLY }, { MipsLinux::TGT_O_RDONLY, _O_RDONLY },
{ MipsLinux::TGT_O_WRONLY, _O_WRONLY }, { MipsLinux::TGT_O_WRONLY, _O_WRONLY },
{ MipsLinux::TGT_O_RDWR, _O_RDWR }, { MipsLinux::TGT_O_RDWR, _O_RDWR },
{ MipsLinux::TGT_O_APPEND, _O_APPEND }, { MipsLinux::TGT_O_APPEND, _O_APPEND },
{ MipsLinux::TGT_O_CREAT, _O_CREAT }, { MipsLinux::TGT_O_CREAT, _O_CREAT },
{ MipsLinux::TGT_O_TRUNC, _O_TRUNC }, { MipsLinux::TGT_O_TRUNC, _O_TRUNC },
{ MipsLinux::TGT_O_EXCL, _O_EXCL }, { MipsLinux::TGT_O_EXCL, _O_EXCL },
#ifdef _O_NONBLOCK #ifdef _O_NONBLOCK
{ MipsLinux::TGT_O_NONBLOCK, _O_NONBLOCK }, { MipsLinux::TGT_O_NONBLOCK, _O_NONBLOCK },
#endif #endif
#ifdef _O_NOCTTY #ifdef _O_NOCTTY
{ MipsLinux::TGT_O_NOCTTY, _O_NOCTTY }, { MipsLinux::TGT_O_NOCTTY, _O_NOCTTY },
#endif #endif
#ifdef _O_SYNC #ifdef _O_SYNC
{ MipsLinux::TGT_O_SYNC, _O_SYNC }, { MipsLinux::TGT_O_SYNC, _O_SYNC },
#endif #endif
#else /* !_MSC_VER */ #else /* !_MSC_VER */
{ MipsLinux::TGT_O_RDONLY, O_RDONLY }, { MipsLinux::TGT_O_RDONLY, O_RDONLY },
{ MipsLinux::TGT_O_WRONLY, O_WRONLY }, { MipsLinux::TGT_O_WRONLY, O_WRONLY },
{ MipsLinux::TGT_O_RDWR, O_RDWR }, { MipsLinux::TGT_O_RDWR, O_RDWR },
{ MipsLinux::TGT_O_APPEND, O_APPEND }, { MipsLinux::TGT_O_APPEND, O_APPEND },
{ MipsLinux::TGT_O_CREAT, O_CREAT }, { MipsLinux::TGT_O_CREAT, O_CREAT },
{ MipsLinux::TGT_O_TRUNC, O_TRUNC }, { MipsLinux::TGT_O_TRUNC, O_TRUNC },
{ MipsLinux::TGT_O_EXCL, O_EXCL }, { MipsLinux::TGT_O_EXCL, O_EXCL },
{ MipsLinux::TGT_O_NONBLOCK, O_NONBLOCK }, { MipsLinux::TGT_O_NONBLOCK, O_NONBLOCK },
{ MipsLinux::TGT_O_NOCTTY, O_NOCTTY }, { MipsLinux::TGT_O_NOCTTY, O_NOCTTY },
#ifdef O_SYNC #ifdef O_SYNC
{ MipsLinux::TGT_O_SYNC, O_SYNC }, { MipsLinux::TGT_O_SYNC, O_SYNC },
#endif #endif
#endif /* _MSC_VER */ #endif /* _MSC_VER */
}; };

View file

@ -49,21 +49,21 @@ class MipsLinux : public Linux
//@{ //@{
/// open(2) flag values. /// open(2) flag values.
static const int TGT_O_RDONLY = 0x00000000; //!< O_RDONLY static const int TGT_O_RDONLY = 0x00000000; //!< O_RDONLY
static const int TGT_O_WRONLY = 0x00000001; //!< O_WRONLY static const int TGT_O_WRONLY = 0x00000001; //!< O_WRONLY
static const int TGT_O_RDWR = 0x00000002; //!< O_RDWR static const int TGT_O_RDWR = 0x00000002; //!< O_RDWR
static const int TGT_O_NONBLOCK = 0x00000080; //!< O_NONBLOCK static const int TGT_O_NONBLOCK = 0x00000080; //!< O_NONBLOCK
static const int TGT_O_APPEND = 0x00000008; //!< O_APPEND static const int TGT_O_APPEND = 0x00000008; //!< O_APPEND
static const int TGT_O_CREAT = 0x00000100; //!< O_CREAT static const int TGT_O_CREAT = 0x00000100; //!< O_CREAT
static const int TGT_O_TRUNC = 0x00000200; //!< O_TRUNC static const int TGT_O_TRUNC = 0x00000200; //!< O_TRUNC
static const int TGT_O_EXCL = 0x00000400; //!< O_EXCL static const int TGT_O_EXCL = 0x00000400; //!< O_EXCL
static const int TGT_O_NOCTTY = 0x00000800; //!< O_NOCTTY static const int TGT_O_NOCTTY = 0x00000800; //!< O_NOCTTY
static const int TGT_O_SYNC = 0x00000010; //!< O_SYNC static const int TGT_O_SYNC = 0x00000010; //!< O_SYNC
static const int TGT_O_DRD = 0x00010000; //!< O_DRD static const int TGT_O_DRD = 0x00010000; //!< O_DRD
static const int TGT_O_DIRECTIO = 0x00020000; //!< O_DIRECTIO static const int TGT_O_DIRECTIO = 0x00020000; //!< O_DIRECTIO
static const int TGT_O_CACHE = 0x00002000; //!< O_CACHE static const int TGT_O_CACHE = 0x00002000; //!< O_CACHE
static const int TGT_O_DSYNC = 0x00008000; //!< O_DSYNC static const int TGT_O_DSYNC = 0x00008000; //!< O_DSYNC
static const int TGT_O_RSYNC = 0x00040000; //!< O_RSYNC static const int TGT_O_RSYNC = 0x00040000; //!< O_RSYNC
//@} //@}
/// For mmap(). /// For mmap().
@ -72,12 +72,12 @@ class MipsLinux : public Linux
//@{ //@{
/// For getsysinfo(). /// For getsysinfo().
static const unsigned GSI_PLATFORM_NAME = 103; //!< platform name as string static const unsigned GSI_PLATFORM_NAME = 103; //!< platform name as string
static const unsigned GSI_CPU_INFO = 59; //!< CPU information static const unsigned GSI_CPU_INFO = 59; //!< CPU information
static const unsigned GSI_PROC_TYPE = 60; //!< get proc_type static const unsigned GSI_PROC_TYPE = 60; //!< get proc_type
static const unsigned GSI_MAX_CPU = 30; //!< max # cpu's on this machine static const unsigned GSI_MAX_CPU = 30; //!< max # cpu's on this machine
static const unsigned GSI_CPUS_IN_BOX = 55; //!< number of CPUs in system static const unsigned GSI_CPUS_IN_BOX = 55; //!< number of CPUs in system
static const unsigned GSI_PHYSMEM = 19; //!< Physical memory in KB static const unsigned GSI_PHYSMEM = 19; //!< Physical memory in KB
static const unsigned GSI_CLK_TCK = 42; //!< clock freq in Hz static const unsigned GSI_CLK_TCK = 42; //!< clock freq in Hz
//@} //@}
//@{ //@{

View file

@ -48,15 +48,15 @@ namespace MipsISA
{ {
class RegFile { class RegFile {
protected: protected:
Addr pc; // program counter Addr pc; // program counter
Addr npc; // next-cycle program counter Addr npc; // next-cycle program counter
Addr nnpc; // next-next-cycle program counter Addr nnpc; // next-next-cycle program counter
// used to implement branch delay slot // used to implement branch delay slot
// not real register // not real register
IntRegFile intRegFile; // (signed) integer register file IntRegFile intRegFile; // (signed) integer register file
FloatRegFile floatRegFile; // floating point register file FloatRegFile floatRegFile; // floating point register file
MiscRegFile miscRegFile; // control register file MiscRegFile miscRegFile; // control register file
public: public:
void clear(); void clear();

View file

@ -134,9 +134,9 @@ MipsSystem::~MipsSystem()
* in the procedure value register (pv aka t12 == r27). This sequence * in the procedure value register (pv aka t12 == r27). This sequence
* looks like the following: * looks like the following:
* *
* opcode Ra Rb offset * opcode Ra Rb offset
* ldah gp,X(pv) 09 29 27 X * ldah gp,X(pv) 09 29 27 X
* lda gp,Y(gp) 08 29 29 Y * lda gp,Y(gp) 08 29 29 Y
* *
* for some constant offsets X and Y. The catch is that the linker * for some constant offsets X and Y. The catch is that the linker
* (or maybe even the compiler, I'm not sure) may recognize that the * (or maybe even the compiler, I'm not sure) may recognize that the

View file

@ -59,7 +59,7 @@ using namespace MipsISA;
// MIPS TLB // MIPS TLB
// //
#define MODE2MASK(X) (1 << (X)) #define MODE2MASK(X) (1 << (X))
TLB::TLB(const Params *p) TLB::TLB(const Params *p)
: BaseTLB(p), size(p->size), nlu(0) : BaseTLB(p), size(p->size), nlu(0)
@ -91,7 +91,7 @@ TLB::lookup(Addr vpn, uint8_t asn) const
Addr Mask = pte->Mask; Addr Mask = pte->Mask;
Addr InvMask = ~Mask; Addr InvMask = ~Mask;
Addr VPN = pte->VPN; Addr VPN = pte->VPN;
// warn("Valid: %d - %d\n",pte->V0,pte->V1); // warn("Valid: %d - %d\n",pte->V0,pte->V1);
if(((vpn & InvMask) == (VPN & InvMask)) && (pte->G || (asn == pte->asid))) if(((vpn & InvMask) == (VPN & InvMask)) && (pte->G || (asn == pte->asid)))
{ // We have a VPN + ASID Match { // We have a VPN + ASID Match
retval = pte; retval = pte;
@ -389,7 +389,7 @@ ITB::translate(RequestPtr &req, ThreadContext *tc)
} }
else else
{// Ok, this is really a match, set paddr {// Ok, this is really a match, set paddr
// hits++; // hits++;
Addr PAddr; Addr PAddr;
if(EvenOdd == 0){ if(EvenOdd == 0){
PAddr = pte->PFN0; PAddr = pte->PFN0;
@ -406,7 +406,7 @@ ITB::translate(RequestPtr &req, ThreadContext *tc)
} }
else else
{ // Didn't find any match, return a TLB Refill Exception { // Didn't find any match, return a TLB Refill Exception
// misses++; // misses++;
ItbRefillFault *Flt=new ItbRefillFault(); ItbRefillFault *Flt=new ItbRefillFault();
/* EntryHi VPN, ASID fields must be set */ /* EntryHi VPN, ASID fields must be set */
Flt->EntryHi_Asid = Asid; Flt->EntryHi_Asid = Asid;
@ -494,7 +494,7 @@ DTB::translate(RequestPtr &req, ThreadContext *tc, bool write)
if(Valid == false) if(Valid == false)
{//Invalid entry {//Invalid entry
// invalids++; // invalids++;
DtbInvalidFault *Flt = new DtbInvalidFault(); DtbInvalidFault *Flt = new DtbInvalidFault();
/* EntryHi VPN, ASID fields must be set */ /* EntryHi VPN, ASID fields must be set */
Flt->EntryHi_Asid = Asid; Flt->EntryHi_Asid = Asid;
@ -512,7 +512,7 @@ DTB::translate(RequestPtr &req, ThreadContext *tc, bool write)
} }
else else
{// Ok, this is really a match, set paddr {// Ok, this is really a match, set paddr
// hits++; // hits++;
if(!Dirty) if(!Dirty)
{ {
TLBModifiedFault *Flt = new TLBModifiedFault(); TLBModifiedFault *Flt = new TLBModifiedFault();
@ -544,7 +544,7 @@ DTB::translate(RequestPtr &req, ThreadContext *tc, bool write)
} }
else else
{ // Didn't find any match, return a TLB Refill Exception { // Didn't find any match, return a TLB Refill Exception
// misses++; // misses++;
DtbRefillFault *Flt=new DtbRefillFault(); DtbRefillFault *Flt=new DtbRefillFault();
/* EntryHi VPN, ASID fields must be set */ /* EntryHi VPN, ASID fields must be set */
Flt->EntryHi_Asid = Asid; Flt->EntryHi_Asid = Asid;
@ -577,19 +577,19 @@ ITB::ITB(const Params *p)
// ITB::regStats() // ITB::regStats()
// { // {
// /* hits - causes failure for some reason // /* hits - causes failure for some reason
// .name(name() + ".hits") // .name(name() + ".hits")
// .desc("ITB hits"); // .desc("ITB hits");
// misses // misses
// .name(name() + ".misses") // .name(name() + ".misses")
// .desc("ITB misses"); // .desc("ITB misses");
// acv // acv
// .name(name() + ".acv") // .name(name() + ".acv")
// .desc("ITB acv"); // .desc("ITB acv");
// accesses // accesses
// .name(name() + ".accesses") // .name(name() + ".accesses")
// .desc("ITB accesses"); // .desc("ITB accesses");
// accesses = hits + misses + invalids; */ // accesses = hits + misses + invalids; */
// } // }

View file

@ -84,11 +84,11 @@ class TLB : public BaseTLB
{ {
protected: protected:
typedef std::multimap<Addr, int> PageTable; typedef std::multimap<Addr, int> PageTable;
PageTable lookupTable; // Quick lookup into page table PageTable lookupTable; // Quick lookup into page table
MipsISA::PTE *table; // the Page Table MipsISA::PTE *table; // the Page Table
int size; // TLB Size int size; // TLB Size
int nlu; // not last used entry (for replacement) int nlu; // not last used entry (for replacement)
void nextnlu() { if (++nlu >= size) nlu = 0; } void nextnlu() { if (++nlu >= size) nlu = 0; }
MipsISA::PTE *lookup(Addr vpn, uint8_t asn) const; MipsISA::PTE *lookup(Addr vpn, uint8_t asn) const;

View file

@ -66,7 +66,7 @@ namespace SparcISA
}; };
// semantically meaningful register indices // semantically meaningful register indices
const int ZeroReg = 0; // architecturally meaningful const int ZeroReg = 0; // architecturally meaningful
// the rest of these depend on the ABI // the rest of these depend on the ABI
const int StackPointerReg = 14; const int StackPointerReg = 14;
const int ReturnAddressReg = 31; // post call, precall is 15 const int ReturnAddressReg = 31; // post call, precall is 15

View file

@ -34,34 +34,34 @@
// open(2) flags translation table // open(2) flags translation table
OpenFlagTransTable SparcLinux::openFlagTable[] = { OpenFlagTransTable SparcLinux::openFlagTable[] = {
#ifdef _MSC_VER #ifdef _MSC_VER
{ SparcLinux::TGT_O_RDONLY, _O_RDONLY }, { SparcLinux::TGT_O_RDONLY, _O_RDONLY },
{ SparcLinux::TGT_O_WRONLY, _O_WRONLY }, { SparcLinux::TGT_O_WRONLY, _O_WRONLY },
{ SparcLinux::TGT_O_RDWR, _O_RDWR }, { SparcLinux::TGT_O_RDWR, _O_RDWR },
{ SparcLinux::TGT_O_APPEND, _O_APPEND }, { SparcLinux::TGT_O_APPEND, _O_APPEND },
{ SparcLinux::TGT_O_CREAT, _O_CREAT }, { SparcLinux::TGT_O_CREAT, _O_CREAT },
{ SparcLinux::TGT_O_TRUNC, _O_TRUNC }, { SparcLinux::TGT_O_TRUNC, _O_TRUNC },
{ SparcLinux::TGT_O_EXCL, _O_EXCL }, { SparcLinux::TGT_O_EXCL, _O_EXCL },
#ifdef _O_NONBLOCK #ifdef _O_NONBLOCK
{ SparcLinux::TGT_O_NONBLOCK, _O_NONBLOCK }, { SparcLinux::TGT_O_NONBLOCK, _O_NONBLOCK },
#endif #endif
#ifdef _O_NOCTTY #ifdef _O_NOCTTY
{ SparcLinux::TGT_O_NOCTTY, _O_NOCTTY }, { SparcLinux::TGT_O_NOCTTY, _O_NOCTTY },
#endif #endif
#ifdef _O_SYNC #ifdef _O_SYNC
{ SparcLinux::TGT_O_SYNC, _O_SYNC }, { SparcLinux::TGT_O_SYNC, _O_SYNC },
#endif #endif
#else /* !_MSC_VER */ #else /* !_MSC_VER */
{ SparcLinux::TGT_O_RDONLY, O_RDONLY }, { SparcLinux::TGT_O_RDONLY, O_RDONLY },
{ SparcLinux::TGT_O_WRONLY, O_WRONLY }, { SparcLinux::TGT_O_WRONLY, O_WRONLY },
{ SparcLinux::TGT_O_RDWR, O_RDWR }, { SparcLinux::TGT_O_RDWR, O_RDWR },
{ SparcLinux::TGT_O_APPEND, O_APPEND }, { SparcLinux::TGT_O_APPEND, O_APPEND },
{ SparcLinux::TGT_O_CREAT, O_CREAT }, { SparcLinux::TGT_O_CREAT, O_CREAT },
{ SparcLinux::TGT_O_TRUNC, O_TRUNC }, { SparcLinux::TGT_O_TRUNC, O_TRUNC },
{ SparcLinux::TGT_O_EXCL, O_EXCL }, { SparcLinux::TGT_O_EXCL, O_EXCL },
{ SparcLinux::TGT_O_NONBLOCK, O_NONBLOCK }, { SparcLinux::TGT_O_NONBLOCK, O_NONBLOCK },
{ SparcLinux::TGT_O_NOCTTY, O_NOCTTY }, { SparcLinux::TGT_O_NOCTTY, O_NOCTTY },
#ifdef O_SYNC #ifdef O_SYNC
{ SparcLinux::TGT_O_SYNC, O_SYNC }, { SparcLinux::TGT_O_SYNC, O_SYNC },
#endif #endif
#endif /* _MSC_VER */ #endif /* _MSC_VER */
}; };

View file

@ -58,21 +58,21 @@ class SparcLinux : public Linux
static OpenFlagTransTable openFlagTable[]; static OpenFlagTransTable openFlagTable[];
static const int TGT_O_RDONLY = 0x00000000; //!< O_RDONLY static const int TGT_O_RDONLY = 0x00000000; //!< O_RDONLY
static const int TGT_O_WRONLY = 0x00000001; //!< O_WRONLY static const int TGT_O_WRONLY = 0x00000001; //!< O_WRONLY
static const int TGT_O_RDWR = 0x00000002; //!< O_RDWR static const int TGT_O_RDWR = 0x00000002; //!< O_RDWR
static const int TGT_O_NONBLOCK = 0x00004000; //!< O_NONBLOCK static const int TGT_O_NONBLOCK = 0x00004000; //!< O_NONBLOCK
static const int TGT_O_APPEND = 0x00000008; //!< O_APPEND static const int TGT_O_APPEND = 0x00000008; //!< O_APPEND
static const int TGT_O_CREAT = 0x00000200; //!< O_CREAT static const int TGT_O_CREAT = 0x00000200; //!< O_CREAT
static const int TGT_O_TRUNC = 0x00000400; //!< O_TRUNC static const int TGT_O_TRUNC = 0x00000400; //!< O_TRUNC
static const int TGT_O_EXCL = 0x00000800; //!< O_EXCL static const int TGT_O_EXCL = 0x00000800; //!< O_EXCL
static const int TGT_O_NOCTTY = 0x00008000; //!< O_NOCTTY static const int TGT_O_NOCTTY = 0x00008000; //!< O_NOCTTY
static const int TGT_O_SYNC = 0x00002000; //!< O_SYNC static const int TGT_O_SYNC = 0x00002000; //!< O_SYNC
// static const int TGT_O_DRD = 0x00010000; //!< O_DRD // static const int TGT_O_DRD = 0x00010000; //!< O_DRD
// static const int TGT_O_DIRECTIO = 0x00020000; //!< O_DIRECTIO // static const int TGT_O_DIRECTIO = 0x00020000; //!< O_DIRECTIO
// static const int TGT_O_CACHE = 0x00002000; //!< O_CACHE // static const int TGT_O_CACHE = 0x00002000; //!< O_CACHE
// static const int TGT_O_DSYNC = 0x00008000; //!< O_DSYNC // static const int TGT_O_DSYNC = 0x00008000; //!< O_DSYNC
// static const int TGT_O_RSYNC = 0x00040000; //!< O_RSYNC // static const int TGT_O_RSYNC = 0x00040000; //!< O_RSYNC
static const int NUM_OPEN_FLAGS; static const int NUM_OPEN_FLAGS;

View file

@ -171,50 +171,50 @@ namespace SparcISA
private: private:
/* ASR Registers */ /* ASR Registers */
//uint64_t y; // Y (used in obsolete multiplication) //uint64_t y; // Y (used in obsolete multiplication)
//uint8_t ccr; // Condition Code Register //uint8_t ccr; // Condition Code Register
uint8_t asi; // Address Space Identifier uint8_t asi; // Address Space Identifier
uint64_t tick; // Hardware clock-tick counter uint64_t tick; // Hardware clock-tick counter
uint8_t fprs; // Floating-Point Register State uint8_t fprs; // Floating-Point Register State
uint64_t gsr; // General Status Register uint64_t gsr; // General Status Register
uint64_t softint; uint64_t softint;
uint64_t tick_cmpr; // Hardware tick compare registers uint64_t tick_cmpr; // Hardware tick compare registers
uint64_t stick; // Hardware clock-tick counter uint64_t stick; // Hardware clock-tick counter
uint64_t stick_cmpr; // Hardware tick compare registers uint64_t stick_cmpr; // Hardware tick compare registers
/* Privileged Registers */ /* Privileged Registers */
uint64_t tpc[MaxTL]; // Trap Program Counter (value from uint64_t tpc[MaxTL]; // Trap Program Counter (value from
// previous trap level) // previous trap level)
uint64_t tnpc[MaxTL]; // Trap Next Program Counter (value from uint64_t tnpc[MaxTL]; // Trap Next Program Counter (value from
// previous trap level) // previous trap level)
uint64_t tstate[MaxTL]; // Trap State uint64_t tstate[MaxTL]; // Trap State
uint16_t tt[MaxTL]; // Trap Type (Type of trap which occured uint16_t tt[MaxTL]; // Trap Type (Type of trap which occured
// on the previous level) // on the previous level)
uint64_t tba; // Trap Base Address uint64_t tba; // Trap Base Address
uint16_t pstate; // Process State Register uint16_t pstate; // Process State Register
uint8_t tl; // Trap Level uint8_t tl; // Trap Level
uint8_t pil; // Process Interrupt Register uint8_t pil; // Process Interrupt Register
uint8_t cwp; // Current Window Pointer uint8_t cwp; // Current Window Pointer
//uint8_t cansave; // Savable windows //uint8_t cansave; // Savable windows
//uint8_t canrestore; // Restorable windows //uint8_t canrestore; // Restorable windows
//uint8_t cleanwin; // Clean windows //uint8_t cleanwin; // Clean windows
//uint8_t otherwin; // Other windows //uint8_t otherwin; // Other windows
//uint8_t wstate; // Window State //uint8_t wstate; // Window State
uint8_t gl; // Global level register uint8_t gl; // Global level register
/** Hyperprivileged Registers */ /** Hyperprivileged Registers */
uint64_t hpstate; // Hyperprivileged State Register uint64_t hpstate; // Hyperprivileged State Register
uint64_t htstate[MaxTL];// Hyperprivileged Trap State Register uint64_t htstate[MaxTL];// Hyperprivileged Trap State Register
uint64_t hintp; uint64_t hintp;
uint64_t htba; // Hyperprivileged Trap Base Address register uint64_t htba; // Hyperprivileged Trap Base Address register
uint64_t hstick_cmpr; // Hardware tick compare registers uint64_t hstick_cmpr; // Hardware tick compare registers
uint64_t strandStatusReg;// Per strand status register uint64_t strandStatusReg;// Per strand status register
/** Floating point misc registers. */ /** Floating point misc registers. */
uint64_t fsr; // Floating-Point State Register uint64_t fsr; // Floating-Point State Register
/** MMU Internal Registers */ /** MMU Internal Registers */
uint16_t priContext; uint16_t priContext;

View file

@ -48,8 +48,8 @@ namespace SparcISA
class RegFile class RegFile
{ {
protected: protected:
Addr pc; // Program Counter Addr pc; // Program Counter
Addr npc; // Next Program Counter Addr npc; // Next Program Counter
Addr nnpc; Addr nnpc;
public: public:
@ -63,9 +63,9 @@ namespace SparcISA
void setNextNPC(Addr val); void setNextNPC(Addr val);
protected: protected:
IntRegFile intRegFile; // integer register file IntRegFile intRegFile; // integer register file
FloatRegFile floatRegFile; // floating point register file FloatRegFile floatRegFile; // floating point register file
MiscRegFile miscRegFile; // control register file MiscRegFile miscRegFile; // control register file
public: public:

View file

@ -30,7 +30,7 @@
/* /*
* Copyright (c) 1990, 1993 * Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* This software was developed by the Computer Systems Engineering group * This software was developed by the Computer Systems Engineering group
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
@ -38,8 +38,8 @@
* *
* All advertising materials mentioning features or use of this software * All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Lawrence Berkeley Laboratories. * California, Lawrence Berkeley Laboratories.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -51,8 +51,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Berkeley and its contributors. * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors * 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
@ -69,7 +69,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94 * @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94
*/ */
/*- /*-
@ -89,8 +89,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the NetBSD * This product includes software developed by the NetBSD
* Foundation, Inc. and its contributors. * Foundation, Inc. and its contributors.
* 4. Neither the name of The NetBSD Foundation nor the names of its * 4. Neither the name of The NetBSD Foundation nor the names of its
* contributors may be used to endorse or promote products derived * contributors may be used to endorse or promote products derived
* from this software without specific prior written permission. * from this software without specific prior written permission.
@ -146,7 +146,7 @@ RemoteGDB::RemoteGDB(System *_system, ThreadContext *c)
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// RemoteGDB::acc // RemoteGDB::acc
// //
// Determine if the mapping at va..(va+len) is valid. // Determine if the mapping at va..(va+len) is valid.
// //
bool bool
RemoteGDB::acc(Addr va, size_t len) RemoteGDB::acc(Addr va, size_t len)
@ -171,8 +171,8 @@ RemoteGDB::acc(Addr va, size_t len)
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// RemoteGDB::getregs // RemoteGDB::getregs
// //
// Translate the kernel debugger register format into // Translate the kernel debugger register format into
// the GDB register format. // the GDB register format.
void void
RemoteGDB::getregs() RemoteGDB::getregs()
{ {
@ -217,8 +217,8 @@ RemoteGDB::getregs()
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// RemoteGDB::setregs // RemoteGDB::setregs
// //
// Translate the GDB register format into the kernel // Translate the GDB register format into the kernel
// debugger register format. // debugger register format.
// //
void void
RemoteGDB::setregs() RemoteGDB::setregs()

View file

@ -35,40 +35,40 @@
// open(2) flags translation table // open(2) flags translation table
OpenFlagTransTable SparcSolaris::openFlagTable[] = { OpenFlagTransTable SparcSolaris::openFlagTable[] = {
#ifdef _MSC_VER #ifdef _MSC_VER
{ SparcSolaris::TGT_O_RDONLY, _O_RDONLY }, { SparcSolaris::TGT_O_RDONLY, _O_RDONLY },
{ SparcSolaris::TGT_O_WRONLY, _O_WRONLY }, { SparcSolaris::TGT_O_WRONLY, _O_WRONLY },
{ SparcSolaris::TGT_O_RDWR, _O_RDWR }, { SparcSolaris::TGT_O_RDWR, _O_RDWR },
{ SparcSolaris::TGT_O_APPEND, _O_APPEND }, { SparcSolaris::TGT_O_APPEND, _O_APPEND },
{ SparcSolaris::TGT_O_CREAT, _O_CREAT }, { SparcSolaris::TGT_O_CREAT, _O_CREAT },
{ SparcSolaris::TGT_O_TRUNC, _O_TRUNC }, { SparcSolaris::TGT_O_TRUNC, _O_TRUNC },
{ SparcSolaris::TGT_O_EXCL, _O_EXCL }, { SparcSolaris::TGT_O_EXCL, _O_EXCL },
#ifdef _O_NONBLOCK #ifdef _O_NONBLOCK
{ SparcSolaris::TGT_O_NONBLOCK, _O_NONBLOCK }, { SparcSolaris::TGT_O_NONBLOCK, _O_NONBLOCK },
{ SparcSolaris::TGT_O_NDELAY , _O_NONBLOCK }, { SparcSolaris::TGT_O_NDELAY , _O_NONBLOCK },
#endif #endif
#ifdef _O_NOCTTY #ifdef _O_NOCTTY
{ SparcSolaris::TGT_O_NOCTTY, _O_NOCTTY }, { SparcSolaris::TGT_O_NOCTTY, _O_NOCTTY },
#endif #endif
#ifdef _O_SYNC #ifdef _O_SYNC
{ SparcSolaris::TGT_O_SYNC, _O_SYNC }, { SparcSolaris::TGT_O_SYNC, _O_SYNC },
{ SparcSolaris::TGT_O_DSYNC, _O_SYNC }, { SparcSolaris::TGT_O_DSYNC, _O_SYNC },
{ SparcSolaris::TGT_O_RSYNC, _O_SYNC }, { SparcSolaris::TGT_O_RSYNC, _O_SYNC },
#endif #endif
#else /* !_MSC_VER */ #else /* !_MSC_VER */
{ SparcSolaris::TGT_O_RDONLY, O_RDONLY }, { SparcSolaris::TGT_O_RDONLY, O_RDONLY },
{ SparcSolaris::TGT_O_WRONLY, O_WRONLY }, { SparcSolaris::TGT_O_WRONLY, O_WRONLY },
{ SparcSolaris::TGT_O_RDWR, O_RDWR }, { SparcSolaris::TGT_O_RDWR, O_RDWR },
{ SparcSolaris::TGT_O_APPEND, O_APPEND }, { SparcSolaris::TGT_O_APPEND, O_APPEND },
{ SparcSolaris::TGT_O_CREAT, O_CREAT }, { SparcSolaris::TGT_O_CREAT, O_CREAT },
{ SparcSolaris::TGT_O_TRUNC, O_TRUNC }, { SparcSolaris::TGT_O_TRUNC, O_TRUNC },
{ SparcSolaris::TGT_O_EXCL, O_EXCL }, { SparcSolaris::TGT_O_EXCL, O_EXCL },
{ SparcSolaris::TGT_O_NONBLOCK, O_NONBLOCK }, { SparcSolaris::TGT_O_NONBLOCK, O_NONBLOCK },
{ SparcSolaris::TGT_O_NDELAY , O_NONBLOCK }, { SparcSolaris::TGT_O_NDELAY , O_NONBLOCK },
{ SparcSolaris::TGT_O_NOCTTY, O_NOCTTY }, { SparcSolaris::TGT_O_NOCTTY, O_NOCTTY },
#ifdef O_SYNC #ifdef O_SYNC
{ SparcSolaris::TGT_O_SYNC, O_SYNC }, { SparcSolaris::TGT_O_SYNC, O_SYNC },
{ SparcSolaris::TGT_O_DSYNC, O_SYNC }, { SparcSolaris::TGT_O_DSYNC, O_SYNC },
{ SparcSolaris::TGT_O_RSYNC, O_SYNC }, { SparcSolaris::TGT_O_RSYNC, O_SYNC },
#endif #endif
#endif /* _MSC_VER */ #endif /* _MSC_VER */
}; };

View file

@ -39,22 +39,22 @@ class SparcSolaris : public Solaris
static OpenFlagTransTable openFlagTable[]; static OpenFlagTransTable openFlagTable[];
static const int TGT_O_RDONLY = 0x00000000; //!< O_RDONLY static const int TGT_O_RDONLY = 0x00000000; //!< O_RDONLY
static const int TGT_O_WRONLY = 0x00000001; //!< O_WRONLY static const int TGT_O_WRONLY = 0x00000001; //!< O_WRONLY
static const int TGT_O_RDWR = 0x00000002; //!< O_RDWR static const int TGT_O_RDWR = 0x00000002; //!< O_RDWR
static const int TGT_O_NDELAY = 0x00000004; //!< O_NONBLOCK static const int TGT_O_NDELAY = 0x00000004; //!< O_NONBLOCK
static const int TGT_O_APPEND = 0x00000008; //!< O_APPEND static const int TGT_O_APPEND = 0x00000008; //!< O_APPEND
static const int TGT_O_SYNC = 0x00000010; //!< O_SYNC static const int TGT_O_SYNC = 0x00000010; //!< O_SYNC
static const int TGT_O_DSYNC = 0x00000040; //!< O_SYNC static const int TGT_O_DSYNC = 0x00000040; //!< O_SYNC
static const int TGT_O_RSYNC = 0x00008000; //!< O_SYNC static const int TGT_O_RSYNC = 0x00008000; //!< O_SYNC
static const int TGT_O_NONBLOCK = 0x00000080; //!< O_NONBLOCK static const int TGT_O_NONBLOCK = 0x00000080; //!< O_NONBLOCK
static const int TGT_O_PRIV = 0x00001000; //?? static const int TGT_O_PRIV = 0x00001000; //??
static const int TGT_O_LARGEFILE = 0x00002000; //?? static const int TGT_O_LARGEFILE = 0x00002000; //??
static const int TGT_O_CREAT = 0x00000100; //!< O_CREAT static const int TGT_O_CREAT = 0x00000100; //!< O_CREAT
static const int TGT_O_TRUNC = 0x00000200; //!< O_TRUNC static const int TGT_O_TRUNC = 0x00000200; //!< O_TRUNC
static const int TGT_O_EXCL = 0x00000400; //!< O_EXCL static const int TGT_O_EXCL = 0x00000400; //!< O_EXCL
static const int TGT_O_NOCTTY = 0x00000800; //!< O_NOCTTY static const int TGT_O_NOCTTY = 0x00000800; //!< O_NOCTTY
static const int TGT_O_XATTR = 0x00004000; //?? static const int TGT_O_XATTR = 0x00004000; //??
static const int NUM_OPEN_FLAGS; static const int NUM_OPEN_FLAGS;

View file

@ -47,8 +47,8 @@ namespace SparcISA
// const int NumRegularIntRegs = MaxGL * 8 + NWindows * 16; // const int NumRegularIntRegs = MaxGL * 8 + NWindows * 16;
// const int NumMicroIntRegs = 1; // const int NumMicroIntRegs = 1;
// const int NumIntRegs = // const int NumIntRegs =
// NumRegularIntRegs + // NumRegularIntRegs +
// NumMicroIntRegs; // NumMicroIntRegs;
// const int NumFloatRegs = 64; // const int NumFloatRegs = 64;
// const int NumMiscRegs = 40; // const int NumMiscRegs = 40;
} }

View file

@ -56,17 +56,17 @@
microcode = "" microcode = ""
#let {{ #let {{
# class LFENCE(Inst): # class LFENCE(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class SFENCE(Inst): # class SFENCE(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class MFENCE(Inst): # class MFENCE(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class PREFETCHlevel(Inst): # class PREFETCHlevel(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class PREFETCH(Inst): # class PREFETCH(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class PREFETCHW(Inst): # class PREFETCHW(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class CLFLUSH(Inst): # class CLFLUSH(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -103,5 +103,5 @@ def macroop CALL_NEAR_P
''' '''
#let {{ #let {{
# class CALL(Inst): # class CALL(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -239,7 +239,7 @@ def macroop IRET_VIRT {
''' '''
#let {{ #let {{
# class INT(Inst): # class INT(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class INTO(Inst): # class INTO(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -56,11 +56,11 @@
microcode = "" microcode = ""
#let {{ #let {{
# class AAA(Inst): # class AAA(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class AAD(Inst): # class AAD(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class AAM(Inst): # class AAM(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class AAS(Inst): # class AAS(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -56,7 +56,7 @@
microcode = "" microcode = ""
#let {{ #let {{
# class DAA(Inst): # class DAA(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class DAS(Inst): # class DAS(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -56,5 +56,5 @@
microcode = "" microcode = ""
#let {{ #let {{
# class BSWAP(Inst): # class BSWAP(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -56,7 +56,7 @@
microcode = "" microcode = ""
#let {{ #let {{
# class MOVMSKPS(Inst): # class MOVMSKPS(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class MOVMSKPD(Inst): # class MOVMSKPD(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -342,7 +342,7 @@ processDescriptor:
''' '''
#let {{ #let {{
# class MOVD(Inst): # class MOVD(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class MOVNTI(Inst): # class MOVNTI(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -56,17 +56,17 @@
microcode = "" microcode = ""
#let {{ #let {{
# class LDS(Inst): # class LDS(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class LES(Inst): # class LES(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class LFS(Inst): # class LFS(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class LGS(Inst): # class LGS(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class LSS(Inst): # class LSS(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class MOV_SEG(Inst): # class MOV_SEG(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class POP(Inst): # class POP(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -81,7 +81,7 @@ def macroop CMPXCHG_P_R {
''' '''
#let {{ #let {{
# class XADD(Inst): # class XADD(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class XCHG(Inst): # class XCHG(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -56,11 +56,11 @@
microcode = "" microcode = ""
#let {{ #let {{
# class SYSENTER(Inst): # class SYSENTER(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class SYSEXIT(Inst): # class SYSEXIT(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class SYSCALL(Inst): # class SYSCALL(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
# class SYSRET(Inst): # class SYSRET(Inst):
# "GenFault ${new UnimpInstFault}" # "GenFault ${new UnimpInstFault}"
#}}; #}};

View file

@ -87,21 +87,21 @@ class X86Linux64 : public Linux
static OpenFlagTransTable openFlagTable[]; static OpenFlagTransTable openFlagTable[];
static const int TGT_O_RDONLY = 00000000; //!< O_RDONLY static const int TGT_O_RDONLY = 00000000; //!< O_RDONLY
static const int TGT_O_WRONLY = 00000001; //!< O_WRONLY static const int TGT_O_WRONLY = 00000001; //!< O_WRONLY
static const int TGT_O_RDWR = 00000002; //!< O_RDWR static const int TGT_O_RDWR = 00000002; //!< O_RDWR
static const int TGT_O_NONBLOCK = 00004000; //!< O_NONBLOCK static const int TGT_O_NONBLOCK = 00004000; //!< O_NONBLOCK
static const int TGT_O_APPEND = 00002000; //!< O_APPEND static const int TGT_O_APPEND = 00002000; //!< O_APPEND
static const int TGT_O_CREAT = 00000100; //!< O_CREAT static const int TGT_O_CREAT = 00000100; //!< O_CREAT
static const int TGT_O_TRUNC = 00001000; //!< O_TRUNC static const int TGT_O_TRUNC = 00001000; //!< O_TRUNC
static const int TGT_O_EXCL = 00000200; //!< O_EXCL static const int TGT_O_EXCL = 00000200; //!< O_EXCL
static const int TGT_O_NOCTTY = 00000400; //!< O_NOCTTY static const int TGT_O_NOCTTY = 00000400; //!< O_NOCTTY
static const int TGT_O_SYNC = 00010000; //!< O_SYNC static const int TGT_O_SYNC = 00010000; //!< O_SYNC
// static const int TGT_O_DRD = 0x00010000; //!< O_DRD // static const int TGT_O_DRD = 0x00010000; //!< O_DRD
// static const int TGT_O_DIRECTIO = 0x00020000; //!< O_DIRECTIO // static const int TGT_O_DIRECTIO = 0x00020000; //!< O_DIRECTIO
// static const int TGT_O_CACHE = 0x00002000; //!< O_CACHE // static const int TGT_O_CACHE = 0x00002000; //!< O_CACHE
// static const int TGT_O_DSYNC = 0x00008000; //!< O_DSYNC // static const int TGT_O_DSYNC = 0x00008000; //!< O_DSYNC
// static const int TGT_O_RSYNC = 0x00040000; //!< O_RSYNC // static const int TGT_O_RSYNC = 0x00040000; //!< O_RSYNC
static const int NUM_OPEN_FLAGS; static const int NUM_OPEN_FLAGS;

View file

@ -57,7 +57,7 @@
/* /*
* Copyright (c) 1990, 1993 * Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* This software was developed by the Computer Systems Engineering group * This software was developed by the Computer Systems Engineering group
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
@ -65,8 +65,8 @@
* *
* All advertising materials mentioning features or use of this software * All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Lawrence Berkeley Laboratories. * California, Lawrence Berkeley Laboratories.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -78,8 +78,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Berkeley and its contributors. * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors * 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
@ -96,7 +96,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94 * @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94
*/ */
/*- /*-
@ -116,8 +116,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the NetBSD * This product includes software developed by the NetBSD
* Foundation, Inc. and its contributors. * Foundation, Inc. and its contributors.
* 4. Neither the name of The NetBSD Foundation nor the names of its * 4. Neither the name of The NetBSD Foundation nor the names of its
* contributors may be used to endorse or promote products derived * contributors may be used to endorse or promote products derived
* from this software without specific prior written permission. * from this software without specific prior written permission.

View file

@ -34,7 +34,7 @@
#include <inttypes.h> #include <inttypes.h>
#include "base/bitfield.hh" #include "base/bitfield.hh"
// The following implements the BitUnion system of defining bitfields // The following implements the BitUnion system of defining bitfields
//on top of an underlying class. This is done through the pervasive use of //on top of an underlying class. This is done through the pervasive use of
//both named and unnamed unions which all contain the same actual storage. //both named and unnamed unions which all contain the same actual storage.
//Since they're unioned with each other, all of these storage locations //Since they're unioned with each other, all of these storage locations

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1988, 1992, 1993 * Copyright (c) 1988, 1992, 1993
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Berkeley and its contributors. * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors * 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.

View file

@ -56,7 +56,7 @@ void *FastAlloc::moreStructs(int bucket)
assert(bucket > 0 && bucket < Num_Buckets); assert(bucket > 0 && bucket < Num_Buckets);
int sz = bucket * Alloc_Quantum; int sz = bucket * Alloc_Quantum;
const int nstructs = Num_Structs_Per_New; // how many to allocate? const int nstructs = Num_Structs_Per_New; // how many to allocate?
char *p = ::new char[nstructs * sz]; char *p = ::new char[nstructs * sz];
#if FAST_ALLOC_STATS #if FAST_ALLOC_STATS

View file

@ -84,7 +84,7 @@ class FastAlloc {
#if FAST_ALLOC_DEBUG #if FAST_ALLOC_DEBUG
FastAlloc(); FastAlloc();
FastAlloc(FastAlloc*,FastAlloc*); // for inUseHead, see below FastAlloc(FastAlloc*,FastAlloc*); // for inUseHead, see below
virtual ~FastAlloc(); virtual ~FastAlloc();
#else #else
virtual ~FastAlloc() {} virtual ~FastAlloc() {}
@ -123,13 +123,13 @@ class FastAlloc {
#if FAST_ALLOC_DEBUG #if FAST_ALLOC_DEBUG
// per-object debugging fields // per-object debugging fields
bool inUse; // in-use flag bool inUse; // in-use flag
FastAlloc *inUsePrev; // ptrs to build list of in-use objects FastAlloc *inUsePrev; // ptrs to build list of in-use objects
FastAlloc *inUseNext; FastAlloc *inUseNext;
// static (global) debugging vars // static (global) debugging vars
static int numInUse; // count in-use objects static int numInUse; // count in-use objects
static FastAlloc inUseHead; // dummy head for list of in-use objects static FastAlloc inUseHead; // dummy head for list of in-use objects
public: public:
// functions to dump debugging info (see fast_alloc.cc for C // functions to dump debugging info (see fast_alloc.cc for C

View file

@ -61,8 +61,8 @@ class IniFile
/// ///
class Entry class Entry
{ {
std::string value; ///< The entry value. std::string value; ///< The entry value.
mutable bool referenced; ///< Has this entry been used? mutable bool referenced; ///< Has this entry been used?
public: public:
/// Constructor. /// Constructor.
@ -96,8 +96,8 @@ class IniFile
/// EntryTable type. Map of strings to Entry object pointers. /// EntryTable type. Map of strings to Entry object pointers.
typedef m5::hash_map<std::string, Entry *> EntryTable; typedef m5::hash_map<std::string, Entry *> EntryTable;
EntryTable table; ///< Table of entries. EntryTable table; ///< Table of entries.
mutable bool referenced; ///< Has this section been used? mutable bool referenced; ///< Has this section been used?
public: public:
/// Constructor. /// Constructor.

View file

@ -34,7 +34,7 @@
#include "base/loader/symtab.hh" #include "base/loader/symtab.hh"
#include "base/trace.hh" // for DPRINTF #include "base/trace.hh" // for DPRINTF
#include "base/loader/exec_aout.h" #include "base/loader/exec_aout.h"

View file

@ -65,7 +65,7 @@
* *
* Symbols are assumed to be in 'encounter order' - i.e. the order that * Symbols are assumed to be in 'encounter order' - i.e. the order that
* the things they represent were encountered by the compiler/assembler/loader. * the things they represent were encountered by the compiler/assembler/loader.
* EXCEPT for globals! These are assumed to be bunched together, * EXCEPT for globals! These are assumed to be bunched together,
* probably right after the last 'normal' symbol. Globals ARE sorted * probably right after the last 'normal' symbol. Globals ARE sorted
* in ascending order. * in ascending order.
* *
@ -76,13 +76,13 @@
* All "ifooMax" values are the highest legal value PLUS ONE. This makes * All "ifooMax" values are the highest legal value PLUS ONE. This makes
* them good for allocating arrays, etc. All checks are "ifoo < ifooMax". * them good for allocating arrays, etc. All checks are "ifoo < ifooMax".
* *
* "isym" Index into the SYMbol table. * "isym" Index into the SYMbol table.
* "ipd" Index into the Procedure Descriptor array. * "ipd" Index into the Procedure Descriptor array.
* "ifd" Index into the File Descriptor array. * "ifd" Index into the File Descriptor array.
* "iss" Index into String Space. * "iss" Index into String Space.
* "cb" Count of Bytes. * "cb" Count of Bytes.
* "rgPd" array whose domain is "0..ipdMax-1" and RanGe is PDR. * "rgPd" array whose domain is "0..ipdMax-1" and RanGe is PDR.
* "rgFd" array whose domain is "0..ifdMax-1" and RanGe is FDR. * "rgFd" array whose domain is "0..ifdMax-1" and RanGe is FDR.
*/ */
@ -97,31 +97,31 @@
*/ */
typedef struct ecoff_symhdr { typedef struct ecoff_symhdr {
coff_short magic; /* to verify validity of the table */ coff_short magic; /* to verify validity of the table */
coff_short vstamp; /* version stamp */ coff_short vstamp; /* version stamp */
coff_int ilineMax; /* number of line number entries */ coff_int ilineMax; /* number of line number entries */
coff_int idnMax; /* max index into dense number table */ coff_int idnMax; /* max index into dense number table */
coff_int ipdMax; /* number of procedures */ coff_int ipdMax; /* number of procedures */
coff_int isymMax; /* number of local symbols */ coff_int isymMax; /* number of local symbols */
coff_int ioptMax; /* max index into optimization symbol entries */ coff_int ioptMax; /* max index into optimization symbol entries */
coff_int iauxMax; /* number of auxillary symbol entries */ coff_int iauxMax; /* number of auxillary symbol entries */
coff_int issMax; /* max index into local strings */ coff_int issMax; /* max index into local strings */
coff_int issExtMax; /* max index into external strings */ coff_int issExtMax; /* max index into external strings */
coff_int ifdMax; /* number of file descriptor entries */ coff_int ifdMax; /* number of file descriptor entries */
coff_int crfd; /* number of relative file descriptor entries */ coff_int crfd; /* number of relative file descriptor entries */
coff_int iextMax; /* max index into external symbols */ coff_int iextMax; /* max index into external symbols */
coff_addr cbLine; /* number of bytes for line number entries */ coff_addr cbLine; /* number of bytes for line number entries */
coff_addr cbLineOffset; /* offset to start of line number entries*/ coff_addr cbLineOffset; /* offset to start of line number entries*/
coff_addr cbDnOffset; /* offset to start dense number table */ coff_addr cbDnOffset; /* offset to start dense number table */
coff_addr cbPdOffset; /* offset to procedure descriptor table */ coff_addr cbPdOffset; /* offset to procedure descriptor table */
coff_addr cbSymOffset; /* offset to start of local symbols*/ coff_addr cbSymOffset; /* offset to start of local symbols*/
coff_addr cbOptOffset; /* offset to optimization symbol entries */ coff_addr cbOptOffset; /* offset to optimization symbol entries */
coff_addr cbAuxOffset; /* offset to start of auxillary symbol entries*/ coff_addr cbAuxOffset; /* offset to start of auxillary symbol entries*/
coff_addr cbSsOffset; /* offset to start of local strings */ coff_addr cbSsOffset; /* offset to start of local strings */
coff_addr cbSsExtOffset; /* offset to start of external strings */ coff_addr cbSsExtOffset; /* offset to start of external strings */
coff_addr cbFdOffset; /* offset to file descriptor table */ coff_addr cbFdOffset; /* offset to file descriptor table */
coff_addr cbRfdOffset; /* offset to relative file descriptor table */ coff_addr cbRfdOffset; /* offset to relative file descriptor table */
coff_addr cbExtOffset; /* offset to start of external symbol entries*/ coff_addr cbExtOffset; /* offset to start of external symbol entries*/
/* If you add machine dependent fields, add them here */ /* If you add machine dependent fields, add them here */
} HDRR, *pHDRR; } HDRR, *pHDRR;
#define cbHDRR sizeof(HDRR) #define cbHDRR sizeof(HDRR)
@ -138,39 +138,39 @@ typedef struct ecoff_symhdr {
* *
* There is one of these for EVERY FILE, whether compiled with * There is one of these for EVERY FILE, whether compiled with
* full debugging symbols or not. The name of a file should be * full debugging symbols or not. The name of a file should be
* the path name given to the compiler. This allows the user * the path name given to the compiler. This allows the user
* to simply specify the names of the directories where the COMPILES * to simply specify the names of the directories where the COMPILES
* were done, and we will be able to find their files. * were done, and we will be able to find their files.
* A field whose comment starts with "R - " indicates that it will be * A field whose comment starts with "R - " indicates that it will be
* setup at runtime. * setup at runtime.
*/ */
typedef struct ecoff_fdr { typedef struct ecoff_fdr {
coff_addr adr; /* memory address of beginning of file */ coff_addr adr; /* memory address of beginning of file */
coff_addr cbLineOffset; /* byte offset from header for this file ln's */ coff_addr cbLineOffset; /* byte offset from header for this file ln's */
coff_addr cbLine; /* size of lines for this file */ coff_addr cbLine; /* size of lines for this file */
coff_addr cbSs; /* number of bytes in the ss */ coff_addr cbSs; /* number of bytes in the ss */
coff_int rss; /* file name (of source, if known) */ coff_int rss; /* file name (of source, if known) */
coff_int issBase; /* file's string space */ coff_int issBase; /* file's string space */
coff_int isymBase; /* beginning of symbols */ coff_int isymBase; /* beginning of symbols */
coff_int csym; /* count file's of symbols */ coff_int csym; /* count file's of symbols */
coff_int ilineBase; /* file's line symbols */ coff_int ilineBase; /* file's line symbols */
coff_int cline; /* count of file's line symbols */ coff_int cline; /* count of file's line symbols */
coff_int ioptBase; /* file's optimization entries */ coff_int ioptBase; /* file's optimization entries */
coff_int copt; /* count of file's optimization entries */ coff_int copt; /* count of file's optimization entries */
coff_int ipdFirst; /* start of procedures for this file */ coff_int ipdFirst; /* start of procedures for this file */
coff_int cpd; /* count of procedures for this file */ coff_int cpd; /* count of procedures for this file */
coff_int iauxBase; /* file's auxiliary entries */ coff_int iauxBase; /* file's auxiliary entries */
coff_int caux; /* count of file's auxiliary entries */ coff_int caux; /* count of file's auxiliary entries */
coff_int rfdBase; /* index into the file indirect table */ coff_int rfdBase; /* index into the file indirect table */
coff_int crfd; /* count file indirect entries */ coff_int crfd; /* count file indirect entries */
unsigned lang: 5; /* language for this file */ unsigned lang: 5; /* language for this file */
unsigned fMerge : 1; /* whether this file can be merged */ unsigned fMerge : 1; /* whether this file can be merged */
unsigned fReadin : 1; /* true if it was read in (not just created) */ unsigned fReadin : 1; /* true if it was read in (not just created) */
unsigned fBigendian : 1;/* if set, was compiled on big endian machine */ unsigned fBigendian : 1;/* if set, was compiled on big endian machine */
/* aux's will be in compile host's sex */ /* aux's will be in compile host's sex */
unsigned glevel : 2; /* level this file was compiled with */ unsigned glevel : 2; /* level this file was compiled with */
unsigned reserved : 22; /* reserved for future use */ unsigned reserved : 22; /* reserved for future use */
coff_uint reserved2; coff_uint reserved2;
} FDR, *pFDR; } FDR, *pFDR;
#define cbFDR sizeof(FDR) #define cbFDR sizeof(FDR)
#define fdNil ((pFDR)0) #define fdNil ((pFDR)0)
@ -189,31 +189,31 @@ typedef struct ecoff_fdr {
*/ */
typedef struct pdr { typedef struct pdr {
coff_addr adr; /* memory address of start of procedure */ coff_addr adr; /* memory address of start of procedure */
coff_addr cbLineOffset; /* byte offset for this procedure from the fd base */ coff_addr cbLineOffset; /* byte offset for this procedure from the fd base */
coff_int isym; /* start of local symbol entries */ coff_int isym; /* start of local symbol entries */
coff_int iline; /* start of line number entries*/ coff_int iline; /* start of line number entries*/
coff_uint regmask; /* save register mask */ coff_uint regmask; /* save register mask */
coff_int regoffset; /* save register offset */ coff_int regoffset; /* save register offset */
coff_int iopt; /* start of optimization symbol entries*/ coff_int iopt; /* start of optimization symbol entries*/
coff_uint fregmask; /* save floating point register mask */ coff_uint fregmask; /* save floating point register mask */
coff_int fregoffset; /* save floating point register offset */ coff_int fregoffset; /* save floating point register offset */
coff_int frameoffset; /* frame size */ coff_int frameoffset; /* frame size */
coff_int lnLow; /* lowest line in the procedure */ coff_int lnLow; /* lowest line in the procedure */
coff_int lnHigh; /* highest line in the procedure */ coff_int lnHigh; /* highest line in the procedure */
/* These fields are new for 64 bit ECOFF. */ /* These fields are new for 64 bit ECOFF. */
unsigned gp_prologue : 8; /* byte size of GP prologue */ unsigned gp_prologue : 8; /* byte size of GP prologue */
unsigned gp_used : 1; /* true if the procedure uses GP */ unsigned gp_used : 1; /* true if the procedure uses GP */
unsigned reg_frame : 1; /* true if register frame procedure */ unsigned reg_frame : 1; /* true if register frame procedure */
unsigned prof : 1; /* true if compiled with -pg */ unsigned prof : 1; /* true if compiled with -pg */
unsigned reserved : 13; /* reserved: must be zero */ unsigned reserved : 13; /* reserved: must be zero */
unsigned localoff : 8; /* offset of local variables from vfp */ unsigned localoff : 8; /* offset of local variables from vfp */
coff_short framereg; /* frame pointer register */ coff_short framereg; /* frame pointer register */
coff_short pcreg; /* offset or reg of return pc */ coff_short pcreg; /* offset or reg of return pc */
} PDR, *pPDR; } PDR, *pPDR;
#define cbPDR sizeof(PDR) #define cbPDR sizeof(PDR)
#define pdNil ((pPDR) 0) #define pdNil ((pPDR) 0)
#define ipdNil -1 #define ipdNil -1
/* /*
* The structure of the runtime procedure descriptor created by the loader * The structure of the runtime procedure descriptor created by the loader
@ -225,16 +225,16 @@ typedef struct pdr {
*/ */
#if 0 #if 0
typedef struct runtime_pdr { typedef struct runtime_pdr {
coff_addr adr; /* memory address of start of procedure */ coff_addr adr; /* memory address of start of procedure */
coff_uint regmask; /* save register mask */ coff_uint regmask; /* save register mask */
coff_int regoffset; /* save register offset */ coff_int regoffset; /* save register offset */
coff_uint fregmask; /* save floating point register mask */ coff_uint fregmask; /* save floating point register mask */
coff_int fregoffset; /* save floating point register offset */ coff_int fregoffset; /* save floating point register offset */
coff_int frameoffset; /* frame size */ coff_int frameoffset; /* frame size */
coff_ushort framereg; /* frame pointer register */ coff_ushort framereg; /* frame pointer register */
coff_ushort pcreg; /* offset or reg of return pc */ coff_ushort pcreg; /* offset or reg of return pc */
coff_int irpss; /* index into the runtime string table */ coff_int irpss; /* index into the runtime string table */
coff_uint reserved; coff_uint reserved;
struct exception_info *exception_info;/* pointer to exception array */ struct exception_info *exception_info;/* pointer to exception array */
} RPDR, *pRPDR; } RPDR, *pRPDR;
#define cbRPDR sizeof(RPDR) #define cbRPDR sizeof(RPDR)
@ -253,24 +253,24 @@ typedef struct runtime_pdr {
* the first line of a procedure and represent the first address. * the first line of a procedure and represent the first address.
*/ */
typedef coff_int LINER, *pLINER; typedef coff_int LINER, *pLINER;
#define lineNil ((pLINER)0) #define lineNil ((pLINER)0)
#define cbLINER sizeof(LINER) #define cbLINER sizeof(LINER)
#define ilineNil -1 #define ilineNil -1
/* /*
* The Symbol Structure (GFW, to those who Know!) * The Symbol Structure (GFW, to those who Know!)
*/ */
typedef struct ecoff_sym { typedef struct ecoff_sym {
coff_long value; /* value of symbol */ coff_long value; /* value of symbol */
coff_int iss; /* index into String Space of name */ coff_int iss; /* index into String Space of name */
unsigned st : 6; /* symbol type */ unsigned st : 6; /* symbol type */
unsigned sc : 5; /* storage class - text, data, etc */ unsigned sc : 5; /* storage class - text, data, etc */
unsigned reserved : 1; /* reserved */ unsigned reserved : 1; /* reserved */
unsigned index : 20; /* index into sym/aux table */ unsigned index : 20; /* index into sym/aux table */
} SYMR, *pSYMR; } SYMR, *pSYMR;
#define symNil ((pSYMR)0) #define symNil ((pSYMR)0)
#define cbSYMR sizeof(SYMR) #define cbSYMR sizeof(SYMR)
@ -287,22 +287,22 @@ typedef struct ecoff_sym {
/* E X T E R N A L S Y M B O L R E C O R D /* E X T E R N A L S Y M B O L R E C O R D
* *
* Same as the SYMR except it contains file context to determine where * Same as the SYMR except it contains file context to determine where
* the index is. * the index is.
*/ */
typedef struct ecoff_extsym { typedef struct ecoff_extsym {
SYMR asym; /* symbol for the external */ SYMR asym; /* symbol for the external */
unsigned jmptbl:1; /* symbol is a jump table entry for shlibs */ unsigned jmptbl:1; /* symbol is a jump table entry for shlibs */
unsigned cobol_main:1; /* symbol is a cobol main procedure */ unsigned cobol_main:1; /* symbol is a cobol main procedure */
unsigned weakext:1; /* symbol is weak external */ unsigned weakext:1; /* symbol is weak external */
unsigned reserved:29; /* reserved for future use */ unsigned reserved:29; /* reserved for future use */
coff_int ifd; /* where the iss and index fields point into */ coff_int ifd; /* where the iss and index fields point into */
} EXTR, *pEXTR; } EXTR, *pEXTR;
#define extNil ((pEXTR)0) #define extNil ((pEXTR)0)
#define cbEXTR sizeof(EXTR) #define cbEXTR sizeof(EXTR)
/* A U X I L L A R Y T Y P E I N F O R M A T I O N */ /* A U X I L L A R Y T Y P E I N F O R M A T I O N */
/* /*
* Type Information Record * Type Information Record
@ -310,12 +310,12 @@ typedef struct ecoff_extsym {
typedef struct { typedef struct {
unsigned fBitfield : 1; /* set if bit width is specified */ unsigned fBitfield : 1; /* set if bit width is specified */
unsigned continued : 1; /* indicates additional TQ info in next AUX */ unsigned continued : 1; /* indicates additional TQ info in next AUX */
unsigned bt : 6; /* basic type */ unsigned bt : 6; /* basic type */
unsigned tq4 : 4; unsigned tq4 : 4;
unsigned tq5 : 4; unsigned tq5 : 4;
/* ---- 16 bit boundary ---- */ /* ---- 16 bit boundary ---- */
unsigned tq0 : 4; unsigned tq0 : 4;
unsigned tq1 : 4; /* 6 type qualifiers - tqPtr, etc. */ unsigned tq1 : 4; /* 6 type qualifiers - tqPtr, etc. */
unsigned tq2 : 4; unsigned tq2 : 4;
unsigned tq3 : 4; unsigned tq3 : 4;
} TIR, *pTIR; } TIR, *pTIR;
@ -327,22 +327,22 @@ typedef struct {
* Relative symbol record * Relative symbol record
* *
* If the rfd field is 4095, the index field indexes into the global symbol * If the rfd field is 4095, the index field indexes into the global symbol
* table. * table.
*/ */
typedef struct { typedef struct {
unsigned rfd : 12; /* index into the file indirect table */ unsigned rfd : 12; /* index into the file indirect table */
unsigned index : 20; /* index int sym/aux/iss tables */ unsigned index : 20; /* index int sym/aux/iss tables */
} RNDXR, *pRNDXR; } RNDXR, *pRNDXR;
#define cbRNDXR sizeof(RNDXR) #define cbRNDXR sizeof(RNDXR)
#define rndxNil ((pRNDXR)0) #define rndxNil ((pRNDXR)0)
/* dense numbers or sometimes called block numbers are stored in this type, /* dense numbers or sometimes called block numbers are stored in this type,
* a rfd of 0xffffffff is an index into the global table. * a rfd of 0xffffffff is an index into the global table.
*/ */
typedef struct { typedef struct {
coff_uint rfd; /* index into the file table */ coff_uint rfd; /* index into the file table */
coff_uint index; /* index int sym/aux/iss tables */ coff_uint index; /* index int sym/aux/iss tables */
} DNR, *pDNR; } DNR, *pDNR;
#define cbDNR sizeof(DNR) #define cbDNR sizeof(DNR)
#define dnNil ((pDNR)0) #define dnNil ((pDNR)0)
@ -353,36 +353,36 @@ typedef struct {
* Auxillary information occurs only if needed. * Auxillary information occurs only if needed.
* It ALWAYS occurs in this order when present. * It ALWAYS occurs in this order when present.
isymMac used by stProc only isymMac used by stProc only
TIR type info TIR type info
TIR additional TQ info (if first TIR was not enough) TIR additional TQ info (if first TIR was not enough)
rndx if (bt == btStruct,btUnion,btEnum,btSet,btRange, rndx if (bt == btStruct,btUnion,btEnum,btSet,btRange,
btTypedef): btTypedef):
rsym.index == iaux for btSet or btRange rsym.index == iaux for btSet or btRange
else rsym.index == isym else rsym.index == isym
dimLow btRange, btSet dimLow btRange, btSet
dimMac btRange, btSet dimMac btRange, btSet
rndx0 As many as there are tq arrays rndx0 As many as there are tq arrays
dimLow0 dimLow0
dimHigh0 dimHigh0
... ...
rndxMax-1 rndxMax-1
dimLowMax-1 dimLowMax-1
dimHighMax-1 dimHighMax-1
width in bits if (bit field), width in bits. width in bits if (bit field), width in bits.
*/ */
#define cAuxMax (6 + (idimMax*3)) #define cAuxMax (6 + (idimMax*3))
/* a union of all possible info in the AUX universe */ /* a union of all possible info in the AUX universe */
typedef union { typedef union {
TIR ti; /* type information record */ TIR ti; /* type information record */
RNDXR rndx; /* relative index into symbol table */ RNDXR rndx; /* relative index into symbol table */
coff_int dnLow; /* low dimension */ coff_int dnLow; /* low dimension */
coff_int dnHigh; /* high dimension */ coff_int dnHigh; /* high dimension */
coff_int isym; /* symbol table index (end of proc) */ coff_int isym; /* symbol table index (end of proc) */
coff_int iss; /* index into string space (not used) */ coff_int iss; /* index into string space (not used) */
coff_int width; /* width for non-default sized struc fields */ coff_int width; /* width for non-default sized struc fields */
coff_int count; /* count of ranges for variant arm */ coff_int count; /* count of ranges for variant arm */
} AUXU, *pAUXU; } AUXU, *pAUXU;
#define cbAUXU sizeof(AUXU) #define cbAUXU sizeof(AUXU)
#define auxNil ((pAUXU)0) #define auxNil ((pAUXU)0)
@ -401,12 +401,12 @@ typedef union {
*/ */
typedef struct { typedef struct {
unsigned ot: 8; /* optimization type */ unsigned ot: 8; /* optimization type */
unsigned value: 24; /* address where we are moving it to */ unsigned value: 24; /* address where we are moving it to */
RNDXR rndx; /* points to a symbol or opt entry */ RNDXR rndx; /* points to a symbol or opt entry */
coff_ulong offset; /* relative offset this occured */ coff_ulong offset; /* relative offset this occured */
} OPTR, *pOPTR; } OPTR, *pOPTR;
#define optNil ((pOPTR) 0) #define optNil ((pOPTR) 0)
#define cbOPTR sizeof(OPTR) #define cbOPTR sizeof(OPTR)
#define ioptNil -1 #define ioptNil -1
@ -414,15 +414,15 @@ typedef struct {
* File Indirect * File Indirect
* *
* When a symbol is referenced across files the following procedure is used: * When a symbol is referenced across files the following procedure is used:
* 1) use the file index to get the File indirect entry. * 1) use the file index to get the File indirect entry.
* 2) use the file indirect entry to get the File descriptor. * 2) use the file indirect entry to get the File descriptor.
* 3) add the sym index to the base of that file's sym table * 3) add the sym index to the base of that file's sym table
* *
*/ */
typedef coff_long RFDT, *pRFDT; typedef coff_long RFDT, *pRFDT;
#define cbRFDT sizeof(RFDT) #define cbRFDT sizeof(RFDT)
#define rfdNil -1 #define rfdNil -1
/* /*
* The file indirect table in the mips loader is known as an array of FITs. * The file indirect table in the mips loader is known as an array of FITs.
@ -430,9 +430,9 @@ typedef coff_long RFDT, *pRFDT;
* these tables are merged. Note this is only a name change. * these tables are merged. Note this is only a name change.
*/ */
typedef coff_int FIT, *pFIT; typedef coff_int FIT, *pFIT;
#define cbFIT sizeof(FIT) #define cbFIT sizeof(FIT)
#define ifiNil -1 #define ifiNil -1
#define fiNil ((pFIT) 0) #define fiNil ((pFIT) 0)
#ifdef _LANGUAGE_PASCAL #ifdef _LANGUAGE_PASCAL
#define ifdNil -1 #define ifdNil -1
@ -448,18 +448,18 @@ typedef coff_int FIT, *pFIT;
#define ioptNil -1 #define ioptNil -1
#define rfdNil -1 #define rfdNil -1
#define ifiNil -1 #define ifiNil -1
#endif /* _LANGUAGE_PASCAL */ #endif /* _LANGUAGE_PASCAL */
/* Dense numbers /* Dense numbers
* *
* Rather than use file index, symbol index pairs to represent symbols * Rather than use file index, symbol index pairs to represent symbols
* and globals, we use dense number so that they can be easily embeded * and globals, we use dense number so that they can be easily embeded
* in intermediate code and the programs that process them can * in intermediate code and the programs that process them can
* use direct access tabls instead of hash table (which would be * use direct access tabls instead of hash table (which would be
* necesary otherwise because of the sparse name space caused by * necesary otherwise because of the sparse name space caused by
* file index, symbol index pairs. Dense number are represented * file index, symbol index pairs. Dense number are represented
* by RNDXRs. * by RNDXRs.
*/ */
/* /*
@ -467,7 +467,7 @@ typedef coff_int FIT, *pFIT;
* a function of the "st". (scD/B == scData OR scBss) * a function of the "st". (scD/B == scData OR scBss)
* *
* Note: the value "isymMac" is used by symbols that have the concept * Note: the value "isymMac" is used by symbols that have the concept
* of enclosing a block of related information. This value is the * of enclosing a block of related information. This value is the
* isym of the first symbol AFTER the end associated with the primary * isym of the first symbol AFTER the end associated with the primary
* symbol. For example if a procedure was at isym==90 and had an * symbol. For example if a procedure was at isym==90 and had an
* isymMac==155, the associated end would be at isym==154, and the * isymMac==155, the associated end would be at isym==154, and the
@ -477,42 +477,42 @@ typedef coff_int FIT, *pFIT;
* isym of the primary symbol that started the block. * isym of the primary symbol that started the block.
* *
ST SC VALUE INDEX ST SC VALUE INDEX
-------- ------ -------- ------ -------- ------ -------- ------
stFile scText address isymMac stFile scText address isymMac
stLabel scText address --- stLabel scText address ---
stGlobal scD/B address iaux stGlobal scD/B address iaux
stStatic scD/B address iaux stStatic scD/B address iaux
stParam scAbs offset iaux stParam scAbs offset iaux
stLocal scAbs offset iaux stLocal scAbs offset iaux
stProc scText address iaux (isymMac is first AUX) stProc scText address iaux (isymMac is first AUX)
stStaticProc scText address iaux (isymMac is first AUX) stStaticProc scText address iaux (isymMac is first AUX)
stMember scNil ordinal --- (if member of enum) stMember scNil ordinal --- (if member of enum)
(mipsread thinks the case below has a bit, not byte, offset.) (mipsread thinks the case below has a bit, not byte, offset.)
stMember scNil byte offset iaux (if member of struct/union) stMember scNil byte offset iaux (if member of struct/union)
stMember scBits bit offset iaux (bit field spec) stMember scBits bit offset iaux (bit field spec)
stBlock scText address isymMac (text block) stBlock scText address isymMac (text block)
(the code seems to think that rather than scNil, we see scInfo for (the code seems to think that rather than scNil, we see scInfo for
the two cases below.) the two cases below.)
stBlock scNil cb isymMac (struct/union member define) stBlock scNil cb isymMac (struct/union member define)
stBlock scNil cMembers isymMac (enum member define) stBlock scNil cMembers isymMac (enum member define)
(New types added by SGI to simplify things:) (New types added by SGI to simplify things:)
stStruct scInfo cb isymMac (struct type define) stStruct scInfo cb isymMac (struct type define)
stUnion scInfo cb isymMac (union type define) stUnion scInfo cb isymMac (union type define)
stEnum scInfo cMembers isymMac (enum type define) stEnum scInfo cMembers isymMac (enum type define)
stEnd scText address isymStart stEnd scText address isymStart
stEnd scNil ------- isymStart (struct/union/enum) stEnd scNil ------- isymStart (struct/union/enum)
stTypedef scNil ------- iaux stTypedef scNil ------- iaux
stRegReloc sc??? value old register number stRegReloc sc??? value old register number
stForward sc??? new address isym to original symbol stForward sc??? new address isym to original symbol
stConstant scInfo value --- (scalar) stConstant scInfo value --- (scalar)
stConstant scInfo iss --- (complex, e.g. string) stConstant scInfo iss --- (complex, e.g. string)
* *
*/ */

View file

@ -59,30 +59,30 @@
*/ */
/* glevels for field in FDR */ /* glevels for field in FDR */
#define GLEVEL_0 2 #define GLEVEL_0 2
#define GLEVEL_1 1 #define GLEVEL_1 1
#define GLEVEL_2 0 /* for upward compat reasons. */ #define GLEVEL_2 0 /* for upward compat reasons. */
#define GLEVEL_3 3 #define GLEVEL_3 3
/* magic number fo symheader */ /* magic number fo symheader */
#define magicSym 0x7009 #define magicSym 0x7009
/* The Alpha uses this value instead, for some reason. */ /* The Alpha uses this value instead, for some reason. */
#define magicSym2 0x1992 #define magicSym2 0x1992
/* Language codes */ /* Language codes */
#define langC 0 #define langC 0
#define langPascal 1 #define langPascal 1
#define langFortran 2 #define langFortran 2
#define langAssembler 3 /* one Assembley inst might map to many mach */ #define langAssembler 3 /* one Assembley inst might map to many mach */
#define langMachine 4 #define langMachine 4
#define langNil 5 #define langNil 5
#define langAda 6 #define langAda 6
#define langPl1 7 #define langPl1 7
#define langCobol 8 #define langCobol 8
#define langStdc 9 /* FIXME: Collides with SGI langCplusplus */ #define langStdc 9 /* FIXME: Collides with SGI langCplusplus */
#define langCplusplus 9 /* FIXME: Collides with langStdc */ #define langCplusplus 9 /* FIXME: Collides with langStdc */
#define langCplusplusV2 10 /* SGI addition */ #define langCplusplusV2 10 /* SGI addition */
#define langMax 11 /* maximun allowed 32 -- 5 bits */ #define langMax 11 /* maximun allowed 32 -- 5 bits */
/* The following are value definitions for the fields in the SYMR */ /* The following are value definitions for the fields in the SYMR */
@ -90,111 +90,111 @@
* Storage Classes * Storage Classes
*/ */
#define scNil 0 #define scNil 0
#define scText 1 /* text symbol */ #define scText 1 /* text symbol */
#define scData 2 /* initialized data symbol */ #define scData 2 /* initialized data symbol */
#define scBss 3 /* un-initialized data symbol */ #define scBss 3 /* un-initialized data symbol */
#define scRegister 4 /* value of symbol is register number */ #define scRegister 4 /* value of symbol is register number */
#define scAbs 5 /* value of symbol is absolute */ #define scAbs 5 /* value of symbol is absolute */
#define scUndefined 6 /* who knows? */ #define scUndefined 6 /* who knows? */
#define scCdbLocal 7 /* variable's value is IN se->va.?? */ #define scCdbLocal 7 /* variable's value is IN se->va.?? */
#define scBits 8 /* this is a bit field */ #define scBits 8 /* this is a bit field */
#define scCdbSystem 9 /* variable's value is IN CDB's address space */ #define scCdbSystem 9 /* variable's value is IN CDB's address space */
#define scDbx 9 /* overlap dbx internal use */ #define scDbx 9 /* overlap dbx internal use */
#define scRegImage 10 /* register value saved on stack */ #define scRegImage 10 /* register value saved on stack */
#define scInfo 11 /* symbol contains debugger information */ #define scInfo 11 /* symbol contains debugger information */
#define scUserStruct 12 /* address in struct user for current process */ #define scUserStruct 12 /* address in struct user for current process */
#define scSData 13 /* load time only small data */ #define scSData 13 /* load time only small data */
#define scSBss 14 /* load time only small common */ #define scSBss 14 /* load time only small common */
#define scRData 15 /* load time only read only data */ #define scRData 15 /* load time only read only data */
#define scVar 16 /* Var parameter (fortran,pascal) */ #define scVar 16 /* Var parameter (fortran,pascal) */
#define scCommon 17 /* common variable */ #define scCommon 17 /* common variable */
#define scSCommon 18 /* small common */ #define scSCommon 18 /* small common */
#define scVarRegister 19 /* Var parameter in a register */ #define scVarRegister 19 /* Var parameter in a register */
#define scVariant 20 /* Variant record */ #define scVariant 20 /* Variant record */
#define scSUndefined 21 /* small undefined(external) data */ #define scSUndefined 21 /* small undefined(external) data */
#define scInit 22 /* .init section symbol */ #define scInit 22 /* .init section symbol */
#define scBasedVar 23 /* Fortran or PL/1 ptr based var */ #define scBasedVar 23 /* Fortran or PL/1 ptr based var */
#define scXData 24 /* exception handling data */ #define scXData 24 /* exception handling data */
#define scPData 25 /* Procedure section */ #define scPData 25 /* Procedure section */
#define scFini 26 /* .fini section */ #define scFini 26 /* .fini section */
#define scRConst 27 /* .rconst section */ #define scRConst 27 /* .rconst section */
#define scMax 32 #define scMax 32
/* /*
* Symbol Types * Symbol Types
*/ */
#define stNil 0 /* Nuthin' special */ #define stNil 0 /* Nuthin' special */
#define stGlobal 1 /* external symbol */ #define stGlobal 1 /* external symbol */
#define stStatic 2 /* static */ #define stStatic 2 /* static */
#define stParam 3 /* procedure argument */ #define stParam 3 /* procedure argument */
#define stLocal 4 /* local variable */ #define stLocal 4 /* local variable */
#define stLabel 5 /* label */ #define stLabel 5 /* label */
#define stProc 6 /* " " Procedure */ #define stProc 6 /* " " Procedure */
#define stBlock 7 /* beginnning of block */ #define stBlock 7 /* beginnning of block */
#define stEnd 8 /* end (of anything) */ #define stEnd 8 /* end (of anything) */
#define stMember 9 /* member (of anything - struct/union/enum */ #define stMember 9 /* member (of anything - struct/union/enum */
#define stTypedef 10 /* type definition */ #define stTypedef 10 /* type definition */
#define stFile 11 /* file name */ #define stFile 11 /* file name */
#define stRegReloc 12 /* register relocation */ #define stRegReloc 12 /* register relocation */
#define stForward 13 /* forwarding address */ #define stForward 13 /* forwarding address */
#define stStaticProc 14 /* load time only static procs */ #define stStaticProc 14 /* load time only static procs */
#define stConstant 15 /* const */ #define stConstant 15 /* const */
#define stStaParam 16 /* Fortran static parameters */ #define stStaParam 16 /* Fortran static parameters */
/* These new symbol types have been recently added to SGI machines. */ /* These new symbol types have been recently added to SGI machines. */
#define stStruct 26 /* Beginning of block defining a struct type */ #define stStruct 26 /* Beginning of block defining a struct type */
#define stUnion 27 /* Beginning of block defining a union type */ #define stUnion 27 /* Beginning of block defining a union type */
#define stEnum 28 /* Beginning of block defining an enum type */ #define stEnum 28 /* Beginning of block defining an enum type */
#define stIndirect 34 /* Indirect type specification */ #define stIndirect 34 /* Indirect type specification */
/* Pseudo-symbols - internal to debugger */ /* Pseudo-symbols - internal to debugger */
#define stStr 60 /* string */ #define stStr 60 /* string */
#define stNumber 61 /* pure number (ie. 4 NOR 2+2) */ #define stNumber 61 /* pure number (ie. 4 NOR 2+2) */
#define stExpr 62 /* 2+2 vs. 4 */ #define stExpr 62 /* 2+2 vs. 4 */
#define stType 63 /* post-coersion SER */ #define stType 63 /* post-coersion SER */
#define stMax 64 #define stMax 64
/* definitions for fields in TIR */ /* definitions for fields in TIR */
/* type qualifiers for ti.tq0 -> ti.(itqMax-1) */ /* type qualifiers for ti.tq0 -> ti.(itqMax-1) */
#define tqNil 0 /* bt is what you see */ #define tqNil 0 /* bt is what you see */
#define tqPtr 1 /* pointer */ #define tqPtr 1 /* pointer */
#define tqProc 2 /* procedure */ #define tqProc 2 /* procedure */
#define tqArray 3 /* duh */ #define tqArray 3 /* duh */
#define tqFar 4 /* longer addressing - 8086/8 land */ #define tqFar 4 /* longer addressing - 8086/8 land */
#define tqVol 5 /* volatile */ #define tqVol 5 /* volatile */
#define tqConst 6 /* const */ #define tqConst 6 /* const */
#define tqMax 8 #define tqMax 8
/* basic types as seen in ti.bt */ /* basic types as seen in ti.bt */
#define btNil 0 /* undefined (also, enum members) */ #define btNil 0 /* undefined (also, enum members) */
#define btAdr 1 /* address - integer same size as pointer */ #define btAdr 1 /* address - integer same size as pointer */
#define btChar 2 /* character */ #define btChar 2 /* character */
#define btUChar 3 /* unsigned character */ #define btUChar 3 /* unsigned character */
#define btShort 4 /* short */ #define btShort 4 /* short */
#define btUShort 5 /* unsigned short */ #define btUShort 5 /* unsigned short */
#define btInt 6 /* int */ #define btInt 6 /* int */
#define btUInt 7 /* unsigned int */ #define btUInt 7 /* unsigned int */
#define btLong 8 /* long */ #define btLong 8 /* long */
#define btULong 9 /* unsigned long */ #define btULong 9 /* unsigned long */
#define btFloat 10 /* float (real) */ #define btFloat 10 /* float (real) */
#define btDouble 11 /* Double (real) */ #define btDouble 11 /* Double (real) */
#define btStruct 12 /* Structure (Record) */ #define btStruct 12 /* Structure (Record) */
#define btUnion 13 /* Union (variant) */ #define btUnion 13 /* Union (variant) */
#define btEnum 14 /* Enumerated */ #define btEnum 14 /* Enumerated */
#define btTypedef 15 /* defined via a typedef, isymRef points */ #define btTypedef 15 /* defined via a typedef, isymRef points */
#define btRange 16 /* subrange of int */ #define btRange 16 /* subrange of int */
#define btSet 17 /* pascal sets */ #define btSet 17 /* pascal sets */
#define btComplex 18 /* fortran complex */ #define btComplex 18 /* fortran complex */
#define btDComplex 19 /* fortran double complex */ #define btDComplex 19 /* fortran double complex */
#define btIndirect 20 /* forward or unnamed typedef */ #define btIndirect 20 /* forward or unnamed typedef */
#define btFixedDec 21 /* Fixed Decimal */ #define btFixedDec 21 /* Fixed Decimal */
#define btFloatDec 22 /* Float Decimal */ #define btFloatDec 22 /* Float Decimal */
#define btString 23 /* Varying Length Character String */ #define btString 23 /* Varying Length Character String */
#define btBit 24 /* Aligned Bit String */ #define btBit 24 /* Aligned Bit String */
#define btPicture 25 /* Picture */ #define btPicture 25 /* Picture */
#define btVoid 26 /* void */ #define btVoid 26 /* void */
#define btLongLong 27 /* long long */ #define btLongLong 27 /* long long */
#define btULongLong 28 /* unsigned long long */ #define btULongLong 28 /* unsigned long long */
#define btMax 64 #define btMax 64

View file

@ -34,7 +34,7 @@
#include "base/misc.hh" #include "base/misc.hh"
#include "base/loader/symtab.hh" #include "base/loader/symtab.hh"
#include "base/trace.hh" // for DPRINTF #include "base/trace.hh" // for DPRINTF
#include "base/loader/exec_ecoff.h" #include "base/loader/exec_ecoff.h"
#include "base/loader/coff_sym.h" #include "base/loader/coff_sym.h"

View file

@ -36,7 +36,7 @@
#include "base/loader/elf_object.hh" #include "base/loader/elf_object.hh"
#include "base/loader/symtab.hh" #include "base/loader/symtab.hh"
#include "base/misc.hh" #include "base/misc.hh"
#include "base/trace.hh" // for DPRINTF #include "base/trace.hh" // for DPRINTF
#include "sim/byteswap.hh" #include "sim/byteswap.hh"
using namespace std; using namespace std;

View file

@ -35,7 +35,7 @@
#include <limits> #include <limits>
#include <string> #include <string>
#include "sim/host.hh" // for Addr #include "sim/host.hh" // for Addr
class Port; class Port;

View file

@ -35,7 +35,7 @@
#include <limits> #include <limits>
#include <string> #include <string>
#include "sim/host.hh" // for Addr #include "sim/host.hh" // for Addr
class Port; class Port;
class SymbolTable; class SymbolTable;

View file

@ -35,7 +35,7 @@
#include <iosfwd> #include <iosfwd>
#include <map> #include <map>
#include "sim/host.hh" // for Addr #include "sim/host.hh" // for Addr
class Checkpoint; class Checkpoint;
class SymbolTable class SymbolTable

View file

@ -30,7 +30,7 @@
/* /*
* Copyright (c) 1990, 1993 * Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* This software was developed by the Computer Systems Engineering group * This software was developed by the Computer Systems Engineering group
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
@ -38,8 +38,8 @@
* *
* All advertising materials mentioning features or use of this software * All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Lawrence Berkeley Laboratories. * California, Lawrence Berkeley Laboratories.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -51,8 +51,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the University of * This product includes software developed by the University of
* California, Berkeley and its contributors. * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors * 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
@ -69,7 +69,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94 * @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94
*/ */
/*- /*-
@ -89,8 +89,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the NetBSD * This product includes software developed by the NetBSD
* Foundation, Inc. and its contributors. * Foundation, Inc. and its contributors.
* 4. Neither the name of The NetBSD Foundation nor the names of its * 4. Neither the name of The NetBSD Foundation nor the names of its
* contributors may be used to endorse or promote products derived * contributors may be used to endorse or promote products derived
* from this software without specific prior written permission. * from this software without specific prior written permission.

View file

@ -635,7 +635,7 @@ res_list<T>::remove(iterator q)
// A little "garbage collection" // A little "garbage collection"
if (++remove_count > 10) { if (++remove_count > 10) {
// free_extras(); // free_extras();
remove_count = 0; remove_count = 0;
} }

View file

@ -39,28 +39,28 @@ namespace Stats {
typedef uint32_t StatFlags; typedef uint32_t StatFlags;
/** Nothing extra to print. */ /** Nothing extra to print. */
const StatFlags none = 0x00000000; const StatFlags none = 0x00000000;
/** This Stat is Initialized */ /** This Stat is Initialized */
const StatFlags init = 0x00000001; const StatFlags init = 0x00000001;
/** Print this stat. */ /** Print this stat. */
const StatFlags print = 0x00000002; const StatFlags print = 0x00000002;
/** Print the total. */ /** Print the total. */
const StatFlags total = 0x00000010; const StatFlags total = 0x00000010;
/** Print the percent of the total that this entry represents. */ /** Print the percent of the total that this entry represents. */
const StatFlags pdf = 0x00000020; const StatFlags pdf = 0x00000020;
/** Print the cumulative percentage of total upto this entry. */ /** Print the cumulative percentage of total upto this entry. */
const StatFlags cdf = 0x00000040; const StatFlags cdf = 0x00000040;
/** Print the distribution. */ /** Print the distribution. */
const StatFlags dist = 0x00000080; const StatFlags dist = 0x00000080;
/** Don't print if this is zero. */ /** Don't print if this is zero. */
const StatFlags nozero = 0x00000100; const StatFlags nozero = 0x00000100;
/** Don't print if this is NAN */ /** Don't print if this is NAN */
const StatFlags nonan = 0x00000200; const StatFlags nonan = 0x00000200;
/** Used for SS compatability. */ /** Used for SS compatability. */
const StatFlags __substat = 0x80000000; const StatFlags __substat = 0x80000000;
/** Mask of flags that can't be set directly */ /** Mask of flags that can't be set directly */
const StatFlags __reserved = init | print | __substat; const StatFlags __reserved = init | print | __substat;
enum DisplayMode enum DisplayMode
{ {

View file

@ -458,7 +458,7 @@ InsertSubData::setup(MySqlRun *run)
mysql.query(insert); mysql.query(insert);
// if (mysql.error) // if (mysql.error)
// panic("could not insert subdata\n%s\n", mysql.error); // panic("could not insert subdata\n%s\n", mysql.error);
if (mysql.commit()) if (mysql.commit())
panic("could not commit transaction\n%s\n", mysql.error); panic("could not commit transaction\n%s\n", mysql.error);
@ -683,7 +683,7 @@ MySql::configure(const FormulaData &data)
mysql.query(insert_formula); mysql.query(insert_formula);
// if (mysql.error) // if (mysql.error)
// panic("could not insert formula\n%s\n", mysql.error); // panic("could not insert formula\n%s\n", mysql.error);
stringstream insert_ref; stringstream insert_ref;
ccprintf(insert_ref, ccprintf(insert_ref,
@ -692,7 +692,7 @@ MySql::configure(const FormulaData &data)
mysql.query(insert_ref); mysql.query(insert_ref);
// if (mysql.error) // if (mysql.error)
// panic("could not insert formula reference\n%s\n", mysql.error); // panic("could not insert formula reference\n%s\n", mysql.error);
if (mysql.commit()) if (mysql.commit())
panic("could not commit transaction\n%s\n", mysql.error); panic("could not commit transaction\n%s\n", mysql.error);

View file

@ -68,7 +68,7 @@ std::ostream &operator<<(std::ostream &out, const Time &time);
/* /*
* Copyright (c) 1982, 1986, 1993 * Copyright (c) 1982, 1986, 1993
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -94,7 +94,7 @@ std::ostream &operator<<(std::ostream &out, const Time &time);
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#)time.h 8.2 (Berkeley) 7/10/94 * @(#)time.h 8.2 (Berkeley) 7/10/94
*/ */
#if defined(__sun) #if defined(__sun)

View file

@ -124,6 +124,6 @@ inline const std::string &name() { return Trace::DefaultName; }
#define DPRINTFN(...) do {} while (0) #define DPRINTFN(...) do {} while (0)
#define DPRINTFNR(...) do {} while (0) #define DPRINTFNR(...) do {} while (0)
#endif // TRACING_ON #endif // TRACING_ON
#endif // __BASE_TRACE_HH__ #endif // __BASE_TRACE_HH__

View file

@ -77,8 +77,8 @@ class BaseDynInst : public FastAlloc, public RefCounted
typedef typename std::list<DynInstPtr>::iterator ListIt; typedef typename std::list<DynInstPtr>::iterator ListIt;
enum { enum {
MaxInstSrcRegs = TheISA::MaxInstSrcRegs, /// Max source regs MaxInstSrcRegs = TheISA::MaxInstSrcRegs, /// Max source regs
MaxInstDestRegs = TheISA::MaxInstDestRegs, /// Max dest regs MaxInstDestRegs = TheISA::MaxInstDestRegs, /// Max dest regs
}; };
/** The StaticInst used by this BaseDynInst. */ /** The StaticInst used by this BaseDynInst. */
@ -486,24 +486,24 @@ class BaseDynInst : public FastAlloc, public RefCounted
// //
// Instruction types. Forward checks to StaticInst object. // Instruction types. Forward checks to StaticInst object.
// //
bool isNop() const { return staticInst->isNop(); } bool isNop() const { return staticInst->isNop(); }
bool isMemRef() const { return staticInst->isMemRef(); } bool isMemRef() const { return staticInst->isMemRef(); }
bool isLoad() const { return staticInst->isLoad(); } bool isLoad() const { return staticInst->isLoad(); }
bool isStore() const { return staticInst->isStore(); } bool isStore() const { return staticInst->isStore(); }
bool isStoreConditional() const bool isStoreConditional() const
{ return staticInst->isStoreConditional(); } { return staticInst->isStoreConditional(); }
bool isInstPrefetch() const { return staticInst->isInstPrefetch(); } bool isInstPrefetch() const { return staticInst->isInstPrefetch(); }
bool isDataPrefetch() const { return staticInst->isDataPrefetch(); } bool isDataPrefetch() const { return staticInst->isDataPrefetch(); }
bool isCopy() const { return staticInst->isCopy(); } bool isCopy() const { return staticInst->isCopy(); }
bool isInteger() const { return staticInst->isInteger(); } bool isInteger() const { return staticInst->isInteger(); }
bool isFloating() const { return staticInst->isFloating(); } bool isFloating() const { return staticInst->isFloating(); }
bool isControl() const { return staticInst->isControl(); } bool isControl() const { return staticInst->isControl(); }
bool isCall() const { return staticInst->isCall(); } bool isCall() const { return staticInst->isCall(); }
bool isReturn() const { return staticInst->isReturn(); } bool isReturn() const { return staticInst->isReturn(); }
bool isDirectCtrl() const { return staticInst->isDirectCtrl(); } bool isDirectCtrl() const { return staticInst->isDirectCtrl(); }
bool isIndirectCtrl() const { return staticInst->isIndirectCtrl(); } bool isIndirectCtrl() const { return staticInst->isIndirectCtrl(); }
bool isCondCtrl() const { return staticInst->isCondCtrl(); } bool isCondCtrl() const { return staticInst->isCondCtrl(); }
bool isUncondCtrl() const { return staticInst->isUncondCtrl(); } bool isUncondCtrl() const { return staticInst->isUncondCtrl(); }
bool isCondDelaySlot() const { return staticInst->isCondDelaySlot(); } bool isCondDelaySlot() const { return staticInst->isCondDelaySlot(); }
bool isThreadSync() const { return staticInst->isThreadSync(); } bool isThreadSync() const { return staticInst->isThreadSync(); }
bool isSerializing() const { return staticInst->isSerializing(); } bool isSerializing() const { return staticInst->isSerializing(); }
@ -560,7 +560,7 @@ class BaseDynInst : public FastAlloc, public RefCounted
Addr branchTarget() const { return staticInst->branchTarget(PC); } Addr branchTarget() const { return staticInst->branchTarget(PC); }
/** Returns the number of source registers. */ /** Returns the number of source registers. */
int8_t numSrcRegs() const { return staticInst->numSrcRegs(); } int8_t numSrcRegs() const { return staticInst->numSrcRegs(); }
/** Returns the number of destination registers. */ /** Returns the number of destination registers. */
int8_t numDestRegs() const { return staticInst->numDestRegs(); } int8_t numDestRegs() const { return staticInst->numDestRegs(); }

View file

@ -180,7 +180,7 @@ class CheckerCPU : public BaseCPU
// These functions are only used in CPU models that split // These functions are only used in CPU models that split
// effective address computation from the actual memory access. // effective address computation from the actual memory access.
void setEA(Addr EA) { panic("SimpleCPU::setEA() not implemented\n"); } void setEA(Addr EA) { panic("SimpleCPU::setEA() not implemented\n"); }
Addr getEA() { panic("SimpleCPU::getEA() not implemented\n"); } Addr getEA() { panic("SimpleCPU::getEA() not implemented\n"); }
void prefetch(Addr addr, unsigned flags) void prefetch(Addr addr, unsigned flags)
{ {

View file

@ -141,9 +141,9 @@ Checker<DynInstPtr>::verify(DynInstPtr &completed_inst)
// Try to fetch the instruction // Try to fetch the instruction
#if FULL_SYSTEM #if FULL_SYSTEM
#define IFETCH_FLAGS(pc) ((pc) & 1) ? PHYSICAL : 0 #define IFETCH_FLAGS(pc) ((pc) & 1) ? PHYSICAL : 0
#else #else
#define IFETCH_FLAGS(pc) 0 #define IFETCH_FLAGS(pc) 0
#endif #endif
uint64_t fetch_PC = thread->readPC() & ~3; uint64_t fetch_PC = thread->readPC() & ~3;

View file

@ -133,10 +133,10 @@ class MemTest : public MemObject
bool accessRetry; bool accessRetry;
unsigned size; // size of testing memory region unsigned size; // size of testing memory region
unsigned percentReads; // target percentage of read accesses unsigned percentReads; // target percentage of read accesses
unsigned percentFunctional; // target percentage of functional accesses unsigned percentFunctional; // target percentage of functional accesses
unsigned percentUncacheable; unsigned percentUncacheable;
int id; int id;
@ -154,12 +154,12 @@ class MemTest : public MemObject
Addr traceBlockAddr; Addr traceBlockAddr;
Addr baseAddr1; // fix this to option Addr baseAddr1; // fix this to option
Addr baseAddr2; // fix this to option Addr baseAddr2; // fix this to option
Addr uncacheAddr; Addr uncacheAddr;
unsigned progressInterval; // frequency of progress reports unsigned progressInterval; // frequency of progress reports
Tick nextProgressMessage; // access # for next progress report Tick nextProgressMessage; // access # for next progress report
unsigned percentSourceUnaligned; unsigned percentSourceUnaligned;
unsigned percentDestUnaligned; unsigned percentDestUnaligned;

View file

@ -67,8 +67,8 @@ class AlphaDynInst : public BaseDynInst<Impl>
typedef TheISA::MiscReg MiscReg; typedef TheISA::MiscReg MiscReg;
enum { enum {
MaxInstSrcRegs = TheISA::MaxInstSrcRegs, //< Max source regs MaxInstSrcRegs = TheISA::MaxInstSrcRegs, //< Max source regs
MaxInstDestRegs = TheISA::MaxInstDestRegs, //< Max dest regs MaxInstDestRegs = TheISA::MaxInstDestRegs, //< Max dest regs
}; };
public: public:

View file

@ -64,8 +64,8 @@ class MipsDynInst : public BaseDynInst<Impl>
typedef TheISA::MiscReg MiscReg; typedef TheISA::MiscReg MiscReg;
enum { enum {
MaxInstSrcRegs = TheISA::MaxInstSrcRegs, //< Max source regs MaxInstSrcRegs = TheISA::MaxInstSrcRegs, //< Max source regs
MaxInstDestRegs = TheISA::MaxInstDestRegs, //< Max dest regs MaxInstDestRegs = TheISA::MaxInstDestRegs, //< Max dest regs
}; };
public: public:

View file

@ -265,7 +265,7 @@ class PhysRegFile
#if FULL_SYSTEM #if FULL_SYSTEM
private: private:
int intrflag; // interrupt flag int intrflag; // interrupt flag
#endif #endif
private: private:

View file

@ -447,7 +447,7 @@ class BackEnd
Stats::Scalar<> ROB_fcount; Stats::Scalar<> ROB_fcount;
Stats::Formula ROB_full_rate; Stats::Formula ROB_full_rate;
Stats::Vector<> ROB_count; // cumulative ROB occupancy Stats::Vector<> ROB_count; // cumulative ROB occupancy
Stats::Formula ROB_occ_rate; Stats::Formula ROB_occ_rate;
Stats::VectorDistribution<> ROB_occ_dist; Stats::VectorDistribution<> ROB_occ_dist;
public: public:
@ -482,8 +482,8 @@ BackEnd<Impl>::read(RequestPtr req, T &data, int load_idx)
memReq->completionEvent = &cacheCompletionEvent; memReq->completionEvent = &cacheCompletionEvent;
lastDcacheStall = curTick; lastDcacheStall = curTick;
// unscheduleTickEvent(); // unscheduleTickEvent();
// status = DcacheMissStall; // status = DcacheMissStall;
DPRINTF(OzoneCPU, "Dcache miss stall!\n"); DPRINTF(OzoneCPU, "Dcache miss stall!\n");
} else { } else {
// do functional access // do functional access
@ -524,8 +524,8 @@ BackEnd<Impl>::write(RequestPtr req, T &data, int store_idx)
if (result != MA_HIT && dcacheInterface->doEvents()) { if (result != MA_HIT && dcacheInterface->doEvents()) {
memReq->completionEvent = &cacheCompletionEvent; memReq->completionEvent = &cacheCompletionEvent;
lastDcacheStall = curTick; lastDcacheStall = curTick;
// unscheduleTickEvent(); // unscheduleTickEvent();
// status = DcacheMissStall; // status = DcacheMissStall;
DPRINTF(OzoneCPU, "Dcache miss stall!\n"); DPRINTF(OzoneCPU, "Dcache miss stall!\n");
} }
} }

View file

@ -585,7 +585,7 @@ OzoneCPU<Impl>::post_interrupt(int int_num, int index)
if (_status == Idle) { if (_status == Idle) {
DPRINTF(IPI,"Suspended Processor awoke\n"); DPRINTF(IPI,"Suspended Processor awoke\n");
// thread.activate(); // thread.activate();
// Hack for now. Otherwise might have to go through the tc, or // Hack for now. Otherwise might have to go through the tc, or
// I need to figure out what's the right thing to call. // I need to figure out what's the right thing to call.
activateContext(thread.readTid(), 1); activateContext(thread.readTid(), 1);

View file

@ -307,7 +307,7 @@ class FrontEnd
Stats::Formula idleRate; Stats::Formula idleRate;
Stats::Formula branchRate; Stats::Formula branchRate;
Stats::Formula fetchRate; Stats::Formula fetchRate;
Stats::Scalar<> IFQCount; // cumulative IFQ occupancy Stats::Scalar<> IFQCount; // cumulative IFQ occupancy
Stats::Formula IFQOccupancy; Stats::Formula IFQOccupancy;
Stats::Formula IFQLatency; Stats::Formula IFQLatency;
Stats::Scalar<> IFQFcount; // cumulative IFQ full count Stats::Scalar<> IFQFcount; // cumulative IFQ full count

View file

@ -222,7 +222,7 @@ InorderBackEnd<Impl>::read(Addr addr, T &data, unsigned flags)
// are executed twice. // are executed twice.
memReq->completionEvent = &cacheCompletionEvent; memReq->completionEvent = &cacheCompletionEvent;
lastDcacheStall = curTick; lastDcacheStall = curTick;
// unscheduleTickEvent(); // unscheduleTickEvent();
status = DcacheMissLoadStall; status = DcacheMissLoadStall;
DPRINTF(IBE, "Dcache miss stall!\n"); DPRINTF(IBE, "Dcache miss stall!\n");
} else { } else {
@ -249,7 +249,7 @@ InorderBackEnd<Impl>::write(T data, Addr addr, unsigned flags, uint64_t *res)
if (fault == NoFault && dcacheInterface) { if (fault == NoFault && dcacheInterface) {
memReq->cmd = Write; memReq->cmd = Write;
// memcpy(memReq->data,(uint8_t *)&data,memReq->size); // memcpy(memReq->data,(uint8_t *)&data,memReq->size);
memReq->completionEvent = NULL; memReq->completionEvent = NULL;
memReq->time = curTick; memReq->time = curTick;
memReq->flags &= ~INST_READ; memReq->flags &= ~INST_READ;
@ -261,7 +261,7 @@ InorderBackEnd<Impl>::write(T data, Addr addr, unsigned flags, uint64_t *res)
if (result != MA_HIT) { if (result != MA_HIT) {
memReq->completionEvent = &cacheCompletionEvent; memReq->completionEvent = &cacheCompletionEvent;
lastDcacheStall = curTick; lastDcacheStall = curTick;
// unscheduleTickEvent(); // unscheduleTickEvent();
status = DcacheMissStoreStall; status = DcacheMissStoreStall;
DPRINTF(IBE, "Dcache miss stall!\n"); DPRINTF(IBE, "Dcache miss stall!\n");
} else { } else {
@ -307,7 +307,7 @@ InorderBackEnd<Impl>::read(MemReqPtr &req, T &data, int load_idx)
if (result != MA_HIT) { if (result != MA_HIT) {
req->completionEvent = &cacheCompletionEvent; req->completionEvent = &cacheCompletionEvent;
lastDcacheStall = curTick; lastDcacheStall = curTick;
// unscheduleTickEvent(); // unscheduleTickEvent();
status = DcacheMissLoadStall; status = DcacheMissLoadStall;
DPRINTF(IBE, "Dcache miss load stall!\n"); DPRINTF(IBE, "Dcache miss load stall!\n");
} else { } else {
@ -372,7 +372,7 @@ InorderBackEnd<Impl>::write(MemReqPtr &req, T &data, int store_idx)
if (result != MA_HIT) { if (result != MA_HIT) {
req->completionEvent = &cacheCompletionEvent; req->completionEvent = &cacheCompletionEvent;
lastDcacheStall = curTick; lastDcacheStall = curTick;
// unscheduleTickEvent(); // unscheduleTickEvent();
status = DcacheMissStoreStall; status = DcacheMissStoreStall;
DPRINTF(IBE, "Dcache miss store stall!\n"); DPRINTF(IBE, "Dcache miss store stall!\n");
} else { } else {

View file

@ -553,7 +553,7 @@ OzoneLSQ<Impl>::writebackStores()
MemReqPtr req = storeQueue[storeWBIdx].req; MemReqPtr req = storeQueue[storeWBIdx].req;
storeQueue[storeWBIdx].committed = true; storeQueue[storeWBIdx].committed = true;
// Fault fault = cpu->translateDataReadReq(req); // Fault fault = cpu->translateDataReadReq(req);
req->cmd = Write; req->cmd = Write;
req->completionEvent = NULL; req->completionEvent = NULL;
req->time = curTick; req->time = curTick;

View file

@ -407,7 +407,7 @@ class LWBackEnd
Stats::Scalar<> ROBFcount; Stats::Scalar<> ROBFcount;
Stats::Formula ROBFullRate; Stats::Formula ROBFullRate;
Stats::Vector<> ROBCount; // cumulative ROB occupancy Stats::Vector<> ROBCount; // cumulative ROB occupancy
Stats::Formula ROBOccRate; Stats::Formula ROBOccRate;
// Stats::VectorDistribution<> ROBOccDist; // Stats::VectorDistribution<> ROBOccDist;
public: public:

View file

@ -227,7 +227,7 @@ class BaseSimpleCPU : public BaseCPU
// These functions are only used in CPU models that split // These functions are only used in CPU models that split
// effective address computation from the actual memory access. // effective address computation from the actual memory access.
void setEA(Addr EA) { panic("BaseSimpleCPU::setEA() not implemented\n"); } void setEA(Addr EA) { panic("BaseSimpleCPU::setEA() not implemented\n"); }
Addr getEA() { panic("BaseSimpleCPU::getEA() not implemented\n"); Addr getEA() { panic("BaseSimpleCPU::getEA() not implemented\n");
M5_DUMMY_RETURN} M5_DUMMY_RETURN}
void prefetch(Addr addr, unsigned flags) void prefetch(Addr addr, unsigned flags)

View file

@ -220,8 +220,8 @@ SimpleThread::activate(int delay)
lastActivate = curTick; lastActivate = curTick;
// if (status() == ThreadContext::Unallocated) { // if (status() == ThreadContext::Unallocated) {
// cpu->activateWhenReady(tid); // cpu->activateWhenReady(tid);
// return; // return;
// } // }
_status = ThreadContext::Active; _status = ThreadContext::Active;

View file

@ -99,7 +99,7 @@ class SimpleThread : public ThreadState
typedef ThreadContext::Status Status; typedef ThreadContext::Status Status;
protected: protected:
RegFile regs; // correct-path register context RegFile regs; // correct-path register context
public: public:
// pointer to CPU associated with this SimpleThread // pointer to CPU associated with this SimpleThread

View file

@ -105,38 +105,38 @@ class StaticInstBase : public RefCounted
/// implement this behavior via the execute() methods. /// implement this behavior via the execute() methods.
/// ///
enum Flags { enum Flags {
IsNop, ///< Is a no-op (no effect at all). IsNop, ///< Is a no-op (no effect at all).
IsInteger, ///< References integer regs. IsInteger, ///< References integer regs.
IsFloating, ///< References FP regs. IsFloating, ///< References FP regs.
IsMemRef, ///< References memory (load, store, or prefetch). IsMemRef, ///< References memory (load, store, or prefetch).
IsLoad, ///< Reads from memory (load or prefetch). IsLoad, ///< Reads from memory (load or prefetch).
IsStore, ///< Writes to memory. IsStore, ///< Writes to memory.
IsStoreConditional, ///< Store conditional instruction. IsStoreConditional, ///< Store conditional instruction.
IsIndexed, ///< Accesses memory with an indexed address computation IsIndexed, ///< Accesses memory with an indexed address computation
IsInstPrefetch, ///< Instruction-cache prefetch. IsInstPrefetch, ///< Instruction-cache prefetch.
IsDataPrefetch, ///< Data-cache prefetch. IsDataPrefetch, ///< Data-cache prefetch.
IsCopy, ///< Fast Cache block copy IsCopy, ///< Fast Cache block copy
IsControl, ///< Control transfer instruction. IsControl, ///< Control transfer instruction.
IsDirectControl, ///< PC relative control transfer. IsDirectControl, ///< PC relative control transfer.
IsIndirectControl, ///< Register indirect control transfer. IsIndirectControl, ///< Register indirect control transfer.
IsCondControl, ///< Conditional control transfer. IsCondControl, ///< Conditional control transfer.
IsUncondControl, ///< Unconditional control transfer. IsUncondControl, ///< Unconditional control transfer.
IsCall, ///< Subroutine call. IsCall, ///< Subroutine call.
IsReturn, ///< Subroutine return. IsReturn, ///< Subroutine return.
IsCondDelaySlot,///< Conditional Delay-Slot Instruction IsCondDelaySlot,///< Conditional Delay-Slot Instruction
IsThreadSync, ///< Thread synchronization operation. IsThreadSync, ///< Thread synchronization operation.
IsSerializing, ///< Serializes pipeline: won't execute until all IsSerializing, ///< Serializes pipeline: won't execute until all
/// older instructions have committed. /// older instructions have committed.
IsSerializeBefore, IsSerializeBefore,
IsSerializeAfter, IsSerializeAfter,
IsMemBarrier, ///< Is a memory barrier IsMemBarrier, ///< Is a memory barrier
IsWriteBarrier, ///< Is a write barrier IsWriteBarrier, ///< Is a write barrier
IsERET, /// <- Causes the IFU to stall (MIPS ISA) IsERET, /// <- Causes the IFU to stall (MIPS ISA)
IsNonSpeculative, ///< Should not be executed speculatively IsNonSpeculative, ///< Should not be executed speculatively
@ -150,12 +150,12 @@ class StaticInstBase : public RefCounted
//Flags for microcode //Flags for microcode
IsMacroop, ///< Is a macroop containing microops IsMacroop, ///< Is a macroop containing microops
IsMicroop, ///< Is a microop IsMicroop, ///< Is a microop
IsDelayedCommit, ///< This microop doesn't commit right away IsDelayedCommit, ///< This microop doesn't commit right away
IsLastMicroop, ///< This microop ends a microop sequence IsLastMicroop, ///< This microop ends a microop sequence
IsFirstMicroop, ///< This microop begins a microop sequence IsFirstMicroop, ///< This microop begins a microop sequence
//This flag doesn't do anything yet //This flag doesn't do anything yet
IsMicroBranch, ///< This microop branches within the microcode for a macroop IsMicroBranch, ///< This microop branches within the microcode for a macroop
IsDspOp, IsDspOp,
NumFlags NumFlags
@ -215,26 +215,26 @@ class StaticInstBase : public RefCounted
/// of the individual flags. /// of the individual flags.
//@{ //@{
bool isNop() const { return flags[IsNop]; } bool isNop() const { return flags[IsNop]; }
bool isMemRef() const { return flags[IsMemRef]; } bool isMemRef() const { return flags[IsMemRef]; }
bool isLoad() const { return flags[IsLoad]; } bool isLoad() const { return flags[IsLoad]; }
bool isStore() const { return flags[IsStore]; } bool isStore() const { return flags[IsStore]; }
bool isStoreConditional() const { return flags[IsStoreConditional]; } bool isStoreConditional() const { return flags[IsStoreConditional]; }
bool isInstPrefetch() const { return flags[IsInstPrefetch]; } bool isInstPrefetch() const { return flags[IsInstPrefetch]; }
bool isDataPrefetch() const { return flags[IsDataPrefetch]; } bool isDataPrefetch() const { return flags[IsDataPrefetch]; }
bool isCopy() const { return flags[IsCopy];} bool isCopy() const { return flags[IsCopy];}
bool isInteger() const { return flags[IsInteger]; } bool isInteger() const { return flags[IsInteger]; }
bool isFloating() const { return flags[IsFloating]; } bool isFloating() const { return flags[IsFloating]; }
bool isControl() const { return flags[IsControl]; } bool isControl() const { return flags[IsControl]; }
bool isCall() const { return flags[IsCall]; } bool isCall() const { return flags[IsCall]; }
bool isReturn() const { return flags[IsReturn]; } bool isReturn() const { return flags[IsReturn]; }
bool isDirectCtrl() const { return flags[IsDirectControl]; } bool isDirectCtrl() const { return flags[IsDirectControl]; }
bool isIndirectCtrl() const { return flags[IsIndirectControl]; } bool isIndirectCtrl() const { return flags[IsIndirectControl]; }
bool isCondCtrl() const { return flags[IsCondControl]; } bool isCondCtrl() const { return flags[IsCondControl]; }
bool isUncondCtrl() const { return flags[IsUncondControl]; } bool isUncondCtrl() const { return flags[IsUncondControl]; }
bool isCondDelaySlot() const { return flags[IsCondDelaySlot]; } bool isCondDelaySlot() const { return flags[IsCondDelaySlot]; }
bool isThreadSync() const { return flags[IsThreadSync]; } bool isThreadSync() const { return flags[IsThreadSync]; }
@ -287,8 +287,8 @@ class StaticInst : public StaticInstBase
typedef TheISA::RegIndex RegIndex; typedef TheISA::RegIndex RegIndex;
enum { enum {
MaxInstSrcRegs = TheISA::MaxInstSrcRegs, //< Max source regs MaxInstSrcRegs = TheISA::MaxInstSrcRegs, //< Max source regs
MaxInstDestRegs = TheISA::MaxInstDestRegs, //< Max dest regs MaxInstDestRegs = TheISA::MaxInstDestRegs, //< Max dest regs
}; };

View file

@ -45,31 +45,31 @@ typedef unsigned long uint64_t;
// This structure hacked up from simos // This structure hacked up from simos
struct AlphaAccess struct AlphaAccess
{ {
uint32_t last_offset; // 00: must be first field uint32_t last_offset; // 00: must be first field
uint32_t version; // 04: uint32_t version; // 04:
uint32_t numCPUs; // 08: uint32_t numCPUs; // 08:
uint32_t intrClockFrequency; // 0C: Hz uint32_t intrClockFrequency; // 0C: Hz
uint64_t cpuClock; // 10: MHz uint64_t cpuClock; // 10: MHz
uint64_t mem_size; // 18: uint64_t mem_size; // 18:
// Loaded kernel // Loaded kernel
uint64_t kernStart; // 20: uint64_t kernStart; // 20:
uint64_t kernEnd; // 28: uint64_t kernEnd; // 28:
uint64_t entryPoint; // 30: uint64_t entryPoint; // 30:
// console disk stuff // console disk stuff
uint64_t diskUnit; // 38: uint64_t diskUnit; // 38:
uint64_t diskCount; // 40: uint64_t diskCount; // 40:
uint64_t diskPAddr; // 48: uint64_t diskPAddr; // 48:
uint64_t diskBlock; // 50: uint64_t diskBlock; // 50:
uint64_t diskOperation; // 58: uint64_t diskOperation; // 58:
// console simple output stuff // console simple output stuff
uint64_t outputChar; // 60: Placeholder for output uint64_t outputChar; // 60: Placeholder for output
uint64_t inputChar; // 68: Placeholder for input uint64_t inputChar; // 68: Placeholder for input
// MP boot // MP boot
uint64_t cpuStack[64]; // 70: uint64_t cpuStack[64]; // 70:
}; };
#endif // __ALPHA_ACCESS_H__ #endif // __ALPHA_ACCESS_H__

View file

@ -50,26 +50,26 @@ EtherDump::EtherDump(const Params *p)
{ {
} }
#define DLT_EN10MB 1 // Ethernet (10Mb) #define DLT_EN10MB 1 // Ethernet (10Mb)
#define TCPDUMP_MAGIC 0xa1b2c3d4 #define TCPDUMP_MAGIC 0xa1b2c3d4
#define PCAP_VERSION_MAJOR 2 #define PCAP_VERSION_MAJOR 2
#define PCAP_VERSION_MINOR 4 #define PCAP_VERSION_MINOR 4
struct pcap_file_header { struct pcap_file_header {
uint32_t magic; uint32_t magic;
uint16_t version_major; uint16_t version_major;
uint16_t version_minor; uint16_t version_minor;
int32_t thiszone; // gmt to local correction int32_t thiszone; // gmt to local correction
uint32_t sigfigs; // accuracy of timestamps uint32_t sigfigs; // accuracy of timestamps
uint32_t snaplen; // max length saved portion of each pkt uint32_t snaplen; // max length saved portion of each pkt
uint32_t linktype; // data link type (DLT_*) uint32_t linktype; // data link type (DLT_*)
}; };
struct pcap_pkthdr { struct pcap_pkthdr {
uint32_t seconds; uint32_t seconds;
uint32_t microseconds; uint32_t microseconds;
uint32_t caplen; // length of portion present uint32_t caplen; // length of portion present
uint32_t len; // length this packet (off wire) uint32_t len; // length this packet (off wire)
}; };
void void

View file

@ -48,37 +48,37 @@ typedef unsigned long uint64_t;
// This structure hacked up from simos // This structure hacked up from simos
struct MipsAccess struct MipsAccess
{ {
uint32_t inputChar; // 00: Placeholder for input uint32_t inputChar; // 00: Placeholder for input
uint32_t last_offset; // 04: must be first field uint32_t last_offset; // 04: must be first field
uint32_t version; // 08: uint32_t version; // 08:
uint32_t numCPUs; // 0C: uint32_t numCPUs; // 0C:
uint32_t intrClockFrequency; // 10: Hz uint32_t intrClockFrequency; // 10: Hz
// Loaded kernel // Loaded kernel
uint32_t kernStart; // 14: uint32_t kernStart; // 14:
uint32_t kernEnd; // 18: uint32_t kernEnd; // 18:
uint32_t entryPoint; // 1c: uint32_t entryPoint; // 1c:
// console simple output stuff // console simple output stuff
uint32_t outputChar; // 20: Placeholder for output uint32_t outputChar; // 20: Placeholder for output
// console disk stuff // console disk stuff
uint32_t diskUnit; // 24: uint32_t diskUnit; // 24:
uint32_t diskCount; // 28: uint32_t diskCount; // 28:
uint32_t diskPAddr; // 2c: uint32_t diskPAddr; // 2c:
uint32_t diskBlock; // 30: uint32_t diskBlock; // 30:
uint32_t diskOperation; // 34: uint32_t diskOperation; // 34:
// MP boot // MP boot
uint32_t cpuStack[64]; // 70: uint32_t cpuStack[64]; // 70:
/* XXX There appears to be a problem in accessing /* XXX There appears to be a problem in accessing
* unit64_t in the console.c file. They are treated * unit64_t in the console.c file. They are treated
* like uint32_int and result in the wrong address for * like uint32_int and result in the wrong address for
* everything below. This problem should be investigated. * everything below. This problem should be investigated.
*/ */
uint64_t cpuClock; // 38: MHz uint64_t cpuClock; // 38: MHz
uint64_t mem_size; // 40: uint64_t mem_size; // 40:
}; };
#endif // __MIPS_ACCESS_H__ #endif // __MIPS_ACCESS_H__

View file

@ -62,10 +62,10 @@ const uint8_t EEPROM_PMATCH0_ADDR = 0xC; // EEPROM Address of PMATCH word 0
* Ethernet device registers * Ethernet device registers
*/ */
struct dp_regs { struct dp_regs {
uint32_t command; uint32_t command;
uint32_t config; uint32_t config;
uint32_t mear; uint32_t mear;
uint32_t ptscr; uint32_t ptscr;
uint32_t isr; uint32_t isr;
uint32_t imr; uint32_t imr;
uint32_t ier; uint32_t ier;

View file

@ -41,7 +41,7 @@
#include "base/inifile.hh" #include "base/inifile.hh"
#include "base/intmath.hh" // for isPowerOf2( #include "base/intmath.hh" // for isPowerOf2(
#include "base/misc.hh" #include "base/misc.hh"
#include "base/str.hh" // for to_number #include "base/str.hh" // for to_number
#include "base/trace.hh" #include "base/trace.hh"
#include "dev/pciconfigall.hh" #include "dev/pciconfigall.hh"
#include "dev/pcidev.hh" #include "dev/pcidev.hh"

View file

@ -69,18 +69,18 @@ union PCIConfig {
}; };
// Common PCI offsets // Common PCI offsets
#define PCI_VENDOR_ID 0x00 // Vendor ID ro #define PCI_VENDOR_ID 0x00 // Vendor ID ro
#define PCI_DEVICE_ID 0x02 // Device ID ro #define PCI_DEVICE_ID 0x02 // Device ID ro
#define PCI_COMMAND 0x04 // Command rw #define PCI_COMMAND 0x04 // Command rw
#define PCI_STATUS 0x06 // Status rw #define PCI_STATUS 0x06 // Status rw
#define PCI_REVISION_ID 0x08 // Revision ID ro #define PCI_REVISION_ID 0x08 // Revision ID ro
#define PCI_CLASS_CODE 0x09 // Class Code ro #define PCI_CLASS_CODE 0x09 // Class Code ro
#define PCI_SUB_CLASS_CODE 0x0A // Sub Class Code ro #define PCI_SUB_CLASS_CODE 0x0A // Sub Class Code ro
#define PCI_BASE_CLASS_CODE 0x0B // Base Class Code ro #define PCI_BASE_CLASS_CODE 0x0B // Base Class Code ro
#define PCI_CACHE_LINE_SIZE 0x0C // Cache Line Size ro+ #define PCI_CACHE_LINE_SIZE 0x0C // Cache Line Size ro+
#define PCI_LATENCY_TIMER 0x0D // Latency Timer ro+ #define PCI_LATENCY_TIMER 0x0D // Latency Timer ro+
#define PCI_HEADER_TYPE 0x0E // Header Type ro #define PCI_HEADER_TYPE 0x0E // Header Type ro
#define PCI_BIST 0x0F // Built in self test rw #define PCI_BIST 0x0F // Built in self test rw
// some pci command reg bitfields // some pci command reg bitfields
#define PCI_CMD_BME 0x04 // Bus master function enable #define PCI_CMD_BME 0x04 // Bus master function enable
@ -88,62 +88,62 @@ union PCIConfig {
#define PCI_CMD_IOSE 0x01 // I/O space enable #define PCI_CMD_IOSE 0x01 // I/O space enable
// Type 0 PCI offsets // Type 0 PCI offsets
#define PCI0_BASE_ADDR0 0x10 // Base Address 0 rw #define PCI0_BASE_ADDR0 0x10 // Base Address 0 rw
#define PCI0_BASE_ADDR1 0x14 // Base Address 1 rw #define PCI0_BASE_ADDR1 0x14 // Base Address 1 rw
#define PCI0_BASE_ADDR2 0x18 // Base Address 2 rw #define PCI0_BASE_ADDR2 0x18 // Base Address 2 rw
#define PCI0_BASE_ADDR3 0x1C // Base Address 3 rw #define PCI0_BASE_ADDR3 0x1C // Base Address 3 rw
#define PCI0_BASE_ADDR4 0x20 // Base Address 4 rw #define PCI0_BASE_ADDR4 0x20 // Base Address 4 rw
#define PCI0_BASE_ADDR5 0x24 // Base Address 5 rw #define PCI0_BASE_ADDR5 0x24 // Base Address 5 rw
#define PCI0_CIS 0x28 // CardBus CIS Pointer ro #define PCI0_CIS 0x28 // CardBus CIS Pointer ro
#define PCI0_SUB_VENDOR_ID 0x2C // Sub-Vendor ID ro #define PCI0_SUB_VENDOR_ID 0x2C // Sub-Vendor ID ro
#define PCI0_SUB_SYSTEM_ID 0x2E // Sub-System ID ro #define PCI0_SUB_SYSTEM_ID 0x2E // Sub-System ID ro
#define PCI0_ROM_BASE_ADDR 0x30 // Expansion ROM Base Address rw #define PCI0_ROM_BASE_ADDR 0x30 // Expansion ROM Base Address rw
#define PCI0_RESERVED0 0x34 #define PCI0_RESERVED0 0x34
#define PCI0_RESERVED1 0x38 #define PCI0_RESERVED1 0x38
#define PCI0_INTERRUPT_LINE 0x3C // Interrupt Line rw #define PCI0_INTERRUPT_LINE 0x3C // Interrupt Line rw
#define PCI0_INTERRUPT_PIN 0x3D // Interrupt Pin ro #define PCI0_INTERRUPT_PIN 0x3D // Interrupt Pin ro
#define PCI0_MINIMUM_GRANT 0x3E // Maximum Grant ro #define PCI0_MINIMUM_GRANT 0x3E // Maximum Grant ro
#define PCI0_MAXIMUM_LATENCY 0x3F // Maximum Latency ro #define PCI0_MAXIMUM_LATENCY 0x3F // Maximum Latency ro
// Type 1 PCI offsets // Type 1 PCI offsets
#define PCI1_BASE_ADDR0 0x10 // Base Address 0 rw #define PCI1_BASE_ADDR0 0x10 // Base Address 0 rw
#define PCI1_BASE_ADDR1 0x14 // Base Address 1 rw #define PCI1_BASE_ADDR1 0x14 // Base Address 1 rw
#define PCI1_PRI_BUS_NUM 0x18 // Primary Bus Number rw #define PCI1_PRI_BUS_NUM 0x18 // Primary Bus Number rw
#define PCI1_SEC_BUS_NUM 0x19 // Secondary Bus Number rw #define PCI1_SEC_BUS_NUM 0x19 // Secondary Bus Number rw
#define PCI1_SUB_BUS_NUM 0x1A // Subordinate Bus Number rw #define PCI1_SUB_BUS_NUM 0x1A // Subordinate Bus Number rw
#define PCI1_SEC_LAT_TIMER 0x1B // Secondary Latency Timer ro+ #define PCI1_SEC_LAT_TIMER 0x1B // Secondary Latency Timer ro+
#define PCI1_IO_BASE 0x1C // I/O Base rw #define PCI1_IO_BASE 0x1C // I/O Base rw
#define PCI1_IO_LIMIT 0x1D // I/O Limit rw #define PCI1_IO_LIMIT 0x1D // I/O Limit rw
#define PCI1_SECONDARY_STATUS 0x1E // Secondary Status rw #define PCI1_SECONDARY_STATUS 0x1E // Secondary Status rw
#define PCI1_MEM_BASE 0x20 // Memory Base rw #define PCI1_MEM_BASE 0x20 // Memory Base rw
#define PCI1_MEM_LIMIT 0x22 // Memory Limit rw #define PCI1_MEM_LIMIT 0x22 // Memory Limit rw
#define PCI1_PRF_MEM_BASE 0x24 // Prefetchable Memory Base rw #define PCI1_PRF_MEM_BASE 0x24 // Prefetchable Memory Base rw
#define PCI1_PRF_MEM_LIMIT 0x26 // Prefetchable Memory Limit rw #define PCI1_PRF_MEM_LIMIT 0x26 // Prefetchable Memory Limit rw
#define PCI1_PRF_BASE_UPPER 0x28 // Prefetchable Base Upper 32 rw #define PCI1_PRF_BASE_UPPER 0x28 // Prefetchable Base Upper 32 rw
#define PCI1_PRF_LIMIT_UPPER 0x2C // Prefetchable Limit Upper 32 rw #define PCI1_PRF_LIMIT_UPPER 0x2C // Prefetchable Limit Upper 32 rw
#define PCI1_IO_BASE_UPPER 0x30 // I/O Base Upper 16 bits rw #define PCI1_IO_BASE_UPPER 0x30 // I/O Base Upper 16 bits rw
#define PCI1_IO_LIMIT_UPPER 0x32 // I/O Limit Upper 16 bits rw #define PCI1_IO_LIMIT_UPPER 0x32 // I/O Limit Upper 16 bits rw
#define PCI1_RESERVED 0x34 // Reserved ro #define PCI1_RESERVED 0x34 // Reserved ro
#define PCI1_ROM_BASE_ADDR 0x38 // Expansion ROM Base Address rw #define PCI1_ROM_BASE_ADDR 0x38 // Expansion ROM Base Address rw
#define PCI1_INTR_LINE 0x3C // Interrupt Line rw #define PCI1_INTR_LINE 0x3C // Interrupt Line rw
#define PCI1_INTR_PIN 0x3D // Interrupt Pin ro #define PCI1_INTR_PIN 0x3D // Interrupt Pin ro
#define PCI1_BRIDGE_CTRL 0x3E // Bridge Control rw #define PCI1_BRIDGE_CTRL 0x3E // Bridge Control rw
// Device specific offsets // Device specific offsets
#define PCI_DEVICE_SPECIFIC 0x40 // 192 bytes #define PCI_DEVICE_SPECIFIC 0x40 // 192 bytes
#define PCI_CONFIG_SIZE 0xFF #define PCI_CONFIG_SIZE 0xFF
// Some Vendor IDs // Some Vendor IDs
#define PCI_VENDOR_DEC 0x1011 #define PCI_VENDOR_DEC 0x1011
#define PCI_VENDOR_NCR 0x101A #define PCI_VENDOR_NCR 0x101A
#define PCI_VENDOR_QLOGIC 0x1077 #define PCI_VENDOR_QLOGIC 0x1077
#define PCI_VENDOR_SIMOS 0x1291 #define PCI_VENDOR_SIMOS 0x1291
// Some Product IDs // Some Product IDs
#define PCI_PRODUCT_DEC_PZA 0x0008 #define PCI_PRODUCT_DEC_PZA 0x0008
#define PCI_PRODUCT_NCR_810 0x0001 #define PCI_PRODUCT_NCR_810 0x0001
#define PCI_PRODUCT_QLOGIC_ISP1020 0x1020 #define PCI_PRODUCT_QLOGIC_ISP1020 0x1020
#define PCI_PRODUCT_SIMOS_SIMOS 0x1291 #define PCI_PRODUCT_SIMOS_SIMOS 0x1291
#define PCI_PRODUCT_SIMOS_ETHER 0x1292 #define PCI_PRODUCT_SIMOS_ETHER 0x1292
#endif // __PCIREG_H__ #endif // __PCIREG_H__

View file

@ -48,7 +48,7 @@
static const uint64_t NAME##_width = WIDTH; \ static const uint64_t NAME##_width = WIDTH; \
static const uint64_t NAME##_offset = OFFSET; \ static const uint64_t NAME##_offset = OFFSET; \
static const uint64_t NAME##_mask = (ULL(1) << WIDTH) - 1; \ static const uint64_t NAME##_mask = (ULL(1) << WIDTH) - 1; \
static const uint64_t NAME = ((ULL(1) << WIDTH) - 1) << OFFSET; \ static const uint64_t NAME = ((ULL(1) << WIDTH) - 1) << OFFSET; \
static inline uint64_t get_##NAME(uint64_t reg) \ static inline uint64_t get_##NAME(uint64_t reg) \
{ return (reg & NAME) >> OFFSET; } \ { return (reg & NAME) >> OFFSET; } \
static inline uint64_t set_##NAME(uint64_t reg, uint64_t val) \ static inline uint64_t set_##NAME(uint64_t reg, uint64_t val) \

View file

@ -65,46 +65,46 @@ class Linux : public OperatingSystem
/// gets #defined to something else on some systems. This type /// gets #defined to something else on some systems. This type
/// can be specialized by architecture specific "Linux" classes /// can be specialized by architecture specific "Linux" classes
typedef struct { typedef struct {
uint32_t st_dev; //!< device uint32_t st_dev; //!< device
uint32_t st_ino; //!< inode uint32_t st_ino; //!< inode
uint32_t st_mode; //!< mode uint32_t st_mode; //!< mode
uint32_t st_nlink; //!< link count uint32_t st_nlink; //!< link count
uint32_t st_uid; //!< owner's user ID uint32_t st_uid; //!< owner's user ID
uint32_t st_gid; //!< owner's group ID uint32_t st_gid; //!< owner's group ID
uint32_t st_rdev; //!< device number uint32_t st_rdev; //!< device number
int32_t _pad1; //!< for alignment int32_t _pad1; //!< for alignment
int64_t st_size; //!< file size in bytes int64_t st_size; //!< file size in bytes
uint64_t st_atimeX; //!< time of last access uint64_t st_atimeX; //!< time of last access
uint64_t st_mtimeX; //!< time of last modification uint64_t st_mtimeX; //!< time of last modification
uint64_t st_ctimeX; //!< time of last status change uint64_t st_ctimeX; //!< time of last status change
uint32_t st_blksize; //!< optimal I/O block size uint32_t st_blksize; //!< optimal I/O block size
int32_t st_blocks; //!< number of blocks allocated int32_t st_blocks; //!< number of blocks allocated
uint32_t st_flags; //!< flags uint32_t st_flags; //!< flags
uint32_t st_gen; //!< unknown uint32_t st_gen; //!< unknown
} tgt_stat; } tgt_stat;
// same for stat64 // same for stat64
typedef struct { typedef struct {
uint64_t st_dev; uint64_t st_dev;
uint64_t st_ino; uint64_t st_ino;
uint64_t st_rdev; uint64_t st_rdev;
int64_t st_size; int64_t st_size;
uint64_t st_blocks; uint64_t st_blocks;
uint32_t st_mode; uint32_t st_mode;
uint32_t st_uid; uint32_t st_uid;
uint32_t st_gid; uint32_t st_gid;
uint32_t st_blksize; uint32_t st_blksize;
uint32_t st_nlink; uint32_t st_nlink;
uint32_t __pad0; uint32_t __pad0;
uint64_t st_atimeX; uint64_t st_atimeX;
uint64_t st_atime_nsec; uint64_t st_atime_nsec;
uint64_t st_mtimeX; uint64_t st_mtimeX;
uint64_t st_mtime_nsec; uint64_t st_mtime_nsec;
uint64_t st_ctimeX; uint64_t st_ctimeX;
uint64_t st_ctime_nsec; uint64_t st_ctime_nsec;
int64_t ___unused[3]; int64_t ___unused[3];
} tgt_stat64; } tgt_stat64;
/// Length of strings in struct utsname (plus 1 for null char). /// Length of strings in struct utsname (plus 1 for null char).
@ -112,23 +112,23 @@ class Linux : public OperatingSystem
/// Interface struct for uname(). /// Interface struct for uname().
struct utsname { struct utsname {
char sysname[_SYS_NMLN]; //!< System name. char sysname[_SYS_NMLN]; //!< System name.
char nodename[_SYS_NMLN]; //!< Node name. char nodename[_SYS_NMLN]; //!< Node name.
char release[_SYS_NMLN]; //!< OS release. char release[_SYS_NMLN]; //!< OS release.
char version[_SYS_NMLN]; //!< OS version. char version[_SYS_NMLN]; //!< OS version.
char machine[_SYS_NMLN]; //!< Machine type. char machine[_SYS_NMLN]; //!< Machine type.
}; };
/// Limit struct for getrlimit/setrlimit. /// Limit struct for getrlimit/setrlimit.
struct rlimit { struct rlimit {
uint64_t rlim_cur; //!< soft limit uint64_t rlim_cur; //!< soft limit
uint64_t rlim_max; //!< hard limit uint64_t rlim_max; //!< hard limit
}; };
/// For gettimeofday(). /// For gettimeofday().
struct timeval { struct timeval {
int64_t tv_sec; //!< seconds int64_t tv_sec; //!< seconds
int64_t tv_usec; //!< microseconds int64_t tv_usec; //!< microseconds
}; };
// For writev/readv // For writev/readv
@ -140,22 +140,22 @@ class Linux : public OperatingSystem
/// For getrusage(). /// For getrusage().
struct rusage { struct rusage {
struct timeval ru_utime; //!< user time used struct timeval ru_utime; //!< user time used
struct timeval ru_stime; //!< system time used struct timeval ru_stime; //!< system time used
int64_t ru_maxrss; //!< max rss int64_t ru_maxrss; //!< max rss
int64_t ru_ixrss; //!< integral shared memory size int64_t ru_ixrss; //!< integral shared memory size
int64_t ru_idrss; //!< integral unshared data " int64_t ru_idrss; //!< integral unshared data "
int64_t ru_isrss; //!< integral unshared stack " int64_t ru_isrss; //!< integral unshared stack "
int64_t ru_minflt; //!< page reclaims - total vmfaults int64_t ru_minflt; //!< page reclaims - total vmfaults
int64_t ru_majflt; //!< page faults int64_t ru_majflt; //!< page faults
int64_t ru_nswap; //!< swaps int64_t ru_nswap; //!< swaps
int64_t ru_inblock; //!< block input operations int64_t ru_inblock; //!< block input operations
int64_t ru_oublock; //!< block output operations int64_t ru_oublock; //!< block output operations
int64_t ru_msgsnd; //!< messages sent int64_t ru_msgsnd; //!< messages sent
int64_t ru_msgrcv; //!< messages received int64_t ru_msgrcv; //!< messages received
int64_t ru_nsignals; //!< signals received int64_t ru_nsignals; //!< signals received
int64_t ru_nvcsw; //!< voluntary context switches int64_t ru_nvcsw; //!< voluntary context switches
int64_t ru_nivcsw; //!< involuntary " int64_t ru_nivcsw; //!< involuntary "
}; };
}; // class Linux }; // class Linux

View file

@ -44,8 +44,8 @@ class OperatingSystem {};
/// This struct is used to build an target-OS-dependent table that /// This struct is used to build an target-OS-dependent table that
/// maps the target's open() flags to the host open() flags. /// maps the target's open() flags to the host open() flags.
struct OpenFlagTransTable { struct OpenFlagTransTable {
int tgtFlag; //!< Target system flag value. int tgtFlag; //!< Target system flag value.
int hostFlag; //!< Corresponding host system flag value. int hostFlag; //!< Corresponding host system flag value.
}; };
@ -71,23 +71,23 @@ class OperatingSystem {
/// Interface struct for uname(). /// Interface struct for uname().
typedef struct { typedef struct {
char sysname[_SYS_NMLN]; //!< System name. char sysname[_SYS_NMLN]; //!< System name.
char nodename[_SYS_NMLN]; //!< Node name. char nodename[_SYS_NMLN]; //!< Node name.
char release[_SYS_NMLN]; //!< OS release. char release[_SYS_NMLN]; //!< OS release.
char version[_SYS_NMLN]; //!< OS version. char version[_SYS_NMLN]; //!< OS version.
char machine[_SYS_NMLN]; //!< Machine type. char machine[_SYS_NMLN]; //!< Machine type.
} utsname; } utsname;
/// Limit struct for getrlimit/setrlimit. /// Limit struct for getrlimit/setrlimit.
typedef struct { typedef struct {
uint64_t rlim_cur; //!< soft limit uint64_t rlim_cur; //!< soft limit
uint64_t rlim_max; //!< hard limit uint64_t rlim_max; //!< hard limit
} rlimit; } rlimit;
/// For gettimeofday(). /// For gettimeofday().
typedef struct { typedef struct {
int64_t tv_sec; //!< seconds int64_t tv_sec; //!< seconds
int64_t tv_usec; //!< microseconds int64_t tv_usec; //!< microseconds
} timeval; } timeval;
// For writev/readv // For writev/readv
@ -99,22 +99,22 @@ class OperatingSystem {
/// For getrusage(). /// For getrusage().
typedef struct { typedef struct {
timeval ru_utime; //!< user time used timeval ru_utime; //!< user time used
timeval ru_stime; //!< system time used timeval ru_stime; //!< system time used
int64_t ru_maxrss; //!< max rss int64_t ru_maxrss; //!< max rss
int64_t ru_ixrss; //!< integral shared memory size int64_t ru_ixrss; //!< integral shared memory size
int64_t ru_idrss; //!< integral unshared data " int64_t ru_idrss; //!< integral unshared data "
int64_t ru_isrss; //!< integral unshared stack " int64_t ru_isrss; //!< integral unshared stack "
int64_t ru_minflt; //!< page reclaims - total vmfaults int64_t ru_minflt; //!< page reclaims - total vmfaults
int64_t ru_majflt; //!< page faults int64_t ru_majflt; //!< page faults
int64_t ru_nswap; //!< swaps int64_t ru_nswap; //!< swaps
int64_t ru_inblock; //!< block input operations int64_t ru_inblock; //!< block input operations
int64_t ru_oublock; //!< block output operations int64_t ru_oublock; //!< block output operations
int64_t ru_msgsnd; //!< messages sent int64_t ru_msgsnd; //!< messages sent
int64_t ru_msgrcv; //!< messages received int64_t ru_msgrcv; //!< messages received
int64_t ru_nsignals; //!< signals received int64_t ru_nsignals; //!< signals received
int64_t ru_nvcsw; //!< voluntary context switches int64_t ru_nvcsw; //!< voluntary context switches
int64_t ru_nivcsw; //!< involuntary " int64_t ru_nivcsw; //!< involuntary "
} rusage; } rusage;
}; // class OperatingSystem }; // class OperatingSystem

View file

@ -76,39 +76,39 @@ class Solaris : public OperatingSystem
/// Stat buffer. Note that we can't call it 'stat' since that /// Stat buffer. Note that we can't call it 'stat' since that
/// gets #defined to something else on some systems. /// gets #defined to something else on some systems.
typedef struct { typedef struct {
uint64_t st_dev; //!< device uint64_t st_dev; //!< device
uint64_t st_ino; //!< inode uint64_t st_ino; //!< inode
uint32_t st_mode; //!< mode uint32_t st_mode; //!< mode
uint32_t st_nlink; //!< link count uint32_t st_nlink; //!< link count
int32_t st_uid; //!< owner's user ID int32_t st_uid; //!< owner's user ID
int32_t st_gid; //!< owner's group ID int32_t st_gid; //!< owner's group ID
uint64_t st_rdev; //!< device number uint64_t st_rdev; //!< device number
int64_t st_size; //!< file size in bytes int64_t st_size; //!< file size in bytes
//struct tgt_timespec st_atimeX; //!< time of last access //struct tgt_timespec st_atimeX; //!< time of last access
//struct tgt_timespec st_mtimeX; //!< time of last modification //struct tgt_timespec st_mtimeX; //!< time of last modification
//struct tgt_timespec st_ctimeX; //!< time of last status change //struct tgt_timespec st_ctimeX; //!< time of last status change
int64_t st_atimeX, st_mtimeX, st_ctimeX; int64_t st_atimeX, st_mtimeX, st_ctimeX;
int32_t st_blksize; //!< optimal I/O block size int32_t st_blksize; //!< optimal I/O block size
int64_t st_blocks; //!< number of blocks allocated int64_t st_blocks; //!< number of blocks allocated
char st_fstype[16]; char st_fstype[16];
} tgt_stat; } tgt_stat;
// same for stat64 // same for stat64
typedef struct { typedef struct {
uint64_t st_dev; //!< device uint64_t st_dev; //!< device
uint64_t st_ino; //!< inode uint64_t st_ino; //!< inode
uint32_t st_mode; //!< mode uint32_t st_mode; //!< mode
uint32_t st_nlink; //!< link count uint32_t st_nlink; //!< link count
int32_t st_uid; //!< owner's user ID int32_t st_uid; //!< owner's user ID
int32_t st_gid; //!< owner's group ID int32_t st_gid; //!< owner's group ID
uint64_t st_rdev; //!< device number uint64_t st_rdev; //!< device number
int64_t st_size; //!< file size in bytes int64_t st_size; //!< file size in bytes
//struct tgt_timespec st_atimeX; //!< time of last access //struct tgt_timespec st_atimeX; //!< time of last access
//struct tgt_timespec st_mtimeX; //!< time of last modification //struct tgt_timespec st_mtimeX; //!< time of last modification
//struct tgt_timespec st_ctimeX; //!< time of last status change //struct tgt_timespec st_ctimeX; //!< time of last status change
int64_t st_atimeX, st_mtimeX, st_ctimeX; int64_t st_atimeX, st_mtimeX, st_ctimeX;
int32_t st_blksize; //!< optimal I/O block size int32_t st_blksize; //!< optimal I/O block size
int64_t st_blocks; //!< number of blocks allocated int64_t st_blocks; //!< number of blocks allocated
char st_fstype[16]; char st_fstype[16];
} tgt_stat64; } tgt_stat64;
@ -117,11 +117,11 @@ class Solaris : public OperatingSystem
/// Interface struct for uname(). /// Interface struct for uname().
typedef struct utsname { typedef struct utsname {
char sysname[_SYS_NMLN]; //!< System name. char sysname[_SYS_NMLN]; //!< System name.
char nodename[_SYS_NMLN]; //!< Node name. char nodename[_SYS_NMLN]; //!< Node name.
char release[_SYS_NMLN]; //!< OS release. char release[_SYS_NMLN]; //!< OS release.
char version[_SYS_NMLN]; //!< OS version. char version[_SYS_NMLN]; //!< OS version.
char machine[_SYS_NMLN]; //!< Machine type. char machine[_SYS_NMLN]; //!< Machine type.
} utsname; } utsname;
}; // class Solaris }; // class Solaris

View file

@ -37,63 +37,63 @@
namespace tru64 { namespace tru64 {
struct m_hdr { struct m_hdr {
Addr mh_next; // 0x00 Addr mh_next; // 0x00
Addr mh_nextpkt; // 0x08 Addr mh_nextpkt; // 0x08
Addr mh_data; // 0x10 Addr mh_data; // 0x10
int32_t mh_len; // 0x18 int32_t mh_len; // 0x18
int32_t mh_type; // 0x1C int32_t mh_type; // 0x1C
int32_t mh_flags; // 0x20 int32_t mh_flags; // 0x20
int32_t mh_pad0; // 0x24 int32_t mh_pad0; // 0x24
Addr mh_foo[4]; // 0x28, 0x30, 0x38, 0x40 Addr mh_foo[4]; // 0x28, 0x30, 0x38, 0x40
}; };
struct pkthdr { struct pkthdr {
int32_t len; int32_t len;
int32_t protocolSum; int32_t protocolSum;
Addr rcvif; Addr rcvif;
}; };
struct m_ext { struct m_ext {
Addr ext_buf; // 0x00 Addr ext_buf; // 0x00
Addr ext_free; // 0x08 Addr ext_free; // 0x08
uint32_t ext_size; // 0x10 uint32_t ext_size; // 0x10
uint32_t ext_pad0; // 0x14 uint32_t ext_pad0; // 0x14
Addr ext_arg; // 0x18 Addr ext_arg; // 0x18
struct ext_refq { struct ext_refq {
Addr forw, back; // 0x20, 0x28 Addr forw, back; // 0x20, 0x28
} ext_ref; } ext_ref;
Addr uiomove_f; // 0x30 Addr uiomove_f; // 0x30
int32_t protocolSum; // 0x38 int32_t protocolSum; // 0x38
int32_t bytesSummed; // 0x3C int32_t bytesSummed; // 0x3C
Addr checksum; // 0x40 Addr checksum; // 0x40
}; };
struct mbuf { struct mbuf {
struct m_hdr m_hdr; struct m_hdr m_hdr;
union { union {
struct { struct {
struct pkthdr MH_pkthdr; struct pkthdr MH_pkthdr;
union { union {
struct m_ext MH_ext; struct m_ext MH_ext;
char MH_databuf[1]; char MH_databuf[1];
} MH_dat; } MH_dat;
} MH; } MH;
char M_databuf[1]; char M_databuf[1];
} M_dat; } M_dat;
}; };
#define m_attr m_hdr.mh_attr #define m_attr m_hdr.mh_attr
#define m_next m_hdr.mh_next #define m_next m_hdr.mh_next
#define m_len m_hdr.mh_len #define m_len m_hdr.mh_len
#define m_data m_hdr.mh_data #define m_data m_hdr.mh_data
#define m_type m_hdr.mh_type #define m_type m_hdr.mh_type
#define m_flags m_hdr.mh_flags #define m_flags m_hdr.mh_flags
#define m_nextpkt m_hdr.mh_nextpkt #define m_nextpkt m_hdr.mh_nextpkt
#define m_act m_nextpkt #define m_act m_nextpkt
#define m_pkthdr M_dat.MH.MH_pkthdr #define m_pkthdr M_dat.MH.MH_pkthdr
#define m_ext M_dat.MH.MH_dat.MH_ext #define m_ext M_dat.MH.MH_dat.MH_ext
#define m_pktdat M_dat.MH.MH_dat.MH_databuf #define m_pktdat M_dat.MH.MH_dat.MH_databuf
#define m_dat M_dat.M_databuf #define m_dat M_dat.M_databuf
} }

View file

@ -52,7 +52,7 @@ class Tru64 {};
#include <dirent.h> #include <dirent.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <string.h> // for memset() #include <string.h> // for memset()
#include <unistd.h> #include <unistd.h>
#include "cpu/base.hh" #include "cpu/base.hh"
@ -102,7 +102,7 @@ class Tru64 : public OperatingSystem
int32_t f_retired5; int32_t f_retired5;
int32_t f_retired6; int32_t f_retired6;
int32_t f_retired7; int32_t f_retired7;
fsid_t f_fsid; fsid_t f_fsid;
int32_t f_spare[9]; int32_t f_spare[9];
char f_retired8[90]; char f_retired8[90];
char f_retired9[90]; char f_retired9[90];
@ -141,10 +141,10 @@ class Tru64 : public OperatingSystem
/// For getdirentries(). /// For getdirentries().
struct dirent struct dirent
{ {
ino_t d_ino; //!< file number of entry ino_t d_ino; //!< file number of entry
uint16_t d_reclen; //!< length of this record uint16_t d_reclen; //!< length of this record
uint16_t d_namlen; //!< length of string in d_name uint16_t d_namlen; //!< length of string in d_name
char d_name[256]; //!< dummy name length char d_name[256]; //!< dummy name length
}; };
@ -162,106 +162,106 @@ class Tru64 : public OperatingSystem
/// Limit struct for getrlimit/setrlimit. /// Limit struct for getrlimit/setrlimit.
struct rlimit { struct rlimit {
uint64_t rlim_cur; //!< soft limit uint64_t rlim_cur; //!< soft limit
uint64_t rlim_max; //!< hard limit uint64_t rlim_max; //!< hard limit
}; };
/// For getsysinfo() GSI_CPU_INFO option. /// For getsysinfo() GSI_CPU_INFO option.
struct cpu_info { struct cpu_info {
uint32_t current_cpu; //!< current_cpu uint32_t current_cpu; //!< current_cpu
uint32_t cpus_in_box; //!< cpus_in_box uint32_t cpus_in_box; //!< cpus_in_box
uint32_t cpu_type; //!< cpu_type uint32_t cpu_type; //!< cpu_type
uint32_t ncpus; //!< ncpus uint32_t ncpus; //!< ncpus
uint64_t cpus_present; //!< cpus_present uint64_t cpus_present; //!< cpus_present
uint64_t cpus_running; //!< cpus_running uint64_t cpus_running; //!< cpus_running
uint64_t cpu_binding; //!< cpu_binding uint64_t cpu_binding; //!< cpu_binding
uint64_t cpu_ex_binding; //!< cpu_ex_binding uint64_t cpu_ex_binding; //!< cpu_ex_binding
uint32_t mhz; //!< mhz uint32_t mhz; //!< mhz
uint32_t unused[3]; //!< future expansion uint32_t unused[3]; //!< future expansion
}; };
/// For gettimeofday. /// For gettimeofday.
struct timeval { struct timeval {
uint32_t tv_sec; //!< seconds uint32_t tv_sec; //!< seconds
uint32_t tv_usec; //!< microseconds uint32_t tv_usec; //!< microseconds
}; };
/// For getrusage(). /// For getrusage().
struct rusage { struct rusage {
struct timeval ru_utime; //!< user time used struct timeval ru_utime; //!< user time used
struct timeval ru_stime; //!< system time used struct timeval ru_stime; //!< system time used
uint64_t ru_maxrss; //!< ru_maxrss uint64_t ru_maxrss; //!< ru_maxrss
uint64_t ru_ixrss; //!< integral shared memory size uint64_t ru_ixrss; //!< integral shared memory size
uint64_t ru_idrss; //!< integral unshared data " uint64_t ru_idrss; //!< integral unshared data "
uint64_t ru_isrss; //!< integral unshared stack " uint64_t ru_isrss; //!< integral unshared stack "
uint64_t ru_minflt; //!< page reclaims - total vmfaults uint64_t ru_minflt; //!< page reclaims - total vmfaults
uint64_t ru_majflt; //!< page faults uint64_t ru_majflt; //!< page faults
uint64_t ru_nswap; //!< swaps uint64_t ru_nswap; //!< swaps
uint64_t ru_inblock; //!< block input operations uint64_t ru_inblock; //!< block input operations
uint64_t ru_oublock; //!< block output operations uint64_t ru_oublock; //!< block output operations
uint64_t ru_msgsnd; //!< messages sent uint64_t ru_msgsnd; //!< messages sent
uint64_t ru_msgrcv; //!< messages received uint64_t ru_msgrcv; //!< messages received
uint64_t ru_nsignals; //!< signals received uint64_t ru_nsignals; //!< signals received
uint64_t ru_nvcsw; //!< voluntary context switches uint64_t ru_nvcsw; //!< voluntary context switches
uint64_t ru_nivcsw; //!< involuntary " uint64_t ru_nivcsw; //!< involuntary "
}; };
/// For sigreturn(). /// For sigreturn().
struct sigcontext { struct sigcontext {
int64_t sc_onstack; //!< sigstack state to restore int64_t sc_onstack; //!< sigstack state to restore
int64_t sc_mask; //!< signal mask to restore int64_t sc_mask; //!< signal mask to restore
int64_t sc_pc; //!< pc at time of signal int64_t sc_pc; //!< pc at time of signal
int64_t sc_ps; //!< psl to retore int64_t sc_ps; //!< psl to retore
int64_t sc_regs[32]; //!< processor regs 0 to 31 int64_t sc_regs[32]; //!< processor regs 0 to 31
int64_t sc_ownedfp; //!< fp has been used int64_t sc_ownedfp; //!< fp has been used
int64_t sc_fpregs[32]; //!< fp regs 0 to 31 int64_t sc_fpregs[32]; //!< fp regs 0 to 31
uint64_t sc_fpcr; //!< floating point control reg uint64_t sc_fpcr; //!< floating point control reg
uint64_t sc_fp_control; //!< software fpcr uint64_t sc_fp_control; //!< software fpcr
int64_t sc_reserved1; //!< reserved for kernel int64_t sc_reserved1; //!< reserved for kernel
uint32_t sc_kreserved1; //!< reserved for kernel uint32_t sc_kreserved1; //!< reserved for kernel
uint32_t sc_kreserved2; //!< reserved for kernel uint32_t sc_kreserved2; //!< reserved for kernel
size_t sc_ssize; //!< stack size size_t sc_ssize; //!< stack size
caddr_t sc_sbase; //!< stack start caddr_t sc_sbase; //!< stack start
uint64_t sc_traparg_a0; //!< a0 argument to trap on exc uint64_t sc_traparg_a0; //!< a0 argument to trap on exc
uint64_t sc_traparg_a1; //!< a1 argument to trap on exc uint64_t sc_traparg_a1; //!< a1 argument to trap on exc
uint64_t sc_traparg_a2; //!< a2 argument to trap on exc uint64_t sc_traparg_a2; //!< a2 argument to trap on exc
uint64_t sc_fp_trap_pc; //!< imprecise pc uint64_t sc_fp_trap_pc; //!< imprecise pc
uint64_t sc_fp_trigger_sum; //!< Exception summary at trigg uint64_t sc_fp_trigger_sum; //!< Exception summary at trigg
uint64_t sc_fp_trigger_inst; //!< Instruction at trigger pc uint64_t sc_fp_trigger_inst; //!< Instruction at trigger pc
}; };
/// For table(). /// For table().
struct tbl_sysinfo { struct tbl_sysinfo {
uint64_t si_user; //!< User time uint64_t si_user; //!< User time
uint64_t si_nice; //!< Nice time uint64_t si_nice; //!< Nice time
uint64_t si_sys; //!< System time uint64_t si_sys; //!< System time
uint64_t si_idle; //!< Idle time uint64_t si_idle; //!< Idle time
uint64_t si_hz; //!< hz uint64_t si_hz; //!< hz
uint64_t si_phz; //!< phz uint64_t si_phz; //!< phz
uint64_t si_boottime; //!< Boot time in seconds uint64_t si_boottime; //!< Boot time in seconds
uint64_t wait; //!< Wait time uint64_t wait; //!< Wait time
uint32_t si_max_procs; //!< rpb->rpb_numprocs uint32_t si_max_procs; //!< rpb->rpb_numprocs
uint32_t pad; //!< padding uint32_t pad; //!< padding
}; };
/// For stack_create. /// For stack_create.
struct vm_stack { struct vm_stack {
// was void * // was void *
Addr address; //!< address hint Addr address; //!< address hint
size_t rsize; //!< red zone size size_t rsize; //!< red zone size
size_t ysize; //!< yellow zone size size_t ysize; //!< yellow zone size
size_t gsize; //!< green zone size size_t gsize; //!< green zone size
size_t swap; //!< amount of swap to reserve size_t swap; //!< amount of swap to reserve
size_t incr; //!< growth increment size_t incr; //!< growth increment
uint64_t align; //!< address alignment uint64_t align; //!< address alignment
uint64_t flags; //!< MAP_FIXED etc. uint64_t flags; //!< MAP_FIXED etc.
// was struct memalloc_attr * // was struct memalloc_attr *
Addr attr; //!< allocation policy Addr attr; //!< allocation policy
uint64_t reserved; //!< reserved uint64_t reserved; //!< reserved
}; };
/// Return values for nxm calls. /// Return values for nxm calls.
@ -271,17 +271,17 @@ class Tru64 : public OperatingSystem
}; };
/// For nxm_task_init. /// For nxm_task_init.
static const int NXM_TASK_INIT_VP = 2; //!< initial thread is VP static const int NXM_TASK_INIT_VP = 2; //!< initial thread is VP
/// Task attribute structure. /// Task attribute structure.
struct nxm_task_attr { struct nxm_task_attr {
int64_t nxm_callback; //!< nxm_callback int64_t nxm_callback; //!< nxm_callback
unsigned int nxm_version; //!< nxm_version unsigned int nxm_version; //!< nxm_version
unsigned short nxm_uniq_offset; //!< nxm_uniq_offset unsigned short nxm_uniq_offset; //!< nxm_uniq_offset
unsigned short flags; //!< flags unsigned short flags; //!< flags
int nxm_quantum; //!< nxm_quantum int nxm_quantum; //!< nxm_quantum
int pad1; //!< pad1 int pad1; //!< pad1
int64_t pad2; //!< pad2 int64_t pad2; //!< pad2
}; };
/// Signal set. /// Signal set.
@ -316,9 +316,9 @@ class Tru64 : public OperatingSystem
// the kernel but are never context-switched by the library. // the kernel but are never context-switched by the library.
int nxm_ssig; //!< scheduler's synchronous signals int nxm_ssig; //!< scheduler's synchronous signals
int reserved1; //!< reserved1 int reserved1; //!< reserved1
int64_t nxm_active; //!< scheduler active int64_t nxm_active; //!< scheduler active
int64_t reserved2; //!< reserved2 int64_t reserved2; //!< reserved2
}; };
struct nxm_sched_state { struct nxm_sched_state {
@ -328,14 +328,14 @@ class Tru64 : public OperatingSystem
int nxm_set_quantum; //!< quantum reset value int nxm_set_quantum; //!< quantum reset value
int nxm_sysevent; //!< syscall state int nxm_sysevent; //!< syscall state
// struct nxm_upcall * // struct nxm_upcall *
Addr nxm_uc_ret; //!< stack ptr of null thread Addr nxm_uc_ret; //!< stack ptr of null thread
// void * // void *
Addr nxm_tid; //!< scheduler's thread id Addr nxm_tid; //!< scheduler's thread id
int64_t nxm_va; //!< page fault address int64_t nxm_va; //!< page fault address
// struct nxm_pth_state * // struct nxm_pth_state *
Addr nxm_pthid; //!< id of null thread Addr nxm_pthid; //!< id of null thread
uint64_t nxm_bound_pcs_count; //!< bound PCS thread count uint64_t nxm_bound_pcs_count; //!< bound PCS thread count
int64_t pad[2]; //!< pad int64_t pad[2]; //!< pad
}; };
/// nxm_shared. /// nxm_shared.
@ -343,7 +343,7 @@ class Tru64 : public OperatingSystem
int64_t nxm_callback; //!< address of upcall routine int64_t nxm_callback; //!< address of upcall routine
unsigned int nxm_version; //!< version number unsigned int nxm_version; //!< version number
unsigned short nxm_uniq_offset; //!< correction factor for TEB unsigned short nxm_uniq_offset; //!< correction factor for TEB
unsigned short pad1; //!< pad1 unsigned short pad1; //!< pad1
int64_t space[2]; //!< future growth int64_t space[2]; //!< future growth
struct nxm_sched_state nxm_ss[1]; //!< array of shared areas struct nxm_sched_state nxm_ss[1]; //!< array of shared areas
}; };
@ -368,29 +368,29 @@ class Tru64 : public OperatingSystem
/// For nxm_thread_create. /// For nxm_thread_create.
enum nxm_thread_type { enum nxm_thread_type {
NXM_TYPE_SCS = 0, NXM_TYPE_SCS = 0,
NXM_TYPE_VP = 1, NXM_TYPE_VP = 1,
NXM_TYPE_MANAGER = 2 NXM_TYPE_MANAGER = 2
}; };
/// Thread attributes. /// Thread attributes.
struct nxm_thread_attr { struct nxm_thread_attr {
int version; //!< version int version; //!< version
int type; //!< type int type; //!< type
int cancel_flags; //!< cancel_flags int cancel_flags; //!< cancel_flags
int priority; //!< priority int priority; //!< priority
int policy; //!< policy int policy; //!< policy
int signal_type; //!< signal_type int signal_type; //!< signal_type
// void * // void *
Addr pthid; //!< pthid Addr pthid; //!< pthid
sigset_t sigmask; //!< sigmask sigset_t sigmask; //!< sigmask
/// Initial register values. /// Initial register values.
struct { struct {
uint64_t pc; //!< pc uint64_t pc; //!< pc
uint64_t sp; //!< sp uint64_t sp; //!< sp
uint64_t a0; //!< a0 uint64_t a0; //!< a0
} registers; } registers;
uint64_t pad2[2]; //!< pad2 uint64_t pad2[2]; //!< pad2
}; };
/// Helper function to convert a host statfs buffer to a target statfs /// Helper function to convert a host statfs buffer to a target statfs
@ -605,7 +605,7 @@ class Tru64 : public OperatingSystem
process->numCpus() * sizeof(Tru64::nxm_slot_state_t); process->numCpus() * sizeof(Tru64::nxm_slot_state_t);
cur_addr += slot_state_size; cur_addr += slot_state_size;
// now the per-RAD state struct (we only support one RAD) // now the per-RAD state struct (we only support one RAD)
cur_addr = 0x14000; // bump up addr for alignment cur_addr = 0x14000; // bump up addr for alignment
Addr rad_state_addr = cur_addr; Addr rad_state_addr = cur_addr;
int rad_state_size = int rad_state_size =
(sizeof(Tru64::nxm_shared) (sizeof(Tru64::nxm_shared)
@ -616,7 +616,7 @@ class Tru64 : public OperatingSystem
TypedBufferArg<Tru64::nxm_config_info> config(config_addr); TypedBufferArg<Tru64::nxm_config_info> config(config_addr);
config->nxm_nslots_per_rad = htog(process->numCpus()); config->nxm_nslots_per_rad = htog(process->numCpus());
config->nxm_nrads = htog(1); // only one RAD in our system! config->nxm_nrads = htog(1); // only one RAD in our system!
config->nxm_slot_state = htog(slot_state_addr); config->nxm_slot_state = htog(slot_state_addr);
config->nxm_rad[0] = htog(rad_state_addr); config->nxm_rad[0] = htog(rad_state_addr);
@ -1111,37 +1111,37 @@ class Tru64_F64 : public Tru64
/// On some hosts (notably Linux) define st_atime, st_mtime, and /// On some hosts (notably Linux) define st_atime, st_mtime, and
/// st_ctime as macros, so we append an X to get around this. /// st_ctime as macros, so we append an X to get around this.
struct F64_stat { struct F64_stat {
dev_t st_dev; //!< st_dev dev_t st_dev; //!< st_dev
int32_t st_retired1; //!< st_retired1 int32_t st_retired1; //!< st_retired1
mode_t st_mode; //!< st_mode mode_t st_mode; //!< st_mode
nlink_t st_nlink; //!< st_nlink nlink_t st_nlink; //!< st_nlink
uint16_t st_nlink_reserved; //!< st_nlink_reserved uint16_t st_nlink_reserved; //!< st_nlink_reserved
uid_t st_uid; //!< st_uid uid_t st_uid; //!< st_uid
gid_t st_gid; //!< st_gid gid_t st_gid; //!< st_gid
dev_t st_rdev; //!< st_rdev dev_t st_rdev; //!< st_rdev
dev_t st_ldev; //!< st_ldev dev_t st_ldev; //!< st_ldev
off_t st_size; //!< st_size off_t st_size; //!< st_size
time_t st_retired2; //!< st_retired2 time_t st_retired2; //!< st_retired2
int32_t st_uatime; //!< st_uatime int32_t st_uatime; //!< st_uatime
time_t st_retired3; //!< st_retired3 time_t st_retired3; //!< st_retired3
int32_t st_umtime; //!< st_umtime int32_t st_umtime; //!< st_umtime
time_t st_retired4; //!< st_retired4 time_t st_retired4; //!< st_retired4
int32_t st_uctime; //!< st_uctime int32_t st_uctime; //!< st_uctime
int32_t st_retired5; //!< st_retired5 int32_t st_retired5; //!< st_retired5
int32_t st_retired6; //!< st_retired6 int32_t st_retired6; //!< st_retired6
uint32_t st_flags; //!< st_flags uint32_t st_flags; //!< st_flags
uint32_t st_gen; //!< st_gen uint32_t st_gen; //!< st_gen
uint64_t st_spare[4]; //!< st_spare[4] uint64_t st_spare[4]; //!< st_spare[4]
ino_t st_ino; //!< st_ino ino_t st_ino; //!< st_ino
int32_t st_ino_reserved; //!< st_ino_reserved int32_t st_ino_reserved; //!< st_ino_reserved
time_t st_atimeX; //!< st_atime time_t st_atimeX; //!< st_atime
int32_t st_atime_reserved; //!< st_atime_reserved int32_t st_atime_reserved; //!< st_atime_reserved
time_t st_mtimeX; //!< st_mtime time_t st_mtimeX; //!< st_mtime
int32_t st_mtime_reserved; //!< st_mtime_reserved int32_t st_mtime_reserved; //!< st_mtime_reserved
time_t st_ctimeX; //!< st_ctime time_t st_ctimeX; //!< st_ctime
int32_t st_ctime_reserved; //!< st_ctime_reserved int32_t st_ctime_reserved; //!< st_ctime_reserved
uint64_t st_blksize; //!< st_blksize uint64_t st_blksize; //!< st_blksize
uint64_t st_blocks; //!< st_blocks uint64_t st_blocks; //!< st_blocks
}; };
typedef F64_stat tgt_stat; typedef F64_stat tgt_stat;

View file

@ -33,394 +33,394 @@
namespace { namespace {
const char * const char *
standard_strings[SystemCalls<Tru64>::StandardNumber] = { standard_strings[SystemCalls<Tru64>::StandardNumber] = {
"syscall", // 0 "syscall", // 0
"exit", // 1 "exit", // 1
"fork", // 2 "fork", // 2
"read", // 3 "read", // 3
"write", // 4 "write", // 4
"old_open", // 5 "old_open", // 5
"close", // 6 "close", // 6
"wait4", // 7 "wait4", // 7
"old_creat", // 8 "old_creat", // 8
"link", // 9 "link", // 9
"unlink", // 10 "unlink", // 10
"execv", // 11 "execv", // 11
"chdir", // 12 "chdir", // 12
"fchdir", // 13 "fchdir", // 13
"mknod", // 14 "mknod", // 14
"chmod", // 15 "chmod", // 15
"chown", // 16 "chown", // 16
"obreak", // 17 "obreak", // 17
"pre_F64_getfsstat", // 18 "pre_F64_getfsstat", // 18
"lseek", // 19 "lseek", // 19
"getpid", // 20 "getpid", // 20
"mount", // 21 "mount", // 21
"unmount", // 22 "unmount", // 22
"setuid", // 23 "setuid", // 23
"getuid", // 24 "getuid", // 24
"exec_with_loader", // 25 "exec_with_loader", // 25
"ptrace", // 26 "ptrace", // 26
"recvmsg", // 27 "recvmsg", // 27
"sendmsg", // 28 "sendmsg", // 28
"recvfrom", // 29 "recvfrom", // 29
"accept", // 30 "accept", // 30
"getpeername", // 31 "getpeername", // 31
"getsockname", // 32 "getsockname", // 32
"access", // 33 "access", // 33
"chflags", // 34 "chflags", // 34
"fchflags", // 35 "fchflags", // 35
"sync", // 36 "sync", // 36
"kill", // 37 "kill", // 37
"old_stat", // 38 "old_stat", // 38
"setpgid", // 39 "setpgid", // 39
"old_lstat", // 40 "old_lstat", // 40
"dup", // 41 "dup", // 41
"pipe", // 42 "pipe", // 42
"set_program_attributes", // 43 "set_program_attributes", // 43
"profil", // 44 "profil", // 44
"open", // 45 "open", // 45
"obsolete_osigaction", // 46 "obsolete_osigaction", // 46
"getgid", // 47 "getgid", // 47
"sigprocmask", // 48 "sigprocmask", // 48
"getlogin", // 49 "getlogin", // 49
"setlogin", // 50 "setlogin", // 50
"acct", // 51 "acct", // 51
"sigpending", // 52 "sigpending", // 52
"classcntl", // 53 "classcntl", // 53
"ioctl", // 54 "ioctl", // 54
"reboot", // 55 "reboot", // 55
"revoke", // 56 "revoke", // 56
"symlink", // 57 "symlink", // 57
"readlink", // 58 "readlink", // 58
"execve", // 59 "execve", // 59
"umask", // 60 "umask", // 60
"chroot", // 61 "chroot", // 61
"old_fstat", // 62 "old_fstat", // 62
"getpgrp", // 63 "getpgrp", // 63
"getpagesize", // 64 "getpagesize", // 64
"mremap", // 65 "mremap", // 65
"vfork", // 66 "vfork", // 66
"pre_F64_stat", // 67 "pre_F64_stat", // 67
"pre_F64_lstat", // 68 "pre_F64_lstat", // 68
"sbrk", // 69 "sbrk", // 69
"sstk", // 70 "sstk", // 70
"mmap", // 71 "mmap", // 71
"ovadvise", // 72 "ovadvise", // 72
"munmap", // 73 "munmap", // 73
"mprotect", // 74 "mprotect", // 74
"madvise", // 75 "madvise", // 75
"old_vhangup", // 76 "old_vhangup", // 76
"kmodcall", // 77 "kmodcall", // 77
"mincore", // 78 "mincore", // 78
"getgroups", // 79 "getgroups", // 79
"setgroups", // 80 "setgroups", // 80
"old_getpgrp", // 81 "old_getpgrp", // 81
"setpgrp", // 82 "setpgrp", // 82
"setitimer", // 83 "setitimer", // 83
"old_wait", // 84 "old_wait", // 84
"table", // 85 "table", // 85
"getitimer", // 86 "getitimer", // 86
"gethostname", // 87 "gethostname", // 87
"sethostname", // 88 "sethostname", // 88
"getdtablesize", // 89 "getdtablesize", // 89
"dup2", // 90 "dup2", // 90
"pre_F64_fstat", // 91 "pre_F64_fstat", // 91
"fcntl", // 92 "fcntl", // 92
"select", // 93 "select", // 93
"poll", // 94 "poll", // 94
"fsync", // 95 "fsync", // 95
"setpriority", // 96 "setpriority", // 96
"socket", // 97 "socket", // 97
"connect", // 98 "connect", // 98
"old_accept", // 99 "old_accept", // 99
"getpriority", // 100 "getpriority", // 100
"old_send", // 101 "old_send", // 101
"old_recv", // 102 "old_recv", // 102
"sigreturn", // 103 "sigreturn", // 103
"bind", // 104 "bind", // 104
"setsockopt", // 105 "setsockopt", // 105
"listen", // 106 "listen", // 106
"plock", // 107 "plock", // 107
"old_sigvec", // 108 "old_sigvec", // 108
"old_sigblock", // 109 "old_sigblock", // 109
"old_sigsetmask", // 110 "old_sigsetmask", // 110
"sigsuspend", // 111 "sigsuspend", // 111
"sigstack", // 112 "sigstack", // 112
"old_recvmsg", // 113 "old_recvmsg", // 113
"old_sendmsg", // 114 "old_sendmsg", // 114
"obsolete_vtrcae", // 115 "obsolete_vtrcae", // 115
"gettimeofday", // 116 "gettimeofday", // 116
"getrusage", // 117 "getrusage", // 117
"getsockopt", // 118 "getsockopt", // 118
"numa_syscalls", // 119 "numa_syscalls", // 119
"readv", // 120 "readv", // 120
"writev", // 121 "writev", // 121
"settimeofday", // 122 "settimeofday", // 122
"fchown", // 123 "fchown", // 123
"fchmod", // 124 "fchmod", // 124
"old_recvfrom", // 125 "old_recvfrom", // 125
"setreuid", // 126 "setreuid", // 126
"setregid", // 127 "setregid", // 127
"rename", // 128 "rename", // 128
"truncate", // 129 "truncate", // 129
"ftruncate", // 130 "ftruncate", // 130
"flock", // 131 "flock", // 131
"setgid", // 132 "setgid", // 132
"sendto", // 133 "sendto", // 133
"shutdown", // 134 "shutdown", // 134
"socketpair", // 135 "socketpair", // 135
"mkdir", // 136 "mkdir", // 136
"rmdir", // 137 "rmdir", // 137
"utimes", // 138 "utimes", // 138
"obsolete_42_sigreturn", // 139 "obsolete_42_sigreturn", // 139
"adjtime", // 140 "adjtime", // 140
"old_getpeername", // 141 "old_getpeername", // 141
"gethostid", // 142 "gethostid", // 142
"sethostid", // 143 "sethostid", // 143
"getrlimit", // 144 "getrlimit", // 144
"setrlimit", // 145 "setrlimit", // 145
"old_killpg", // 146 "old_killpg", // 146
"setsid", // 147 "setsid", // 147
"quotactl", // 148 "quotactl", // 148
"oldquota", // 149 "oldquota", // 149
"old_getsockname", // 150 "old_getsockname", // 150
"pread", // 151 "pread", // 151
"pwrite", // 152 "pwrite", // 152
"pid_block", // 153 "pid_block", // 153
"pid_unblock", // 154 "pid_unblock", // 154
"signal_urti", // 155 "signal_urti", // 155
"sigaction", // 156 "sigaction", // 156
"sigwaitprim", // 157 "sigwaitprim", // 157
"nfssvc", // 158 "nfssvc", // 158
"getdirentries", // 159 "getdirentries", // 159
"pre_F64_statfs", // 160 "pre_F64_statfs", // 160
"pre_F64_fstatfs", // 161 "pre_F64_fstatfs", // 161
0, // 162 0, // 162
"async_daemon", // 163 "async_daemon", // 163
"getfh", // 164 "getfh", // 164
"getdomainname", // 165 "getdomainname", // 165
"setdomainname", // 166 "setdomainname", // 166
0, // 167 0, // 167
0, // 168 0, // 168
"exportfs", // 169 "exportfs", // 169
0, // 170 0, // 170
0, // 171 0, // 171
0, // 172 0, // 172
0, // 173 0, // 173
0, // 174 0, // 174
0, // 175 0, // 175
0, // 176 0, // 176
0, // 177 0, // 177
0, // 178 0, // 178
0, // 179 0, // 179
0, // 180 0, // 180
"alt_plock", // 181 "alt_plock", // 181
0, // 182 0, // 182
0, // 183 0, // 183
"getmnt", // 184 "getmnt", // 184
0, // 185 0, // 185
0, // 186 0, // 186
"alt_sigpending", // 187 "alt_sigpending", // 187
"alt_setsid", // 188 "alt_setsid", // 188
0, // 189 0, // 189
0, // 190 0, // 190
0, // 191 0, // 191
0, // 192 0, // 192
0, // 193 0, // 193
0, // 194 0, // 194
0, // 195 0, // 195
0, // 196 0, // 196
0, // 197 0, // 197
0, // 198 0, // 198
"swapon", // 199 "swapon", // 199
"msgctl", // 200 "msgctl", // 200
"msgget", // 201 "msgget", // 201
"msgrcv", // 202 "msgrcv", // 202
"msgsnd", // 203 "msgsnd", // 203
"semctl", // 204 "semctl", // 204
"semget", // 205 "semget", // 205
"semop", // 206 "semop", // 206
"uname", // 207 "uname", // 207
"lchown", // 208 "lchown", // 208
"shmat", // 209 "shmat", // 209
"shmctl", // 210 "shmctl", // 210
"shmdt", // 211 "shmdt", // 211
"shmget", // 212 "shmget", // 212
"mvalid", // 213 "mvalid", // 213
"getaddressconf", // 214 "getaddressconf", // 214
"msleep", // 215 "msleep", // 215
"mwakeup", // 216 "mwakeup", // 216
"msync", // 217 "msync", // 217
"signal", // 218 "signal", // 218
"utc_gettime", // 219 "utc_gettime", // 219
"utc_adjtime", // 220 "utc_adjtime", // 220
0, // 221 0, // 221
"security", // 222 "security", // 222
"kloadcall", // 223 "kloadcall", // 223
"stat", // 224 "stat", // 224
"lstat", // 225 "lstat", // 225
"fstat", // 226 "fstat", // 226
"statfs", // 227 "statfs", // 227
"fstatfs", // 228 "fstatfs", // 228
"getfsstat", // 229 "getfsstat", // 229
"gettimeofday64", // 230 "gettimeofday64", // 230
"settimeofday64", // 231 "settimeofday64", // 231
0, // 232 0, // 232
"getpgid", // 233 "getpgid", // 233
"getsid", // 234 "getsid", // 234
"sigaltstack", // 235 "sigaltstack", // 235
"waitid", // 236 "waitid", // 236
"priocntlset", // 237 "priocntlset", // 237
"sigsendset", // 238 "sigsendset", // 238
"set_speculative", // 239 "set_speculative", // 239
"msfs_syscall", // 240 "msfs_syscall", // 240
"sysinfo", // 241 "sysinfo", // 241
"uadmin", // 242 "uadmin", // 242
"fuser", // 243 "fuser", // 243
"proplist_syscall", // 244 "proplist_syscall", // 244
"ntp_adjtime", // 245 "ntp_adjtime", // 245
"ntp_gettime", // 246 "ntp_gettime", // 246
"pathconf", // 247 "pathconf", // 247
"fpathconf", // 248 "fpathconf", // 248
"sync2", // 249 "sync2", // 249
"uswitch", // 250 "uswitch", // 250
"usleep_thread", // 251 "usleep_thread", // 251
"audcntl", // 252 "audcntl", // 252
"audgen", // 253 "audgen", // 253
"sysfs", // 254 "sysfs", // 254
"subsys_info", // 255 "subsys_info", // 255
"getsysinfo", // 256 "getsysinfo", // 256
"setsysinfo", // 257 "setsysinfo", // 257
"afs_syscall", // 258 "afs_syscall", // 258
"swapctl", // 259 "swapctl", // 259
"memcntl", // 260 "memcntl", // 260
"fdatasync", // 261 "fdatasync", // 261
"oflock", // 262 "oflock", // 262
"_F64_readv", // 263 "_F64_readv", // 263
"_F64_writev", // 264 "_F64_writev", // 264
"cdslxlate", // 265 "cdslxlate", // 265
"sendfile", // 266 "sendfile", // 266
}; };
const char * const char *
mach_strings[SystemCalls<Tru64>::MachNumber] = { mach_strings[SystemCalls<Tru64>::MachNumber] = {
0, // 0 0, // 0
0, // 1 0, // 1
0, // 2 0, // 2
0, // 3 0, // 3
0, // 4 0, // 4
0, // 5 0, // 5
0, // 6 0, // 6
0, // 7 0, // 7
0, // 8 0, // 8
0, // 9 0, // 9
"task_self", // 10 "task_self", // 10
"thread_reply", // 11 "thread_reply", // 11
"task_notify", // 12 "task_notify", // 12
"thread_self", // 13 "thread_self", // 13
0, // 14 0, // 14
0, // 15 0, // 15
0, // 16 0, // 16
0, // 17 0, // 17
0, // 18 0, // 18
0, // 19 0, // 19
"msg_send_trap", // 20 "msg_send_trap", // 20
"msg_receive_trap", // 21 "msg_receive_trap", // 21
"msg_rpc_trap", // 22 "msg_rpc_trap", // 22
0, // 23 0, // 23
"nxm_block", // 24 "nxm_block", // 24
"nxm_unblock", // 25 "nxm_unblock", // 25
0, // 26 0, // 26
0, // 27 0, // 27
0, // 28 0, // 28
"nxm_thread_destroy", // 29 "nxm_thread_destroy", // 29
"lw_wire", // 30 "lw_wire", // 30
"lw_unwire", // 31 "lw_unwire", // 31
"nxm_thread_create", // 32 "nxm_thread_create", // 32
"nxm_task_init", // 33 "nxm_task_init", // 33
0, // 34 0, // 34
"nxm_idle", // 35 "nxm_idle", // 35
"nxm_wakeup_idle", // 36 "nxm_wakeup_idle", // 36
"nxm_set_pthid", // 37 "nxm_set_pthid", // 37
"nxm_thread_kill", // 38 "nxm_thread_kill", // 38
"nxm_thread_block", // 39 "nxm_thread_block", // 39
"nxm_thread_wakeup", // 40 "nxm_thread_wakeup", // 40
"init_process", // 41 "init_process", // 41
"nxm_get_binding", // 42 "nxm_get_binding", // 42
"map_fd", // 43 "map_fd", // 43
"nxm_resched", // 44 "nxm_resched", // 44
"nxm_set_cancel", // 45 "nxm_set_cancel", // 45
"nxm_set_binding", // 46 "nxm_set_binding", // 46
"stack_create", // 47 "stack_create", // 47
"nxm_get_state", // 48 "nxm_get_state", // 48
"nxm_thread_suspend", // 49 "nxm_thread_suspend", // 49
"nxm_thread_resume", // 50 "nxm_thread_resume", // 50
"nxm_signal_check", // 51 "nxm_signal_check", // 51
"htg_unix_syscall", // 52 "htg_unix_syscall", // 52
0, // 53 0, // 53
0, // 54 0, // 54
"host_self", // 55 "host_self", // 55
"host_priv_self", // 56 "host_priv_self", // 56
0, // 57 0, // 57
0, // 58 0, // 58
"swtch_pri", // 59 "swtch_pri", // 59
"swtch", // 60 "swtch", // 60
"thread_switch", // 61 "thread_switch", // 61
"semop_fast", // 62 "semop_fast", // 62
"nxm_pshared_init", // 63 "nxm_pshared_init", // 63
"nxm_pshared_block", // 64 "nxm_pshared_block", // 64
"nxm_pshared_unblock", // 65 "nxm_pshared_unblock", // 65
"nxm_pshared_destroy", // 66 "nxm_pshared_destroy", // 66
"nxm_swtch_pri", // 67 "nxm_swtch_pri", // 67
"lw_syscall", // 68 "lw_syscall", // 68
0, // 69 0, // 69
"mach_sctimes_0", // 70 "mach_sctimes_0", // 70
"mach_sctimes_1", // 71 "mach_sctimes_1", // 71
"mach_sctimes_2", // 72 "mach_sctimes_2", // 72
"mach_sctimes_3", // 73 "mach_sctimes_3", // 73
"mach_sctimes_4", // 74 "mach_sctimes_4", // 74
"mach_sctimes_5", // 75 "mach_sctimes_5", // 75
"mach_sctimes_6", // 76 "mach_sctimes_6", // 76
"mach_sctimes_7", // 77 "mach_sctimes_7", // 77
"mach_sctimes_8", // 78 "mach_sctimes_8", // 78
"mach_sctimes_9", // 79 "mach_sctimes_9", // 79
"mach_sctimes_10", // 80 "mach_sctimes_10", // 80
"mach_sctimes_11", // 81 "mach_sctimes_11", // 81
"mach_sctimes_port_alloc_dealloc", // 82 "mach_sctimes_port_alloc_dealloc", // 82
}; };
} }

20
src/mem/cache/blk.hh vendored
View file

@ -38,8 +38,8 @@
#include <list> #include <list>
#include "base/printable.hh" #include "base/printable.hh"
#include "sim/core.hh" // for Tick #include "sim/core.hh" // for Tick
#include "arch/isa_traits.hh" // for Addr #include "arch/isa_traits.hh" // for Addr
#include "mem/packet.hh" #include "mem/packet.hh"
#include "mem/request.hh" #include "mem/request.hh"
@ -48,17 +48,17 @@
*/ */
enum CacheBlkStatusBits { enum CacheBlkStatusBits {
/** valid, readable */ /** valid, readable */
BlkValid = 0x01, BlkValid = 0x01,
/** write permission */ /** write permission */
BlkWritable = 0x02, BlkWritable = 0x02,
/** read permission (yes, block can be valid but not readable) */ /** read permission (yes, block can be valid but not readable) */
BlkReadable = 0x04, BlkReadable = 0x04,
/** dirty (modified) */ /** dirty (modified) */
BlkDirty = 0x08, BlkDirty = 0x08,
/** block was referenced */ /** block was referenced */
BlkReferenced = 0x10, BlkReferenced = 0x10,
/** block was a hardware prefetch yet unaccessed*/ /** block was a hardware prefetch yet unaccessed*/
BlkHWPrefetched = 0x20 BlkHWPrefetched = 0x20
}; };
/** /**
@ -108,8 +108,8 @@ class CacheBlk
*/ */
class Lock { class Lock {
public: public:
int cpuNum; // locking CPU int cpuNum; // locking CPU
int threadNum; // locking thread ID within CPU int threadNum; // locking thread ID within CPU
// check for matching execution context // check for matching execution context
bool matchesContext(Request *req) bool matchesContext(Request *req)

Some files were not shown because too many files have changed in this diff Show more