This errata complements the author’s own errata which can be found here:
http://www.ee.princeton.edu/~wolf/embedded-book/about.html
However, note that there are errata to the errata for p82 and p347.
Page 66, Example 2-1: 231 – 1 + 1 leads to NZCV = 1001 (not 0101 as is written).
Page 88, Example 2-6:
According to the example and to the ARM procedure call standard, the code for f1 should read:
f1 BL f2 ; Argument a is already in reg r0
MOVE r15, r14 ; return
This makes the code trivial and not very interesting. A better example is given in the lecture notes of lecture 2.
Page 111, Example 3-4:
The line:
achar = (char)
peek(IN_DATA); /* read the character
*/
needs to be complemented with the following line:
poke(IN_DATA,0);
so as to reset the input device.
Page 133, EQ 3-2: tav = h1tL1 + (h2-h1)tL2 + (1-h1-h2)tmain
should be (depend on definition of h2):
According to the book h2 is the rate at which access hit the second-level cache but not the first-level cache:
tav = h1tL1 + h2tL2 + (1-h1-h2)tmain
However, if we define h2 to be the second-level hit rate, i.e. the rate by which references that miss in L1 hits in L2, the formula becomes:
tav = h1tL1 + (1-h1)(h2tL2
+ (1-h2)tmain)
Page 135, Figure 3-10: Set 1, Set 2, Set n should be Way 1, Way 2, Way n. and “Set select” should be “Way select”.
Page 138, End of example 3-9: In the two-way set-associative example with four blocks, block 0 data for set 1 should be 0001.
Page
191, first paragraph: Replace AHB in the third line with APB.
Page
210, example 4-1:
There should be 21 address lines. All addresses in the picture and paragraph:
10 should be 20; 9 should be 19, 11 should be 21.
Page 347, figure 6-2:
The figure should be:

Fill in the original code where it says …
Page 378, example 6-6:
Replace
![]()
with
![]()