Some work on CSR
This commit is contained in:
15
emulator/bits.h
Normal file
15
emulator/bits.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
static inline uint32_t sign_extend(uint32_t word, uint32_t size)
|
||||
{
|
||||
const uint32_t mask = 1U << (size - 1);
|
||||
return (word ^ mask) - mask;
|
||||
}
|
||||
|
||||
static inline uint64_t sign_extend_64(uint64_t word, uint32_t size)
|
||||
{
|
||||
const uint64_t mask = 1ULL << (size - 1);
|
||||
return (word ^ mask) - mask;
|
||||
}
|
Reference in New Issue
Block a user