Commit graph

2515 commits

Author SHA1 Message Date
David Given 717b77dd0a Instruction selection is so important the file needs a longer name. 2016-09-24 22:50:53 +02:00
David Given 629e0ddfc6 Some instruction selection is now happening. 2016-09-24 22:46:08 +02:00
David Given c8fcbe282a More grammar changes. 2016-09-24 19:03:55 +02:00
David Given 2acc4ed29d IR codes are now owned by mcgg; ir terminals are inserted into the table during
compilation (so you can refer to them).
2016-09-24 18:31:35 +02:00
David Given 1516657907 Crudely bolt on mcgg to mcg itself. 2016-09-24 17:20:40 +02:00
David Given 6643d39b2c Fix some late-night typo bugs. 2016-09-24 01:09:32 +02:00
David Given bb9aa030a5 Procedure compilation now happens after the entire EM file has been read in (so
that we can look inside data blocks which might be defined in the future...
sigh, csa and csb). csa and csb no longer generate invalid IR.
2016-09-24 01:04:00 +02:00
David Given ed67d427c9 Replaced the block splicer with a trivial block eliminator (which rewrites
jumps to blocks which contain only a jump). Don't bother storing the bb graph
in the ir nodes; we can find it on demand by walking the tree instead ---
slower, but much easier to understand and more robust. Added a terrible map
library.
2016-09-23 23:59:15 +02:00
David Given f8bbf9e87d Each pass now lives in its own source file; much cleaner. 2016-09-23 21:07:16 +02:00
David Given 9077baa850 Add a bodged in algorithm for converting basic block communication from stacked
variables to SSA. Also add dead block removal and block splicing. IR code is
much better now.
2016-09-22 23:19:29 +02:00
David Given 6a74cb2e11 Tracing cleanup. Simplified the IR code. Some more opcodes. 2016-09-22 00:15:48 +02:00
David Given 4546dd5f22 Massive grammar overhaul and refactor. Hacked in support for predicates, where
instructions can be turned on and off based on their parameters. New lexer
using a lexer. Now quite a lot of the way towards being a real instruction
selector.
2016-09-21 00:43:10 +02:00
David Given 36d7d1ee4e Create hacky fake basic blocks for data fragments, used to track which
instruction labels descriptor blocks refer to; this allows csa and csb to know
where they're going.
2016-09-20 00:19:39 +02:00
David Given dcba03646b Treebuilder now gets to the bottom of my test file, merrily generating
(probably horribly broken) IR.
2016-09-19 23:30:41 +02:00
David Given 6ce2495aeb Store the EM code up front and build the basic block graph *before*
generating the IR code. Lots more IR code.
2016-09-19 23:06:59 +02:00
David Given 176cd7365c Archival checking of the half-written IR treebuilder. 2016-09-18 23:24:54 +02: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
George Koehler 9db305b338 Enable the Hall check again, and get powerpc to pass it.
Upon enabling the check, mach/powerpc/ncg/table fails to build as ncgg
gives many errors of "Previous rule impossible on empty stack".  David
Given reported this problem in 2013:
  https://sourceforge.net/p/tack/mailman/message/30814694/

Commit c93cb69 commented out the error in util/ncgg/cgg.y to disable
the Hall check.  This commit enables it again.  In ncgg, the Hall
check is checking that a rule is possible with an empty fake stack.
It would be possible if ncg can coerce the values from the real stack
to the fake stack.  The powerpc table defined coercions from STACK to
{FS, %a} and {FD, %a}, but the Hall check didn't understand the
coercions and rejected each rule "with FS" or "with FD".

This commit removes the FS and FD tokens and adds a new group of FSREG
registers for single-precision floats, while keeping FREG registers
for double precision.  The registers overlap, with each FSREG
containing one FREG, because it is the same register in PowerPC
hardware.  FS tokens become FSREG registers and FD tokens become FREG
registers.  The Hall check understands the coercions from STACK to
FSREG and FREG.  The idea to define separate but overlapping registers
comes from the PDP-11 table (mach/pdp/ncg/table).

This commit also removes F0 from the FREG group.  This is my attempt
to keep F0 off the fake stack, because one of the stacking rules uses
F0 as a scratch register (FSCRATCH).
2016-09-18 15:08:55 -04:00
George Koehler 03b067e1d5 Add the missing .lar4 and .sar4 for powerpc.
Inspired by the sparc code (mach/sparc/libem/lar.s).  My powerpc code
might still have bugs, but it's enough for examples/hilo.mod to work.

May need to 'make clean' or touch a build.lua file, so ackbuilder can
notice the new lar4.s and sar4.s files and build them.
2016-09-17 23:55:55 -04:00
David Given 24380e2a93 Abstract out the EM reader; skeleton of the tree builder. 2016-09-18 00:02:16 +02:00
David Given 2eee391aef Basic skeleton of em parser. 2016-09-17 22:21:47 +02: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 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 856eb120b3 Add files which got missed in the initial build pass. 2016-08-20 14:04:17 +02:00
David Given 204f932ed2 Raspberry Pi backend now builds. 2016-08-20 12:40:13 +02:00
David Given 4d24666432 Move util/data into modules/src/em_data, for consistency with the other
modules.
2016-08-14 14:09:38 +02:00
David Given 38fa6941d5 linux68k builds now. 2016-08-14 11:34:18 +02:00
David Given f253b6a169 linux386 builds. Also, forgot to turn back on the language runtimes. 2016-08-14 10:37:55 +02:00
David Given 262c5fedcf Biggish refactor to break cycles; my build rules were full of them. cpm builds,
which requires top and topgen.
2016-08-14 01:39:40 +02:00
David Given 0d77cb8279 We can build our first C file. 2016-08-07 21:56:53 +02:00
David Given b50dc4214a Add check for undefined variables. Find undefined variables. Fix undefined
variables.
2016-08-05 00:01:55 +02:00
David Given 5e84be70fd Massive ackbuilder refactor --- cleaner and more expressive. Lists
are automatically flattened (leading to better build files), and the
list and filename functions are vastly more orthogonal.
2016-08-04 23:51:19 +02:00
David Given b2bb4ce3b2 Builds libend (the simplest library). Becoming obvious I need to rework the way
ackbuilder deals with lists.
2016-07-30 00:39:22 +02:00
David Given a8a9d1bbfa yacc, ncgg; platform ncg builds now. 2016-07-26 23:35:30 +02:00
David Given bff5c4019c Baby steps towards building a platform --- make the assembler work.
Add ackbuilder support for C preprocessor files and yacc.
2016-07-24 00:50:02 +02:00
David Given 88bd7ce126 Remove defunct pmfiles.
--HG--
branch : default-branch
2016-06-03 13:56:50 +02:00
David Given ef8e6e25e0 Fix a whole pile of issues related to the failed attempt to increase
the number of types of relocation possible in the object file. (Now,
hopefully, working.)

