x86: Upgrade backtrace
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 19 Jul 2016 23:02:23 +0000 (19:02 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 27 Jul 2016 16:52:43 +0000 (12:52 -0400)
commit061085cca802ff42351411be60da8daf5ac392f1
tree7bea10d12113bbe5fed2de225311c55aa7e31e32
parent0b2e51368882e9db68f771ab3e369e3a15d1dc71
x86: Upgrade backtrace

Previously, we would report zero PCs if the FP was 0.  Now we'll at least
report the PC we were given.

Now that we're using two different functions for the kernel and user, we
can be more careful in the kernel's function when backtracing.

Finally, this is more clear with regards to the end conditions for the
loop.

But wait, you say, isn't that fp check in the kernel's BT unnecessarily
slow?  fp < KERNBASE, so we don't need to write the far more
understandable:

if (!fp || fp < KERNBASE)
break;

and we can write this instead!

if (fp < KERNBASE)
break;

Those generate the same code.  Don't be too clever, the compiler might
outsmart you.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/kdebug.c