Commit Graph

248 Commits

Author SHA1 Message Date
Danny Milosavljevic badae1c4c4
ARM: Fix byte-mem-add.
* lib/arm-mes/arm.M1: Add macro "ldrb___%r0,(%r1)".
* module/mescc/armv4/as.scm (armv4:r-byte-mem-add): Use it.
2019-09-09 18:33:57 +02:00
Danny Milosavljevic eebcb57b36
ARM: Add macro "mov____0x32(%ebp),%r0".
* lib/arm-mes/arm.M1: Add macro "mov____0x32(%ebp),%r0".
2019-09-09 18:33:57 +02:00
Danny Milosavljevic 98e5fd7da6
ARM: Add macros like "ldrh___%r?,(%r?)", "strb___%r0,0x8(%ebp)", "push___0",
"add____$i32,%r?", "strb___%r0,0x32(%ebp)".
2019-09-09 18:33:57 +02:00
Danny Milosavljevic 41965ba2e1
ARM: Add "mov____0x8(%ebp),%esp" macro.
* lib/arm-mes/arm.M1: Add "mov____0x8(%ebp),%esp" macro.
2019-09-09 18:33:56 +02:00
Danny Milosavljevic ae53ac4542
ARM: Add "mov____0x8(%ebp),%ebp" macro.
* lib/arm-mes/arm.M1: Add "mov____0x8(%ebp),%ebp" macro.
2019-09-09 18:33:56 +02:00
Danny Milosavljevic c6366924e2
ARM: Fix setjmp.
* lib/arm-mes/setjmp.c: Fix setjmp.
2019-09-09 18:33:56 +02:00
Danny Milosavljevic 03c0e67a03
ARM: Add macros "mov____%r7,0x8(%ebp)", "mov____0x8(%ebp),%r7".
* lib/arm-mes/arm.M1: Add macros "mov____%r7,0x8(%ebp)", "mov____0x8(%ebp),%r7".
2019-09-09 18:33:56 +02:00
Danny Milosavljevic 50447ce307
ARM: Add macros like "mov??__%r1,$i8".
* lib/arm-mes/arm.M1: Add macros like "mov??__%r1,$i8".
2019-09-09 18:33:56 +02:00
Danny Milosavljevic c65c50b92a
ARM: Add macro "add____$i32,(%r0)".
* lib/arm-mes/arm.M1: Add macro "add____$i32,(%r0)".
2019-09-09 18:33:56 +02:00
Danny Milosavljevic 7e73c7adaf
ARM: Add macro "xchg___%r0,(%esp)".
* lib/arm-mes/arm.M1: Add macro "xchg___%r0,(%esp)".
2019-09-09 18:33:56 +02:00
Danny Milosavljevic f51d3a3356
ARM: Move r9 usage completely into "arm.M1".
* lib/arm-mes/arm.M1: Add "ret" macro.
* module/mescc/armv4/as.scm (armv4:ret): Use it.
* lib/arm-mes/arm.M1: Add macros "lsl____%r0,%r0,$i8", "lsl____%r1,%r1,$i8".
* module/mescc/armv4/as.scm (armv4:shl-r): Use them.
2019-09-09 18:33:55 +02:00
Danny Milosavljevic 8a6092f2b4
ARM: Fix left shifts.
* lib/arm-mes/arm.M1: Add macros "lsl____%r0,%r0,%r9", "lsl____%r1,%r1,%r9",
"mov____$i8,%r9".
* module/mescc/armv4/as.scm (armv4:shl-r): Use them.
2019-09-09 18:33:55 +02:00
Danny Milosavljevic c4c94d68fe
ARM: Fix multiplication.
* lib/arm-mes/arm.M1: Delete "mul____%r1" macro.
Add "mul____%r1,%r0" and "mul____%r0,%r1" macros.
* module/mescc/armv4/as.scm (armv4:r0*r1): Use them.
2019-09-09 18:33:55 +02:00
Danny Milosavljevic b8f617d885
ARM: Add "add____%r0,%r1" macro.
* lib/arm-mes/arm.M1: Add "add____%r0,%r1" macro.
2019-09-09 18:33:54 +02:00
Danny Milosavljevic 0b4a9abafa
ARM: Add "mov____0x32(%ebp),%r1" macro.
* lib/arm-mes/arm.M1: Add "mov____0x32(%ebp),%r1" macro.
2019-09-09 18:33:54 +02:00
Danny Milosavljevic 3147550d19
ARM: Add "strb___%r0,(%r1)" macro.
* lib/arm-mes/arm.M1: Add "strb___%r0,(%r1)" macro.
2019-09-09 18:33:54 +02:00
Danny Milosavljevic 898d74a63b
ARM: Add "mov____$i32,%r0", "mov____$i32,%r1", "mov____$i32,%r2" macros.
* lib/arm-mes/arm.M1: Add "mov____$i32,%r0", "mov____$i32,%r1",
"mov____$i32,%r2" macros.
2019-09-09 18:33:54 +02:00
Danny Milosavljevic f04484fdf3
ARM: Add "mul____%r1" macro.
* lib/arm-mes/arm.M1: Add "mul____%r1" macro.
2019-09-09 18:33:54 +02:00
Danny Milosavljevic ab0124eab7
ARM: Add sxtb__%r1,%r1.
* lib/arm-mes/arm.M1: Add "sxtb__%r1,%r1" macro.
2019-09-09 18:33:53 +02:00
Danny Milosavljevic 0f5651436b
waitpid: Add case for ARM.
* lib/linux/waitpid.c: Add case for ARM.
2019-09-09 18:33:53 +02:00
Danny Milosavljevic fd7c2d32cd
ARM: Fix function calls.
* lib/arm-mes/arm.M1: Delete "ret" macro.
Fix "push___%ebp" macro.
Add "pop____%lr" macro.
Add "push___%lr" macro.
Add "mov____%lr,%r9" macro.
Add "mov____%r9,%pc" macro.
* module/mescc/armv4/as.scm (armv4:function-preamble): Push lr, too.
(armv4:ret): Pop lr, too.  Return manually.
2019-09-09 18:33:53 +02:00
Danny Milosavljevic d7576125d2
ARM: Add macros "call___*%r0", "call___*%r1".
* lib/arm-mes/arm.M1: Add macros "call___*%r0", "call___*%r1".
2019-09-09 18:33:52 +02:00
Danny Milosavljevic 2ad76e4ffb
ARM: Delete duplicate macros "mov____0x8(%ebp),%r0", "mov____0x8(%ebp),%r1",
"mov____0x8(%ebp),%r2".

