31 lines
1 KiB
C
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)))
|
|
|