From 5ad5f854f0f84e541d943e7fd6280bb9a4b97005 Mon Sep 17 00:00:00 2001 From: Artemis Tosini Date: Sun, 5 Nov 2023 20:21:06 +0000 Subject: [PATCH] Add aarch64 0hello-mes --- .envrc | 2 +- flake.lock | 6 +-- flake.nix | 2 + lib/linux/aarch64-mes/elf64-0hello-mes.hex2 | 59 +++++++++++++++++++++ 4 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 lib/linux/aarch64-mes/elf64-0hello-mes.hex2 diff --git a/.envrc b/.envrc index 3550a30f..9e9bd35e 100644 --- a/.envrc +++ b/.envrc @@ -1 +1 @@ -use flake +use flake .#mes-guile diff --git a/flake.lock b/flake.lock index a4581a14..0174cfac 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1697851771, - "narHash": "sha256-ISqABVGU0Bt2EgG34fV2v43tfon0MNDrwUP6c4tm73c=", + "lastModified": 1699213588, + "narHash": "sha256-AEXYliWz3MJThsaVSeFWkwDftDC9wSh5B1eo8rzQKC0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0686263a235a394f96980d83e43d5ef371e83cf7", + "rev": "87d7169f5ce581372118a387748a503b740637c8", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index a6b4d60f..f829aff3 100644 --- a/flake.nix +++ b/flake.nix @@ -26,6 +26,7 @@ packages = with pkgs; [ minimal-bootstrap.kaem minimal-bootstrap.mescc-tools + gdb ]; CC = "M2-Planet"; @@ -43,6 +44,7 @@ guile gnumake minimal-bootstrap.mescc-tools + gdb ]; shellHook = '' diff --git a/lib/linux/aarch64-mes/elf64-0hello-mes.hex2 b/lib/linux/aarch64-mes/elf64-0hello-mes.hex2 new file mode 100644 index 00000000..f5662f68 --- /dev/null +++ b/lib/linux/aarch64-mes/elf64-0hello-mes.hex2 @@ -0,0 +1,59 @@ +### GNU Mes --- Maxwell Equations of Software +### Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen +### +### This file is part of GNU Mes. +### +### GNU Mes is free software; you can redistribute it and/or modify it +### under the terms of the GNU General Public License as published by +### the Free Software Foundation; either version 3 of the License, or (at +### your option) any later version. +### +### GNU Mes is distributed in the hope that it will be useful, but +### WITHOUT ANY WARRANTY; without even the implied warranty of +### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +### GNU General Public License for more details. +### +### You should have received a copy of the GNU General Public License +### along with GNU Mes. If not, see . + +### Commentary: + +# elf64-0hello-mes.hex2: `Hello, GNU Mes!' for aarch64-linux written in +# hex2 assembly, for usage with elf64-0header.hex2. This produces a +# 224-byte binary (e0 hex). Manually assembled with the ARM ARM +# because I'm a masochist. + +### Code: + +# @80 +:ELF_text + # print +08 08 80 d2 # mov x8, #64 +20 00 80 d2 # mov x0, #1 + +41 00 00 18 # ldr w1, .+8 +02 00 00 14 # b .+8 +&hello # .word hello + +42 00 00 18 # ldr w2, .+8 +02 00 00 14 # b .+8 +%end>hello # .word end-hello + +01 00 00 d4 # svc #0 + + # exit 0 +a8 0b 80 d2 # mov x8, #93 +e0 03 1f aa # mov x0, xzr +01 00 00 d4 # svc #0 +7f 20 03 d5 # wfi + +00 00 00 00 00 00 00 00 # align to @c0 +00 00 00 00 + +# @c0 +:ELF_data +:hello +48 65 6c 6c 6f 2c 20 47 # Hello, G +4e 55 20 4d 65 73 21 0a # NU Mes!\n +:end +:ELF_end