Also change the object serialiser/deserialiser to never try to read or
write raw structures; it's way safer this way and we don't need the
performance boost any more.

--HG--
branch : default-branch
2016-03-18 21:46:55 +01:00
David Given 88e13ecce3 Don't use the ACK preprocessor on host files --- use the host preprocessor
instead.

--HG--
branch : default-branch
2016-03-14 20:58:19 +01:00
David Given e85991ec86 Fix stray 'call file'.
--HG--
branch : default-branch
2016-03-13 21:40:05 +01:00
David Given ff0c78cc78 Merge from default.
--HG--
branch : dtrg-videocore-branch-branch
2016-03-13 21:13:09 +01:00
David Given 62cc636f10 Merge.
--HG--
branch : dtrg-videocore
2015-03-23 00:15:42 +01:00
David Given 9f23fbbe6a Allow machines to use cg if they wish.
--HG--
rename : mach/proto/ncg/build.mk => mach/proto/cg/build.mk
rename : util/ncgg/build.mk => util/cgg/build.mk
2015-03-23 00:08:51 +01:00
David Given c5018d7088 64-bit-ify (adhoc varargs are evil). 2015-03-23 00:07:59 +01:00
David Given 3d5e72e20b Newer versions of GNU Make have a new function which collides with a
variable we're using; change the name of the variable.
2015-03-22 12:09:46 +01:00
David Given e36d739fa4 Add (largely untested) float/int conversion.
--HG--
branch : dtrg-videocore
2013-07-01 13:05:36 +01:00
David Given 8b6951dac0 Fix incorrect offset encoding in lea (sp) instructions.
--HG--
branch : dtrg-videocore
2013-06-29 00:35:07 +01:00
David Given edb174da8d Fix incorrect encoding of 'push lr' and 'pop pc'.
--HG--
branch : dtrg-videocore
2013-06-29 00:32:39 +01:00
David Given 29af6f1adb ISA change: clz has been renamed to log2.
--HG--
branch : dtrg-videocore
2013-06-27 11:25:50 +01:00
David Given 2b3f95de0b Fix jump range checking in the addcmpb family of instructions.
--HG--
branch : dtrg-videocore
2013-06-26 23:32:54 +01:00
David Given d94c1c8150 Updated distr files.
--HG--
branch : dtrg-videocore
rename : mach/i80/.distr => mach/vc4/.distr
rename : plat/cpm/.distr => plat/rpi/.distr
2013-06-21 23:38:21 +01:00
David Given fd2360be0f Ship assembler man pages.
--HG--
branch : dtrg-videocore
rename : man/8080_as.6 => man/i80_as.6
rename : man/m68k2_as.6 => man/m68020_as.6
2013-06-21 23:20:50 +01:00
David Given bbd4b46850 Fix stack corruption when adjusting SP. Be a bit more rigorous about clearing the pseudostack on branch/labels.
--HG--
branch : dtrg-videocore
2013-06-07 21:25:38 +01:00
David Given 3e0123ca03 Fix treatment of out-of-range values in switch csa.
--HG--
branch : dtrg-videocore
2013-06-05 23:57:23 +01:00
David Given 86c6fa2f1e Implement NOT...
--HG--
branch : dtrg-videocore
2013-05-30 23:50:19 +01:00
David Given d3e3e72860 Update from trunk.
--HG--
branch : dtrg-videocore
2013-05-29 15:03:48 +01:00
David Given e0c121d6e6 Use relocation enumerations rather than hard-coded values for relocation types
(these were causing problems due to the enumeration values having changed).
2013-05-29 14:11:04 +01:00
David Given 1f36370d87 Implement nop (the C compiler sometimes generates this!).
--HG--
branch : dtrg-videocore
2013-05-26 22:54:53 +01:00
David Given ef25c53c9c Fix bug in ine/dee.
--HG--
branch : dtrg-videocore
2013-05-26 18:59:19 +01:00
David Given 366cd10194 Remainders are calculated correctly. printf now works.
--HG--
branch : dtrg-videocore
2013-05-26 13:13:58 +01:00
David Given 510888e6d5 .csb now works.
--HG--
branch : dtrg-videocore
rename : mach/vc4/libem/csa.s => mach/vc4/libem/csb.s
2013-05-26 13:06:25 +01:00
David Given 6284512b37 Fix erroneous section check (symbols may not have a defined section in pass 1).
--HG--
branch : dtrg-videocore
2013-05-26 00:35:15 +01:00
David Given 308d41e083 Added triple-quad load and store (used by the signal stuff).
--HG--
branch : dtrg-videocore
2013-05-26 00:22:08 +01:00
David Given 8c21a2ef9b Stop fighting the terrible code and remove the regvar support --- it didn't help much and was a pain.
--HG--
branch : dtrg-videocore
2013-05-25 23:58:35 +01:00
David Given 3b07fee160 Major bugfix where instructions weren't being shrunk correctly. (Turns out there's built-in support for doing this, which I hadn't found.)
--HG--
branch : dtrg-videocore
2013-05-25 23:26:10 +01:00
David Given b6680a48cc Disable register variables. The code is a bit worse, but having two stackable registers makes things much easier to understand.
--HG--
branch : dtrg-videocore
2013-05-25 13:31:58 +01:00
David Given d7efb0a32c Implement .csa.
--HG--
branch : dtrg-videocore
rename : mach/vc4/libem/dummy.s => mach/vc4/libem/csa.s
2013-05-25 13:31:27 +01:00
David Given 2ee79ab0b2 Encode comparing branch correctly.
--HG--
branch : dtrg-videocore
2013-05-25 13:31:01 +01:00
David Given 472f778342 Don't write out constant data as big-endian! Some other cleanups.
--HG--
branch : dtrg-videocore
2013-05-25 00:33:38 +01:00
David Given 98a51732ab Various codegen tweaks.
--HG--
branch : dtrg-videocore
2013-05-24 17:04:29 +01:00
David Given 2c7ee27206 Double-quads can be loaded and stored (more) correctly.
--HG--
branch : dtrg-videocore
2013-05-22 23:55:23 +01:00
David Given 6cbe6e1c4e Better treatment of sign extension.
--HG--
branch : dtrg-videocore
2013-05-22 23:12:48 +01:00
David Given 7537c85e0a Generate adds instructions when a shift-and-add is seen (useful for array indexing).
--HG--
branch : dtrg-videocore
2013-05-22 21:37:48 +01:00
David Given cdce394b6c Generate ld rd, (rs) instructions properly.
--HG--
branch : dtrg-videocore
2013-05-22 11:02:46 +01:00
David Given 9e556d8b7b Optimise direct access to globals, and incrementing and decrementing locals.
--HG--
branch : dtrg-videocore
2013-05-22 10:55:13 +01:00
David Given 08c4334224 Typo fixes.
--HG--
branch : dtrg-videocore
2013-05-22 00:44:04 +01:00
David Given f904465e9c Fix signedness problem that was showing up on ARM.
--HG--
branch : dtrg-videocore
2013-05-22 00:16:16 +01:00
David Given 5e9102955c Reworked VC4 relocations and some of the instruction encoding to be actually correct. Now generating what could be real code!
--HG--
branch : dtrg-videocore
2013-05-21 23:17:30 +01:00
David Given 1312fe298b Now compiles (incorrectly) the entire libc, libpc, libm2 and libbasic!
--HG--
branch : dtrg-videocore
2013-05-21 20:05:26 +01:00
David Given 877e06ed89 Lots more opcodes including float support. Define float and double to be the
same thing (as the VC4 seems not to have double-precision float support).

