ack.git
6 years agoYikes! Turns out that FPU registers are only 32 bits wide, and doubles are
David Given [Sun, 9 Sep 2018 16:25:00 +0000 (18:25 +0200)]
Yikes! Turns out that FPU registers are only 32 bits wide, and doubles are
stored in pairs, just like on the PowerPC!

6 years agoAllow the ELF processor flags to be set. Generate MIPS ELF executables, not
David Given [Sun, 9 Sep 2018 12:29:34 +0000 (14:29 +0200)]
Allow the ELF processor flags to be set. Generate MIPS ELF executables, not
PowerPC ones.

6 years agoRework relocations again: add RELO2HI and RELO2HISAD for the high two bytes of
David Given [Sun, 9 Sep 2018 12:11:11 +0000 (14:11 +0200)]
Rework relocations again: add RELO2HI and RELO2HISAD for the high two bytes of
a word.

6 years agoFix some niggling issues --- we have our first binary now!
David Given [Sun, 9 Sep 2018 10:24:22 +0000 (12:24 +0200)]
Fix some niggling issues --- we have our first binary now!

6 years agoSimplify MIPS relocations. Add RELS2 (for generic high-word relocations). Add
David Given [Sun, 9 Sep 2018 10:23:59 +0000 (12:23 +0200)]
Simplify MIPS relocations. Add RELS2 (for generic high-word relocations). Add
support for MIPS branch-and-jump relocations.

6 years agoWarning fix.
David Given [Sun, 9 Sep 2018 10:22:59 +0000 (12:22 +0200)]
Warning fix.

6 years agoAdded some very untested csa and csb implementations, based on the PowerPC
David Given [Sat, 8 Sep 2018 21:12:57 +0000 (23:12 +0200)]
Added some very untested csa and csb implementations, based on the PowerPC
ones.

6 years agoAdded hi[] and lo[] functions to the assembler; fix things enough that we now
David Given [Sat, 8 Sep 2018 20:42:06 +0000 (22:42 +0200)]
Added hi[] and lo[] functions to the assembler; fix things enough that we now
get to the point of failing to link programs.

6 years agoRework floating point conversion. Bash enough of the table into workingness
David Given [Sat, 8 Sep 2018 20:06:38 +0000 (22:06 +0200)]
Rework floating point conversion. Bash enough of the table into workingness
that the libraries build now.

6 years agoPrecisely one stack hreg gets allocated for each vreg/congruence group for
David Given [Sat, 8 Sep 2018 16:59:55 +0000 (18:59 +0200)]
Precisely one stack hreg gets allocated for each vreg/congruence group for
eviction; this prevents us from having to worry about moving values from stack
slot to stack slot, which is hard.

6 years agoMIPS appears to hate converting unsigneds to floats and vice versa.
David Given [Wed, 5 Sep 2018 21:53:38 +0000 (23:53 +0200)]
MIPS appears to hate converting unsigneds to floats and vice versa.

6 years ago(Slightly) better errors on phi congruence group mismatches.
David Given [Wed, 5 Sep 2018 21:53:08 +0000 (23:53 +0200)]
(Slightly) better errors on phi congruence group mismatches.

6 years agoWe attempt to compile the first library function; we fail.
David Given [Tue, 4 Sep 2018 22:13:01 +0000 (00:13 +0200)]
We attempt to compile the first library function; we fail.

6 years agoAdded library skeletons.
David Given [Tue, 4 Sep 2018 22:07:07 +0000 (00:07 +0200)]
Added library skeletons.

6 years agoAdded a boot.o based on the PowerPC one.
David Given [Tue, 4 Sep 2018 22:00:13 +0000 (00:00 +0200)]
Added a boot.o based on the PowerPC one.

