1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-02-03 07:10:39 +00:00
Commit Graph

584 Commits

Author SHA1 Message Date
Bruce Mitchener
4b4d6a1b94 Move optable into static, read-only storage. (#295)
Previously, we had a global `optable`, an alias to it, `table`,
and code to initialize it within `dispatch()`. This code would
initialize the whole thing to either `op_ufn` or `native_check`
and then fill in the entries for the individual opcodes.

Now, we have a function-static `optable` which is statically
initialized and placed (by the compiler) into read-only storage.
This eliminates having generated code within `dispatch()` that
initializes it.

Additionally, it was previously 512 elements long with the second
half of it being all `native_check` entries. We index it with a
byte though, so we only need 256 entries, and we can lose the
`native_check` stuff.
2021-01-25 09:26:58 -08:00
Bruce Mitchener
07aed60cc7 Remove bbtsub.h, duplicate of bbtsubdefs.h. (#294)
`bbtsubdefs.h` and `bbtsub.h` were close to the same. We only
need one.
2021-01-24 23:22:28 -08:00
Bruce Mitchener
971794a14c Fix bbtsub.c compilation without XWINDOW or DOS. (#293)
Without those, it wasn't including `devif.h`, which is where
we define `min` and `max`. I make an assumption here that any
new display would be using the current display device support
code.
2021-01-24 23:15:05 -08:00
Bruce Mitchener
0bcc8718de Fix typo. (#292) 2021-01-25 07:02:47 +00:00
Bruce Mitchener
0e9c6ba777 Fix a couple of README typos. (#291) 2021-01-24 21:46:31 -08:00
Bruce Mitchener
19f6767e55 osmsg now uses MAIKO_HANDLE_CONSOLE_MESSAGES (#290)
This was checking that neither `DOS` nor `XWINDOW` were defined,
but this needs a more specific flag for this feature so that it
doesn't get enabled when `!DOS && !XWINDOW`.
2021-01-24 21:44:42 -08:00
Bruce Mitchener
33a648bd2f Fix mouseif.c compilation, add to cmake build. (#289) 2021-01-24 21:27:03 -08:00
Bruce Mitchener
6428e64d69 Fix missing return value when !SUNDISPLAY, !XWINDOW. (#288) 2021-01-24 21:22:34 -08:00
Bruce Mitchener
d4cbb6c9dc Don't enable NOPIXRECT when XWINDOW is defined. (#287)
This used to be required, but has been fixed now.
2021-01-24 18:20:13 -08:00
Bruce Mitchener
04b4b64b87 Remove optck (#286)
This was for checking for a bug in old versions of the SunOS
tools and is no longer relevant.
2021-01-24 18:14:11 -08:00
Nick Briggs
b151790c40 Cleanup for ERROR_EXIT/TIMER_EXIT/WARN style, remove unused typedef (#283)
Convert ERROR_EXIT, TIMER_EXIT, and WARN to "do {} while (0)" style and
  fix a few usage points that were missing trailing semi-colons.
Remove unused typedef for CFuncPtr.
2021-01-24 17:59:31 -08:00
Bruce Mitchener
95e406ba2e Remove extra DOS build files. (#285)
None of these work and we currently have no path towards
compiling for DOS that would use any of them.
2021-01-24 17:55:30 -08:00
Bruce Mitchener
2e9776edf2 Remove OLD_CURSOR from our builds. (#284)
This is no longer used under X11, which all of our builds are using.

Closes Interlisp/medley#84.
2021-01-24 17:53:06 -08:00
Bruce Mitchener
1d36c73bce Fix NOPIXRECT in llcolor. (#282)
This code is all currently set up to be used if `COLOR` is
defined.

If we were to start supporting color under X11, this would
have to change, but so would much of the rest of the file.
2021-01-24 17:43:16 -08:00
Nick Briggs
e3b095bdf6 Clean up extraneous semi-colons, break statements, and braces (#281) 2021-01-24 16:58:55 -08:00
Bruce Mitchener
db21b00a9f Make sure OLD_CURSOR code is only for SUNDISPLAY. (#279)
This is work in progress on Interlisp/medley#84.
2021-01-24 16:58:18 -08:00
Bruce Mitchener
ab28391c18 Remove -fwrapv compiler flag. (#278)
This was making sure that the overflow in some our opcode
implementations was visible to the C code so that overflow
detection would work in gcc and clang.

This is now handled on those compilers by using some built-ins
that detect overflow.

The `-fwrapv` should no longer be needed.

Closes Interlisp/medley#90.
2021-01-24 16:55:51 -08:00
Bruce Mitchener
a45bce3133 Remove OPCODEFAIL, FIXTOS1 (#277)
These had been used on Sun3 in the ancient past, but not after
that in the current code.
2021-01-24 16:41:16 -08:00
Bruce Mitchener
cc060be1c7 Remove assembly fn call optimizations. (#276)
These were for old platforms and not used in recent history.

There's no NOASMFNCALL flag as there's no more asm fn call code.
2021-01-24 16:39:32 -08:00
Nick Briggs
e90b0f734a Remove unnecessary (and incorrect) include in unixcomm.c (#280) 2021-01-24 16:28:50 -08:00
Bruce Mitchener
23a244a0fa Remove some unused variables from makefiles. (#275)
Removed are:

* `FPFLAGS`
* `INLINE`
* `INLINEFLAGS`
* `BITBLTFILE`
* `BYTESWAPFILES`

A couple of other minor cleanups were also included.
2021-01-24 04:23:02 +00:00
Bruce Mitchener
0d6fae222f Remove old setup_table optimizer workarounds. (#274)
These were for old compilers aren't needed any longer with
the new `OPDISP` code arrangement and modern compilers.
2021-01-24 04:14:19 +00:00
Bruce Mitchener
9e9f8c4475 Remove profile.h (#272)
This no longer had anything to do with profiling and was
only doing some defines for the switch case block addresses,
which we no longer need since there's no longer optional
asm generated for them.
2021-01-23 18:39:55 +00:00
Bruce Mitchener
85e8cb21ec Remove special rules for building xc.c. (#273)
This also removes the special `DISP*` flags that were used for
building some files, including `xc.c`.
2021-01-23 18:29:37 +00:00
Bruce Mitchener
b7e9529322 Begin to modernize optimized dispatch. (#271)
This feature was controlled by the compilation flag `OPDISP`
which would enable some bits of assembler on the x86 (ISC or DOS)
or some other specialized code on SPARC. On SPARC hardware, there
was a special compilation process that would preprocess the code
and generate dispatch tables.

We do this now when this feature is enabled using gcc's computed
gotos feature. This is available in clang and some other compilers.
Notably, it isn't present in Visual Studio.

This doesn't decrease our portability at all as this feature is
optional and it replaces specialized assembler code with C using
compiler extensions (making it cross-platform).

In doing this, we've removed a bunch of related code, however,
it is likely that other pieces yet remain and will be removed
in subsequent commits as we clean things up and refine them.

This feature remains disabled by default for now.
2021-01-22 12:28:16 -08:00
Bruce Mitchener
61a0c02681 More SUNDISPLAY / NOPIXRECT fixes. (#269)
This fixes most of the remaining issues, apart from llcolor.
2021-01-22 11:59:11 -08:00
Larry Masinter
1b1ff995c3 move Build instructions to wiki (#259)
* move Build instructions to wiki

* added too many links, fixed

* put (new) build instructions

* More tweaks to text
2021-01-22 11:29:53 -08:00
Bruce Mitchener
13370475d4 Fix compilation if !SUNDISPLAY && !XWINDOW && !DOS. (#270)
Some extra braces make this syntax more resilient. Go ahead and
fix a bit of formatting at the same time.
2021-01-22 07:10:35 +00:00
Bruce Mitchener
3b25bc27ee build: Don't run ls -l when building ldeether. (#268)
Perhaps this was there as a reminder about it needing to be
`setuid`, but it shouldn't be in the default build output.
2021-01-21 13:20:17 -08:00
Bruce Mitchener
a0dec4045e cmake: ldeether shouldn't link full maiko lib. (#267)
In the old build system, `ldeether` is built as follows:

```
$(OSARCHDIR)ldeether :  $(SRCDIR)ldeether.c $(DLPIFILES)
    $(CC) $(CFLAGS) -I$(INCDIR) $(SRCDIR)ldeether.c $(DLPIFILES) $(LDEETHERLDFLAGS) -o $(OSARCHDIR)ldeether
```

Instead of linking all of Maiko, it just links in the `src/dlpi.c`
object file.
2021-01-21 13:18:57 -08:00
Bruce Mitchener
bf15105d3c Remove 'release' support from makeright. (#265)
This is the old way that releases were built and isn't relevant
today. It made a variety of assumptions about how things were
linked and allowed for the user to re-link an executable, but
that isn't something we need to do any longer.

This doesn't yet remove the checksum, ldechecksum, and related
scripts.
2021-01-21 13:03:11 -08:00
Bruce Mitchener
95b482d5d5 Use gcc / clang overflow builtins. (#142)
* Use gcc / clang overflow builtins.

This avoids expensive checks for overflow that employ undefined
behavior.

This is a step along the way towards replacing the old hand-written
assembler that did the same thing in terms of using the CPU's
overflow detection.

* Remove unimplemented SPARC asm for multiplication, divide, and remainder.

This wasn't implemented before, and for multiplication, it is now
implemented for gcc and friends using overflow detection.

* Remove USE_INLINE_ARITH.

Now that we have the compiler built-ins for detecting overflow,
we don't need custom assembly for it for each platform.

For now, we keep, but still don't use, the code that do a hot
path through the dispatch loop for some math. This code isn't
actually running or in use, but it is separate from how the
other inline arithmetic was being performed. These are the
`fast_op_*` functions that are implemented in assembler.
2021-01-21 00:27:31 -08:00
Bruce Mitchener
36b8695bf6 Fix compilation error from dead store removal. (#266)
In commit 6f7ec059bc, we removed
some dead stores. This broke compilation when `STACKCHECK` was
enabled.

Closes Interlisp/medley#162.
2021-01-20 23:49:18 -08:00
Bruce Mitchener
421685bd49 Remove find-writes and fixid. (#264) 2021-01-20 23:43:26 -08:00
Bruce Mitchener
1828f208ec Remove outdated comment about RISCOS. (#263) 2021-01-20 23:42:32 -08:00
Bruce Mitchener
68de0e2dfc Use the same TIMER_INTERVAL on all platforms. (#262)
This removes a special case for SPARC which was using a slower
interval.
2021-01-20 23:41:37 -08:00
Bruce Mitchener
979c3ad6be Remove flags for LINUX, OPENBSD, FREEBSD, MACOSX from build system. (#261)
We now can handle these via `inc/maiko/platform.h` and the
constants defined there.

This doesn't change `OS5` for Solaris yet as that's a much wider
set of changes.
2021-01-20 23:38:15 -08:00
Bruce Mitchener
164b5651b7 Remove obsolete testdsp. (#235)
This was an old executable from the SUNDISPLAY days and is not
needed any longer.
2021-01-20 18:34:45 -08:00
Bruce Mitchener
0010a02cb1 Disallow UNALIGNED_FETCH_OK on ARM, not LINUX. (#258)
UNALIGNED_FETCH_OK shouldn't be set for an entire OS, but
based on the CPU architecture.

Some ARM systems don't allow unaligned reads. x86 and x86_64
do, so update how we configure this.
2021-01-21 02:26:47 +00:00
Bruce Mitchener
819f1c6c0a Fix crash in xrdopt. (#260)
In 85fa89ba88, I removed 2 entries
from a table, but didn't update the count. This leads to a
`SIGSEGV`.
2021-01-21 02:19:29 +00:00
Bruce Mitchener
45d67305e7 Remove ANSICC and related variables. (#257)
In the SunOS 4 days, the system cc apparently couldn't compile
the lp* files, so there was an arrangement to use an `ANSICC`,
which was just `gcc`, to build those files.

We no longer have this issue.
2021-01-20 09:43:46 -08:00
Bruce Mitchener
d311b0f4c8 Remove unintentional coercion from float to double. (#256)
By adding `0.0` and not `0.0f` and by calling `fmod()` rather than
`fmodf()`, we were unintentionally coercing the value from a
`float` to a `double`.

This resulted in x86_64 assembler like this:

```
    cvtss2sd %xmm0,%xmm0
    cvtss2sd %xmm1,%xmm1
    callq  403340 <fmod@plt>
    cvtsd2ss %xmm0,%xmm0
```

which is now:

```
    callq  403360 <fmodf@plt>
```

And for the `N_OP_equal` change:

```
    cvtss2sd %xmm0,%xmm0
    xorpd  %xmm2,%xmm2
    addsd  %xmm2,%xmm0
    cvtss2sd %xmm1,%xmm1
    addsd  %xmm2,%xmm1
    xor    %ecx,%ecx
    ucomisd %xmm1,%xmm0
```

is now:

```
    xorps  %xmm2,%xmm2
    addss  %xmm2,%xmm0
    addss  %xmm2,%xmm1
    xor    %ecx,%ecx
    ucomiss %xmm1,%xmm0
```

(Note `ss` rather than `sd`, along with the missing `cvtss2sd` calls.)
2021-01-20 09:36:13 -08:00
Bruce Mitchener
a427d9f394 Remove stderr output from mkvdate. (#255)
This shows up on every build and isn't needed.
2021-01-20 09:29:38 -08:00
Bruce Mitchener
addaad51fc Remove SunOS4 removal of __inline__. (#253) 2021-01-20 17:28:06 +00:00
Bruce Mitchener
6c1bfeaf79 Use MAIKO_ARCH_SPARC rather than sparc. (#252) 2021-01-19 23:50:03 -08:00
Bruce Mitchener
85fa89ba88 Remove key checking code. (#251)
This wasn't actually hooked up any more, so it was pretty much
all dead code. The handling of this in the command line options
is gone.

In `bin/makefile-tail`, `DEVFILES` and `LIBFILES` became identical, so
`DEVFILES` went away.
2021-01-19 23:47:55 -08:00
Bruce Mitchener
397143d760 xc.c: Remove sparc-only optimization hack. (#254)
It looks like this was trying to force a pointer into a register,
but only for SPARC.
2021-01-20 07:46:43 +00:00
Bruce Mitchener
d99209916a Remove bin/launch.asm. (#249)
This was a copy of `src/launch.asm`. Part of the DOS build process
made a copy, but that isn't something that needs to be in version
control.
2021-01-20 06:10:11 +00:00
Bruce Mitchener
f4c2f872a1 Remove bin/runlisp* (#250)
These are from when people were running lde on a small set of hosts
and needed some keys hardcoded. They are no longer relevant.
2021-01-20 06:07:45 +00:00
Bruce Mitchener
c51aff7bf3 Remove endiffix relics. (#248)
This isn't something we need around or even have the full source
for. It is a SPARC binary and a lexer script.
2021-01-19 21:45:43 -08:00