--HG--
branch : dtrg-videocore
2013-05-21 18:16:30 +01:00
David Given 6cdea73e84 Add a lot more opcodes.
--HG--
branch : dtrg-videocore
2013-05-20 23:27:45 +01:00
David Given d6565f4d5b Fix typo.
--HG--
branch : dtrg-videocore
2013-05-20 23:27:31 +01:00
David Given 970f2bae62 Major revamp to simplify and use 2op instructions. Better code. Now looks like it may work one day.
--HG--
branch : dtrg-videocore
2013-05-20 22:35:12 +01:00
David Given 5082b2a5d7 Add lea instruction. Fix dependency issues.
--HG--
branch : dtrg-videocore
2013-05-20 19:56:33 +01:00
David Given 11890026db Push/pop are the right way round. Don't corrup short-form ALU instructions. Correct encoding of push/pop register ranges.
--HG--
branch : dtrg-videocore
2013-05-19 23:34:42 +01:00
David Given 76ba0bf6b3 First steps towards a code generator.
--HG--
branch : dtrg-videocore
2013-05-19 23:33:42 +01:00
David Given 80f85001fa Correctly emit constants in some ALU instructions.
--HG--
branch : dtrg-videocore
2013-05-19 23:19:10 +01:00
David Given a46ee91859 Fix warning.
--HG--
branch : dtrg-videocore
2013-05-19 23:18:36 +01:00
David Given 4f15423d63 Add compare-and-branch instructions.
--HG--
branch : dtrg-videocore
2013-05-19 18:40:19 +01:00
David Given 80afe75c9b Added memory operations that work on fixed up addresses.
--HG--
branch : dtrg-videocore
2013-05-19 13:03:53 +01:00
David Given febe8ca937 Add register offset and postincrement memory operations.
--HG--
branch : dtrg-videocore
2013-05-19 12:39:35 +01:00
David Given fc2833d456 Add most vanilla memory load/store instructions.
--HG--
branch : dtrg-videocore
2013-05-19 00:56:56 +01:00
David Given 26877d3c4f Add a whole bunch of VC4 opcodes.
--HG--
branch : dtrg-videocore
2013-05-17 23:30:49 +01:00
David Given 5b4aa07dee Merge fixes from trunk.
--HG--
branch : dtrg-videocore
2013-05-17 15:28:04 +01:00
David Given e7c2029c9c Dependency fixes. 2013-05-17 00:04:37 +01:00
David Given 32ebc502c8 Skeleton of VideoCore IV support for the Raspberry Pi.
--HG--
branch : dtrg-videocore
rename : mach/powerpc/as/.distr => mach/vc4/as/.distr
rename : mach/powerpc/as/mach0.c => mach/vc4/as/mach0.c
rename : mach/powerpc/as/mach1.c => mach/vc4/as/mach1.c
rename : mach/powerpc/as/mach2.c => mach/vc4/as/mach2.c
rename : mach/powerpc/as/mach3.c => mach/vc4/as/mach3.c
rename : mach/powerpc/as/mach4.c => mach/vc4/as/mach4.c
rename : mach/powerpc/as/mach5.c => mach/vc4/as/mach5.c
rename : mach/i86/build.mk => mach/vc4/build.mk
rename : mach/powerpc/libem/powerpc.h => mach/vc4/libem/videocore.h
rename : mach/i86/libend/.distr => mach/vc4/libend/.distr
rename : mach/i86/libend/edata.s => mach/vc4/libend/edata.s
rename : mach/i86/libend/em_end.s => mach/vc4/libend/em_end.s
rename : mach/i86/libend/end.s => mach/vc4/libend/end.s
rename : mach/i86/libend/etext.s => mach/vc4/libend/etext.s
rename : mach/powerpc/ncg/.distr => mach/vc4/ncg/.distr
rename : mach/powerpc/ncg/mach.c => mach/vc4/ncg/mach.c
rename : mach/powerpc/ncg/mach.h => mach/vc4/ncg/mach.h
rename : mach/powerpc/ncg/table => mach/vc4/ncg/table
rename : plat/pc86/descr => plat/rpi/descr
2013-05-17 00:03:38 +01:00
David Given e5f6d5acfa Fix buffer overrun looking up type information for op_lab pseudoops (as
they're not EM opcodes, we shouldn't look them up in em_flags!).
2013-05-16 22:02:59 +01:00
David Given 24ef1627ec A few last build tweaks.
--HG--
branch : dtrg-buildsystem
2013-05-16 14:20:58 +01:00
David Given 11377070fd Update distribution files.
--HG--
branch : dtrg-buildsystem
2013-05-15 23:46:15 +01:00
David Given 8fbce949f5 Now describe the make-based build system in the README.
--HG--
branch : dtrg-buildsystem
2013-05-15 23:12:05 +01:00
David Given a68b117e96 Add missing dependency.
--HG--
branch : dtrg-buildsystem
2013-05-14 14:55:29 +01:00
David Given 07453d184a Top, topgen, aelflod. Moved the libraries back into the platform-specific
directories --- wrangling descr files was too hard. C programs can be built
for cpm, pc86, linux386, linux68k!

