This commit is contained in:
HyperAssembler 2014-09-30 22:42:12 -04:00
parent 286803f026
commit e3aa2e3d59
5 changed files with 89 additions and 3 deletions

View File

@ -1,7 +1,6 @@
#include "type32.h"
#include "grub.h"
#include "kdef32.h"
UINT32 HKA32 HkKernelEntry(multiboot_info_t* multibootInfo)
{
//setup new gdt

View File

@ -1,7 +1,7 @@
#ifndef _MEM_32_H_
#define _MEM_32_H_
#include "../hdr/io32.h"
#include "type32.h"
#include "io32.h"
#pragma push()
#pragma pack(1)

75
x86/src/util.c Normal file
View File

@ -0,0 +1,75 @@
#include "util.h"
#include "type32.h"
#include "kdef32.h"
INT32 HKA32 HkSetBit32(void* dst,UINT32 bit)
{
if (dst == NULL)
return -1;
INT32 quo = bit/32;
bit = bit%32;
INT32* cDst = (INT32*)dst + quo;
*(INT32*)(cDst) |= 1 << bit;
return 0;
}
INT32 HKA32 HkClearBit32(void* dst, UINT32 bit)
{
if (dst == NULL)
return -1;
INT32 quo = bit / 32;
bit = bit % 32;
INT32* cDst = (INT32*)dst + quo;
*(INT32*)(cDst) &= ~(1 << bit);
return 0;
}
INT32 HKA32 HkGetBit32(void* dst, UINT32 bit)
{
if (dst == NULL)
return -1;
INT32 quo = bit / 32;
bit = bit % 32;
INT32* cDst = (INT32*)dst + quo;
return *(INT32*)(cDst) & (1 << bit);
}
INT32 HKA32 HkToggleBit32(void* dst, UINT32 bit)
{
if (dst == NULL)
return -1;
INT32 quo = bit / 32;
bit = bit % 32;
INT32* cDst = (INT32*)dst + quo;
*(INT32*)(cDst) |= 1 << bit;
return 0;
}
INT32 HKA32 HkMemcpy(void* src, void* dst, UINT32 size)
{
if (src == NULL || dst == NULL)
return -1;
char* cSrc = (char*)src;
char* cDst = (char*)dst;
while (size--)
*(cDst++) = *(cSrc++);
return 0;
}
INT32 HKA32 HkMemmove(void* src, void* dst, UINT32 size)
{
if (src == NULL || dst == NULL)
return -1;
char* cSrc = (char*)src;
char* cDst = (char*)dst;
if (cSrc >= cDst)
{
return HkMemcpy(src,dst,size);
}
cSrc += size;
cDst += size;
while (size--)
*(--cDst) = *(--cSrc);
return 0;
}

12
x86/src/util.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef _UTIL_H_
#define _UTIL_H_
#include "io32.h"
#include "kdef32.h"
INT32 HKA32 HkClearBit32(void* dst, UINT32 bit);
INT32 HKA32 HkGetBit32(void* dst, UINT32 bit);
INT32 HKA32 HkToggleBit32(void* dst, UINT32 bit);
INT32 HKA32 HkMemcpy(void* src, void* dst, UINT32 size);
INT32 HKA32 HkMemmove(void* src, void* dst, UINT32 size);
#endif