#
# AMD Athlon(tm)64 and AMD Opteron(tm) processor unit masks
#
# Copyright OProfile authors
# Copyright (c) Advanced Micro Devices, 2006-2008
# Contributed by Ray Bryant <raybry@amd.com>, and others.
#
# Source: BIOS and Kernel Developer's Guide for AMD NPT Family 0Fh Processors,
#         Publication# 32559, Revision 3.08, July 2007
#
# This file was last updated on 10 January 2008:
#
#    Unit mask (writtentosystem) was added for the
#    QUADWORD_WRITE_TRANSFERS event.
#
name:zero type:mandatory default:0x0
	0x0 No unit mask
name:moesi type:bitmask default:0x1f
	0x01 (I)nvalid cache state
	0x02 (S)hared cache state
	0x04 (E)xclusive cache state
	0x08 (O)wned cache state
	0x10 (M)odified cache state
	0x1f All cache states
name:moess type:bitmask default:0x1e
	0x01 refill from system
	0x02 (S)hared cache state from L2
	0x04 (E)xclusive cache state from L2
	0x08 (O)wned cache state from L2
	0x10 (M)odified cache state from L2
	0x1e All cache states except Invalid
name:fpu_ops type:bitmask default:0x3f
	0x01 Add pipe ops
	0x02 Multiply pipe
	0x04 Store pipe ops
	0x08 Add pipe load ops
	0x10 Multiply pipe load ops
	0x20 Store pipe load ops
name:segregload type:bitmask default:0x7f
	0x01 ES register
	0x02 CS register
	0x04 SS register
	0x08 DS register
	0x10 FS register
	0x20 GS register
	0x40 HS register
name:ecc type:bitmask default:0x03
	0x01 Scrubber error
	0x02 Piggyback scrubber errors
name:prefetch type:bitmask default:0x07
	0x01 Load
	0x02 Store
	0x04 NTA
name:fpu_instr type:bitmask default:0x0f
	0x01 x87 instructions
	0x02 Combined MMX & 3DNow instructions
	0x04 Combined packed SSE & SSE2 instructions
	0x08 Combined packed scalar SSE & SSE2 instructions
name:fpu_fastpath type:bitmask default:0x07
	0x01 With low op in position 0
	0x02 With low op in position 1
	0x04 With low op in position 2
name:fpu_exceptions type:bitmask default:0x0f
	0x01 x87 reclass microfaults
	0x02 SSE retype microfaults
	0x04 SSE reclass microfaults
	0x08 SSE and x87 microtraps
name:page_access type:bitmask default:0x07
	0x01 Page hit
	0x02 Page miss
	0x04 Page conflict
name:turnaround type:bitmask default:0x07
	0x01 DIMM (chip select) turnaround
	0x02 Read to write turnaround
	0x04 Write to read turnaround
name:saturation type:bitmask default:0x0f
	0x01 Memory controller high priority bypass
	0x02 Memory controller low priority bypass
	0x04 DRAM controller interface bypass
	0x08 DRAM controller queue bypass
name:sizecmds type:bitmask default:0x7f
	0x01 Non-posted write byte
	0x02 Non-posted write dword
	0x04 Posted write byte
	0x08 Posted write dword
	0x10 Read byte (4 bytes)
	0x20 Read dword (1-16 dwords)
	0x40 Read-modify-write
name:probe type:bitmask default:0x0f
	0x01 Probe miss
	0x02 Probe hit clean
	0x04 Probe hit dirty without memory cancel
	0x08 Probe hit dirty with memory cancel
	0x10 Upstream display refresh reads
	0x20 Upstream non-display refresh reads
	0x40 Upstream writes (RevD and later)
name:ht type:bitmask default:0x7
	0x01 Command sent
	0x02 Data sent
	0x04 Buffer release sent
	0x08 NOP sent
name:l2_internal type:bitmask default:0x1f
	0x01 IC fill
	0x02 DC fill
	0x04 TLB fill (page table walk)
	0x08 Tag snoop request
	0x10 Cancelled request
name:l2_req_miss type:bitmask default:0x07
	0x01 IC fill
	0x02 DC fill
	0x04 TLB page table walk
