Restriction 40: scrubbing a single-bit error – Compaq 21264 User Manual

Page 318

Advertising
background image

D–20

PALcode Restrictions and Guidelines

Alpha 21264/EV67 Hardware Reference Manual

Restriction 40: Scrubbing a Single-Bit Error

hw_mtpr r31, EV6__DTB_IA

; (7,1L) flush dtb

lda r20, ^x3301(r31)

; set WE, RE

bis r31, r31, r31

bis r31, r31, r31

hw_mtpr r31, <EV6__MM_STAT ! ^x80>

; wait for retire

srl r4, #13, r6

; shift byte offset

sll r6, #EV6__DTB_PTE0__PFN__S, r6

; shift into position

bis r6, r20, r6

; produce pte

hw_mtpr r4, EV6__DTB_TAG0

; (2&6,0L) write tag0

hw_mtpr r4, EV6__DTB_TAG1

; (1&5,1L) write tag1

hw_mtpr r6, EV6__DTB_PTE0

; (0&4,0L) write pte0

hw_mtpr r6, EV6__DTB_PTE1

; (3&7,1L) write pte1

mb

; quiet before we start

bis r31, r31, r31

bis r31, r31, r31

bis r31, r31, r31

ldq r6, ^x00(r4)

; re-read the bad block QW #0

ldq r6, ^x08(r4)

; re-read the bad block QW #1

ldq r6, ^x10(r4)

; re-read the bad block QW #2

ldq r6, ^x18(r4)

; re-read the bad block QW #3

ldq r6, ^x20(r4)

; re-read the bad block QW #4

ldq r6, ^x28(r4)

; re-read the bad block QW #5

ldq r6, ^x30(r4)

; re-read the bad block QW #6

mb

; no other mem-ops till done

ldq_l r6, ^x38(r4)

; re-read the bad block QW #7

stq_c r6, ^x38(r4)

; now store it to force scrub

mb

and r6, r31, r6

; consumer of above

beq r6, sys__crd_scrub_done

; these 2 lines......

br r31, .-4

; .....stop pre-fetching

sys__crd_scrub_done:

bsr r7, sys__cbox

; clean the cbox error chain

bis r31, r31, r31

hw_mtpr r31, EV6__DTB_IA

; (7,1L) flush dtb

bis r31, r31, r31

bis r31, r31, r31

bis r31, r31, r31

hw_mtpr r31, <EV6__MM_STAT ! ^x80>

; wait for retire

bis r31, #1, r7

; get a 1

sll r7, #EV6__HW_INT_CLR__CR__S, r7 ; shift into position

hw_mtpr r7, EV6__HW_INT_CLR

; (4,0L) clear crd

lda r7, EV6__DC_STAT_W1C_CRD(r31)

; W1C bits

hw_mtpr r7, EV6__DC_STAT

; (6,0L)

bis r31, r31 ,r31

bis r31, r31 ,r31

hw_mtpr r31, <EV6__MM_STAT ! ^x50>

; stall till they retire

Advertising