--HG--
branch : dtrg-buildsystem
rename : util/ack/build.mk => util/led/build.mk
rename : util/LLgen/build.mk => util/topgen/build.mk
2013-05-13 23:26:15 +01:00
David Given 442306d557 Split off some of the platform-independent stuff (such as as and ncg).
--HG--
branch : dtrg-buildsystem
rename : plat/pc86/build.mk => mach/i386/build.mk
rename : plat/pc86/build.mk => mach/i80/build.mk
rename : plat/pc86/build.mk => mach/i86/build.mk
rename : plat/pc86/build.mk => mach/m68020/build.mk
rename : plat/pc86/build.mk => mach/powerpc/build.mk
2013-05-13 22:12:46 +01:00
David Given b0c238eb5d Made a start on building the runtimes for each platform and language; the
Linuxes all build.

--HG--
branch : dtrg-buildsystem
rename : modules/src/em_mes/build.mk => modules/src/read_em/build.mk
rename : plat/pc86/build.mk => plat/linux386/build.mk
rename : plat/pc86/build.mk => plat/linux68k/build.mk
rename : plat/pc86/build.mk => plat/linuxppc/build.mk
rename : util/ack/build.mk => util/misc/build.mk
2013-05-12 23:51:55 +01:00
David Given c1aca7dae5 First milestone of replacing the build system.
--HG--
branch : dtrg-buildsystem
rename : lang/cem/cpp.ansi/Parameters => lang/cem/cpp.ansi/parameters.h
2013-05-12 20:45:55 +01:00
David Given bcfb3d802f Add pmfile for m68020 libend.
--HG--
branch : dtrg-experimental-powerpc
2013-05-09 00:58:35 +01:00
David Given 8e2d027c49 Add pmfile for m68020 libem.
--HG--
branch : dtrg-experimental-powerpc
2013-05-09 00:57:47 +01:00
David Given c93cb69959 Check in incomplete Linux PowerPC and M68K work.
--HG--
branch : dtrg-experimental-powerpc
2013-05-08 00:48:48 +01:00
George Koehler 0131ca4d46 Delete 689 undead files.
These files "magically reappeared" after the conversion from CVS to
Mercurial.  The old CVS repository deleted these files but did not
record *when* it deleted these files.  The conversion resurrected these
files because they have no history of deletion.  These files were
probably deleted before year 1995.  The CVS repository begins to record
deletions around 1995.

These files may still appear in older revisions of this Mercurial
repository, when they should already be deleted.  There is no way to fix
this, because the CVS repository provides no dates of deletion.

