summaryrefslogtreecommitdiff
path: root/src/arch/x86/bootblock.ld
diff options
context:
space:
mode:
authorAlexandru Gagniuc <alexandrux.gagniuc@intel.com>2016-05-16 14:22:00 -0700
committerAaron Durbin <adurbin@chromium.org>2016-05-19 18:25:59 +0200
commit87c6097c8f3ec812101f302ce98d0e6a53c25bab (patch)
tree4f5c071fe4414a44a987be13c45d8765a8d57d6b /src/arch/x86/bootblock.ld
parentbea930d7e483e777b3b7ed88632b030a31d1dc4b (diff)
arch/x86: Include timestamp.c in all stages
timestamp.c was not included in bootblock and postcar. This means that these two stages would use the weak implementation in lib/timestamp.c instead of the arch-specific implementation based on rdtsc. This resulted in using timer_monotonic_get() which resets the timestamps from 0. timer_monotonic_get() only provides per-stage incrementing semantics on x86 because lapic implementation has counting down values. A globally incrementing counter like rdtsc provides the semantics like every other non-x86. On the test configuration, the weak implementation of timestamp_get() returned zero, resulting in wrong timestamps coming from the bootblock, while romstage and ramstage used the arch implementation and returned correct timestamps. This is a great example of why weak functions are dangerous, and how easy it is to miss subtle yet strong interactions between subsystems and the coreboot buildsystem. Change-Id: I656f9bd58a6fc179d9dbbc496c5b684ea9288eb5 Signed-off-by: Alexandru Gagniuc <alexandrux.gagniuc@intel.com> Reviewed-on: https://review.coreboot.org/14860 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/arch/x86/bootblock.ld')
0 files changed, 0 insertions, 0 deletions