diff options
author | scottl <scottl@FreeBSD.org> | 2004-11-30 11:35:30 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2004-11-30 11:35:30 +0000 |
commit | 5dc04c92e8f2a57d2b95ceceef7b72107661dbc7 (patch) | |
tree | 47ab62cbb9c292fbda9700b78acf1b6de75d2951 /sys/boot/ficl | |
parent | 6660eab42ecbf5f10f97517f3a46dfa31524d47e (diff) | |
download | FreeBSD-src-5dc04c92e8f2a57d2b95ceceef7b72107661dbc7.zip FreeBSD-src-5dc04c92e8f2a57d2b95ceceef7b72107661dbc7.tar.gz |
Instead of just not defining a bunch of words when TESTMAIN is set, provide
stubs that at least handle the stack correctly. This makes it much easier to
experiment with loader scripts from userland.
Diffstat (limited to 'sys/boot/ficl')
-rw-r--r-- | sys/boot/ficl/ficl.h | 4 | ||||
-rw-r--r-- | sys/boot/ficl/loader.c | 55 |
2 files changed, 45 insertions, 14 deletions
diff --git a/sys/boot/ficl/ficl.h b/sys/boot/ficl/ficl.h index 98d56a5..d10c850 100644 --- a/sys/boot/ficl/ficl.h +++ b/sys/boot/ficl/ficl.h @@ -1114,7 +1114,6 @@ extern void ficlOutb(FICL_VM *pVM); extern void ficlInb(FICL_VM *pVM); #endif -#if !defined(TESTMAIN) extern void ficlSetenv(FICL_VM *pVM); extern void ficlSetenvq(FICL_VM *pVM); extern void ficlGetenv(FICL_VM *pVM); @@ -1122,9 +1121,10 @@ extern void ficlUnsetenv(FICL_VM *pVM); extern void ficlCopyin(FICL_VM *pVM); extern void ficlCopyout(FICL_VM *pVM); extern void ficlFindfile(FICL_VM *pVM); +extern void ficlCcall(FICL_VM *pVM); +#if !defined(TESTMAIN) extern void ficlPnpdevices(FICL_VM *pVM); extern void ficlPnphandlers(FICL_VM *pVM); -extern void ficlCcall(FICL_VM *pVM); #endif /* diff --git a/sys/boot/ficl/loader.c b/sys/boot/ficl/loader.c index e01b38f..d723b1e 100644 --- a/sys/boot/ficl/loader.c +++ b/sys/boot/ficl/loader.c @@ -56,11 +56,13 @@ * .# ( value -- ) */ -#ifndef TESTMAIN void ficlSetenv(FICL_VM *pVM) { - char *namep, *valuep, *name, *value; +#ifndef TESTMAIN + char *name, *value; +#endif + char *namep, *valuep; int names, values; #if FICL_ROBUST > 1 @@ -71,6 +73,7 @@ ficlSetenv(FICL_VM *pVM) values = stackPopINT(pVM->pStack); valuep = (char*) stackPopPtr(pVM->pStack); +#ifndef TESTMAIN name = (char*) ficlMalloc(names+1); if (!name) vmThrowErr(pVM, "Error: out of memory"); @@ -85,6 +88,7 @@ ficlSetenv(FICL_VM *pVM) setenv(name, value, 1); ficlFree(name); ficlFree(value); +#endif return; } @@ -92,7 +96,10 @@ ficlSetenv(FICL_VM *pVM) void ficlSetenvq(FICL_VM *pVM) { - char *namep, *valuep, *name, *value; +#ifndef TESTMAIN + char *name, *value; +#endif + char *namep, *valuep; int names, values, overwrite; #if FICL_ROBUST > 1 @@ -104,6 +111,7 @@ ficlSetenvq(FICL_VM *pVM) values = stackPopINT(pVM->pStack); valuep = (char*) stackPopPtr(pVM->pStack); +#ifndef TESTMAIN name = (char*) ficlMalloc(names+1); if (!name) vmThrowErr(pVM, "Error: out of memory"); @@ -118,6 +126,7 @@ ficlSetenvq(FICL_VM *pVM) setenv(name, value, overwrite); ficlFree(name); ficlFree(value); +#endif return; } @@ -125,7 +134,10 @@ ficlSetenvq(FICL_VM *pVM) void ficlGetenv(FICL_VM *pVM) { - char *namep, *name, *value; +#ifndef TESTMAIN + char *name; +#endif + char *namep, *value; int names; #if FICL_ROBUST > 1 @@ -134,6 +146,7 @@ ficlGetenv(FICL_VM *pVM) names = stackPopINT(pVM->pStack); namep = (char*) stackPopPtr(pVM->pStack); +#ifndef TESTMAIN name = (char*) ficlMalloc(names+1); if (!name) vmThrowErr(pVM, "Error: out of memory"); @@ -147,6 +160,7 @@ ficlGetenv(FICL_VM *pVM) stackPushPtr(pVM->pStack, value); stackPushINT(pVM->pStack, strlen(value)); } else +#endif stackPushINT(pVM->pStack, -1); return; @@ -155,7 +169,10 @@ ficlGetenv(FICL_VM *pVM) void ficlUnsetenv(FICL_VM *pVM) { - char *namep, *name; +#ifndef TESTMAIN + char *name; +#endif + char *namep; int names; #if FICL_ROBUST > 1 @@ -164,6 +181,7 @@ ficlUnsetenv(FICL_VM *pVM) names = stackPopINT(pVM->pStack); namep = (char*) stackPopPtr(pVM->pStack); +#ifndef TESTMAIN name = (char*) ficlMalloc(names+1); if (!name) vmThrowErr(pVM, "Error: out of memory"); @@ -172,6 +190,7 @@ ficlUnsetenv(FICL_VM *pVM) unsetenv(name); ficlFree(name); +#endif return; } @@ -191,7 +210,9 @@ ficlCopyin(FICL_VM *pVM) dest = stackPopINT(pVM->pStack); src = stackPopPtr(pVM->pStack); +#ifndef TESTMAIN archsw.arch_copyin(src, dest, len); +#endif return; } @@ -211,7 +232,9 @@ ficlCopyout(FICL_VM *pVM) dest = stackPopPtr(pVM->pStack); src = stackPopINT(pVM->pStack); +#ifndef TESTMAIN archsw.arch_copyout(src, dest, len); +#endif return; } @@ -219,7 +242,10 @@ ficlCopyout(FICL_VM *pVM) void ficlFindfile(FICL_VM *pVM) { - char *name, *type, *namep, *typep; +#ifndef TESTMAIN + char *name; +#endif + char *type, *namep, *typep; struct preloaded_file* fp; int names, types; @@ -231,6 +257,7 @@ ficlFindfile(FICL_VM *pVM) typep = (char*) stackPopPtr(pVM->pStack); names = stackPopINT(pVM->pStack); namep = (char*) stackPopPtr(pVM->pStack); +#ifndef TESTMAIN name = (char*) ficlMalloc(names+1); if (!name) vmThrowErr(pVM, "Error: out of memory"); @@ -243,11 +270,15 @@ ficlFindfile(FICL_VM *pVM) type[types] = '\0'; fp = file_findfile(name, type); +#else + fp = NULL; +#endif stackPushPtr(pVM->pStack, fp); return; } +#ifndef TESTMAIN #ifdef HAVE_PNP void @@ -637,11 +668,6 @@ void ficlCompilePlatform(FICL_SYSTEM *pSys) dictAppendWord(dp, "dictthreshold", ficlDictThreshold, FW_DEFAULT); dictAppendWord(dp, "dictincrease", ficlDictIncrease, FW_DEFAULT); -#ifndef TESTMAIN -#ifdef __i386__ - dictAppendWord(dp, "outb", ficlOutb, FW_DEFAULT); - dictAppendWord(dp, "inb", ficlInb, FW_DEFAULT); -#endif dictAppendWord(dp, "setenv", ficlSetenv, FW_DEFAULT); dictAppendWord(dp, "setenv?", ficlSetenvq, FW_DEFAULT); dictAppendWord(dp, "getenv", ficlGetenv, FW_DEFAULT); @@ -649,11 +675,16 @@ void ficlCompilePlatform(FICL_SYSTEM *pSys) dictAppendWord(dp, "copyin", ficlCopyin, FW_DEFAULT); dictAppendWord(dp, "copyout", ficlCopyout, FW_DEFAULT); dictAppendWord(dp, "findfile", ficlFindfile, FW_DEFAULT); + dictAppendWord(dp, "ccall", ficlCcall, FW_DEFAULT); +#ifndef TESTMAIN +#ifdef __i386__ + dictAppendWord(dp, "outb", ficlOutb, FW_DEFAULT); + dictAppendWord(dp, "inb", ficlInb, FW_DEFAULT); +#endif #ifdef HAVE_PNP dictAppendWord(dp, "pnpdevices",ficlPnpdevices, FW_DEFAULT); dictAppendWord(dp, "pnphandlers",ficlPnphandlers, FW_DEFAULT); #endif - dictAppendWord(dp, "ccall", ficlCcall, FW_DEFAULT); #endif #if defined(PC98) |