Refactored RegEdit module.

+ Added u32 type funcs.
+ Added u64 type funcs.
+ Added u16 type funcs.
+ Added u8 type funcs.
This commit is contained in:
Jake Goodwin 2025-12-21 19:43:15 -08:00
parent 5ce1015a7a
commit 4be1a3b95e
2 changed files with 250 additions and 61 deletions

View file

@ -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;

View file

@ -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