* lib/arm-mes/arm.M1: Delete duplicate macros "mov____0x8(%ebp),%r0",
"mov____0x8(%ebp),%r1", "mov____0x8(%ebp),%r2".
2019-09-09 18:33:52 +02:00
Danny Milosavljevic d456b51e49
ARM: Delete duplicate macro "mov____0x32,%r1".
* lib/arm-mes/arm.M1: Delete duplicate macro "mov____0x32,%r1".
2019-09-09 18:33:52 +02:00
Danny Milosavljevic fc8b4016fb
ARM: Delete duplicate "je" macro.
* lib/arm-mes/arm.M1: Delete duplicate "je" macro.
2019-09-09 18:33:52 +02:00
Danny Milosavljevic 3aaf8774a8
Add ARM C runtime library.
* lib/linux/arm-mes/crt1.c: New file.
* lib/linux/arm-mes/mes.c: New file.
* lib/linux/arm-mes/mini.c: New file.
* lib/linux/libc-mini.c: Use them.
2019-09-09 18:33:52 +02:00
Danny Milosavljevic 83d8e41020
Add initial ARM implementation.
* include/linux/arm/syscall.h: New file.
* lib/arm-mes/arm.M1: New file.
* lib/arm-mes/elf-0footer.hex2: New file.
* lib/arm-mes/elf32-0header.hex2: New file.
* lib/arm-mes/elf32-body-exit-42.hex2: New file.
* lib/arm-mes/elf32-footer-single-main.hex2: New file.
* lib/arm-mes/elf32-header.hex2: New file.
* lib/arm-mes-mescc/exit-42.c: New file.
* lib/arm-mes-mescc/setjmp.c: New file.
* module/mescc/armv4/as.scm: New file.
* module/mescc/armv4/info.scm: New file.
* module/mescc/M1.scm (hex2:offset2): New procedure.
* module/mescc/mescc.scm: Include (mescc armv4 info).
(hex2:offset3): New procedure.
(info->M1): Use them.
* build-aux/build-guile.sh: Compile them.
2019-09-09 18:33:51 +02:00
Jan Nieuwenhuizen 3bed314d94
getopt: Remove old FSF address, thanks Vagrant.
* lib/posix/getopt.c: Remove old FSF address.
2019-09-09 16:04:15 +02:00
Danny Milosavljevic 15a39f0efe
Add missing #include.
* lib/tests/scaffold/55-char-array.c: Add missing #include.
2019-09-09 16:04:15 +02:00
Danny Milosavljevic e2dfaef89e
Add missing #include.
* lib/tests/io/90-stat.c: Add missing #include.
2019-09-09 16:04:15 +02:00
Danny Milosavljevic 5f82a697b3
Add missing #include.
* lib/posix/getcwd.c: Add missing #include.
2019-09-09 16:04:15 +02:00
Jan Nieuwenhuizen 2db5ec2f55
signal: Use SA_RESTORER on x86-64.
* lib/linux/signal.c (signal)[x86_64]: Avoid segfault by setting
SA_RESTORER flag.
2019-09-09 16:04:15 +02:00
Danny Milosavljevic 23d857c834
signal: Add comment on why we don't use the restorer.
* lib/linux/signal.c: Add comment on why we don't use the restorer.
2019-09-09 16:04:15 +02:00
Danny Milosavljevic 4a183fa1cf
signal: Remove SA_SIGINFO.
* lib/linux/signal.c (signal): Remove SA_SIGINFO.
2019-09-09 16:04:15 +02:00
Danny Milosavljevic 3e6306a5ce
signal: Don't use custom restorer.
* lib/linux/signal.c (signal): Don't use custom restorer.
2019-09-09 16:04:14 +02:00
Danny Milosavljevic 02fdead244
signal: Use SA_SIGINFO (like glibc).
* lib/linux/signal.c (_restorer): Rename to...
(_restorer_for_siginfo): ...this.
(signal): Use it.  Use SA_SIGINFO.
2019-09-09 16:04:14 +02:00
Danny Milosavljevic e8bbe21499
signal: Make sure that the signal mask is actually unsigned long.
* lib/linux/signal.c (signal): Make sure that the signal mask is actually
unsigned long.
2019-09-09 16:04:14 +02:00
Danny Milosavljevic 5754e379af
Delete "__sigmask".
Follow-up to 6d95b89759d3c598fc84194429ae8c57249daa1a

