NachOS/code/bin/int.h

31 lines
1 KiB
C

/*
Copyright (c) 1992-1993 The Regents of the University of California.
All rights reserved. See copyright.h for copyright notice and limitation
of liability and disclaimer of warranty provisions.
*/
#include "copyright.h"
#define MEMSIZE (1<<24)
#define memoffset 0x10000000
/* centralized memory-access primitives */
#define amark(x) x
#define imark(x) x
#define ifetch(addr) (*(int *)(int) (&(mem-memoffset)[imark(addr)]))
#define fetch(addr) (*(int *)(int) (&(mem-memoffset)[amark(addr)]))
#define sfetch(addr) (*(short *)(int) (&(mem-memoffset)[amark(addr)]))
#define usfetch(addr) (*(unsigned short *)(int)(&(mem-memoffset)[amark(addr)]))
#define cfetch(addr) (*(char *)(int) (&(mem-memoffset)[amark(addr)]))
#define ucfetch(addr) (*(unsigned char *)(int)(&(mem-memoffset)[amark(addr)]))
#define store(addr, i) \
((*(int *)(int) (&(mem-memoffset)[amark(addr)]) = (i)))
#define sstore(addr, i) \
((*(short *)(int) (&(mem-memoffset)[amark(addr)]) = (i)))
#define cstore(addr, i) \
(((mem-memoffset)[amark(addr)] = (i)))