diff options
author | Zheng Bao <zheng.bao@amd.com> | 2009-11-05 10:02:59 +0000 |
---|---|---|
committer | Zheng Bao <Zheng.Bao@amd.com> | 2009-11-05 10:02:59 +0000 |
commit | e6ad7fa4a6a8456ed229b4797addb97ceb35d7cc (patch) | |
tree | f68ad167927e7dedcba32097903d82666094b50d /src/include/pc80/i8254.h | |
parent | 448509bb4e93b3ffe870f048c6b4a82b1f2cb9a7 (diff) | |
download | coreboot-e6ad7fa4a6a8456ed229b4797addb97ceb35d7cc.tar.xz |
If the coreboot and filo overlap, it will "slice off" a piece at the
"beginning" or "end". In the beginning case, a new segment is inserted
before the current one. But the ptr will move forward and doesn't
seem to have any other chance to process the "new" segment.
ptr ---------+ move --->
|
V
+--------+ +--------+
| | | |
| new | <---> |current | <---> .....
| | | |
+--------+ +--------+
Now we change the ptr to the previous one and restart the loop. The
new and current segment will both be processed. Even if the current
segment is done twice, no new segment will come up and ptr will move
forward as we expect.
+----------------ptr move --->
|
V
+--------+ +--------+ +--------+
| | | | | |
| prev | <---> | new | <---> |current | <---> .....
| | | | | |
+--------+ +--------+ +--------+
It is tested and fixes the crashing on my AMD Family 10 board.
Some trailing whitespaces were deleted.
Signed-off-by: Zheng Bao <zheng.bao@amd.com>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4912 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/include/pc80/i8254.h')
0 files changed, 0 insertions, 0 deletions