	.macro csr val
	csrr a0,\val
	.endm

	# Supported the current priv spec 1.11.
	csr ustatus
	csr uie
	csr utvec

	csr uscratch
	csr uepc
	csr ucause
	csr utval		# Added in 1.10
	csr uip

	csr cycle
	csr time
	csr instret
	csr hpmcounter3
	csr hpmcounter4
	csr hpmcounter5
	csr hpmcounter6
	csr hpmcounter7
	csr hpmcounter8
	csr hpmcounter9
	csr hpmcounter10
	csr hpmcounter11
	csr hpmcounter12
	csr hpmcounter13
	csr hpmcounter14
	csr hpmcounter15
	csr hpmcounter16
	csr hpmcounter17
	csr hpmcounter18
	csr hpmcounter19
	csr hpmcounter20
	csr hpmcounter21
	csr hpmcounter22
	csr hpmcounter23
	csr hpmcounter24
	csr hpmcounter25
	csr hpmcounter26
	csr hpmcounter27
	csr hpmcounter28
	csr hpmcounter29
	csr hpmcounter30
	csr hpmcounter31
	csr cycleh
	csr timeh
	csr instreth
	csr hpmcounter3h
	csr hpmcounter4h
	csr hpmcounter5h
	csr hpmcounter6h
	csr hpmcounter7h
	csr hpmcounter8h
	csr hpmcounter9h
	csr hpmcounter10h
	csr hpmcounter11h
	csr hpmcounter12h
	csr hpmcounter13h
	csr hpmcounter14h
	csr hpmcounter15h
	csr hpmcounter16h
	csr hpmcounter17h
	csr hpmcounter18h
	csr hpmcounter19h
	csr hpmcounter20h
	csr hpmcounter21h
	csr hpmcounter22h
	csr hpmcounter23h
	csr hpmcounter24h
	csr hpmcounter25h
	csr hpmcounter26h
	csr hpmcounter27h
	csr hpmcounter28h
	csr hpmcounter29h
	csr hpmcounter30h
	csr hpmcounter31h

	csr sstatus
	csr sedeleg
	csr sideleg
	csr sie
	csr stvec
	csr scounteren		# Added in 1.10

	csr sscratch
	csr sepc
	csr scause
	csr stval		# Added in 1.10
	csr sip

	csr satp		# Added in 1.10

	csr mvendorid
	csr marchid
	csr mimpid
	csr mhartid

	csr mstatus
	csr misa		# 0xf10 in 1.9, but changed to 0x301 since 1.9.1.
	csr medeleg
	csr mideleg
	csr mie
	csr mtvec
	csr mcounteren		# Added in 1.10

	csr mscratch
	csr mepc
	csr mcause
	csr mtval		# Added in 1.10
	csr mip

	csr pmpcfg0		# Added in 1.10
	csr pmpcfg1		# Added in 1.10
	csr pmpcfg2		# Added in 1.10
	csr pmpcfg3		# Added in 1.10
	csr pmpaddr0		# Added in 1.10
	csr pmpaddr1		# Added in 1.10
	csr pmpaddr2		# Added in 1.10
	csr pmpaddr3		# Added in 1.10
	csr pmpaddr4		# Added in 1.10
	csr pmpaddr5		# Added in 1.10
	csr pmpaddr6		# Added in 1.10
	csr pmpaddr7		# Added in 1.10
	csr pmpaddr8		# Added in 1.10
	csr pmpaddr9		# Added in 1.10
	csr pmpaddr10		# Added in 1.10
	csr pmpaddr11		# Added in 1.10
	csr pmpaddr12		# Added in 1.10
	csr pmpaddr13		# Added in 1.10
	csr pmpaddr14		# Added in 1.10
	csr pmpaddr15		# Added in 1.10

	csr mcycle
	csr minstret
	csr mhpmcounter3
	csr mhpmcounter4
	csr mhpmcounter5
	csr mhpmcounter6
	csr mhpmcounter7
	csr mhpmcounter8
	csr mhpmcounter9
	csr mhpmcounter10
	csr mhpmcounter11
	csr mhpmcounter12
	csr mhpmcounter13
	csr mhpmcounter14
	csr mhpmcounter15
	csr mhpmcounter16
	csr mhpmcounter17
	csr mhpmcounter18
	csr mhpmcounter19
	csr mhpmcounter20
	csr mhpmcounter21
	csr mhpmcounter22
	csr mhpmcounter23
	csr mhpmcounter24
	csr mhpmcounter25
	csr mhpmcounter26
	csr mhpmcounter27
	csr mhpmcounter28
	csr mhpmcounter29
	csr mhpmcounter30
	csr mhpmcounter31
	csr mcycleh
	csr minstreth
	csr mhpmcounter3h
	csr mhpmcounter4h
	csr mhpmcounter5h
	csr mhpmcounter6h
	csr mhpmcounter7h
	csr mhpmcounter8h
	csr mhpmcounter9h
	csr mhpmcounter10h
	csr mhpmcounter11h
	csr mhpmcounter12h
	csr mhpmcounter13h
	csr mhpmcounter14h
	csr mhpmcounter15h
	csr mhpmcounter16h
	csr mhpmcounter17h
	csr mhpmcounter18h
	csr mhpmcounter19h
	csr mhpmcounter20h
	csr mhpmcounter21h
	csr mhpmcounter22h
	csr mhpmcounter23h
	csr mhpmcounter24h
	csr mhpmcounter25h
	csr mhpmcounter26h
	csr mhpmcounter27h
	csr mhpmcounter28h
	csr mhpmcounter29h
	csr mhpmcounter30h
	csr mhpmcounter31h

	csr mcountinhibit	# Added in 1.11
	csr mhpmevent3
	csr mhpmevent4
	csr mhpmevent5
	csr mhpmevent6
	csr mhpmevent7
	csr mhpmevent8
	csr mhpmevent9
	csr mhpmevent10
	csr mhpmevent11
	csr mhpmevent12
	csr mhpmevent13
	csr mhpmevent14
	csr mhpmevent15
	csr mhpmevent16
	csr mhpmevent17
	csr mhpmevent18
	csr mhpmevent19
	csr mhpmevent20
	csr mhpmevent21
	csr mhpmevent22
	csr mhpmevent23
	csr mhpmevent24
	csr mhpmevent25
	csr mhpmevent26
	csr mhpmevent27
	csr mhpmevent28
	csr mhpmevent29
	csr mhpmevent30
	csr mhpmevent31

	# Supported in previous priv spec, but dropped now.
	csr ubadaddr		# 0x043 in 1.9.1, but the value is utval since 1.10
	csr sbadaddr		# 0x143 in 1.9.1, but the value is stval since 1.10
	csr sptbr		# 0x180 in 1.9.1, but the value is satp since 1.10
	csr mbadaddr		# 0x343 in 1.9.1, but the value is mtval since 1.10
	csr mucounteren		# 0x320 in 1.9.1, dropped in 1.10, but the value is mcountinhibit since 1.11

	csr hstatus		# 0x200, dropped in 1.10
	csr hedeleg		# 0x202, dropped in 1.10
	csr hideleg		# 0x203, dropped in 1.10
	csr hie			# 0x204, dropped in 1.10
	csr htvec		# 0x205, dropped in 1.10
	csr hscratch		# 0x240, dropped in 1.10
	csr hepc		# 0x241, dropped in 1.10
	csr hcause		# 0x242, dropped in 1.10
	csr hbadaddr		# 0x243, dropped in 1.10
	csr hip			# 0x244, dropped in 1.10
	csr mbase		# 0x380, dropped in 1.10
	csr mbound		# 0x381, dropped in 1.10
	csr mibase		# 0x382, dropped in 1.10
	csr mibound		# 0x383, dropped in 1.10
	csr mdbase		# 0x384, dropped in 1.10
	csr mdbound		# 0x385, dropped in 1.10
	csr mscounteren		# 0x321, dropped in 1.10
	csr mhcounteren		# 0x322, dropped in 1.10

	# Unprivileged CSR which are not controlled by privilege spec.

	# Float
	csr fflags
	csr frm
	csr fcsr

	# Core debug
	csr dcsr
	csr dpc
	csr dscratch0
	csr dscratch1
	csr dscratch		# 0x7b2, alias to dscratch0

	# Trigger debug
	csr tselect
	csr tdata1
	csr tdata2
	csr tdata3
	csr tinfo
	csr tcontrol
	csr mcontext
	csr scontext
	csr mcontrol		# 0x7a1, alias to tdata1
	csr icount		# 0x7a1, alias to tdata1
	csr itrigger		# 0x7a1, alias to tdata1
	csr etrigger		# 0x7a1, alias to tdata1
	csr textra32		# 0x7a3, alias to tdata3
	csr textra64		# 0x7a3, alias to tdata3