* lib/linux/signal.c (__sigmask): Delete definition.
2019-09-09 16:04:14 +02:00
Danny Milosavljevic 3f1ba73fc7
Fix "struct sigaction" structure for rt_sigaction.
* include/signal.h (sigset_t): Increase size.
* lib/linux/signal.c (signal): Use new sigset_t.
2019-09-09 16:04:14 +02:00
Danny Milosavljevic c7d050c0cd
tests: Fail early on nonexistent file.
* lib/tests/io/90-stat.c (main): Fail early on nonexistent file.
2019-09-09 16:04:13 +02:00
Danny Milosavljevic 5a2a00f4e8
open: Check flags, and use _open2 if applicable.
* lib/linux/open.c (open): Check flags; use _open2.
2019-09-09 16:04:13 +02:00
Danny Milosavljevic 3943155a64
ldiv: Make rem < 0 if a < 0.
* lib/mes/div.c (ldiv): Make rem < 0 if a < 0.
2019-09-09 16:04:13 +02:00
Danny Milosavljevic 21bd2c1e90
ldiv: Handle a == LONG_MIN.
* lib/mes/div.c (ldiv): Handle a == LONG_MIN.
2019-09-09 16:04:13 +02:00
Jan Nieuwenhuizen 49aff4ec1c
ntoab: Use __mesabi_uldiv only for arm.
* lib/mes/ntoab.c (ntoab)[__MESC__ && __arm__]: Use __mesabi_uldiv.
* build-aux/check-mescc.sh (XFAIL_TESTS): 70-printf-simple.c and
70-printf.c now pass for x86_64 mescc.
2019-09-09 16:04:13 +02:00
Danny Milosavljevic 08774a9c74
Fix ntoab.
Follow-up to b5b19304b59fefbed923b146ec8c8d495556fa76.

* lib/mes/ntoab.c (ntoab): Fix non-MESC case.
2019-07-01 20:04:26 +02:00
Danny Milosavljevic b0466331a7
signal: Define "_restorer" everywhere except on i386.
* lib/linux/signal.c: Define "_restorer" everywhere except on i386.
2019-06-18 19:26:45 +02:00
Danny Milosavljevic 9b0efad295
ntoab: Use __mesabi_uldiv only on __MESC__.
* lib/mes/ntoab.c (ntoab): Use __mesabi_uldiv only on __MESC__.
2019-06-14 17:45:32 +02:00
Danny Milosavljevic a63b0bae44
ntoab: Include "assert.h".
* lib/mes/ntoab.c: #include "assert.h".
2019-06-14 01:27:15 +02:00
Danny Milosavljevic c35124ab54
mescc: Mes C Library: Use __mesabi_uldiv.
* lib/mes/ntoab.c (ntoab): Use __mesabi_uldiv.
2019-06-14 01:02:40 +02:00
Danny Milosavljevic cc870b4adc
mescc: Mes C Library: Add integer division algorithm.
* lib/mes/div.c: New file.
2019-06-14 00:57:43 +02:00