See http://sourceforge.net/mailarchive/message.php?msg_id=29823032
2012-09-20 22:26:32 -04:00
dtrg 481bcd8a8b Added a very-nearly-noop peephole optimiser for Z80. 2008-03-20 23:20:08 +00:00
dtrg fc44fe2185 Properly handles files ending in a partial line. 2008-03-20 22:50:50 +00:00
dtrg 4dd1ff6d80 Archival checkin (semi-working code). 2007-11-02 18:56:58 +00:00
cvs2hg 58e5e12ead fixup commit for tag 'release-6-0-pre-3' 2007-04-29 23:09:25 +00:00
dtrg 54ce3f451b Configured distr system for the 6.0pre3 release. 2007-04-29 23:09:24 +00:00
dtrg 663f4f2fb5 Cleaned up a bit and made work with the new platform architecture. 2007-04-29 23:03:24 +00:00
dtrg df088c184b Added optimised rules for int<<8 and uint>>8 (which can be done with simple register shuffling rather than calling .sli). 2007-04-29 23:00:31 +00:00
dtrg be8baf3da6 Added cpm platform. 2007-04-27 22:42:41 +00:00
dtrg 440d6faadd Fixed a bug where loc lol stf was getting the constant pushed onto the stack *after* stf had popped it off. 2007-04-27 22:15:31 +00:00
dtrg 24ea8aee3d Updated for the 6.0pre2 release. 2007-04-24 20:45:58 +00:00
dtrg 04860c08a8 Updated to work with the linux386 platform. 2007-04-21 22:57:51 +00:00
dtrg daee8da3c4 yacc source files are now run through the ANSI C preprocessor, not the K&R one. 2007-04-21 22:55:59 +00:00
dtrg 4428647786 Everything is built in ANSI C now. 2007-04-21 22:55:04 +00:00
dtrg b611731ec3 Updated .distr files for the new release. 2007-02-25 12:51:55 +00:00
dtrg f6a41864cf Moved to /h. 2007-02-25 12:45:24 +00:00
dtrg 5c5f711cbb Done a major overhaul of the way target include files are installed and
how platform libraries are built. The ARCH pm variable has now been
renamed PLATFORM (which is more accurate) and a different ARCH
variable added, which represents the CPU family rather than the
hardware platform.
2007-02-20 00:46:10 +00:00
dtrg 809cd2ef0b Added a definition of endrom. 2007-02-20 00:42:23 +00:00
dtrg 5165f0b11f Added some comments and a CVS header. 2007-02-20 00:41:26 +00:00
dtrg c21ba9ed0f Updated to work with the new version of pm. 2006-11-11 22:59:52 +00:00
dtrg dbe10d2c19 Updated to the version 0.1 of Prime Mover (which involves some syntax changes). 2006-10-15 00:28:12 +00:00
dtrg 9bcefaafa8 Broke dependency on tool_cpp in order to speed up the build. 2006-07-30 23:41:16 +00:00
dtrg 014be56fb0 Replaced calls to the custom strindex() and strrindex() functions with the
exactly equivalent and standard strchr() and strrchr() functions instead.
2006-07-23 20:01:02 +00:00
dtrg 304c0e21a0 Added support for the top target peephole optimiser. 2006-07-22 12:31:19 +00:00
dtrg fdcdaadcb8 Rationalised use of #includes to be more standards-compliant. 2006-07-22 12:28:20 +00:00
dtrg 1a037b9685 Added support for the ego global optimisation suite. 2006-07-22 00:52:01 +00:00
dtrg 34ae7c4634 Removed duplicate (and incorrect) system function declarations. 2006-07-21 11:17:18 +00:00
dtrg db0b628497 Removed a definition of 'struct label' as 'label_t', as it clashes with
a common Posix extension on BSD systems.
2006-07-21 10:35:34 +00:00
dtrg 097c640a6c First version in CVS. 2006-07-20 23:24:28 +00:00
dtrg 6073ee934e Rationalised use of #includes to be more standards-compliant. 2006-07-19 14:09:05 +00:00
dtrg 4c0a0e6119 Rationalised use of #includes to be more standards-compliant. 2006-07-18 17:10:29 +00:00
dtrg 1eb1cb6f62 Renamed the 'index' variable to 'offset', to prevent clashes with the libc index() function. 2006-07-18 17:00:30 +00:00
dtrg 4f6fff6b1f Removed unnecessary commas seperating yacc tokens, to prevent warnings. 2006-07-18 16:59:11 +00:00
dtrg 2aca7fbaf4 Renamed the private 'atol()' function to 'our_atol()' to avoid clashes with the libc one. 2006-07-18 16:57:51 +00:00
dtrg 13a9ff3379 Removed unnecessary commas seperating yacc tokens, to prevent warnings. 2006-07-18 16:52:08 +00:00
dtrg 423368e42f Renamed the 'index()' function to 'indexmode()', to prevent clashes with the libc index() function. 2006-07-18 16:50:22 +00:00
dtrg 45ed0df6d0 Removed a #define that was also defined in cv.c. 2006-07-18 16:48:21 +00:00
dtrg 4fdd9b83fc Converted to use termios, not sgtty. (pbetti@e-tech.net) 2005-08-10 22:48:40 +00:00
dtrg 35bd1df1aa Now includes stdlib.h to avoid implicit call declarations. 2005-06-25 15:50:40 +00:00
dtrg dd400ca720 Removed a call to _cleanup(), which appears to be a Minixism (and should be unnecessary). 2005-06-24 22:12:02 +00:00
dtrg 9bc8c07deb Replaced references to /usr/tmp with references to /tmp. 2005-06-24 22:08:47 +00:00
ceriel 384c4bc698 Fixed bug with 4-byte sets on 2-byte machines 1998-09-03 12:51:38 +00:00
ceriel 3b3ec3a2af Fixed typo in catchsig.s 1996-11-26 15:05:10 +00:00
ceriel ea09125e30 fixed a bug: STD/LDD was generated on odd-numbered reg 1996-11-19 13:28:41 +00:00
ceriel d0587ef3ab Stupid confusion with fdtox and fxtod 1996-11-18 16:49:54 +00:00
ceriel 740f1d5f75 fix in cmpxchg instruction; i486 book is wrong 1996-04-25 08:38:05 +00:00
ceriel 4baa1312a8 removed 1995-12-06 14:15:11 +00:00
ceriel cdb362b628 removed 1995-12-06 14:04:51 +00:00
ceriel f7157ca24c Copied versions of dv[iu].s from ../../m68k2/libem. 1995-12-05 15:38:55 +00:00
ceriel 71da2cdda9 Fixed some bugs with the setxx instructions 1995-09-12 12:09:08 +00:00
ceriel 8b3437dd24 Fix: setxx instructions should only accept byte registers 1995-09-12 12:08:42 +00:00
ceriel b766e2beab Added libassert for when DEBUG is defined 1995-08-18 07:28:47 +00:00
ceriel a96a9107c8 'ed -' is no longer supported on some systems. replaced by 'ed -s' 1995-08-17 12:22:33 +00:00
ceriel bf6f4f8a6e Minor mod to Makefile 1995-07-27 07:14:54 +00:00
ceriel 5a6d5d877f declare errno in cerror.s 1995-07-26 08:55:56 +00:00
ceriel 2624e5d05c Use _end instead of $_end. $_end does not always indicate the right
position. This should be fixed as well, but how?
1995-07-26 08:52:03 +00:00
ceriel ef30bb3398 Fix by Charles Lindsey: still used reg vars, despite ms_gto 1995-07-26 08:44:35 +00:00
ceriel 41d0c898e5 Fixed typo 1995-07-26 08:43:02 +00:00
ceriel 4978d19bff Several fixes from Charles Lindsey 1995-07-25 16:43:42 +00:00
ceriel 34b3d1fb52 Fix: produced jgt instead of jg 1995-07-25 13:21:53 +00:00
ceriel 5e03b1bebb Fixes: some conditionals were evaluated wrong due to the overflow bit 1995-07-21 12:05:26 +00:00
ceriel fdc0e2efdb minor improvement 1995-03-29 11:57:27 +00:00
ceriel 34f7036b87 Reordered patterns 1995-03-28 11:22:34 +00:00
ceriel 06b0d3775f Added some patterns 1995-03-28 10:01:02 +00:00
ceriel 404d86d544 Added -F option to indicate name of floating point hook 1995-03-17 12:37:06 +00:00
ceriel 65353b1417 Fix: description of setxx should write arg 1995-02-24 11:53:43 +00:00
ceriel 63d0700af1 Fix: made 'rep' equivalent to 'repz' 1994-11-16 14:43:42 +00:00
ceriel 4c26480d25 Fix: sometimes wrote register gotten from pop_reg(); Fix: WINDOWSIZE; Fix: make distr 1994-10-25 16:14:08 +00:00
ceriel e2894d7a6e Header --> Id 1994-06-28 14:41:17 +00:00
ceriel 1db6a3029b Header --> Id 1994-06-24 14:02:31 +00:00
ceriel 6cec9aca97 Header --> Id && bug fix 1994-06-24 07:25:30 +00:00
ceriel 910f827fe2 Header --> Id && bug fix 1994-06-23 16:08:51 +00:00
ceriel 11682328eb get section alignments right 1994-01-14 11:42:01 +00:00
ceriel 6f23614b06 Fixed problem with calloc() declaration 1993-12-09 16:31:05 +00:00
ceriel 6561b6287f Fix: CMP instruction with small constant does not handle PC-relative 1993-12-06 10:14:43 +00:00
ceriel fe99903321 Several changes: did not work right when compiled with the ANSI C compiler 1993-11-24 15:37:27 +00:00
ceriel b7a5c1acc0 export WRITE 1993-11-24 15:32:45 +00:00
ceriel ac6b7e7cf5 Export .stop 1993-11-24 12:57:43 +00:00
ceriel acd80a39f2 Fixed typo 1993-11-24 12:54:29 +00:00
ceriel 1d6775dfa5 Wrong references to _endbss; changed to endbss 1993-11-24 12:45:29 +00:00
ceriel a3de95550e define .cs[ab]4 instead of .cs[ab] 1993-11-24 12:39:21 +00:00
ceriel 0b7ae7a629 .long replaced by .data4 1993-11-24 12:37:16 +00:00
ceriel e30d27c418 Fixed bug in newlabel: assertion was wrong 1993-11-24 12:07:26 +00:00
ceriel 0e6e7bc913 Fixed for machines without .o 1993-11-19 09:59:11 +00:00
ceriel 618041f3ff Some minor modifications 1993-11-19 09:50:20 +00:00
ceriel 6b1a0c486f Fixed too large constant 1993-11-19 09:37:44 +00:00
ceriel e3e19a7a0d signal now deals with void functions 1993-11-17 16:53:43 +00:00
ceriel cf151967a5 signal now deals with void functions 1993-11-17 16:38:52 +00:00
ceriel 91d270eb90 Modified for Solaris 2 1993-11-10 12:57:16 +00:00
ceriel 964bf270ab Fixed CII (?) did not handle stack pointer right 1993-11-10 12:51:03 +00:00
ceriel d9af0f2851 All 'follows' checks only to be done when ! unresolved 1993-10-13 10:47:28 +00:00
ceriel af42c1f960 Mention all sections 1993-10-13 10:46:11 +00:00
ceriel 861f4afc0c Added -LIB where needed 1993-10-07 10:56:25 +00:00
ceriel df61cc8c4b Added sparc_solaris 1993-10-07 09:52:41 +00:00
ceriel 9e7c8d2c9f Added sparc_solaris stuff 1993-10-06 17:04:49 +00:00
ceriel 980faf36f0 Added sparc_solaris stuff 1993-10-06 16:42:05 +00:00
ceriel a430cb7d8e Changed for Solaris 2 1993-10-06 16:18:58 +00:00
ceriel 76d1b91311 fix: probably just a typo 1993-10-06 16:15:30 +00:00
ceriel 6dc51ef6eb Fix: setrlimit has two parameters 1993-10-06 16:12:40 +00:00
ceriel 3e43a9ac61 Some more changes for Solaris 2 1993-10-06 11:47:11 +00:00
ceriel 4092904071 proper trap on divide by 0 1993-10-04 14:13:51 +00:00
ceriel c118bca2c2 An offset fix, and added some files for solaris 2 1993-10-04 08:57:25 +00:00
ceriel b06a419f71 Fix to Makefile: define CFLAGS 1993-09-30 15:13:11 +00:00
ceriel f8e6131e61 Some stuff for solaris 2 1993-09-30 15:11:52 +00:00
ceriel 43280fdd5a Fixed previous fix 1993-09-30 15:10:59 +00:00
ceriel de8fefd02c Fixed typo 1993-08-04 09:24:07 +00:00
ceriel b371972acf Fixed error which sometimes caused core dumps 1993-03-30 09:40:07 +00:00
ceriel 14e756ba87 Enabled divide by 0 and improper trap 1993-02-24 15:10:14 +00:00
ceriel dfc4956d59 Fixed bug: some offsets were just plain wrong 1993-02-19 17:33:40 +00:00
ceriel 6da226ab2b Fixed bug: some offsets were just plain wrong 1993-02-08 13:35:44 +00:00
ceriel 468d98750c Fixed problem with relocation,
added curr_token, so that parser can access token
1993-02-08 13:01:30 +00:00
ceriel 5f7f7bf194 Fixed error: ] was missing in translation of COM 1993-01-11 12:46:04 +00:00
ceriel dc108fd084 Removed adder.h from proto.libfp 1993-01-05 12:52:47 +00:00
ceriel be2c36fbe5 Removed adder.h from .distr 1993-01-05 12:50:30 +00:00
ceriel 005f32298f Updated for ANSI C, cleaned up a bit 1993-01-05 12:06:58 +00:00
ceriel d2fb022441 improved ply handling 1992-12-18 10:29:31 +00:00
ceriel ed2ba2e1d5 improved ply handling 1992-12-18 10:22:55 +00:00
ceriel 5fbaff533c Use test instruction for testing 1992-12-17 12:58:05 +00:00
ceriel 4d068e8e04 ply adaption was wrong for EM replacements 1992-12-17 12:52:21 +00:00
ceriel e09aac1b4a shifts do NOT set condition codes properly 1992-12-14 16:40:22 +00:00
ceriel bc2744ca5c Several fixes: SDF was wrong, and shifts do NOT set contition codes properly 1992-12-14 16:37:35 +00:00
ceriel cb32d73c61 Fix in fef.s: handles infinity more graceful now 1992-12-08 17:26:41 +00:00
ceriel e43e6b8100 Added M68030 MMU instructions 1992-11-19 18:19:55 +00:00
ceriel 17efc329f8 Separated the m68020 syntax from the table, so that we can also create
a m68000 code generator producing m68020 syntax
1992-11-16 17:24:25 +00:00
ceriel 9f305dcfe1 Fixed bug in register initialization for offsets > 4096 1992-11-16 14:31:49 +00:00
ceriel 67d5d2d6c4 small fix: carry was not always clear before the 'sbc' 1992-10-16 15:43:46 +00:00
ceriel 537cbd3d89 Fixed bug: REP resulted in 0xF2 instead of 0xF3 1992-10-12 17:25:15 +00:00
ceriel 248ca45fc0 Use 80386 SET instruction 1992-09-17 14:15:20 +00:00
ceriel be227c5f88 Several fixes and addition of 80486 instructions 1992-09-16 16:10:30 +00:00
ceriel 94ec8e495e Fixed ARPL instruction 1992-09-07 14:13:11 +00:00
ceriel 0299ae9ad0 Improved installation mechanism 1992-09-07 13:21:34 +00:00
ceriel cf32c08fd9 Fix previous change 1992-09-07 12:47:11 +00:00
ceriel ac7dc5e21f Some minor modifications reflecting some changes in the peephole optimizer 1992-09-01 10:35:57 +00:00
ceriel d18493b0ac Some minor modifications reflecting some changes in the peephole optimizer 1992-09-01 10:19:21 +00:00
ceriel 6f03cff48f Some minor modifications reflecting some changes in the peephole optimizer 1992-09-01 09:39:15 +00:00
ceriel da17ca5a9f Fixed bug: imulb was given wrong opcode 1992-08-31 15:23:59 +00:00
ceriel 8cbf1bae34 Apparently forgot about the .so suffix 1992-07-28 08:28:48 +00:00
ceriel 3f54a9f044 Suffix is .so, not .s 1992-07-28 08:24:26 +00:00
ceriel 2dde78c197 No system-calls from libem 1992-06-30 17:43:24 +00:00
ceriel 8474be6e52 Added EXIT, WRITE entry point 1992-06-30 17:42:09 +00:00
ceriel 5c5812e853 No system-calls from libem 1992-06-30 17:37:35 +00:00
ceriel e860fa1974 Added EXIT, WRITE entry point 1992-06-30 17:36:49 +00:00
ceriel 8e4ee3ec1a Added EXIT, WRITE and BRK entry point 1992-06-30 17:06:10 +00:00
ceriel ea624f82de No system-calls from libem 1992-06-30 16:51:19 +00:00
ceriel 50f571bf2b Added EXIT, WRITE and BRK entry point 1992-06-30 16:39:49 +00:00
ceriel f86c403a53 No system-calls from libem 1992-06-30 16:39:47 +00:00
ceriel d1b1defbb7 No system-calls from libem 1992-06-30 16:31:52 +00:00
ceriel d0e54a11e5 Added EXIT, WRITE and BRK entry point 1992-06-30 16:30:56 +00:00
ceriel d2ee282845 Added EXIT, WRITE and BRK entry point 1992-06-30 16:24:17 +00:00
ceriel 8b26f24e21 Added EXIT, WRITE and BRK entry point 1992-06-30 16:10:24 +00:00
ceriel 6f7d2bc2ee No system-calls from libem 1992-06-30 16:08:42 +00:00
ceriel 9aceb849ad Added BRK,WRITE and EXIT entry points 1992-06-30 16:05:33 +00:00
ceriel 0350c1898b Added EXIT, WRITE and BRK entry point 1992-06-30 16:04:38 +00:00
ceriel 8c8d1a7d9b No system-calls from libem 1992-06-30 15:58:35 +00:00
ceriel 9da8f28a47 Added EXIT, WRITE and BRK entry point 1992-06-30 15:52:07 +00:00
ceriel 4ef108f93e Added BRK and EXIT entry points 1992-06-30 15:51:31 +00:00
ceriel 3f3af2e01f Added EXIT and BRK entry point 1992-06-30 15:22:55 +00:00
ceriel ab38665421 No system-calls from libem 1992-06-30 15:22:07 +00:00
ceriel 72b89fc1ad Added EXIT and BRK entry point 1992-06-30 15:11:49 +00:00
ceriel d278d61a10 Added BRK entry point 1992-06-30 15:08:35 +00:00
ceriel f6157ea21e Added EXIT and BRK entry point 1992-06-30 15:02:56 +00:00
ceriel cee4d5de8b No system-calls from libem 1992-06-30 15:02:32 +00:00
ceriel 6823ce7c96 Added EXIT and BRK entry point 1992-06-30 11:40:12 +00:00
ceriel 2ae29707d2 No system-calls from libem 1992-06-30 11:39:12 +00:00
ceriel bf2d5263cb No system-calls from libem 1992-06-30 11:19:33 +00:00
ceriel 0e46e6bc75 Added EXIT entry point 1992-06-30 11:18:17 +00:00
ceriel c76b5f436a bug fix: an illegal 'inc' was generated 1992-06-12 15:04:27 +00:00
ceriel 46f084d660 Fix: sometimes did not reserve space for local on a mes ms_gto 1992-06-12 09:46:43 +00:00
ceriel fd6e25e50f Restored exit.c and cleanup.c 1992-05-18 16:10:18 +00:00
ceriel 2fbea53939 Restored exit.c and cleanup.c 1992-05-18 16:01:16 +00:00
ceriel 3d52b0d475 Added missing files 1992-05-15 13:55:14 +00:00
ceriel 4f11d0433d updated catchsig.s 1992-05-15 13:31:19 +00:00
ceriel 60edf5b3ea Added some missing files 1992-05-15 13:14:55 +00:00
ceriel 1e7ffe6a0f em.c still used lib instead of lib.bin 1992-04-23 13:02:37 +00:00
ceriel 8c9f885817 Fixed proto.make 1992-04-23 12:55:34 +00:00
ceriel 0571a16bcb Allow for machine-dependent options 1992-03-27 17:38:54 +00:00
ceriel b2cca56e16 Accept -gdb option 1992-03-27 17:36:49 +00:00
ceriel a8b2fae0da Fixed CFU implementation 1992-03-02 11:52:09 +00:00
ceriel 813ca898a7 Bug fix: generated a 'push dl', which does not exist 1992-01-13 10:31:23 +00:00
ceriel 5ccd830347 replaced atol definition 1991-12-18 16:15:18 +00:00
ceriel 952bd37627 removed atol reference 1991-12-18 16:01:44 +00:00
ceriel 03022ad7dd Accomodate symbolic debugger info 1991-12-18 14:38:57 +00:00
ceriel 70b535c368 No longer use ushort 1991-12-18 09:45:26 +00:00
ceriel b23ed92d7e Use cp_dir to copy directories 1991-12-18 09:44:10 +00:00
ceriel eb3ce1f70f Fixed typo in previous fix 1991-12-18 09:34:52 +00:00
ceriel 53c4951b29 Do not use '#endif/#else xxx'; it is not allowed for ANSI C 1991-12-17 15:05:43 +00:00
ceriel 0c59e2e12d Prevent name clashes with sys/types.h on system V 1991-12-16 15:24:24 +00:00
ceriel 80b250950e Do not use '#undef aap xxx'; it is not allowed for ANSI C 1991-12-16 14:34:06 +00:00
ceriel 2c076a2a26 Some bug fixes 1991-12-04 16:28:37 +00:00
ceriel d162f3edb0 Made acceptable for our ANSI C compiler 1991-12-02 15:30:28 +00:00
ceriel 967b13fac5 Added target optimizer 1991-11-23 15:14:32 +00:00
ceriel 047648846a Added 1991-11-23 15:04:01 +00:00
ceriel be802650ca Added labeldef stuff 1991-11-18 09:51:35 +00:00
ceriel 64ce6b0ef4 Fixed fef.s: did not work for unnormalized numbers 1991-11-15 09:47:44 +00:00
ceriel c3de1a9bea Fixed NOP 1991-11-14 15:53:05 +00:00
ceriel 9cfb64d5c2 Bug fix in LOC LOC CII ZEQ/ZNE pattern 1991-11-14 13:20:55 +00:00
ceriel 099fe7a4c2 Added sections 1991-11-13 16:57:40 +00:00
ceriel ef9b3098de Also install ce and libce 1991-11-13 16:56:48 +00:00
ceriel 7da9d47e5a Also install libce 1991-11-13 16:56:12 +00:00
ceriel b491906775 updated 1991-11-13 16:55:20 +00:00
ceriel ac51febc8b Added dbsym and updated output.c 1991-11-13 16:54:59 +00:00
ceriel de620e1fd5 Added 1991-11-13 16:53:49 +00:00
ceriel 881240fb3c Removed vars.s 1991-11-13 15:03:01 +00:00
ceriel fe7a55d227 Added sys.s 1991-11-13 14:33:10 +00:00
ceriel e19f33f3de Added C_db_sline 1991-11-11 18:08:14 +00:00
ceriel d8190353cc Added libdb 1991-11-08 15:45:47 +00:00
ceriel 7d0a89d420 Added 1991-11-08 15:44:30 +00:00
ceriel 97a7fcbca3 A few fixes 1991-11-07 11:36:09 +00:00
ceriel 4e99d889ff Changed manual page installation mechanism 1991-11-05 15:31:14 +00:00
ceriel 3da953fa85 Added grind support 1991-11-01 11:53:42 +00:00
ceriel e4168af8fb Added C_db_sline for grind 1991-11-01 11:47:41 +00:00
ceriel 60b9ebe0d3 Only install ACK-object producing part 1991-10-29 09:19:57 +00:00
ceriel dd99f952d5 Fixes to local label stuff 1991-10-28 17:59:57 +00:00
ceriel 13da34032e On i386 systems, make code expander lib 1991-10-25 15:46:30 +00:00
ceriel bdebaa5059 Do not depend on include files too much 1991-10-25 11:16:56 +00:00
ceriel 84e6e1a10b Several fixes 1991-10-25 11:13:43 +00:00
ceriel 208b9b54e7 cv was made twice 1991-10-25 09:32:18 +00:00
ceriel 31381203bd Some fixes 1991-10-24 15:29:02 +00:00
ceriel 6cc9665025 Fix in proto.make 1991-10-22 14:35:13 +00:00
ceriel e72aafb165 Added rule to compile as.c 1991-10-22 09:18:32 +00:00
ceriel 237fb752e5 Use ASAR instead of AR 1991-10-16 17:57:53 +00:00
ceriel 7c167d29d2 Added some patterns 1991-10-14 13:04:29 +00:00
ceriel 20a7f7b188 improved installation mechanism 1991-10-14 09:18:33 +00:00
ceriel 0b5810d83a Removed some strange lines 1991-10-11 09:22:25 +00:00
ceriel bade2375b5 Added proto.libf77 1991-10-10 15:00:43 +00:00
ceriel c5d1752d7f Define NFS 1991-10-08 09:45:12 +00:00
ceriel 023b747e63 Added 1991-10-08 09:23:46 +00:00
ceriel edf43fdf81 Several fixes 1991-10-04 10:38:53 +00:00
ceriel bbe1e3ffdc only check for positive powers of 2 1991-10-04 10:37:06 +00:00
ceriel e07baf28c1 Fixes 1991-10-03 15:57:23 +00:00
ceriel 4e0a99ef38 Fixes and additions 1991-10-03 15:45:13 +00:00
ceriel b4c5125c32 Fixed wrong constant used for CUF 1991-10-02 15:27:54 +00:00
ceriel ed1a07a874 Fixed ADF 4 error 1991-10-02 12:36:36 +00:00
ceriel 7551b8e83a Changes to manual page 1991-10-01 12:18:39 +00:00
ceriel b3780be39c Added debugger support library 1991-09-30 09:24:11 +00:00
ceriel 63c9fea5c2 Hidden some names, fixed STR 1 bug, use stdio instead of print module 1991-09-27 15:02:33 +00:00
ceriel 6a02543de2 Use stdio instead of print module 1991-09-27 14:58:31 +00:00
ceriel 39f7f119d7 Added support for grind 1991-09-27 14:55:04 +00:00
ceriel 7520aec9d4 Made to work for SPARC 1991-09-27 14:51:43 +00:00
ceriel 52a38e47ca Fixed calls to ioctl; sizes of structs are different in ACK 1991-09-25 15:35:57 +00:00
ceriel b40fd1c8d9 Several fixes 1991-09-25 10:44:30 +00:00