/*******************************************************************************/
/* COS2000 - Compatible Operating System - LGPL v3 - Hordé Nicolas             */
/*                                                                             */
#include "types.h"

#define	PAGESIZE 	4096 /* Taille d'une page */
#define	PAGENUMBER 	1024 /* Nombre de pages */

#define IDT_ADDR		  0x00000000	/* adresse de la IDT */
#define GDT_ADDR		  0x00000800	/* adresse de la GDT */
#define	KERNEL_PGD_ADDR	  0x00001000    /* adresse de la page directory */
#define	KERNEL_STACK_ADDR 0x0009FFFF    /* adresse de la pile du kernel */
#define	KERNEL_CODE_ADDR  0x00100000

/* page directory */
#define PAGE_PRESENT	0b000000001/* page directory / table */
#define PAGE_WRITE	    0b000000010 /* page lecture ecriture */
#define PAGE_ALL		0b000000100 /* accessible user & supervisor */
#define PAGE_WTROUGH	0b000001000 /* write-through cache */
#define PAGE_NOCACHE	0b000010000 /* cache desactivé */
#define PAGE_ACCESS 	0b000100000 /* cache desactivé */
#define PAGE_4MB		0b010000000 /* page de 4mb au lieu de 4k (NECESSITE PSE)*/

/* page table */
#define PAGE_CACHE      0b000010000 /* page en cache */
#define PAGE_DIRTY      0b001000000 /* page écrite */
#define PAGE_GLOBAL     0b100000000 /* évite que le TLB mette à jour l'adresse dans le cache si CR4 est remis à zéro (NECESSITE CR4) */

void memset(void *dst, u8 val, u32 count,u32 size);
void memcpy(void *src, void *dst, u32 count, u32 size);
u32 memcmp(void *src, void *dst, u32 count, u32 size);

