Commit graph

133 commits

Author SHA1 Message Date
David Given
a9a0b37b14 Plats which use aelflod need to depend on it. 2016-11-26 12:07:08 +01:00
David Given
98c761d5c0 Enable tests for linux386 via qemu-i386. 2016-11-26 11:58:02 +01:00
David Given
cf33bd6cc4 Enable tests for linuxppc via qemu-ppc. 2016-11-26 11:56:17 +01:00
David Given
8a58614aef Rework the tests to run on pc86; lots of test fixes for the brk() test, which
was nearly useless; lots of fixes to qemuppc and pc86 sbrk(), which was broken;
change the pc86 console to echo output to the serial port (needed for running
tests on qemu).
2016-11-26 11:23:25 +01:00
David Given
5f66f06dc6 Refactored the tests to make the generic across different plats. 2016-11-25 21:02:51 +01:00
David Given
bfa8e501a3 Make pc86 echo console output to the serial port, so qemu can pipe it to
stdout.
2016-11-25 20:28:41 +01:00
David Given
c084f9f224 Remove the Mark() and Release() procedures from the Pascal compiler and
standard library, because they never worked and come from an achingly old
version of the Pascal specification. Fix the implementations of New() and
Dispose() to use the standard C memory allocator rather than rolling their own
(also in C). Write test!
2016-11-24 20:35:26 +01:00
David Given
899f1ea4f3 Forgot to check in the change to qemuppc's brk() to set errno on memory
allocation failure.
2016-11-24 19:47:11 +01:00
David Given
991f47098c Add a test for brk() and sbrk(). 2016-11-23 22:28:21 +01:00
David Given
6cd2a9ba81 Add a test for calloc(). 2016-11-23 22:22:04 +01:00
David Given
36ab90385f Change sbrk() to take an int rather than an intptr_t (following the OpenBSD way
rather than the Linux way; various non-C bits of the ACK assume it takes an
int, so it's cleaner).
2016-11-23 22:06:24 +01:00
David Given
0aac9aafd3 Combine brk() with sbrk(); modify brk() to update the sbrk(0) value. 2016-11-23 22:04:21 +01:00
David Given
6e9c2d5c0d Also call .trp .trap, for ncg compatibility. 2016-11-20 19:39:28 +01:00
David Given
2d0bc7ef0d Finally fix the build system issue where ackprogram would try to explicitly
link all the language libraries.
2016-11-20 18:57:44 +01:00
David Given
953c08839f inn works now; add a helper for it. 2016-11-20 12:53:44 +01:00
David Given
196fa914b3 lxa now works, I hope; traps are better (and stubbed out on qemuppc). 2016-11-20 11:57:21 +01:00
David Given
d5328492d7 Better handling of float conversions; more tests; converting to unsigned ints
works now.
2016-11-20 11:27:40 +01:00
David Given
132baac78a Add some more tests. 2016-11-20 10:46:53 +01:00
David Given
454a7494bb cif8 and cuf8 work now. More tests. 2016-11-19 11:42:30 +01:00
David Given
db3564f35a Use .hol0 as an additional name for hol0; mcg requires it. 2016-11-19 11:09:07 +01:00
David Given
d31bc6a3f9 Made csa and csb work with mcg; adjust the libem functions and the
corresponding invocation in the ncg table so the same helpers can be used for
both mcg and ncg. Add a new IR opcode, FARJUMP, which jumps to a helper
function but saves volatile registers.
2016-11-19 10:55:41 +01:00
David Given
a4616b7124 Betterer timeout handling. 2016-11-17 22:04:50 +01:00
David Given
c25ad82a89 Tests can now specify (via a hacky filename suffix) which runtime they want. 2016-11-16 21:08:03 +01:00
David Given
71e6ca26d5 Add another test. 2016-11-16 20:56:45 +01:00
David Given
edfee33576 Cleanup; the test driver is now way more robust. 2016-11-16 20:50:14 +01:00
David Given
cc686ded62 Get subtractions the right way round. 2016-11-15 20:25:11 +01:00
David Given
5e8babf098 Add a basic integer shift test. 2016-11-14 22:12:13 +01:00
David Given
c6bce0aaee Add basic integer comparison test. 2016-11-14 22:01:25 +01:00
David Given
6a4f465f53 Add a rather bodged test framework for the qemuppc plat, which only runs if the
qemu-system-ppc emulator is installed.
2016-11-13 13:37:22 +01:00
David Given
f52cb45e49 Add just enough Open Firmware support for an output console. 2016-11-12 22:09:54 +01:00
David Given
48e74f46fc Add the very experimental qemuppc plat, intended to generate minimal images
which can be emulated using qemu (for, hopefully, a test suite). Currently it
generates images which won't run because there's no RAM.
2016-11-12 19:20:58 +01:00
David Given
8c3670483f Get top working with the PowerPC; use it to eliminate useless branches and
moves.
2016-10-29 23:37:11 +02:00
David Given
a8c4dac67c Merge from default (merging in George Koehler's PowerPC changes). 2016-10-29 22:40:40 +02:00
David Given
5f0164db62 Bolt mcg into the PowerPC backend. It doesn't build yet, but it is generating
*some* code.
2016-10-17 00:06:06 +02:00
David Given
d539389e81 Merge in the unfinished PowerPC branch. 2016-10-16 22:38:27 +02:00
George Koehler
9017ba9dea Merge branch 'default' into kernigh-linuxppc 2016-09-30 13:55:06 -04:00
George Koehler
ce5faba919 Remove .linenumber and .filename; use hol0 and hol0+4.
We need this because some .e files in lang/ are using 'loe 0' and 'lae
4' to load the line number from hol0 and filename from hol0+4.
2016-09-30 13:40:36 -04:00
George Koehler
b427d33f9f Define the begdata, begrom, begbss symbols for linuxppc.
I copied the definitions from linux386 and linux68k.

This change also moves _errno and the other common symbols in boot.s
from .text to .bss.  Common symbols belong in .bss, but the assembler
seems dumb enough to put them in any section.
2016-09-30 13:21:42 -04:00
George Koehler
865ef629dd Multiple tweaks to plat/linuxppc/descr
Don't define __POWERPC.  I don't know any other compiler that defines
__POWERPC and don't want to invent a new macro.  Apple's gcc 4.0.1
from Xcode 2.5 defines __ppc__, _ARCH_PPC, __POWERPC__.  Debian's gcc
4.9.2-10 defines _ARCH_PPC, __PPC__, __powerpc__, __PPC, __powerpc,
PPC, powerpc.

Move the base vm address from 0x80000000 down to 0x10000000, as this
is where Debian loads /bin/true.  This is still higher than the base
addresses for linux386 and linux68k.

Sync led's arguments with linux386.
2016-09-21 16:26:30 -04:00
George Koehler
f6dc6f6875 Implement isatty() for Linux.
If it understands TIOCGETD, then it is a tty, else it isn't one.  This
seems to help Basic's input statement so I can see the prompt before
I enter my input.
2016-09-20 21:28:37 -04:00
George Koehler
5b69777647 Rename our pseudo-opcode 'la' to 'li32'.
GNU as has "la %r4,8(%r3)" as an alias for "addi %r4,%r3,8", meaning
to load the address of the thing at 8(%r3).  Our 'la', now 'li32',
makes an addis/ori pair to load an immediate 32-bit value.  For
example, "li32 r4,23456789" loads a big number.
2016-09-18 17:03:23 -04:00
David Given
80cb6ba927 Eliminate the RELOH2 relocation, as it never worked --- the address would be
calculated incorrectly because of overflow errors.

Replace it with an extended RELOPPC relocation which understands addis/ori
pairs; add an la pseudoop to the assembler which generates these and the
appropriate relocation. Make good.

--HG--
branch : dtrg-experimental-powerpc-branch
2016-09-17 12:43:15 +02:00
David Given
45a950571d Mostly add support for the experimental and largely broken linuxppc platform.
(Doesn't quite build.)

--HG--
branch : dtrg-experimental-powerpc-branch
2016-09-15 23:12:03 +02:00
David Given
8c94b1316c Add unlink system call. 2016-09-04 19:23:02 +02:00
David Given
f67c98e239 Distributions are a pain --- let's not bother any more. Instead, we just tag
the repository and download a complete snapshot, old and ancient stuff and all.
2016-09-02 23:00:38 +02:00
David Given
612e38f1c6 Remove the old make-based build system, plus some big chunks of horribly
obsolete protomake build system.
2016-09-02 22:17:51 +02:00
David Given
5bae29a00c ego now builds and is used.
This needed lots of refactoring to ego --- not all platforms have ego descr
files, and ego will just crash if you invoke it without one. I think originally
it was never intended that these platforms would be used at -O2 or above.

Plats now only specify the ego descr file if they have one.
2016-08-21 22:01:19 +02:00
David Given
1a7b4f8729 Build the examples when doing a normal build; this exercises the compiler as a
whole and is one step further towards a proper test suite.
2016-08-20 14:05:24 +02:00
David Given
edee22510b liblinux is no more; its files are now in libsys. 2016-08-20 14:03:49 +02:00
David Given
52eaf753b6 rpi has a time() function; don't try to call gettimeofday(). 2016-08-20 14:03:19 +02:00