My Project
Chargement...
Recherche...
Aucune correspondance
usr
include
manux
i386.h
Aller à la documentation de ce fichier.
1
/*----------------------------------------------------------------------------*/
2
/* Définition des opérations spécifiques au processeur Intel. */
3
/* */
4
/* (C) Manu Chaput 2000-2021 */
5
/*----------------------------------------------------------------------------*/
6
#ifndef I386_DEF
7
#define I386_DEF
8
9
#include <manux/types.h>
10
11
void
halt
(
void
);
12
/*
13
* Arret complet du système
14
*
15
* WARNING : codé dans interBasNiveau ... Est-ce là qu'il faut le coder et le
16
* définir ?
17
*/
18
19
#define str(tr) \
20
__asm__("str %0": "=g"(tr));
21
22
23
#define ltr(tr) \
24
__asm__ __volatile__ ("ltr %%ax"::"a"(tr));
25
26
#define barriereMemoire() \
27
__asm__("mfence");
28
29
/*
30
* Description du processeur (d'après https://wiki.osdev.org/CPUID)
31
*/
32
static
inline
int
descriptionProcesseur(
int
code,
uint32_t
description[3]) {
33
uint32_t
result;
34
asm
volatile
(
"cpuid"
:
"=a"
(result),
"=b"
(*(description)),
35
"=c"
(*(description+2)),
"=d"
(*(description+1)):
"a"
(code));
36
return
(
int
)result;
37
}
38
39
/*
40
* Calcul du numéro de la page contenant une adresse linéaire
41
*/
42
#define ADDR_VERS_PAGE(a) ((a)>>12)
43
44
/*
45
* Chargement effectif de la GDT, implanté dans gestionGDT.nasm
46
*/
47
void
_chargerGDT
(
uint32_t
ad,
uint16_t
limite);
48
49
#endif
_chargerGDT
void _chargerGDT(uint32_t ad, uint16_t limite)
halt
void halt(void)
uint32_t
unsigned long uint32_t
Definition
types.h:20
uint16_t
unsigned short uint16_t
Definition
types.h:16
Généré par
1.9.8