Compaq 21264 User Manual

Page 302

Advertising
background image

D–4

PALcode Restrictions and Guidelines

Alpha 21264/EV67 Hardware Reference Manual

Restriction 1 : Reset Sequence Required by Retire Logic and Mapper

** or the PALcode, but it must be done in the manner and order below.

**

** It assumes that the retirator has been initialized, that the

** non-shadow registers are mapped, and that mapper source enables are on.

**

** Source enables are on. For fault-reset and wake from sleep, we need to

** ensure we are in the icache so we don’t fetch junk that touches the

** shadow sources before we write the destinations. For normal reset,

** we are already in the icache. However, so this macro is useful for

** all cases, force the code into the icache before doing the mapping.

**

** Assume for fault-reset, and wake from sleep case, the exc_addr is

** stored in r1.

*/

addq r31,r31,r0

/* nop*/

addq r31,r31,r0

/* nop*/

addq r31,r31,r0

/* nop*/

br r31, tch0

/* fetch in next block*/

.align 3

nxt0: lda r0,0x0086(r31)

/* load I_CTL.....*/

mtpr r0,EV6__I_CTL

/* .....SDE=2, IC_EN=3 (SCRBRD=4)*/

br r31, nxt1

/* continue executing in next block*/

tch0: br r31, tch1

/* fetch in next block*/

nxt1: mtpr r31,EV6__IER_CM

/* clear IER_CM (SCRBRD=4) creates a map-stall

under the above mtpr to SCRBRD=4*/

addq r31,r31,r0

/* nop*/

br r31, nxt2

/* continue executing in next block*/

tch1: br r31, tch2

/* fetch in next block*/

nxt2: addq r31,r31,r0

/* 1st buffer fetch block for above map-

stall*/

addq r31,r31,r0

/* nop*/

br r31, nxt3

/* continue executing in next block*/

tch2: br r31, tch3

/* fetch in next block*/

nxt3: addq r31,r31,r0

/* 2nd buffer fetch block for above map-stall*/

addq r31,r31,r0

/* nop*/

br r31, nxt4

/* continue executing in next block*/

tch3: br r31, tch4

/* fetch in next block*/

nxt4: addq r31,r31,r0

/* need 3rd buffer fetch block to get correct

SDE bit for next fetch block*/

addq r31,r31,r0

/* nop*/

br r31, nxt5

/* continue executing in next block*/

tch4: br r31, tch5

/* fetch in next block*/

nxt5: addq r31,r31,r4

/* initialize Shadow Reg. 0*/

addq r31,r31,r5

/* initialize Shadow Reg. 1*/

br r31, nxt6

/* continue executing in next block*/

tch5: br r31, tch6

/* fetch in next block*/

nxt6: addq r31,r31,r6

/* initialize Shadow Reg. 2*/

addq r31,r31,r7

/* initialize Shadow Reg. 3*/

br r31, nxt7

/* continue executing in next block*/

tch6: br r31, tch7

/* fetch in next block*/

nxt7: addq r31,r31,r20

/* initialize Shadow Reg. 4*/

Advertising