mdvb, mdvh, mdvw, mdvd, mdpb, mdph, mdpw, mdpd subcommands

The mdvb, mdvh, mdvw, and mdvd subcommands can be used to access memory in translated mode, using an effective address already mapped. On a 64-bit machine, double words are accessed by the mdvd subcommand in a single store instruction. The mdpb, mdph, mdpw, and mdpd subcommands access memory in translated mode, using a physical address that will be mapped. On a 64-bit machine, correctly-aligned double words are accessed by the mdpd subcommand in a single store instruction. The DBAT interface is used to translate this address in cache-inhibited mode.

Note: These subcommands are only available within the KDB kernel debugger. They are not included in the kdb command.

Format

mdvb effectiveaddress

mdvh effectiveaddress

mdvw effectiveaddress

mdvd effectiveaddress

mdpb physicaladdress

mdph physicaladdress

mdpw physicaladdress

mdpd physicaladdress

Parameters

Item Description
effectiveaddress Specifies the virtual (effective) address of the memory to modify. It can be symbols, hexadecimal values, or hexadecimal expressions.
physicaladdress Specifies the real (physical) address of the memory to modify. It can be symbols, hexadecimal values, or hexadecimal expressions.

These subcommands are available to write in I/O space memory.

To avoid bad effects, memory is not read before, only the specified write is performed with translation enabled. Access can be in bytes, half words, words or double words.

Note: The subcommands using effective addresses assume that mapping to real addresses is currently valid. No check is done by KDB kernel debugger. The subcommands using real addresses allow KDB kernel debugger to do the mapping (attach and detach).

Other

The aliases are:

  • mdvbmiob
  • mdvhmioh
  • mdvwmiow
  • mdvdmiod

There are no aliases for the following:

  • mdpb
  • mdph
  • mdpw
  • mdpd

Examples

The following is an example on a PCI machine:

KDB(0)> mdpw 80000cf8 //change one word at physical address 80000cf8
   80000CF8: ???????? = 84000080
   80000CFC: ???????? = . //Write is done in relocated mode, cache inhibited
   KDB(0)> ddpw 80000cfc //print one word at physical address 80000cfc
   80000CFC: D2000000
   KDB(0)> mdpw 80000cfc //change one word at physical address 80000cfc
   80000CFC: ???????? = d0000000
   80000D00: ???????? = .
   KDB(0)> mdpw 80000cf8 //change one word at physical address 80000cf8
   80000CF8: ???????? = 8c000080
   80000CFC: ???????? = .
   KDB(0)> ddpw 80000cfc //print one word at physical address 80000cfc
   80000CFC: D2000080