George Koehler
02fb480217
Commit a preview of osx386 and osxppc as new platforms.
...
These produce Mach-o executables for Mac OS X on Intel or PowerPC
processors. Our code generator for PowerPC (mach/powerpc) still has
bugs. Some examples seem to run, but startrek crashes. Our code
generator for Intel (mach/i386) is better.
There is a problem with job control. If you run paranoia or startrek,
then suspend the job (^Z) and resume it ('fg' in bash), then read(2)
might fail with EINTR.
The larger files in this commit are
- plat/osx/cvmach/cvmach.c
- plat/osx/libsys/brk.c
- plat/osx386/libsys/sigaction.s
- plat/osxppc/libsys/sigaction.s
2016-10-02 14:58:05 -04: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
David Given
204f932ed2
Raspberry Pi backend now builds.
2016-08-20 12:40:13 +02:00
David Given
420c47c386
Fix dependency error (only shows up with make, not ninja. Odd).
2016-08-15 00:46:43 +02:00
David Given
38fa6941d5
linux68k builds now.
2016-08-14 11:34:18 +02:00
David Given
3df4906d52
Turns out I wasn't building the syscall libraries. Do so.
2016-08-14 11:23:57 +02:00
David Given
b549980af2
Wasn't exporting the plat headers; refactor to make this a little cleaner.
2016-08-14 11:01:36 +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
e0b8bd221d
Pascal runtime library now builds.
2016-08-13 13:07:19 +02:00
David Given
e770d09dc8
Pascal compiler builds.
2016-08-13 13:03:06 +02:00
David Given
00c67fcc0e
Modula-2 runtime library now builds.
2016-08-13 12:43:44 +02:00
David Given
08b7c4aaae
The Basic runtime builds now.
2016-08-12 00:24:40 +02:00
David Given
7c60c27302
The Basic compiler works now.
2016-08-12 00:19:51 +02:00
David Given
3ce4e53aa9
Most of libc builds now (missing malloc).
2016-08-08 23:55:47 +02:00
David Given
0d77cb8279
We can build our first C file.
2016-08-07 21:56:53 +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
363d13cc2f
C preprocessor; tabgen; now the pc86 boot.s builds using the ack
...
toolchain.
2016-07-29 00:22:49 +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
4b3c1a2d07
Add missing (but probably non-working) rpi file.
...
--HG--
branch : default-branch
2016-06-02 12:21:13 +02:00
David Given
ff0c78cc78
Merge from default.
...
--HG--
branch : dtrg-videocore-branch-branch
2016-03-13 21:13:09 +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
c72eaef8ee
Add routine to set the Raspberry Pi clock to 250MHz (loads faster than the default 19.2MHz).
...
--HG--
branch : dtrg-videocore
rename : plat/rpi/libsys/pi_user_to_phys.s => plat/rpi/libsys/pi_fast_mode.s
2013-06-24 23:57:27 +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
2be811bac2
Updated VC4 docs.
...
--HG--
branch : dtrg-videocore
2013-06-21 23:21:08 +01:00
David Given
052dd9bfc0
Actually remember to set the stack pointer on startup. Reduce to stack from 16kB to a much more reasonable 1kB.
...
--HG--
branch : dtrg-videocore
2013-06-20 00:14:55 +01:00
David Given
eaf4339cd6
Implement a very crude busy-wait based select() mechanism for consol input.
...
--HG--
branch : dtrg-videocore
rename : plat/rpi/include/ack/config.h => plat/rpi/include/sys/select.h
rename : plat/rpi/libsys/time.c => plat/rpi/libsys/select.c
2013-06-09 22:16:30 +01:00
David Given
ed6c4a85d1
Change the size of the SRAM area to 128kB (to reflect reality).
...
--HG--
branch : dtrg-videocore
2013-06-06 00:05:48 +01:00
David Given
aacabba165
Apply fix contributed by George Koehler:
...
- don't crash if BSS overlaps BDOS
- fix stack initialisation bug
- fix command line argification
2013-06-02 22:02:15 +01:00
David Given
d5a112dbfd
Some more termios compatibility options.
...
--HG--
branch : dtrg-videocore
2013-05-30 23:25:22 +01:00
David Given
2054618e75
Add basic termios to the rpi platform to allow echoing/newline translation to be controlled.
...
--HG--
branch : dtrg-videocore
rename : plat/rpi/include/unistd.h => plat/rpi/include/termios.h
rename : plat/rpi/libsys/write.c => plat/rpi/libsys/tcgetattr.c
rename : plat/rpi/libsys/write.c => plat/rpi/libsys/tcsetattr.c
2013-05-30 23:19:55 +01:00
David Given
d3e3e72860
Update from trunk.
...
--HG--
branch : dtrg-videocore
2013-05-29 15:03:48 +01:00
David Given
ae993b1eb2
Add a crude README.
...
--HG--
branch : dtrg-videocore
2013-05-26 19:54:22 +01:00
David Given
38e4726f5c
Boot code now works properly in both kernel and bare-metal mode.
...
--HG--
branch : dtrg-videocore
2013-05-26 19:41:37 +01:00
David Given
e01f00e320
Allow reading from the mini UART. Add a check to not touch the UART unless it's been initialised (in case of accidents when running in kernel mode).
...
--HG--
branch : dtrg-videocore
2013-05-26 18:58:54 +01:00
David Given
bd9497be77
Renamed the pi-specific functions to be a bit cleaner.
...
--HG--
branch : dtrg-videocore
rename : plat/rpi/libsys/phys_to_user.s => plat/rpi/libsys/pi_phys_to_user.s
rename : plat/rpi/libsys/uart.s => plat/rpi/libsys/pi_uart.s
rename : plat/rpi/libsys/user_to_phys.s => plat/rpi/libsys/pi_user_to_phys.s
2013-05-26 00:22:39 +01:00
David Given
e299cc3bcf
stdio (output only) now works.
...
--HG--
branch : dtrg-videocore
2013-05-25 23:59:31 +01:00
David Given
6a672d5e96
Heap allocations now works.
...
--HG--
branch : dtrg-videocore
2013-05-25 23:28:47 +01:00
David Given
ec25fec145
Build binaries that will run bare metal. Add enough syscall library to init the uart and write text.
...
--HG--
branch : dtrg-videocore
rename : plat/rpi/libsys/libsys.h => plat/rpi/libsys/libsysasm.h
rename : plat/rpi/libsys/_sys_rawread.s => plat/rpi/libsys/phys_to_user.s
rename : plat/rpi/libsys/_sys_rawread.s => plat/rpi/libsys/uart.s
rename : plat/rpi/libsys/_sys_rawread.s => plat/rpi/libsys/user_to_phys.s
2013-05-25 00:35:29 +01:00
David Given
8f338f9b44
Now actually runs on real hardware.
...
--HG--
branch : dtrg-videocore
2013-05-22 22:46:10 +01:00
David Given
b5e5df4a63
Allocate a user stack to run code in.
...
--HG--
branch : dtrg-videocore
2013-05-22 18:25:30 +01:00
David Given
6b5316dcfa
More typo fixes.
...
--HG--
branch : dtrg-videocore
2013-05-22 00:52:58 +01:00
David Given
72542288cd
Adjust bootstrap code to build kernels that work with the mailbox test app.
...
--HG--
branch : dtrg-videocore
2013-05-22 00:16:59 +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
92817a6ad7
Allow platforms to specify size of long double; seperate alignment from size.
...
--HG--
branch : dtrg-videocore
2013-05-21 19:18:11 +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
61bff18082
Added skeleton bootstrap code.
...
--HG--
branch : dtrg-videocore
rename : plat/pc86/boot.s => plat/rpi/boot.s
2013-05-19 23:33:29 +01:00
David Given
fc1b3672a3
Reapply bugfix to sbrk() which got dropped during the move from linx386/libsys
...
to liblinux. Set errno correctly.
2013-05-18 13:00: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
11377070fd
Update distribution files.
...
--HG--
branch : dtrg-buildsystem
2013-05-15 23:46:15 +01:00
David Given
e9233b4712
Build ego.
...
--HG--
branch : dtrg-buildsystem
rename : util/arch/build.mk => util/ego/build.mk
2013-05-15 21:14:06 +01:00
David Given
d5f0107746
Build the Basic run-time library (after some modernisation).
...
--HG--
branch : dtrg-buildsystem
2013-05-14 16:11: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
81778b603f
Merge updates from trunk.
...
--HG--
branch : dtrg-buildsystem
2013-05-13 12:37:27 +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
b9b808e01a
Apply George Koehler's aelflod fix for generating non-EM_386 binaries.
...
Adjust platforms to use it. Fix some bugs in the linux386 platform.
--HG--
branch : dtrg-experimental-powerpc
2013-05-09 15:54:23 +01:00
David Given
8d0261473d
Add missing linux68k platform and liblinux support library.
...
--HG--
branch : dtrg-experimental-powerpc
2013-05-09 00:56:10 +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
3dcc3bd1cf
Allow pc86 bootloader to boot from more floppy drives.
...
When the bootloader probes the drive geometry, the BIOS can clobber the
es register. If this happens, the bootloader loads the program to the
wrong address, and jumps off the code. This happens with an emulated
floppy drive in Bochs or QEMU, but not with an emulated hard disk.
2012-09-23 14:43:22 -04:00
dtrg
7292b538bc
Added support for remove() and unlink().
2010-09-27 20:44:49 +00:00
dtrg
085f346f8c
Fixed definitions of O_* flags.
2010-08-20 19:27:09 +00:00
dtrg
a0c67da261
Changed to actually work. (On modern Linux systems the old version just
...
crashes. On old Linux systems it apparently only worked by accident.)
2010-08-06 17:06:31 +00:00
dtrg
54ce3f451b
Configured distr system for the 6.0pre3 release.
2007-04-29 23:09:24 +00:00
dtrg
78777e802b
Now using more conservative optimisation due to random seg fault issues.
2007-04-29 23:02:23 +00:00
dtrg
eb4ea1e761
Use better optimisation options.
2007-04-29 21:24:17 +00:00
dtrg
6127ddf024
Fixed the trap code to write out the error message correctly.
2007-04-29 20:47:48 +00:00
dtrg
c9d7f7ef23
Added suppot for BSS clearing and command line parsing.
2007-04-29 00:28:06 +00:00
dtrg
a7323e1a8b
Documented floating-point status.
2007-04-28 22:34:47 +00:00
dtrg
be8baf3da6
Added cpm platform.
2007-04-27 22:42:41 +00:00
dtrg
24ea8aee3d
Updated for the 6.0pre2 release.
2007-04-24 20:45:58 +00:00
dtrg
740940c9fc
Fixed major typos in the signal declarations that was preventing anything that used signal() from compiling.
2007-04-24 19:34:34 +00:00
dtrg
b8e1348f2a
Ensured that _errno is always defined. Rejigged the pc86 boot code so it doesn't always waste 510 bytes of memory.
2007-04-24 19:25:00 +00:00
dtrg
9b920e59cb
Now fetches argc, argv, env correctly from the host OS.
2007-04-23 23:24:03 +00:00
dtrg
b500b1a7b7
Added linux386 platform.
2007-04-21 23:02:11 +00:00
dtrg
201c66879d
Updated to work with the new libmon-less setup.
2007-04-21 22:59:42 +00:00
dtrg
d77b4ce97c
Renamed the language libraries and runtimes to have more
...
conventional names.
2007-02-26 22:36:56 +00:00
dtrg
b611731ec3
Updated .distr files for the new release.
2007-02-25 12:51:55 +00:00
dtrg
c40a44b52e
Added some missing CVS headers and did a bit of cleaning up.
2007-02-20 00:31:54 +00:00
dtrg
df153ba299
Added 8086 PC bootable floppy support (pc86).
2007-02-20 00:25:12 +00:00