295135 |
02-Feb-2016 |
allanjude |
MFC: r294926 ficl on i386 should cast to unsigned char output to support efi i386
Submitted by: Toomas Soome <tsoome at me.com> Approved by: re (gjb) |
294445 |
20-Jan-2016 |
emaste |
MFC r293233: loader.efi: add terminal emulation support
This is based on the vidconsole implementation.
Submitted by: Toomas Soome <tsoome@me.com> Relnotes: Yes |
281321 |
09-Apr-2015 |
jhb |
MFC 279949: The System V ABI for amd64 allows functions to use space in a 128 byte redzone below the stack pointer for scratch space and requires interrupt and signal frames to avoid overwriting it. However, EFI uses the Windows ABI which does not support this. As a result, interrupt handlers in EFI push their interrupt frames directly on top of the stack pointer. If the compiler used the red zone in a function in the EFI loader, then a device interrupt that occurred while that function was running could trash its local variables. In practice this happens fairly reliable when using gzipfs as an interrupt during decompression can trash the local variables in the inflate_table() function resulting in corrupted output or hangs.
Fix this by disabling the redzone for amd64 EFI binaries. This requires building not only the loader but any libraries used by the loader without redzone support.
Thanks to Jilles for pointing me at the redzone once I found the stack corruption. |
271135 |
04-Sep-2014 |
emaste |
MFC UEFI loader
This MFC consists of the following SVN revisions: 258741 261568 261603 261668 263115 263117 263968 264078 264087 264088 264092 264095 264115 264132 264208 264261 264262 264263 264319 265028 265057 268974
Detailed commit messages:
r258741: Note that libstand is 32-bit on amd64 and powerpc64
r261568: Build libstand as a 64-bit library on amd64
The 32-bit bootloaders now link against libstand.a in sys/boot/libstand32, so there is no need to force /usr/lib/libstand.a to be 32-bit.
r261603: Don't force efi to a 32-bit build on amd64
r261668: Build libstand as a 64-bit library on ppc64
The 32-bit bootloaders now link against libstand.a in sys/boot/libstand32, so there is no need to force /usr/lib/libstand.a to be 32-bit.
This is equivalent to r261568 for amd64.
r263115: Add amd64 EFI headers
r263117: Connect 64-bit boot ficl to the build
It is not yet used, but this will ensure it doesn't get broken.
r263968: Use EFI types for EFI values (silences warnings).
EFI UINTN is actually a 64-bit type on 64-bit processors.
r264078: Put each source file on a separate line
This will simplify rebasing the amd64 UEFI patch set.
r264087: Build boot/ficl as 64-bit library on amd64
The 32-bit bootloaders on amd64 now use the 32-bit version in ficl32, as is done with libstand32. The native 64-bit ficl will be used by the upcoming UEFI loader.
r264088: Merge efilib changes from projects/uefi
r247216: Add the ability for a device to have an "alias" handle.
r247379: Fix network device registration.
r247380: Adjust our load device when we boot from CD under UEFI.
The process for booting from a CD under UEFI involves adding a FAT filesystem containing your loader code as an El Torito boot image. When UEFI detects this, it provides a block IO instance that points at the FAT filesystem as a child of the device that represents the CD itself. The problem being that the CD device is flagged as a "raw device" while the boot image is flagged as a "logical partition". The existing EFI partition code only looks for logical partitions and so the CD filesystem was rendered invisible.
To fix this, check the type of each block IO device. If it's found to be a CD, and thus an El Torito boot image, look up its parent device and add that instead so that the loader will then load the kernel from the CD filesystem. This is done by using the handle for the boot filesystem as an alias.
Something similar to this will be required for booting from other media as well as the loader will live in the EFI system partition, not on the partition containing the kernel.
r247381: Remove a scatalogical debug printf that crept in.
r264092: Add -fPIC for amd64
r264095: Support UEFI booting on amd64 via loader.efi
This is largely the work from the projects/uefi branch, with some additional refinements. This is derived from (and replaces) the original i386 efi implementation; i386 support will be restored later.
Specific revisions of note from projects/uefi:
r247380:
Adjust our load device when we boot from CD under UEFI.
The process for booting from a CD under UEFI involves adding a FAT filesystem containing your loader code as an El Torito boot image. When UEFI detects this, it provides a block IO instance that points at the FAT filesystem as a child of the device that represents the CD itself. The problem being that the CD device is flagged as a "raw device" while the boot image is flagged as a "logical partition". The existing EFI partition code only looks for logical partitions and so the CD filesystem was rendered invisible.
To fix this, check the type of each block IO device. If it's found to be a CD, and thus an El Torito boot image, look up its parent device and add that instead so that the loader will then load the kernel from the CD filesystem. This is done by using the handle for the boot filesystem as an alias.
Something similar to this will be required for booting from other media as well as the loader will live in the EFI system partition, not on the partition containing the kernel.
r246231:
Add necessary code to hand off from loader to an amd64 kernel.
r246335:
Grab the EFI memory map and store it as module metadata on the kernel.
This is the same approach used to provide the BIOS SMAP to the kernel.
r246336:
Pass the ACPI table metadata via hints so the kernel ACPI code can find them.
r246608:
Rework copy routines to ensure we always use memory allocated via EFI.
The previous code assumed it could copy wherever it liked. This is not the case. The approach taken by this code is pretty ham-fisted in that it simply allocates a large (32MB) buffer area and stages into that, then copies the whole area into place when it's time to execute. A more elegant solution could be used but this works for now.
r247214:
Fix a number of problems preventing proper handover to the kernel.
There were two issues at play here. Firstly, there was nothing preventing UEFI from placing the loader code above 1GB in RAM. This meant that when we switched in the page tables the kernel expects to be running on, we are suddenly unmapped and things no longer work. We solve this by making our trampoline code not dependent on being at any given position and simply copying it to a "safe" location before calling it.
Secondly, UEFI could allocate our stack wherever it wants. As it happened on my PC, that was right where I was copying the kernel to. This did not cause happiness. The solution to this was to also switch to a temporary stack in a safe location before performing the final copy of the loaded kernel.
r246231:
Add necessary code to hand off from loader to an amd64 kernel.
r246335:
Grab the EFI memory map and store it as module metadata on the kernel.
This is the same approach used to provide the BIOS SMAP to the kernel.
r246336:
Pass the ACPI table metadata via hints so the kernel ACPI code can find them.
r246608:
Rework copy routines to ensure we always use memory allocated via EFI.
The previous code assumed it could copy wherever it liked. This is not the case. The approach taken by this code is pretty ham-fisted in that it simply allocates a large (32MB) buffer area and stages into that, then copies the whole area into place when it's time to execute. A more elegant solution could be used but this works for now.
r247214:
Fix a number of problems preventing proper handover to the kernel.
There were two issues at play here. Firstly, there was nothing preventing UEFI from placing the loader code above 1GB in RAM. This meant that when we switched in the page tables the kernel expects to be running on, we are suddenly unmapped and things no longer work. We solve this by making our trampoline code not dependent on being at any given position and simply copying it to a "safe" location before calling it.
Secondly, UEFI could allocate our stack wherever it wants. As it happened on my PC, that was right where I was copying the kernel to. This did not cause happiness. The solution to this was to also switch to a temporary stack in a safe location before performing the final copy of the loaded kernel.
r247216:
Use the UEFI Graphics Output Protocol to get the parameters of the framebuffer.
r264115: Fix printf format mismatches
r264132: Connect sys/boot/amd64 to the build
r264208: Do not build the amd64 UEFI loader with GCC
The UEFI loader causes buildworld to fail when building with (in-tree) GCC, due to a typedef redefinition. As it happens the in-tree GCC cannot successfully build the UEFI loader anyhow, as it does not support __attribute__((ms_abi)). Thus, just avoid trying to build it with GCC, rather than disconnecting it from the build until the underlying issue is fixed.
r264261: Correct a variable's type for 64-bit Ficl
FICL_INT is long.
r264262: Fix printf args for 64-bit archs
r264263: Add explicit casts to quiet warnings in libefi
r264319: Fix EFI loader object tree creation on 9.x build hosts
Previously ${COMPILER_TYPE} was checked in sys/boot/amd64, and the efi subdirectory was skipped altogether for gcc (since GCC does not support a required attribute). However, during the early buildworld stages ${COMPILER_TYPE} is the existing system compiler (i.e., gcc on 9.x build hosts), not the compiler that will eventually be used. This caused "make obj" to skip the efi subdirectory. In later build stages ${COMPILER_TYPE} is "clang", and then the efi loader would attempt to build in the source directory.
r265028 (dteske): Disable the beastie menu for EFI console ...
which doesn't support ANSI codes (so things like `at-xy', `clear', and other commands don't work making it impossible to generate a living menu).
r265057 (nwhitehorn): Turn off various fancy instruction sets...
as well as deduplicate some options. This makes the EFI loader build work with CPUTYPE=native in make.conf on my Core i5.
r268974 (sbruno): Supress clang warning for FreeBSD printf %b and %D formats
Relnotes: Yes Sponsored by: The FreeBSD Foundation |
260096 |
30-Dec-2013 |
dim |
MFC r257532 (by adrian):
Fix this build for clang.
MFC r259730:
To avoid having to explicitly test COMPILER_TYPE for setting clang-specific or gcc-specific flags, introduce the following new variables for use in Makefiles:
CFLAGS.clang CFLAGS.gcc CXXFLAGS.clang CXXFLAGS.gcc
In bsd.sys.mk, these get appended to the regular CFLAGS or CXXFLAGS for the right compiler.
MFC r259913:
For libstand and sys/boot, split off gcc-only flags into CFLAGS.gcc.
MFC r259927:
Fix pc98 build, by also forcing COMPILER_TYPE in sys/boot/pc98/boot2's Makefile.
Pointy hat to: dim |
256281 |
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
254155 |
09-Aug-2013 |
marcel |
Fix the freaddir implementation for the stand-alone interpreter.
Bug pointed out by: Jan Beich <jbeich@tormail.org>
|
253862 |
01-Aug-2013 |
marcel |
Fix the build of the testmain target. This target compiles a Forth interpreter that can be run on the system and as such cannot be compiled against libbstand. On the one hand this means we need to include the usual headers for system interfaces that we use and on the the other hand we can only use standard system interfaces.
While here, define local variables only when needed to make this WARNS=2 clean on amd64.
PR: 172542 Obtained from: peterj@ Pointed out by: Jan Beich <jbeich@tormail.org>
|
253172 |
10-Jul-2013 |
marcel |
Add 2 builtin words for working with directories: isdir? ( fd -- bool ) freaddir ( fd -- ptr len TRUE | FALSE )
The 'isdir?' word returns `true' if the file descriptor is for a directory and `false' otherwise.
The 'freaddir' word reads the next directory entry and if successful, returns its name and 'true'. Otherwise 'false' is returned.
These words give the loader the ability to scan directories and read files contained in them for 'rc.d'-like flexibility in handling which modules to load and/or which tunables to set.
Obtained from: Juniper Networks, Inc.
|
249223 |
07-Apr-2013 |
kientzle |
The CELL fields can be various integer types depending on the platform (ARM uses 'int' and 'unsigned'; i386 uses 'long' and 'unsigned long'), so we need explicit casts to long and unsigned long here to ensure that the result matches the printf %ld and %lx specifiers.
|
249222 |
07-Apr-2013 |
kientzle |
Fix two broken macros.
|
244531 |
21-Dec-2012 |
rpaulo |
Build a 64 bit version of the FICL library. This is need for a 64 bit EFI bootloader (amd64 only for now).
This is not yet connected to the build.
|
241785 |
20-Oct-2012 |
avg |
boot: use -march=i386 for both i386 and amd64 builds
.. so that consistent compilation algorithms are used for both architectures as in practice the binaries are expected to be interchangeable (for time being). Previously i386 used default setting which were equivalent to -march=i486 -mtune=generic. The only difference is using smaller but slower "leave" instructions.
Discussed with: jhb, dim MFC after: 29 days
|
238795 |
26-Jul-2012 |
ache |
Try to avoid all files dependence on the modification time of the large and often modified directory created symbolic links points to - it cause unnecessary full rebuilds each time make runs when directory is changed. So do it only if symbolic link does not exists, which usually means that objdir is clean anyway.
MFC after: 1 week
|
231042 |
05-Feb-2012 |
rpaulo |
Fix clang warnings.
|
223695 |
30-Jun-2011 |
dfr |
Add a version of the FreeBSD bootloader which can run in userland, packaged as a shared library. This is intended to be used by BHyVe to load FreeBSD kernels into new virtual machines.
|
218909 |
21-Feb-2011 |
brucec |
Fix typos - remove duplicate "the".
PR: bin/154928 Submitted by: Eitan Adler <lists at eitanadler.com> MFC after: 3 days
|
217033 |
05-Jan-2011 |
dim |
On i386 and amd64, consistently use the following options whenever we want to avoid using any "advanced" CPU features:
-mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float
|
217030 |
05-Jan-2011 |
dim |
Remove an empty .if/.endif pair from sys/boot/ficl/Makefile that I forgot to cleanup in the last commit.
|
217029 |
05-Jan-2011 |
dim |
In lib/libstand, sys/boot/ficl and sys/boot/zfs, -mno-sse3 should also be used for amd64, not just for i386.
|
211678 |
23-Aug-2010 |
imp |
MF tbemd: Minor tweaks, prefer MACHINE_CPUARCH generally to MACHINE_ARCH (which simplifies some powerpc/powerpc64 ifs)
|
209920 |
12-Jul-2010 |
nwhitehorn |
Provide support in loader for booting 64-bit PowerPC kernels. Like amd64, 64-bit PowerPC kernels are loaded by a 32-bit loader, since nearly all powerpc64 firmwares execute in 32-bit mode.
|
209361 |
20-Jun-2010 |
brian |
Add a missing prototype
PR: 145232 Submitted by: gcooper MFC after: 1 week
|
188824 |
19-Feb-2009 |
imp |
Add basic mips support. This has been compile tested only.
|
183878 |
14-Oct-2008 |
raj |
Initial support of loader(8) for ARM machines running U-Boot.
This uses the common U-Boot support lib (sys/boot/uboot, already used on FreeBSD/powerpc), and assumes the underlying firmware has the modern API for stand-alone apps enabled in the config (CONFIG_API).
Only netbooting is supported at the moment.
Obtained from: Marvell, Semihalf
|
172664 |
15-Oct-2007 |
nyan |
Optimize for size on pc98. It enables to boot a kernel again.
I don't know what's wrong (loader, boot2 or others), but this change is effective.
Tested by: NAKAJI Hiroyuki MFC after: 3 days
|
167850 |
23-Mar-2007 |
jkim |
Update to FICL 3.03 (the last release before FICL4 rewrite).
The relevant changes for FreeBSD (excerpt from the release note):
* Newly implemented CORE EXT words: CASE, OF, ENDOF, and ENDCASE. Also added FALLTHROUGH, which works like ENDOF but jumps to the instruction just after the next OF. * Bugfix: John-Hopkins locals syntax now accepts | and -- in the comment (between the first -- and the }.) * Bugfix: Changed vmGetWord0() to make Purify happier. The resulting code is no slower, no larger, and slightly more robust.
|
162717 |
28-Sep-2006 |
ru |
Add -march=i386 to fix amd64 build by generating the same code as i386 would do.
|
161454 |
18-Aug-2006 |
imp |
Copy powerpc ficl files sysdep files (maybe we need a common one)
|
158466 |
12-May-2006 |
jhb |
Remove Alpha bits for ficl.
|
148046 |
15-Jul-2005 |
ache |
Add -mno-sse3 for prescott/nocona
|
146828 |
31-May-2005 |
obrien |
Ensure GCC does not use FP registers in integer code. I really don't like cluttering up the compiler invocation, but this bigger hammer will fix reported problems for now.
|
138223 |
30-Nov-2004 |
scottl |
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.
|
136910 |
24-Oct-2004 |
ru |
For variables that are only checked with defined(), don't provide any fake value.
|
134148 |
22-Aug-2004 |
marcel |
Part 2 of fixing the boot code: gcc 3.4 fixes.
The whole problem seems to be size. Which is odd, because it is said that size doesn't matter. Anyway... Add -Os to strategic places in the makefile to have the final loader be as mall as possible. This seems to be enough to make it work. For now... I think something is more fundamentally wrong; or something more fundamental is wrong. Potato, potaato.
|
125556 |
07-Feb-2004 |
ru |
Untangle building of AMD64 boot code.
Tested on: amd64 (sledge)
|
123374 |
10-Dec-2003 |
grehan |
Disable floating point on PowerPC for the ficl library.
|
123373 |
10-Dec-2003 |
grehan |
Define 'arch-powerpc'
|
123372 |
10-Dec-2003 |
grehan |
FICL system-dependent files for powerpc. Taken from the i386 versions, which were the most relevant.
|
117081 |
30-Jun-2003 |
ru |
bsd.lib.mk,v 1.143 no longer uses ld(1) directly to strip symbols from intermediate object files, so these hacks to get AMD64 compile are no longer needed.
Tested on: sledge.FreeBSD.org
|
116864 |
26-Jun-2003 |
peter |
Build on amd64. Yes, I know this isn't particularly nice.
|
116000 |
08-Jun-2003 |
nyan |
Set arch-pc98 env to true for pc98.
|
108470 |
30-Dec-2002 |
schweikh |
Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/ Add FreeBSD Id tag where missing.
|
102657 |
31-Aug-2002 |
scottl |
Make ficl work on sparc64. The assumption that int == long == void * is very pervasive in this code. This fixes a few of those assumptions and band-aids over some others.
Tested on: ia32 alpha sparc64
Reviewed by: peter jake (in concept)
|
102215 |
21-Aug-2002 |
scottl |
Fix for stand-alone compiling
Reviewed by: mini
|
96962 |
19-May-2002 |
jake |
MD ficl files for sparc64.
|
96755 |
16-May-2002 |
trhodes |
More s/file system/filesystem/g
|
96513 |
13-May-2002 |
ru |
Removed now unused INTERNALSTATICLIB. INTERNALLIB now implies NOPIC and NOPROFILE. Removed gratuitous NOMAN.
|
96455 |
12-May-2002 |
obrien |
Back out last commit. I expect our bsd.*.mk gods to remove the need for defining so many extra things in addition to INTERNALLIB. We don't like repetitive C code and we shouldn't for make code either.
|
96415 |
11-May-2002 |
obrien |
NOPIC, NOPROFILE, NOMAN, and INTERNALSTATICLIB are redundant when using INTERNALLIB now.
|
96342 |
10-May-2002 |
obrien |
-ffreestanding is the word. (also resort some CFLAGS such that the more "important" value are first so they are easier to see)
|
96261 |
09-May-2002 |
obrien |
Partical style cleanup.
|
94290 |
09-Apr-2002 |
dcs |
Upgrade to FICL version 3.02. Anything wrong is my fault, everything right is due Jon Mini.
PR: 36308 Submitted by: Jon Mini <mini@haikugeek.com> MFC after: 4 weeks
|
87636 |
11-Dec-2001 |
jhb |
- Add 'fwrite' and 'fseek' words for writing to and seeking on files. - Change the 'fopen' keyword to accept a mode parameter. Note that this will break existing 4th scripts that use fopen. Thus, the loader version has been bumped and loader.4th has been changed to check for a sufficient version on i386 and alpha. Be sure that you either do a full world build or install or full build and install of sys/boot after this since loader.old won't work with the new 4th files and vice versa.
PR: kern/32389 Submitted by: Jonathan Mini <mini@haikugeek.com> Sponsored by: ClickArray, Inc.
|
87265 |
03-Dec-2001 |
dcs |
Remove unused filed.
PR: kern/32395 Submitted by: Jonathan Mini <mini@haikugeek.com>
|
85934 |
03-Nov-2001 |
obrien |
Revert rev 1.7 which moved us away from POSIX character classes. The community feels our base AWK must handle them.
|
85842 |
01-Nov-2001 |
obrien |
Substitute "[:space:]" with the character constants it expands to. This was a silent 'failure' when using Bell-Labs awk.
Submitted by: David Wolfskill <david@catwhisker.org>
|
82960 |
04-Sep-2001 |
dfr |
Avoid an alignment fault on 64bit architectures.
Reviewed by: dcs
|
82941 |
04-Sep-2001 |
dfr |
Add definition for arch-ia64.
|
82940 |
04-Sep-2001 |
dfr |
Add ia64 system dependancies.
|
77443 |
29-May-2001 |
dcs |
Turn dictthreshold and dictincrease into cell-sized variables, so they can be used with cell operators like !.
As I did this, I noticed the whole CELL thing might have problems with big endian architectures with sizeof(int)!=sizeof(void*).
|
77268 |
27-May-2001 |
dcs |
As in with ":", check dictionary space and increase it if necessary before "create".
|
76421 |
10-May-2001 |
dcs |
FICL 2.05 has a flawed definition of BASE. Fix it.
Spotted by: Peter Jeremy <peter.jeremy@alcatel.com.au>
|
76116 |
29-Apr-2001 |
dcs |
Bring in ficl 2.05.
This version has a step debugger, which now completely replaces the old trace feature. Also, we moved all of the FreeBSD-specific MI code to loader.c, reducing the diff between this and the official FICL distribution.
|
73349 |
02-Mar-2001 |
ru |
setlocale(3) has been fixed to match POSIX standard: LC_ALL takes precedence over other LC_* envariables.
|
69430 |
01-Dec-2000 |
ache |
Cosmetique: don't use localized `date`
|
68729 |
14-Nov-2000 |
obrien |
Don't use the Gawkism strftime(). Pass in the date stamp on the awk command line instead.
Approved by: dcs
|
65698 |
10-Sep-2000 |
dfr |
Fix this so that we actually define HAVE_PNP when its available.
|
65677 |
10-Sep-2000 |
dfr |
Only build PnP parts if the platform supports PnP.
|
65617 |
08-Sep-2000 |
dcs |
Add the infrastructure necessary to handle PnP from a Forth script.
Also, export the file_findfile() function. Again, this is taken from work in progress but frozen for the time being. Since it works, I'd rather commit and remove any uglyness later than hide it on my tree.
|
64550 |
11-Aug-2000 |
peter |
Add -mpreferred-stack-boundary=2 to CFLAGS for i386. This and libstand reduces /boot/loader from 163840 bytes to 155648 and pxeboot from 165888 bytes to 157696 bytes.
|
61586 |
12-Jun-2000 |
dcs |
Fix REFILL. It must throw RESTART instead of OUTOFTEXT so that execution can take place at the point where it stopped after the input buffer has been refilled.
Add ANS Forth CORE EXT and FILE word SOURCE-ID.
|
61584 |
12-Jun-2000 |
dcs |
Make abort" functional in interpret mode. This behavior is undefined by ANS Forth standard, but it's useful.
Also, define the constant true in a more strict way. C might garantee 2-complement math, but Forth doesn't.
|
61583 |
12-Jun-2000 |
dcs |
Make comment reflect reality.
|
61374 |
07-Jun-2000 |
dcs |
Add setenv, getenv, setenv?, unsetenv, copyin and copyout to FICL.
|
61372 |
07-Jun-2000 |
dcs |
Remove a bug that caused local variables declarations in the format { | internal -- } to be rejected.
|
61182 |
02-Jun-2000 |
dcs |
Apply a number of fixes for the Alpha platform.
|
61177 |
02-Jun-2000 |
dcs |
Add something that was missing from the original 2.04 distribution.
|
61149 |
01-Jun-2000 |
dcs |
Add "int" sized manipulation words.
|
60962 |
26-May-2000 |
dcs |
Strip spaces and comments more agressively.
|
60959 |
26-May-2000 |
dcs |
Bring in FICL 2.04. No bump of loader version is required by this commit.
|
60480 |
12-May-2000 |
peter |
Stop libficl from using floating point registers - this was cauing dictDelete() to fault early on the Alpha and was the original cause of the Alpha ficl failures.
|
60014 |
05-May-2000 |
dcs |
Lay the groundwork for on-demand dictionary expansion.
|
60007 |
04-May-2000 |
dcs |
Correct a bug whereby allocations to the dictionary would not be allowed unless four times the space requested was available.
|
60000 |
04-May-2000 |
dcs |
Add heap?, so we can tell how much free space we have left.
|
56719 |
28-Jan-2000 |
dcs |
Implement a machine-independent (word size-independent) FICL_TRUE.
|
56718 |
28-Jan-2000 |
dcs |
ANS Forth for logical not is 0=, not invert. Replace wrong usage.
|
56717 |
28-Jan-2000 |
dcs |
Add testmain.o to CLEANFILES.
|
56716 |
28-Jan-2000 |
dcs |
Try my hand again at removing ugly testmain target.
|
53777 |
27-Nov-1999 |
dcs |
Zeroes structure before using it.
|
53636 |
23-Nov-1999 |
dcs |
Revert ill-considered simplification in 1.13.
Pointed by: peter
|
53635 |
23-Nov-1999 |
dcs |
Improve Makefile by using .PATH.
Taught by: peter
|
53634 |
23-Nov-1999 |
dcs |
Improve on ficl port to alpha.
Files sysdep.[ch] are now in ${MACHINE_ARCH} subdirectory. Internal #if's used to identify the platform where removed.
Make rule for target testmain was greatly simplified, because it was easier simplifying it than changing it to support the new location of sysdep.[ch].
(a repo-copy was done on sysdep.[ch], of course)
|
53633 |
23-Nov-1999 |
dcs |
(Hopefully) make all necessary changes for ficl to support alpha.
|
51789 |
29-Sep-1999 |
dcs |
Fix world-breaking bug, add $FreeBSD$ tag.
This happened to be my first "for real" broken world. I had broken it once before, but nobody noticed, so it didn't count.
So, how do I get the "I broke world and all I got was the lousy t-shirt" t-shirt?
|
51786 |
29-Sep-1999 |
dcs |
Bring in ficl version 2.03. No version bump for loader.
|
50477 |
28-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
45355 |
06-Apr-1999 |
dcs |
Reactivate trace! after making it egcs-friendly.
|
44839 |
17-Mar-1999 |
dcs |
Disable trace! until it gets fixed.
|
44774 |
15-Mar-1999 |
dcs |
Remove redundant code.
|
44322 |
28-Feb-1999 |
dcs |
Make $ print different lines in, well, different lines.
|
43801 |
09-Feb-1999 |
jkh |
Remove dictHashSummary internal function; it used doubles.
Submitted by: Daniel C. Sobral <dcs@newsguy.com>
|
43615 |
04-Feb-1999 |
dcs |
Make FICL_TRACE default.
Add freebsd.fr, for FreeBSD specific forth source. Add $ and %, to replace the lost @ and - functionality of include. $ has the opposite behavior of @ though, since the default behavior was inverted.
|
43613 |
04-Feb-1999 |
dcs |
Make ficlExec recursive. This removes vmReset and vmQuit from the error cases, but the replacement should be doing everything they did, except what did shouldn't be doing, and might do a little more they ought to be doing.
|
43602 |
04-Feb-1999 |
dcs |
Fix ficlExecFD to take kern/9412 changes into account. Also modify it not to vmThrow errors. This is not what the comments say it does, and it doesn't work when there is no ficlExec environment (like it's only use in sys/boot/common/interp_forth.c).
PR: bin/9772
|
43601 |
04-Feb-1999 |
dcs |
The trace facility was full of bugs. Correct that by using the right variable.
PR: bin/9756
|
43599 |
04-Feb-1999 |
dcs |
The previous fix for "type" was absolutely lousy. Not only the buffer allocated was not big enough, but it ended up to being used where it was supposed to be used. The person who did that ought to be shot, but since I'm a good person, I'll forgive myself...
PR: bin/9743
|
43598 |
04-Feb-1999 |
dcs |
Add conditional compilation facilities to ficl. This had been previously committed to RELENG_3 instead of HEAD, so let's HEAD catch up.
PR: bin/9662
|
43139 |
24-Jan-1999 |
msmith |
From the PR:
I added a FICL_TRACE-conditioned trace facility based on "see". It is ugly because words' functions are almost all static, and ficlExec, where the trace has to be located, can't get their pointers. So, #ifdef this staticization, and add most of see's body into ficlExec. Duplication of code, uglyness, etc. But it is cleanly #ifdef'ed, and works like a charm.
It does not provide "step" facility, though, just trace. It is tunable at run-time through "trace!". If anyone (most likely me :) ever wants a step facility, I'll add it. Should be easy.
PR: bin/9652 Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>
|
43135 |
24-Jan-1999 |
msmith |
From the PR:
FICL's TYPE copies the counted string to HERE, as abial has remarked. Answering to abial's question, this is NOT garanteed to have enough space. ... We have dynamic memory. Even before memory-alloc got in, we already had dynamic memory. Use it, then! (ficlMalloc is sysdep, so I suppose that's why it was not used for TYPE; ficl is probably designed to work without a working ficlFree).
Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>
|
43078 |
22-Jan-1999 |
msmith |
Add EXCEPTION word set.
Make TIB handling use buffer size to conform with ANS Forth.
Add ANS MEMORY-ALLOC word set.
See the PRs for extensive details.
PR: kern/9412 kern/9442 kern/9514 Submitted by: PRs from Daniel Sobral <dcs@newsguy.com>
|
42807 |
18-Jan-1999 |
msmith |
Transition from using Perl to using awk for our text-manipulation needs. This removes the dependancy on Perl for the generation of the loader, allowing the world to be built on a perl-free system.
Submitted by: Joe Abley <jabley@clear.co.nz>
|
42679 |
14-Jan-1999 |
abial |
Change counter-intuitive pc@ and pc! to inb and outb.
Submitted by: jkh
|
42634 |
13-Jan-1999 |
abial |
Add words "pc!" and "pc@" which allow to manipulate I/O ports. This can be helpful when directly fiddling with PC hardware.
Also, define "arch-i386" appropriately, as suggested by Daniel C. Sobral.
|
42209 |
31-Dec-1998 |
abial |
Add support for some FACILITY words:
key? ( -- flag) \ check to see if there's a key to be read from input ms ( u -- ) \ wait that many milliseconds seconds ( -- u ) \ get number of seconds from midnight.
'words' now outputs the list page by page - this probably should go through libstand's pager, but will have to wait for closer integration of built-ins with Forth...
Submitted partially by: W Gerald Hicks <wghicks@bellsouth.net>
|
42001 |
22-Dec-1998 |
abial |
Add new word ".#" which acts like "." but doesn't output a space separator. I found it impossible to output parametrized strings like "\033[%d;%dH" without building them first in pad area.
|
40995 |
07-Nov-1998 |
jkh |
o Add proper stack checking to all file words o add fkey and fread o eliminate fexists now that this can be expressed in HLL forth ( : fexists fopen dup -1 <> if fclose 1 else drop 0 then ; ) :-)
Once we get the ability to write files, it should be possible to do stand-alone rescue work from the 3rd stage boot. :)
|
40989 |
07-Nov-1998 |
jkh |
Eliminate much code cruft by extending simple file I/O API to include fopen and fclose.
|
40987 |
07-Nov-1998 |
jkh |
Take init out of here - it's a layering violation.
|
40982 |
07-Nov-1998 |
jkh |
OK, fload/fexec work properly when both compiling and interpreting now. Gack.
|
40978 |
06-Nov-1998 |
jkh |
switch words to default mode.
|
40977 |
06-Nov-1998 |
jkh |
Submit better fix to the prompt bug.
|
40976 |
06-Nov-1998 |
jkh |
Make fexists/fload work with existing string literals instead. Doing my own string literal handling is just too wonky.
|
40971 |
06-Nov-1998 |
jkh |
Argh, I had this right[er] before. More commits to follow.
|
40951 |
06-Nov-1998 |
jkh |
Use proper literal names.
|
40949 |
06-Nov-1998 |
msmith |
Don't not print the prompt string; not doing this has funny side-effects. Make the prompt an empty string instead.
|
40929 |
05-Nov-1998 |
jkh |
Remember a bit more of my forth and do:
o Add fexists word to check for the presence of a file o make fexists and fload immediate words which DTRT both interpreted and compiled (doh!) o add an init word which gets run at bootstrapping time to do extra post-coldload initialization (in the default implementation, we look for /boot/boot.4th and load it if found).
|
40927 |
05-Nov-1998 |
jkh |
1. rebuild all elements of testmain properly for safety. 2. add fload and key prims for doing simple file and terminal I/O, respectively
|
40924 |
05-Nov-1998 |
msmith |
Explicitly invoke perl to run the softwords.pl script in case the script is not executable. Submitted by: Don Lewis <Don.Lewis@tsc.tdk.com>
|
40890 |
04-Nov-1998 |
msmith |
Improve the assertion testing for successful softword compilation. The excessive use of assert() vs. robust error checking is annoying.
|
40883 |
04-Nov-1998 |
msmith |
Fix includes; we were still pulling in <stdlib.h> in some places. Support building a standalone interpreter with 'make testmain', remove win32 and egregious gets() in testmain.c
|
40876 |
04-Nov-1998 |
msmith |
Make this work in the libstand environment; don't use stdio/stdlib headers.
|
40843 |
03-Nov-1998 |
msmith |
Add the Ficl (Forth Inspired Command Language) interpreter. If all goes well, this will allow us to manage bloat in the loader by using a bytecoded HLL rather than lots of C code. It also offers an opportunity for vendors or others with special applications to significantly customise the boot process without having to commit to a divergent code branch.
This early commit is to allow others to experiment with the most effective mechanisms for integrating FICL with the loader as it currently stands.
Ficl is distributed with the following license conditions:
"Ficl is freeware. Use it in any way that you like, with the understanding that the code is not supported."
All source files contain authorship attributions.
Obtained from: John Sadler (john_sadler@alum.mit.edu)
|