diff --git a/hardware_.h b/hardware_.h deleted file mode 100644 index 14a3726125b5f212d814ee21fc76f1ee2a994784..0000000000000000000000000000000000000000 --- a/hardware_.h +++ /dev/null @@ -1,127 +0,0 @@ -/* ------------------------------ - $Id: hardware.h 114 2009-12-01 13:06:43Z simon_duquennoy $ - ------------------------------------------------------------ - - hardware.h - - Interface de la biblioth�que de simulation du mat�riel. - -*/ - -#ifndef _HARDWARE_H_ -#define _HARDWARE_H_ - -/** - * CMD_ - * commandes ATA-2 - */ -#define CMD_SEEK 0x02 -#define CMD_READ 0x04 -#define CMD_WRITE 0x06 -#define CMD_FORMAT 0x08 -#define CMD_STATUS 0x12 -#define CMD_DMASET 0x14 -#define CMD_DSKINFO 0x16 -#define CMD_MANUF 0xA2 -#define CMD_DIAG 0xA4 - -/** - * Commandes de la MMU (registre MMU_CMD) - */ -#define MMU_PROCESS 0xCC /* Commande d'activation/d�sactivation de la MMU */ -#define MMU_RESET 0xD5 /* Commande de r�initialisation de la MMU */ - -/** - * Physical and virtual memory for MMU - */ -extern void *physical_memory; -extern void *virtual_memory; - -/** - * prototype des fonctions-interruptions. - * une interruption ne recoit aucun param�tre "d'appel", - * une interruption ne retourne aucun resultat, mais - * sa terminaison restaure le contexte d'ex�cution du programme interrompu. - */ -typedef void (*func_irq)(void); - -/** - * int init_hardware(const char *fileconfig); - * initialisation du mat�riel. Pas de "reinitialisation" possible. - * l'initialisation d�finit le mat�riel conform�ment aux sp�cifications - * fournies par le fichier dont le nom est "fileconfig". - * retourne 0 en cas de probl�me lors de l'initialisation. - */ -extern int init_hardware(const char *fileconfig); - -/** - * IRQVECTOR - * donne la base d'un tableau de pointeur de fonction du type - * func_irq. la fonction IRQVECTOR[n]() est appel�e lorsque - * l'interuption de niveau n est d�clanch�e par le mat�riel. - */ -#define IRQ_VECOTR_SIZE 256 -extern func_irq *irq_vector; /* n'utilisez pas cette variable */ -#define IRQVECTOR irq_vector /* pr�f�rez ce #define IRQVECTOR */ - -extern int SYSTICKDURATION; /* microseconde entre les SYSTICK */ - -/** - * MASTERBUFFER et SLAVEBUFFER - * Adresses des buffers de donnees des disques maitre et esclave - */ -/* n'utilisez pas ces variables*/ -extern unsigned char ** HDA_masterbufferaddress, **HDB_masterbufferaddress; -/* pr�f�rez ces #define MASTERBUFFER et SLAVEBUFFER */ -#define MASTERBUFFER (*HDA_masterbufferaddress) -#define SLAVEBUFFER (*HDB_masterbufferaddress) - -/** - * BASEADDRESS_RAM - * variable associ�e � adresse de base de la m�moire globale - * de la machine. Cette m�moire est commune � tout les programmes - * qui utilisent la librairie sur la m�me machine. - * - */ -extern unsigned char *baseGlobalMem; /* n'utilisez pas cette variable */ -#define BASEADDRESS_RAM baseGlobalMem /* pr�f�rez ce #define BASEADDRESS_RAM */ - -/** - * int _in(int port); - * lecture du contenu du registre mat�riel n� "port". - * retourne la valeur lue. - */ -int _in(int port); - -/** - * void _out(int port, int value); - * ecriture de la valeur "value" dans le registre mat�riel n� "port". - */ -void _out(int port, int value); - -/** - * void _sleep(int irq_level); - * Stoppe l'activit� du microprocesseur jusqu'� l'occurence - * une interruption de niveau au moins �gale � "irqLevel". - */ -void _sleep(int irq_level); - -/** - * void _mask(int irqLevel); - * - cache au microprocesseur l'occurence d'interruptions - * de niveau inf�rieure � irqLevel. - * - 16�me bit � 0 : passage en mode prot�g� - * - 16�me bit � 1 : passage en mode user - * - */ -void _mask(int irq_level); - -/** - * void _int(int irqLevel); - * - lance une interruption logicielle de niveau irqLevel - * - */ -void _int(int irqLevel); - -#endif - diff --git a/pingpongpang.c b/pingpongpang.c index c73ac188980ab75eaa74fdf1af81055baa2e7002..249e2bc8b7001fe4f2b684c8c9b45f825f90c135 100644 --- a/pingpongpang.c +++ b/pingpongpang.c @@ -22,6 +22,7 @@ int main(int argc, char *argv[]) void f_ping(void *args) { + //irq_disable(); while (1) { printf("A"); diff --git a/try.c b/try.c index 8341386c6d6899405de511704f780b122c462124..09b3cd0016e89ab7fc7331c9915da0677a462892 100644 --- a/try.c +++ b/try.c @@ -157,4 +157,14 @@ void start_sched() _mask(1); yield(); +} + +void irq_disable() +{ + _mask(15); // blocks all IT +} + +void irq_enable() +{ + _mask(1); // allows all IT } \ No newline at end of file