diff options
author | Jim Blandy <jimb@codesourcery.com> | 2004-06-28 19:02:49 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2004-06-28 19:02:49 +0000 |
commit | c5ebe9d65fdccf2edfca83732216b27d9fd05da9 (patch) | |
tree | 5a8234148ff61b7020dc2276806a84871fe92d0d /sim/ppc | |
parent | 34e17b242467857233b94bcc00e71e1f104a2bd3 (diff) | |
download | gdb-c5ebe9d65fdccf2edfca83732216b27d9fd05da9.tar.gz |
* e500_registers.h (EVR): Cast the 32-bit value of the GPR to an
unsigned type before or-ing it with a 64-bit value.
Diffstat (limited to 'sim/ppc')
-rw-r--r-- | sim/ppc/ChangeLog | 5 | ||||
-rw-r--r-- | sim/ppc/e500_registers.h | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/sim/ppc/ChangeLog b/sim/ppc/ChangeLog index 55b18cceec3..f2f1aa8014c 100644 --- a/sim/ppc/ChangeLog +++ b/sim/ppc/ChangeLog @@ -1,3 +1,8 @@ +2004-06-28 Jim Blandy <jimb@redhat.com> + + * e500_registers.h (EVR): Cast the 32-bit value of the GPR to an + unsigned type before or-ing it with a 64-bit value. + 2004-06-15 Alan Modra <amodra@bigpond.net.au> * hw_htab.c (htab_sum_binary(bfd): Use bfd_get_section_size diff --git a/sim/ppc/e500_registers.h b/sim/ppc/e500_registers.h index cd12ab5ec27..ccf5e0f88c0 100644 --- a/sim/ppc/e500_registers.h +++ b/sim/ppc/e500_registers.h @@ -79,5 +79,8 @@ struct e500_regs { /* e500 register high bits */ #define GPRH(N) cpu_registers(processor)->e500.gprh[N] -/* e500 unified vector register */ -#define EVR(N) ((((unsigned64)GPRH(N)) << 32) | GPR(N)) +/* e500 unified vector register + We need to cast the gpr value to an unsigned type so that it + doesn't get sign-extended when it's or-ed with a 64-bit value; that + would wipe out the upper 32 bits of the register's value. */ +#define EVR(N) ((((unsigned64)GPRH(N)) << 32) | (unsigned32) GPR(N)) |