I'm having trouble using the hash unit. Here is my code :
typedef struct hash_t
{
unsigned int lo;
unsigned int hi;
} hash_t;
hash_t in;
hash_t out;
in.lo = 0x50;
in.hi = 0x20;
hash_64((__declspec(sram_read_reg) void *)&in,(__declspec(sram_write_reg)
void *)&out,1,ctx_swap);
The problem is that no matter what value I assign to the data to be hashed,
the output hash is always 0. It turns out that the data to be hashed remains
0 despite being assigned a non-zero value in code. I reckon the compiler
puts the hash structures in SRAM (commenting out call to hash_64() results
in data to be hashed being assigned the expected non-zero values). This
might have something to do with taking address of the hash structures in
function call (if address of variable is needed compiler puts variable in
SRAM??).
I've heard something about the hash multiplier being 0 by default. Could
this be affecting the output hash??
Any help greatly appreciated.Also if anybody has written code involving the
hash unit please send it to me....
Regards,
Simon.