My Project
Chargement...
Recherche...
Aucune correspondance
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
11void 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 */
32static 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 */
47void _chargerGDT(uint32_t ad, uint16_t limite);
48
49#endif
void _chargerGDT(uint32_t ad, uint16_t limite)
void halt(void)
unsigned long uint32_t
Definition types.h:20
unsigned short uint16_t
Definition types.h:16