M pc/fns.h => pc/fns.h +1 -0
@@ 25,6 25,7 @@ void fpsave(FPsave*);
ulong fpstatus(void);
ulong getcr0(void);
ulong getcr2(void);
+ulong getcr3(void);
char* getconf(char*);
ulong getstatus(void);
void hardclock(void);
M pc/l.s => pc/l.s +4 -0
@@ 289,6 289,10 @@ TEXT getcr2(SB),$0 /* fault address */
MOVL CR2,AX
RET
+TEXT getcr3(SB),$0 /* page directory base */
+ MOVL CR3,AX
+ RET
+
#define FPOFF\
WAIT;\
MOVL CR0,AX;\
M port/error.h => port/error.h +1 -0
@@ 53,3 53,4 @@ extern char Erecover[]; /* failed to recover fd */
extern char Eshort[]; /* i/o count too small */
extern char Enobitstore[]; /* out of screen memory */
extern char Egreg[]; /* coherency problem */
+extern char Ebadspec[]; /* bad attach specifier */
M port/sysfile.c => port/sysfile.c +2 -1
@@ 548,7 548,8 @@ bindmount(ulong *arg, int ismount)
error(Ebadarg);
bogus.spec = (char*)arg[3];
- nameok(bogus.spec);
+ if(strchr(bogus.spec, ' '))
+ error(Ebadspec);
ret = devno('M', 0);
c0 = (*devtab[ret].attach)((char*)&bogus);