6 years agoThe examples all compile now (probably incorrectly, and the libc doesn't
David Given [Tue, 4 Sep 2018 21:55:28 +0000 (23:55 +0200)]
The examples all compile now (probably incorrectly, and the libc doesn't
compile yet).

6 years agoLots of assembler and rule bugfixing.
David Given [Tue, 4 Sep 2018 21:43:24 +0000 (23:43 +0200)]
Lots of assembler and rule bugfixing.

6 years agoAdded li and la instructions.
David Given [Mon, 3 Sep 2018 20:47:41 +0000 (22:47 +0200)]
Added li and la instructions.

6 years agoAdd in floating point support to the code generator.
David Given [Mon, 3 Sep 2018 20:06:05 +0000 (22:06 +0200)]
Add in floating point support to the code generator.

6 years agomcgg now checks that registers have at most one type attribute set.
David Given [Mon, 3 Sep 2018 20:03:57 +0000 (22:03 +0200)]
mcgg now checks that registers have at most one type attribute set.

6 years agoAdd some painfully untested FPU instructions.
David Given [Sun, 2 Sep 2018 19:36:09 +0000 (21:36 +0200)]
Add some painfully untested FPU instructions.

6 years agoThe MIPS backend is still full of holes, and cut-and-pasted PowerPC code, but
David Given [Sun, 2 Sep 2018 16:57:25 +0000 (18:57 +0200)]
The MIPS backend is still full of holes, and cut-and-pasted PowerPC code, but
is beginning to look like an actual code generator.

6 years agoBetter error reporting for unterminated strings.
David Given [Sun, 2 Sep 2018 16:55:44 +0000 (18:55 +0200)]
Better error reporting for unterminated strings.

6 years agoAdd a completely non-tested table-based MIPS assembler.
David Given [Sat, 1 Sep 2018 17:35:31 +0000 (19:35 +0200)]
Add a completely non-tested table-based MIPS assembler.

6 years agoMerge pull request #110 from davidgiven/dtrg-warnings
David Given [Mon, 25 Jun 2018 20:29:47 +0000 (22:29 +0200)]
Merge pull request #110 from davidgiven/dtrg-warnings

Fix warnings and convert the Modula-2 library to ANSI C.

6 years agoWarning-fixed and ansified the Modula-2 library. dtrg-warnings
David Given [Mon, 25 Jun 2018 20:22:37 +0000 (22:22 +0200)]
Warning-fixed and ansified the Modula-2 library.

6 years agoMove the Modula-2 library includes into a directory in lang/m2 where they belong.
David Given [Sun, 24 Jun 2018 18:32:59 +0000 (20:32 +0200)]
Move the Modula-2 library includes into a directory in lang/m2 where they belong.

6 years agoMerge pull request #109 from davidgiven/dtrg-warnings
David Given [Sun, 24 Jun 2018 18:03:21 +0000 (20:03 +0200)]
Merge pull request #109 from davidgiven/dtrg-warnings

Rework the Linux include directories.

6 years agoAll the Linux include directories are the same, so common them all out into a
David Given [Sun, 24 Jun 2018 17:57:43 +0000 (19:57 +0200)]
All the Linux include directories are the same, so common them all out into a
single one, like OSX.

6 years agoMerge pull request #108 from davidgiven/dtrg-warnings
David Given [Sat, 23 Jun 2018 23:00:30 +0000 (01:00 +0200)]
Merge pull request #108 from davidgiven/dtrg-warnings

Warning-fix and protoise the basic library.

6 years agoWarning-fix and protoise the basic library.
David Given [Sat, 23 Jun 2018 22:35:51 +0000 (00:35 +0200)]
Warning-fix and protoise the basic library.

6 years agoMerge pull request #107 from davidgiven/dtrg-libc
David Given [Sat, 23 Jun 2018 22:21:29 +0000 (00:21 +0200)]
Merge pull request #107 from davidgiven/dtrg-libc

OpenBSD fixes

6 years agoMerge from trunk.
David Given [Sat, 23 Jun 2018 22:08:39 +0000 (00:08 +0200)]
Merge from trunk.

6 years agoRemove the dependency on the glibc-only byteswap.h.
David Given [Sat, 23 Jun 2018 22:01:06 +0000 (00:01 +0200)]
Remove the dependency on the glibc-only byteswap.h.

6 years agoRemove c99-isms.
David Given [Sat, 23 Jun 2018 21:56:34 +0000 (23:56 +0200)]
Remove c99-isms.

6 years agoRun through clang-format.
David Given [Sat, 23 Jun 2018 21:46:44 +0000 (23:46 +0200)]
Run through clang-format.

6 years agoMerge pull request #106 from davidgiven/dtrg-libc
David Given [Sat, 23 Jun 2018 21:28:21 +0000 (23:28 +0200)]
Merge pull request #106 from davidgiven/dtrg-libc

Refactor the libc

6 years agoRemove the attic.
David Given [Sat, 23 Jun 2018 21:16:22 +0000 (23:16 +0200)]
Remove the attic.

6 years agoMove mktemp to sys; attic getgrent as noone will ever use this.
David Given [Sat, 23 Jun 2018 21:15:42 +0000 (23:15 +0200)]
Move mktemp to sys; attic getgrent as noone will ever use this.

6 years agoMove the portable time code into core. clock() goes into sys (as it calls
David Given [Sat, 23 Jun 2018 17:49:29 +0000 (19:49 +0200)]
Move the portable time code into core. clock() goes into sys (as it calls
times()).

6 years agoMove time() into sys; change the name of the variable which controls it.
David Given [Sat, 23 Jun 2018 17:40:50 +0000 (19:40 +0200)]
Move time() into sys; change the name of the variable which controls it.

6 years agoMove the big gnarly functions like system() and popen() into sys, and make them
David Given [Sat, 23 Jun 2018 17:18:16 +0000 (19:18 +0200)]
Move the big gnarly functions like system() and popen() into sys, and make them
build.

6 years agoMove stdio into (mostly) sys.
David Given [Sat, 23 Jun 2018 16:54:40 +0000 (18:54 +0200)]
Move stdio into (mostly) sys.

6 years agoChange stdio to use atexit() rather than the internal __clean variable; this
David Given [Sat, 23 Jun 2018 16:35:45 +0000 (18:35 +0200)]
Change stdio to use atexit() rather than the internal __clean variable; this
breaks the dependency between exit/atexit and stdio. Buffers are no longer
flushed on abort() (because it's pretty risky). Move the relevant functions
into sys/core.

6 years agoAll the opendir()/readdir() stuff is obsolete because it's all implemented in
David Given [Sat, 23 Jun 2018 16:25:26 +0000 (18:25 +0200)]
All the opendir()/readdir() stuff is obsolete because it's all implemented in
terms of open() and read(), which isn't how it's done any more; move the
functions into an attic.

6 years agoAdd the sys directory for libc functions which use system calls; move the
David Given [Sat, 23 Jun 2018 16:08:03 +0000 (18:08 +0200)]
Add the sys directory for libc functions which use system calls; move the
malloc functions in there.

6 years agoMove the errno functions into core.
David Given [Sat, 23 Jun 2018 15:52:15 +0000 (17:52 +0200)]
Move the errno functions into core.

6 years agoGet em22 working. Remove the leading-underscore system calls from its libsys.
David Given [Sat, 23 Jun 2018 13:57:57 +0000 (15:57 +0200)]
Get em22 working. Remove the leading-underscore system calls from its libsys.

6 years agoGet the pdp7 plat working; remove the leading-underscore syscalls.
David Given [Sat, 23 Jun 2018 13:18:26 +0000 (15:18 +0200)]
Get the pdp7 plat working; remove the leading-underscore syscalls.

6 years agoMade the rpi platform work with the new libc layout.
David Given [Sat, 23 Jun 2018 11:05:27 +0000 (13:05 +0200)]
Made the rpi platform work with the new libc layout.

6 years agoMade pc86 work with the new libc.
David Given [Sat, 23 Jun 2018 10:59:40 +0000 (12:59 +0200)]
Made pc86 work with the new libc.

6 years agoMade the two OSX platforms work with the new libc layout.
David Given [Sat, 23 Jun 2018 10:55:59 +0000 (12:55 +0200)]
Made the two OSX platforms work with the new libc layout.

6 years agoMake linuxppc work.
David Given [Sat, 23 Jun 2018 10:41:54 +0000 (12:41 +0200)]
Make linuxppc work.

6 years agoMade linux68k work; commoned up all the generic linux includes.
David Given [Sat, 23 Jun 2018 10:35:17 +0000 (12:35 +0200)]
Made linux68k work; commoned up all the generic linux includes.

6 years agoMake linux386 work with the new libc layout.
David Given [Sat, 23 Jun 2018 10:13:33 +0000 (12:13 +0200)]
Make linux386 work with the new libc layout.

6 years agoCreate a basic and probably wrong common unistd.h, which replaces the plat one.
David Given [Sat, 23 Jun 2018 09:46:55 +0000 (11:46 +0200)]
Create a basic and probably wrong common unistd.h, which replaces the plat one.
Made this work with cpm (but nothing else yet).

6 years agoMove assert into core.
David Given [Sat, 23 Jun 2018 09:16:06 +0000 (11:16 +0200)]
Move assert into core.

6 years agoWarning fix.
David Given [Sat, 23 Jun 2018 09:14:49 +0000 (11:14 +0200)]
Warning fix.

6 years agoDon't crash and burn if there are no tests to run.
David Given [Sat, 23 Jun 2018 09:14:40 +0000 (11:14 +0200)]
Don't crash and burn if there are no tests to run.

6 years agoMove the string-to-float functions into core, after marking them as
David Given [Sat, 23 Jun 2018 09:14:24 +0000 (11:14 +0200)]
Move the string-to-float functions into core, after marking them as
ACKCONF_WANT_FLOAT.

6 years agolibc floating point and stdio floating point can now be turned on and off using
David Given [Fri, 22 Jun 2018 22:04:14 +0000 (00:04 +0200)]
libc floating point and stdio floating point can now be turned on and off using
ACKCONF variables.

6 years agoRearrange the libc config files, ready for adding new options.
David Given [Fri, 22 Jun 2018 21:43:15 +0000 (23:43 +0200)]
Rearrange the libc config files, ready for adding new options.

6 years agoGet the em libc working again: remove the modula-2 termcap library, as it's a
David Given [Fri, 22 Jun 2018 21:17:14 +0000 (23:17 +0200)]
Get the em libc working again: remove the modula-2 termcap library, as it's a
straight copy of the libc one and having two symbols defined at once gets ass
upset.

6 years agoMerge from default.
David Given [Fri, 22 Jun 2018 20:43:02 +0000 (22:43 +0200)]
Merge from default.

6 years agoMerge pull request #105 from davidgiven/dtrg-ass
David Given [Fri, 22 Jun 2018 20:42:11 +0000 (22:42 +0200)]
Merge pull request #105 from davidgiven/dtrg-ass

Prevent ass crashing on error on 64-bit machines.

6 years agoReplace fake-varargs, which doesn't work on 64-bit machines, with real varargs.
David Given [Fri, 22 Jun 2018 20:29:52 +0000 (22:29 +0200)]
Replace fake-varargs, which doesn't work on 64-bit machines, with real varargs.

6 years agoReplace fake-varargs, which doesn't work on 64-bit machines, with real varargs.
David Given [Fri, 22 Jun 2018 20:29:52 +0000 (22:29 +0200)]
Replace fake-varargs, which doesn't work on 64-bit machines, with real varargs.

6 years agoMove some more libc functions into core.
David Given [Fri, 22 Jun 2018 20:20:02 +0000 (22:20 +0200)]
Move some more libc functions into core.

6 years agoRealise that the libc core can safely call other libc core functions, even if
David Given [Thu, 21 Jun 2018 21:24:23 +0000 (23:24 +0200)]
Realise that the libc core can safely call other libc core functions, even if
they're not defined in the core: so putw() can call stdio stuff, for example.
So the earlier concept of pureness isn't necessary. Rename accordingly.

6 years agoThe ctype functions are pure.
David Given [Thu, 21 Jun 2018 21:06:29 +0000 (23:06 +0200)]
The ctype functions are pure.

6 years agoThe maths library is pure.
David Given [Thu, 21 Jun 2018 21:00:33 +0000 (23:00 +0200)]
The maths library is pure.

6 years agoMoved the setjmp functions into the new pure directoy.
David Given [Thu, 21 Jun 2018 20:55:42 +0000 (22:55 +0200)]
Moved the setjmp functions into the new pure directoy.

6 years agoMove the pure locale functions into the new pure directory.
David Given [Thu, 21 Jun 2018 20:54:25 +0000 (22:54 +0200)]
Move the pure locale functions into the new pure directory.

6 years agoMove the pure stdlib functions into the new pure directory.
David Given [Thu, 21 Jun 2018 20:52:31 +0000 (22:52 +0200)]
Move the pure stdlib functions into the new pure directory.

6 years agoRethink the libc layout.
David Given [Thu, 21 Jun 2018 20:47:02 +0000 (22:47 +0200)]
Rethink the libc layout.

6 years agoMove the str and mem functions into the new src/core.
David Given [Thu, 21 Jun 2018 20:39:08 +0000 (22:39 +0200)]
Move the str and mem functions into the new src/core.

6 years agoRun libcc.ansi through clang-format.
David Given [Thu, 21 Jun 2018 20:33:47 +0000 (22:33 +0200)]
Run libcc.ansi through clang-format.

6 years agoMerge pull request #96 from kernigh/kernigh-emu-1
David Given [Wed, 20 Jun 2018 20:30:01 +0000 (22:30 +0200)]
Merge pull request #96 from kernigh/kernigh-emu-1

Fixes to build emulators, ass, int on OpenBSD

6 years agoMerge pull request #103 from davidgiven/dtrg-warnings
David Given [Mon, 18 Jun 2018 20:31:35 +0000 (22:31 +0200)]
Merge pull request #103 from davidgiven/dtrg-warnings

Fix a lot of warnings.

6 years agoTurns out that the compiler needs access to the libpc headers too; refactor
David Given [Mon, 18 Jun 2018 20:17:38 +0000 (22:17 +0200)]
Turns out that the compiler needs access to the libpc headers too; refactor
into a separate target to avoid build loops and make it work.

6 years agoAnsify and warning fix.
David Given [Sun, 17 Jun 2018 20:30:27 +0000 (22:30 +0200)]
Ansify and warning fix.

6 years agoRun C files through clang-format.
David Given [Sun, 17 Jun 2018 14:11:29 +0000 (16:11 +0200)]
Run C files through clang-format.

6 years agoUse cproto to extract all the prototypes.
David Given [Sun, 17 Jun 2018 14:10:57 +0000 (16:10 +0200)]
Use cproto to extract all the prototypes.

6 years agoAdded a pc.h to contain libpc prototypes; some ansification.
David Given [Sun, 17 Jun 2018 13:54:18 +0000 (15:54 +0200)]
Added a pc.h to contain libpc prototypes; some ansification.

6 years agoMove the private Pascal headers into libpc where they belong.
David Given [Sun, 17 Jun 2018 13:44:33 +0000 (15:44 +0200)]
Move the private Pascal headers into libpc where they belong.

6 years agoWarning fixes.
David Given [Sun, 17 Jun 2018 13:42:26 +0000 (15:42 +0200)]
Warning fixes.

6 years agoWarning fix.
David Given [Sun, 17 Jun 2018 13:34:29 +0000 (15:34 +0200)]
Warning fix.

6 years agoMerge pull request #102 from davidgiven/dtrg-powerpc
David Given [Sun, 17 Jun 2018 09:45:26 +0000 (11:45 +0200)]
Merge pull request #102 from davidgiven/dtrg-powerpc

Add a PowerPC simulator for running the tests.

6 years agoFix edge case in rlwnm when the mask is 32 bits wide. All tests now pass.
David Given [Sun, 17 Jun 2018 09:00:01 +0000 (11:00 +0200)]
Fix edge case in rlwnm when the mask is 32 bits wide. All tests now pass.

6 years agoTurns out that andi and andis only have . forms. Fixed; another test passes.
David Given [Sun, 17 Jun 2018 08:43:39 +0000 (10:43 +0200)]
Turns out that andi and andis only have . forms. Fixed; another test passes.

6 years agoTurns out I was returning values from syscalls in the wrong register; fixed.
David Given [Sun, 17 Jun 2018 08:22:20 +0000 (10:22 +0200)]
Turns out I was returning values from syscalls in the wrong register; fixed.
More tests pass.

6 years agoLots of floating point, bugfixes, and system calls. Most of the tests pass now.
David Given [Sun, 17 Jun 2018 07:24:01 +0000 (09:24 +0200)]
Lots of floating point, bugfixes, and system calls. Most of the tests pass now.

6 years agoDo a bit of floating point stuff; added brk(); fixed a horrible bug where
David Given [Sat, 16 Jun 2018 20:55:23 +0000 (22:55 +0200)]
Do a bit of floating point stuff; added brk(); fixed a horrible bug where
stores with 16-bit displacements were storing the register number and not the
contents of the register.

6 years agoFix a setcr0 bug which was trashing the condition register; some system
David Given [Sat, 16 Jun 2018 06:35:36 +0000 (08:35 +0200)]
Fix a setcr0 bug which was trashing the condition register; some system
calls are now implemented. A few tests more-or-less pass (but crash on
exit).

6 years agoMerge pull request #100 from kernigh/kernigh-pdp
David Given [Fri, 15 Jun 2018 06:40:24 +0000 (15:40 +0900)]
Merge pull request #100 from kernigh/kernigh-pdp

Two fixes for ack -mpdpv7

6 years agoPrevent crash in isatty()
George Koehler [Fri, 15 Jun 2018 04:48:29 +0000 (00:48 -0400)]
Prevent crash in isatty()

The existing code allocated 2 bytes (char*), but gtty() needs 6 bytes
(struct sgttyb), so isatty() smashed the stack and corrupted its
return address, probably causing SIGBUS or SIGSEGV.

Fix by switching to TIOCGETD, which needs 2 bytes.  TIOCGETD isn't in
the manual for tty(4), but does appear in
https://minnie.tuhs.org//cgi-bin/utree.pl?file=V7/usr/sys/dev/tty.c

This fixes hilo_c.pdpv7 and hilo_mod.pdpv7 in simh-pdp11.

6 years agoUse 2-byte alignment in pdpv7 to prevent SIGBUS.
George Koehler [Fri, 15 Jun 2018 04:17:12 +0000 (00:17 -0400)]
Use 2-byte alignment in pdpv7 to prevent SIGBUS.

Change the alignment in C structs (wa, pa, sa, and so on) from 1 to 2
bytes.  This prevents the SIGBUS when PDP-11 Unix V7 catches the
misalignment.  This fixes hilo_p.pdpv7 in simh-pdp11.

Change ALIGN to document that sections have 2-byte alignment.  This
change should have no effect, because the sections only contain 2-byte
values.

6 years agoGot the emulator to the point where we're hitting the first major emulation bug
David Given [Thu, 14 Jun 2018 12:53:39 +0000 (05:53 -0700)]
Got the emulator to the point where we're hitting the first major emulation bug
(the calloc test hangs).

6 years agoSome code runs (up to needing setcr0).
David Given [Thu, 14 Jun 2018 11:41:21 +0000 (04:41 -0700)]
Some code runs (up to needing setcr0).

6 years agoImplement a non-functional skeleton of the PowerPC emulator (with, hopefully,
David Given [Thu, 14 Jun 2018 10:07:36 +0000 (03:07 -0700)]
Implement a non-functional skeleton of the PowerPC emulator (with, hopefully,
most of the instruction decode done).