[OpenBIOS] [PATCH] Add tbu@ and tbl@ words
Programmingkid
programmingkidx at gmail.com
Sat Dec 30 04:30:17 CET 2017
> On Dec 29, 2017, at 8:01 PM, BALATON Zoltan <balaton at eik.bme.hu> wrote:
>
> I've tried to implement it the way I've suggested and came up with the
> patch below, but it does not seem to work. I think this is because the
> arithmetic in get-msec overflows and does not get the right values. Could
> it be it works in SLOF because that runs on 64bit? Or is something needed
> to tell Forth to use 64bit values on PPC32? Any ideas?
I continuously printed the tb@ word's value by using this program:
decimal
begin
tb@ . .
cr
again
The tbu value looks right. The tbl value is a problem. When it prints it sometimes prints as a negative value. We need a way to print the value as unsigned. I switch over to the monitor and type this command "info registers" to see the timebase registers value to verify their values. Only the tbu value looks right.
I also made this test program:
#include <stdio.h>
#include <inttypes.h>
int main(int argc, const char * argv[]) {
uint64_t tbu, tbl;
tbl = 4000000000;
tbu = 1;
printf("tbl = %" PRId64 "\n", tbl);
printf("or'ed value: %" PRId64 "\n", (uint64_t)((tbu << 32) | tbl)); // should be 8,294,967,296
return 0;
}
When I change the uint64_t type to uint32_t at the declaration of the variables, the printed value is wrong. So this is why I think switching over to uint64_t might help.
Hope this info helps.
More information about the OpenBIOS
mailing list