Rev. 5.00, 09/03, page 173 of 760
7.3.6
PC Trace
1. Setting PCTE in BRCR to 1 enables PC traces. When branch (branch instruction, repeat, and
interrupt) is generated, the address from which the branch source address can be calculated and
the branch destination address are stored in BRSR and BRDR, respectively. The branch
address and the pointer, which corresponds to the branch, are included in BRSR.
2. The branch address before branch occurs can be calculated from the address and the pointer
stored in BRSR. The expression from BSA (the address in BRSR), PID (the pointer in BRSR),
and IA (the instruction address before branch occurs) is as follows: IA = BSA – 2 * PID.
Notes are needed when an interrupt (a branch) is issued before the branch destination
instruction is executed. In case of the next figure, the instruction “Exec” executed immediately
before branch is calculated by IA = BSA – 2 * PID. However, when branch “branch” has delay
slot and the destination address is 4n + 2 address, the address “Dest” which is specified by
branch instruction is stored in BRSR (Dest = BSA). Therefore, as IA = BSA – 2 * PID is not
applied to this case, this PID is invalid. The case where BSA is 4n + 2 boundary is applied
only to this case and then some cases are classified as follows:
Exec:branch
Dest
Dest:instr
(not executed)
interrupt
Int: interrupt routine
If the PID value is odd, instruction buffer indicates PID+2 buffer. However, these expressions
in this table are accounted for it. Therefore, the true branch source address is calculated with
BSA and PID values stored in BRSR.
3. The branch address before branch occurrence, IA, has different values due to some kinds of
branch.
a. Branch instruction
The branch instruction address
b. Interrupt
The last instruction executed before interrupt
The top address of interrupt routine is stored in BRDR.
4. BRSR and BRDR have eight pairs of queue structures. The top of queues is read first when the
address stored in the PC trace register is read. BRSR and BRDR share the read pointer. Read
BRSR and BRDR in order, the queue only shifts after BRDR is read. When reading BRDR,
longword access should be used. Also, the PC trace has a trace pointer, which initially points
to the bottom of the queues. The first pair of branch addresses will be stored at the bottom of
the queues, then push up when next pairs come into the queues. The trace pointer will points to
the next branch address to be executed, unless it got push out of the queues. When the branch
address has been executed, the trace pointer will shift down to next pair of addresses, until it
Summary of Contents for SH7709S
Page 2: ......
Page 44: ...Rev 5 00 09 03 page xliv of xliv ...
Page 62: ...Rev 5 00 09 03 page 18 of 760 ...
Page 128: ...Rev 5 00 09 03 page 84 of 760 ...
Page 146: ...Rev 5 00 09 03 page 102 of 760 ...
Page 224: ...Rev 5 00 09 03 page 180 of 760 ...
Page 246: ...Rev 5 00 09 03 page 202 of 760 ...
Page 266: ...Rev 5 00 09 03 page 222 of 760 ...
Page 370: ...Rev 5 00 09 03 page 326 of 760 ...
Page 432: ...Rev 5 00 09 03 page 388 of 760 ...
Page 532: ...Rev 5 00 09 03 page 488 of 760 ...
Page 598: ...Rev 5 00 09 03 page 554 of 760 ...
Page 630: ...Rev 5 00 09 03 page 586 of 760 ...
Page 656: ...Rev 5 00 09 03 page 612 of 760 ...
Page 684: ...Rev 5 00 09 03 page 640 of 760 ...
Page 700: ...Rev 5 00 09 03 page 656 of 760 ...
Page 758: ...Rev 5 00 09 03 page 714 of 760 ...
Page 807: ...SH7709S Group Hardware Manual REJ09B0081 0500O ADE 602 250C ...