name:l2_fill type:bitmask default:0x03
	0x01 L2 fills (victims from L1 caches, TLB page table walks and data prefetches)
	0x02 L2 writebacks to system
name:gart type:bitmask default:0x07
	0x01 GART aperture hit on access from CPU
	0x02 GART aperture hit on access from I/O
	0x04 GART miss
name:sizedblocks type:bitmask default:0x3c
	0x04 32-byte Sized Writes (RevD and later)
	0x08 64-byte Sized Writes (RevD and later)
	0x10 32-byte Sized Reads (RevD and later)
	0x20 64-byte Sized Reads (RevD and later)
name:cpiorequests type:bitmask default:0xa2
	0xa1 Requests Local I/O to Local I/O
	0xa2 Requests Local I/O to Local Memory
	0xa3 Requests Local I/O to Local (I/O or Mem) 
	0xa4 Requests Local CPU to Local I/O
	0xa5 Requests Local (CPU or I/O) to Local I/O
	0xa8 Requests Local CPU to Local Memory
	0xaa Requests Local (CPU or I/O) to Local Memory
	0xac Requests Local CPU to Local (I/O or Mem)
	0xaf Requests Local (CPU or I/O) to Local (I/O or Mem)
	0x91 Requests Local I/O to Remote I/O
	0x92 Requests Local I/O to Remote Memory
	0x93 Requests Local I/O to Remote (I/O or Mem)
	0x94 Requests Local CPU to Remote I/O
	0x95 Requests Local (CPU or I/O) to Remote I/O
	0x98 Requests Local CPU to Remote Memory
	0x9a Requests Local (CPU or I/O) to Remote Memory
	0x9c Requests Local CPU to Remote (I/O or Mem)
	0x9f Requests Local (CPU or I/O) to Remote (I/O or Mem)
	0xb1 Requests Local I/O to Any I/O
	0xb2 Requests Local I/O to Any Memory
	0xb3 Requests Local I/O to Any (I/O or Mem)
	0xb4 Requests Local CPU to Any I/O
	0xb5 Requests Local (CPU or I/O) to Any I/O
	0xb8 Requests Local CPU to Any Memory
	0xba Requests Local (CPU or I/O) to Any Memory
	0xbc Requests Local CPU to Any (I/O or Mem)
	0xbf Requests Local (CPU or I/O) to Any (I/O or Mem)
	0x61 Requests Remote I/O to Local I/O
	0x64 Requests Remote CPU to Local I/O
	0x65 Requests Remote (CPU or I/O) to Local I/O
name:cacheblock type:bitmask default:0x3d
	0x01 Victim Block (Writeback)
	0x04 Read Block (Dcache load miss refill)
	0x08 Read Block Shared (Icache refill)
	0x10 Read Block Modified (Dcache store miss refill)
	0x20 Change to Dirty (first store to clean block already in cache)
name:dataprefetch type:bitmask default:0x03
	0x01 Cancelled prefetches
	0x02 Prefetch attempts
name:memreqtype type:bitmask default:0x83
	0x01 Requests to non-cacheable (UC) memory
	0x02 Requests to write-combining (WC) memory or WC buffer flushes to WB memory
	0x80 Streaming store (SS) requests
name:systemreadresponse type:bitmask default:0x7
	0x01 Exclusive
	0x02 Modified
	0x04 Shared
name:writtentosystem type:bitmask default:0x1
	0x01 Quadword write transfer
# BKDG 3.28 does not include unit_mask of 0x01 for "accesses by Locked instructions"
name:dcachemisslocked type:bitmask default:0x02
	0x02 Data cache misses by locked instructions
name:locked_ops type:bitmask default:0x04
	0x01 The number of locked instructions executed
	0x02 The number of cycles spent in speculative phase
	0x04 The number of cycles spent in non-speculative phase (including cache miss penalty)
name:thermalecc type:bitmask default:0x80
	0x01 Number of clocks CPU is active when HTC is active (RevF)
	0x02 Number of clocks CPU clock is inactive when HTC is active (RevF)
	0x04 Number of clocks when die temperature is higher than the software high temperature threshold (RevF)
	0x08 Number of clocks when high temperature threshold was exceeded (RevF)
	0x80 Number of correctable and uncorrectable DRAM ECC errors (RevE)
