singrdk/base/Drivers/Network/Tulip/TulipDebug.sg

98 lines
3.2 KiB
Plaintext
Raw Normal View History

2008-03-05 09:52:00 -05:00
///////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: TulipDebug.cs
//
// Simple Driver for DEC 21140a PCI Ethernet card. (as used in Virtual PC)
//
// Useful reference URLs:
// http://www.intel.com/design/network/manuals/21140ahm.pdf
using Microsoft.Singularity.Io;
using Microsoft.Singularity.V1.Services;
using System;
using System.Diagnostics;
namespace Microsoft.Singularity.Drivers.Network.Tulip
{
class TulipDebug
{
[Conditional("DEBUG_TULIP")]
internal static void
Print(string! format)
{
DebugStub.Print(format);
}
[Conditional("DEBUG_TULIP")]
internal static void
Print(string! format, __arglist)
{
DebugStub.Print(format, new ArgIterator(__arglist));
}
[Conditional("DEBUG_TULIP")]
private static void
PrintByteRow(byte[]! data, int start, int end)
{
Print("{0:x8} ", __arglist(start));
for (int j = start; j < end; j++) {
Print("{0:x2} ", __arglist(data[j]));
}
Print("\n");
}
[Conditional("DEBUG_TULIP")]
internal static void
PrintBytes(string! title, byte[]! data, int start, int length)
{
Print("{0}\n", __arglist(title));
const int bpl = 16;
int m = start + length - (length % bpl);
int n = start + length;
for (int i = start; i < m; i += bpl) {
PrintByteRow(data, i, i + bpl);
}
if (n != m) {
PrintByteRow(data, m, n);
}
}
[Conditional("DEBUG_TULIP")]
internal static void
PrintBytes(string! title, byte[]! data)
{
PrintBytes(title, data, 0, data.Length);
}
[Conditional("DEBUG_TULIP")]
internal static void
PrintCsrs(IoPort! csr0, IoPort! csr1, IoPort! csr2, IoPort! csr3,
IoPort! csr4, IoPort! csr5, IoPort! csr6, IoPort! csr7,
IoPort! csr8, IoPort! csr9, IoPort! csr10, IoPort! csr11,
IoPort! csr12, IoPort! csr15)
{
Print("CSR0 {0:x8} CSR3 {1:x8} CSR4 {2:x8}\n",
__arglist(csr0.Read32(), csr3.Read32(), csr4.Read32()));
uint status = csr5.Read32();
Print("CSR5 {0:x} Bus Error {0:x} TX {1:x} RX {2:x}\n",
__arglist(status,
(status >> CSR5.EB_ROLL) & CSR5.EB_MASK,
(status >> CSR5.TS_ROLL) & CSR5.TS_MASK,
(status >> CSR5.RS_ROLL) & CSR5.RS_MASK
));
Print("CSR6 {0:x8} CSR7 {1:x8} CSR8 {2:x8}\n",
__arglist(csr6.Read32(), csr7.Read32(), csr8.Read32()));
Print("CSR11 {0:x8} CSR12 {1:x8} CSR15 {2:x8}\n",
__arglist(csr11.Read32(), csr12.Read32(), csr15.Read32()));
}
}
}