* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
* @(#)Locore.c 7.3 (Berkeley) 5/9/89
#include "../tahoemath/fp.h"
* Pseudo file for lint to show what is used/defined in locore.s.
int masterpaddr
; /* p_addr of current process on master cpu */
int szicode
= sizeof (icode
);
quad catcher
[SCB_LASTIV
];
* Variables declared for savecore, or
* implicitly, such as by config or the loader.
char version
[] = "4.3 BSD UNIX ....";
extern struct domain unixdomain
;
extern struct domain inetdomain
;
extern struct domain impdomain
;
extern struct domain nsdomain
;
/* cpp messes these up for lint so put them here */
unixdomain
.dom_next
= domains
;
inetdomain
.dom_next
= domains
;
impdomain
.dom_next
= domains
;
nsdomain
.dom_next
= domains
;
dumpmag
= 0; /* used only by savecore */
rthashsize
= rthashsize
; /* used by netstat, etc. */
arptab_size
= arptab_size
; /* used by arp command */
dk_ndrive
= dk_ndrive
; /* used by vmstat, iostat, etc. */
* Pseudo-uses of globals.
intstack
[0] = intstack
[1];
maxmem
= physmem
= freemem
= 0;
* Routines called from interrupt vectors.
hardclock((caddr_t
)0, 0);
softclock((caddr_t
)0, 0);
fpemulate(0, 0, 0, 0, 0, 0, 0, 0, 0);
trap(0, 0, 0, 0, 0, 0, (unsigned)0, 0, 0);
syscall(0, 0, 0, 0, 0, 0, (unsigned)0, 0, 0);
if (vmemall((struct pte
*)0, 0, (struct proc
*)0, 0))
if (rmget((struct map
*)0, 0, 0) == 0)
dumpflag
= 0; dumpflag
= dumpflag
;
bootesym
= 0; bootesym
= bootesym
;
struct pte Sysmap
[6*NPTEPG
];
caddr_t vmem
, vmembeg
, vmemend
;
struct pte Usrptmap
[USRPTSIZE
];
struct pte usrpt
[USRPTSIZE
*NPTEPG
];
struct pte Forkmap
[UPAGES
];
struct pte Xswapmap
[UPAGES
];
struct pte Xswap2map
[UPAGES
];
struct pte Swapmap
[UPAGES
];
struct pte Pushmap
[UPAGES
];
struct pte Vfmap
[UPAGES
];
struct pte CMAP1
[1], CMAP2
[1];
struct pte msgbufmap
[3*NBPG
];
struct pte kmempt
[100], ekmempt
[1];
struct pte Mbmap
[NMBCLUSTERS
/CLSIZE
];
struct mbuf mbutl
[NMBCLUSTERS
*CLBYTES
/sizeof (struct mbuf
)];
struct pte Nfsiomap
[MAXPHYS
/NBPG
+1];
char nfsiobuf
[MAXPHYS
+NBPG
];
badaddr(addr
, len
) caddr_t addr
; int len
; { return (0); }
ovbcopy(from
, to
, len
) caddr_t from
, to
; unsigned len
; { }
copyinstr(udaddr
, kaddr
, maxlength
, lencopied
)
caddr_t udaddr
, kaddr
; u_int maxlength
, *lencopied
;
{ *kaddr
= *udaddr
; *lencopied
= maxlength
; return (0); }
copyoutstr(kaddr
, udaddr
, maxlength
, lencopied
)
caddr_t kaddr
, udaddr
; u_int maxlength
, *lencopied
;
{ *kaddr
= *udaddr
; *lencopied
= maxlength
; return (0); }
copystr(kfaddr
, kdaddr
, maxlength
, lencopied
)
caddr_t kfaddr
, kdaddr
; u_int maxlength
, *lencopied
;
{ *kdaddr
= *kfaddr
; *lencopied
= maxlength
; return (0); }
copyin(udaddr
, kaddr
, n
) caddr_t udaddr
, kaddr
; u_int n
; { return (0); }
copyout(kaddr
, udaddr
, n
) caddr_t kaddr
, udaddr
; u_int n
; { return (0); }
longjmp(lp
) label_t
*lp
; { /*NOTREACHED*/ }
savectx(lp
) label_t
*lp
; { return (0); }
setrq(p
) struct proc
*p
; { }
remrq(p
) struct proc
*p
; { }
swtch() { if (whichqs
) whichqs
= 0; if (masterpaddr
) masterpaddr
= 0; }
resume(pcbpf
) unsigned pcbpf
; { }
fubyte(base
) caddr_t base
; { return (0); }
subyte(base
, i
) caddr_t base
; { return (0); }
fuword(base
) caddr_t base
; { return (0); }
suword(base
, i
) caddr_t base
; { return (0); }
caddr_t udaddr
; unsigned pf
;
{ CMAP1
[0] = CMAP1
[0]; CADDR1
[0] = CADDR1
[0]; }
clearseg(pf
) unsigned pf
; { CMAP2
[0] = CMAP2
[0]; CADDR2
[0] = CADDR2
[0]; }
useracc(udaddr
, bcnt
, rw
) caddr_t udaddr
; unsigned bcnt
; { return (0); }
kernacc(addr
, bcnt
, rw
) caddr_t addr
; unsigned bcnt
; { return (0); }
addupc(pc
, prof
, counts
) int pc
; struct uprof
*prof
; int counts
; { }
scanc(size
, cp
, table
, mask
)
unsigned size
; u_char
*cp
, table
[]; u_char mask
;
skpc(mask
, size
, cp
) int mask
; int size
; char *cp
; { return (0); }
locc(mask
, size
, cp
) int mask
; int size
; char *cp
; { return (0); }
* Routines expanded by inline.
fuibyte(base
) caddr_t base
; { return (fubyte(base
)); }
fuiword(base
) caddr_t base
; { return (fuword(base
)); }
suibyte(base
, i
) caddr_t base
; { return (subyte(base
, i
)); }
suiword(base
, i
) caddr_t base
; { return (suword(base
, i
)); }
setjmp(lp
) label_t
*lp
; { return (0); }
_insque(p
, q
) caddr_t p
, q
; { }
_remque(p
) caddr_t p
; { }
bcopy(from
, to
, len
) caddr_t from
, to
; unsigned len
; { }
bzero(base
, count
) caddr_t base
; unsigned count
; { }
blkclr(base
, count
) caddr_t base
; unsigned count
; { }
mtpr(reg
, v
) int reg
; { }
mfpr(reg
) int reg
; { return (0); }
_movow(dst
, v
) u_short
*dst
, v
; { }
_movob(dst
, v
) u_char
*dst
, v
; { }
ffs(v
) long v
; { return (0); }
imin(a
, b
) int a
, b
; { return (a
< b
? a
: b
); }
imax(a
, b
) int a
, b
; { return (a
> b
? a
: b
); }
unsigned min(a
, b
) u_int a
, b
; { return (a
< b
? a
: b
); }
unsigned max(a
, b
) u_int a
, b
; { return (a
> b
? a
: b
); }