Refactored RegEdit module.
+ Added u32 type funcs. + Added u64 type funcs. + Added u16 type funcs. + Added u8 type funcs.
This commit is contained in:
parent
5ce1015a7a
commit
4be1a3b95e
2 changed files with 250 additions and 61 deletions
|
|
@ -1,61 +1,232 @@
|
|||
/*
|
||||
* Author: username
|
||||
* Date: 2024
|
||||
* Author: Jake G
|
||||
* Date: 2025
|
||||
* filename: RegEdit.c
|
||||
* description: module_purpose
|
||||
* description: Provides a register editing interface.
|
||||
*/
|
||||
|
||||
#include "RegEdit.h"
|
||||
|
||||
void RegEdit_SetRegister(void *reg)
|
||||
// For 64-Bit systems and register access.
|
||||
|
||||
void RegEdit_u64_SetRegister(void *reg)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr = 0xFF;
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
//*reg_ptr = 0xFFFFFFFFFFFFFFFF;
|
||||
*reg_ptr = UINT64_MAX;
|
||||
}
|
||||
|
||||
void RegEdit_ClearRegister(void *reg)
|
||||
void RegEdit_u64_ClearRegister(void *reg)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr = 0x00;
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
*reg_ptr = 0;
|
||||
}
|
||||
|
||||
void RegEdit_SetBit(void *reg, uint8_t bit_num)
|
||||
void RegEdit_u64_SetBit(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
*reg_ptr |= (uint64_t)(1 << bit_num);
|
||||
}
|
||||
|
||||
void RegEdit_u64_ClearBit(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
*reg_ptr &= ~(1 << bit_num);
|
||||
}
|
||||
|
||||
bool RegEdit_u64_IsBitSet(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
return *reg_ptr & (1 << bit_num);
|
||||
}
|
||||
|
||||
void RegEdit_u64_OR_Num(void *reg, uint64_t num)
|
||||
{
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
*reg_ptr |= num;
|
||||
}
|
||||
|
||||
void RegEdit_u64_AND_Num(void *reg, uint64_t num)
|
||||
{
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
*reg_ptr &= num;
|
||||
}
|
||||
|
||||
void RegEdit_u64_SetNum(void *reg, uint64_t num)
|
||||
{
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
*reg_ptr = num;
|
||||
}
|
||||
|
||||
uint64_t RegEdit_u64_ReadReg(void *reg)
|
||||
{
|
||||
uint64_t *reg_ptr = (uint64_t *)reg;
|
||||
return *reg_ptr;
|
||||
}
|
||||
|
||||
// For 32-Bit systems and register access.
|
||||
|
||||
void RegEdit_u32_SetRegister(void *reg)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
*reg_ptr = UINT32_MAX;
|
||||
}
|
||||
|
||||
void RegEdit_u32_ClearRegister(void *reg)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
*reg_ptr = 0;
|
||||
}
|
||||
|
||||
void RegEdit_u32_SetBit(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
*reg_ptr |= (uint32_t)(1 << bit_num);
|
||||
}
|
||||
|
||||
void RegEdit_u32_ClearBit(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
*reg_ptr &= ~(1 << bit_num);
|
||||
}
|
||||
|
||||
bool RegEdit_u32_IsBitSet(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
return *reg_ptr & (1 << bit_num);
|
||||
}
|
||||
|
||||
void RegEdit_u32_OR_Num(void *reg, uint32_t num)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
*reg_ptr |= num;
|
||||
}
|
||||
|
||||
void RegEdit_u32_AND_Num(void *reg, uint32_t num)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
*reg_ptr &= num;
|
||||
}
|
||||
|
||||
void RegEdit_u32_SetNum(void *reg, uint32_t num)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
*reg_ptr = num;
|
||||
}
|
||||
|
||||
uint32_t RegEdit_u32_ReadReg(void *reg)
|
||||
{
|
||||
uint32_t *reg_ptr = (uint32_t *)reg;
|
||||
return *reg_ptr;
|
||||
}
|
||||
|
||||
// For 16-Bit systems and register access.
|
||||
|
||||
void RegEdit_u16_SetRegister(void *reg)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
*reg_ptr = UINT16_MAX;
|
||||
}
|
||||
|
||||
void RegEdit_u16_ClearRegister(void *reg)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
*reg_ptr = 0;
|
||||
}
|
||||
|
||||
void RegEdit_u16_SetBit(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
*reg_ptr |= (uint16_t)(1 << bit_num);
|
||||
}
|
||||
|
||||
void RegEdit_u16_ClearBit(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
*reg_ptr &= ~(1 << bit_num);
|
||||
}
|
||||
|
||||
bool RegEdit_u16_IsBitSet(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
return *reg_ptr & (1 << bit_num);
|
||||
}
|
||||
|
||||
void RegEdit_u16_OR_Num(void *reg, uint16_t num)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
*reg_ptr |= num;
|
||||
}
|
||||
|
||||
void RegEdit_u16_AND_Num(void *reg, uint16_t num)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
*reg_ptr &= num;
|
||||
}
|
||||
|
||||
void RegEdit_u16_SetNum(void *reg, uint16_t num)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
*reg_ptr = num;
|
||||
}
|
||||
|
||||
uint16_t RegEdit_u16_ReadReg(void *reg)
|
||||
{
|
||||
uint16_t *reg_ptr = (uint16_t *)reg;
|
||||
return *reg_ptr;
|
||||
}
|
||||
|
||||
// For 8-Bit systems and register access.
|
||||
|
||||
void RegEdit_u8_SetRegister(void *reg)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr = UINT8_MAX;
|
||||
}
|
||||
|
||||
void RegEdit_u8_ClearRegister(void *reg)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr = 0;
|
||||
}
|
||||
|
||||
void RegEdit_u8_SetBit(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr |= (uint8_t)(1 << bit_num);
|
||||
}
|
||||
|
||||
void RegEdit_ClearBit(void *reg, uint8_t bit_num)
|
||||
void RegEdit_u8_ClearBit(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr &= ~(1 << bit_num);
|
||||
}
|
||||
|
||||
bool RegEdit_IsBitSet(void *reg, uint8_t bit_num)
|
||||
bool RegEdit_u8_IsBitSet(void *reg, uint8_t bit_num)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
return *reg_ptr & (1 << bit_num);
|
||||
}
|
||||
|
||||
void RegEdit_OR_Num(void *reg, uint8_t num)
|
||||
void RegEdit_u8_OR_Num(void *reg, uint8_t num)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr |= num;
|
||||
}
|
||||
|
||||
void RegEdit_AND_Num(void *reg, uint8_t num)
|
||||
void RegEdit_u8_AND_Num(void *reg, uint8_t num)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr &= num;
|
||||
}
|
||||
|
||||
void RegEdit_SetNum(void *reg, uint8_t num)
|
||||
void RegEdit_u8_SetNum(void *reg, uint8_t num)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
*reg_ptr = num;
|
||||
}
|
||||
|
||||
uint8_t RegEdit_ReadReg(void *reg)
|
||||
uint8_t RegEdit_u8_ReadReg(void *reg)
|
||||
{
|
||||
uint8_t *reg_ptr = (uint8_t *)reg;
|
||||
return *reg_ptr;
|
||||
|
|
|
|||
|
|
@ -11,67 +11,85 @@
|
|||
#define REGEDIT_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
*
|
||||
* @param reg The register address.
|
||||
*/
|
||||
void RegEdit_SetRegister(void *reg);
|
||||
// Template of function signitures.
|
||||
// XX: RegEdit_uxx
|
||||
// REGTYPE: fixed width type.
|
||||
/*
|
||||
void XX_SetRegister(void *reg);
|
||||
void XX_ClearRegister(void *reg);
|
||||
void XX_SetBit(void *reg, uint8_t bit_num);
|
||||
void XX_ClearBit(void *reg, uint8_t bit_num);
|
||||
bool XX_IsBitSet(void *reg, uint8_t bit_num);
|
||||
void XX_OR_Num(void *reg, REGTYPE num);
|
||||
void XX_AND_Num(void *reg, REGTYPE num);
|
||||
void XX_SetNum(void *reg, REGTYPE num);
|
||||
REGTYPE XX_ReadReg(void *reg);
|
||||
*/
|
||||
|
||||
// For 64-Bit systems and register access.
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Sets all the bits in pointed register.
|
||||
* @param reg The register address.
|
||||
*/
|
||||
void RegEdit_ClearRegister(void *reg);
|
||||
void RegEdit_u64_SetRegister(void *reg);
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Clears all the bits in pointed register.
|
||||
* @param reg The register address.
|
||||
*/
|
||||
void RegEdit_u64_ClearRegister(void *reg);
|
||||
|
||||
/**
|
||||
* @brief Set's a specific bit in a register.
|
||||
* @param reg The register address.
|
||||
* @param bit_num The bit location.
|
||||
*/
|
||||
void RegEdit_SetBit(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u64_SetBit(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u64_ClearBit(void *reg, uint8_t bit_num);
|
||||
bool RegEdit_u64_IsBitSet(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u64_OR_Num(void *reg, uint64_t num);
|
||||
void RegEdit_u64_AND_Num(void *reg, uint64_t num);
|
||||
void RegEdit_u64_SetNum(void *reg, uint64_t num);
|
||||
uint64_t RegEdit_u64_ReadReg(void *reg);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param reg The register address.
|
||||
* @param bit_num The bit location.
|
||||
*/
|
||||
void RegEdit_ClearBit(void *reg, uint8_t bit_num);
|
||||
// For 32-Bit systems and register access.
|
||||
|
||||
/**
|
||||
*
|
||||
* @param reg The register address.
|
||||
* @param bit_num The bit location.
|
||||
* @return
|
||||
*/
|
||||
bool RegEdit_IsBitSet(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u32_SetRegister(void *reg);
|
||||
void RegEdit_u32_ClearRegister(void *reg);
|
||||
void RegEdit_u32_SetBit(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u32_ClearBit(void *reg, uint8_t bit_num);
|
||||
bool RegEdit_u32_IsBitSet(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u32_OR_Num(void *reg, uint32_t num);
|
||||
void RegEdit_u32_AND_Num(void *reg, uint32_t num);
|
||||
void RegEdit_u32_SetNum(void *reg, uint32_t num);
|
||||
uint32_t RegEdit_u32_ReadReg(void *reg);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param reg The register address.
|
||||
* @param num The bit location.
|
||||
*/
|
||||
void RegEdit_OR_Num(void *reg, uint8_t num);
|
||||
// For 16-Bit systems and register access.
|
||||
|
||||
/**
|
||||
*
|
||||
* @param reg The register address.
|
||||
* @param num The bit location.
|
||||
*/
|
||||
void RegEdit_AND_Num(void *reg, uint8_t num);
|
||||
void RegEdit_u16_SetRegister(void *reg);
|
||||
void RegEdit_u16_ClearRegister(void *reg);
|
||||
void RegEdit_u16_SetBit(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u16_ClearBit(void *reg, uint8_t bit_num);
|
||||
bool RegEdit_u16_IsBitSet(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u16_OR_Num(void *reg, uint16_t num);
|
||||
void RegEdit_u16_AND_Num(void *reg, uint16_t num);
|
||||
void RegEdit_u16_SetNum(void *reg, uint16_t num);
|
||||
uint16_t RegEdit_u16_ReadReg(void *reg);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param reg The register address.
|
||||
* @param num The bit location.
|
||||
*/
|
||||
void RegEdit_SetNum(void *reg, uint8_t num);
|
||||
// For 8-Bit systems and register access.
|
||||
|
||||
/**
|
||||
*
|
||||
* @param reg The register address.
|
||||
*/
|
||||
uint8_t RegEdit_ReadReg(void *reg);
|
||||
void RegEdit_u8_SetRegister(void *reg);
|
||||
void RegEdit_u8_ClearRegister(void *reg);
|
||||
void RegEdit_u8_SetBit(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u8_ClearBit(void *reg, uint8_t bit_num);
|
||||
bool RegEdit_u8_IsBitSet(void *reg, uint8_t bit_num);
|
||||
void RegEdit_u8_OR_Num(void *reg, uint8_t num);
|
||||
void RegEdit_u8_AND_Num(void *reg, uint8_t num);
|
||||
void RegEdit_u8_SetNum(void *reg, uint8_t num);
|
||||
uint8_t RegEdit_u8_ReadReg(void *reg);
|
||||
|
||||
#endif // REGEDIT_H
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue