diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml deleted file mode 100644 index 7994ee6..0000000 --- a/.gitea/workflows/build.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Build nix packages -on: [push] - -jobs: - build-matrix: - runs-on: nix - strategy: - matrix: - package: [ "am-kernels", "rv32Cross.am-kernels-nemu", "rv32Cross.am-kernels-npc" ] - steps: - - uses: https://github.com/cachix/cachix-action@v14 - with: - name: ysyx - authToken: '${{ secrets.CACHIX_SIGNING_KEY }}' - - uses: actions/checkout@v4 - - name: Cache develop environment - id: cache-nix-develop - uses: actions/cache@v4 - with: - path: | - /nix/store - /nix/var/nix/db - key: nix-develop-${{ hashFiles('flake.*') }} - - - name: Build am-kernels - run: | - nix build -L .#${{ matrix.package }} diff --git a/.gitignore b/.gitignore index fa429be..5170a12 100644 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,15 @@ +* +!*/ +!*.h +!*.c +!*.cc +!*.S +!Makefile +!README +!README.md +!LICENSE +.* +_* +*~ build/ -out/ -.cache/ -.envrc -.vscode/ -# Created by https://www.toptal.com/developers/gitignore/api/c++ -# Edit at https://www.toptal.com/developers/gitignore?templates=c++ - -### C++ ### -# Prerequisites -*.d - -# Compiled Object files -*.slo -*.lo -*.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app - -# End of https://www.toptal.com/developers/gitignore/api/c++ +!.gitignore diff --git a/CMakeLists.txt b/CMakeLists.txt index 59293ed..61f185a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,41 +3,14 @@ cmake_minimum_required(VERSION 3.22) project(am-kernels) set(CMAKE_C_STANDARD 11) enable_language(C ASM) + include(CheckPIESupported) -include(GNUInstallDirs) - -if(${ARCH} STREQUAL "native") - include(CTest) -endif() - -find_package(am-${ARCH}) -find_package(klib) - check_pie_supported() -# -- Helper functions -macro(create_binary target_name) - if(NOT ${ARCH} STREQUAL "native") - add_custom_command( - TARGET ${target_name} POST_BUILD - COMMAND ${CMAKE_OBJCOPY} -S --set-section-flags .bss=alloc,contents -O binary ${target_name} ${target_name}.bin - COMMENT "Creating binary file ${target_name}.bin" - ) - endif() -endmacro(create_binary) +if(${PLATFORM} MATCHES "native") +set(ARCH "native") +else() +set(ARCH ${ISA}-${PLATFORM}) +endif() -macro(install_target_and_binary target_name) - if(NOT ${ARCH} STREQUAL "native") - install(TARGETS ${target_name} RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/am-kernels) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${target_name}.bin DESTINATION ${CMAKE_INSTALL_DATADIR}/am-kernels) - else() - install(TARGETS ${target_name}) - add_test(NAME ${target_name}_test COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${target_name}) - endif() -endmacro(install_target_and_binary) - -add_subdirectory(tests/cpu-tests) -# add_subdirectory(tests/alu-tests) -add_subdirectory(tests/am-tests) -add_subdirectory(benchmarks/microbench) -add_subdirectory(kernels) +add_subdirectory(tests/cpu-tests) \ No newline at end of file diff --git a/benchmarks/microbench/CMakeLists.txt b/benchmarks/microbench/CMakeLists.txt deleted file mode 100644 index 0b2b255..0000000 --- a/benchmarks/microbench/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -include_directories(include) - -add_subdirectory(src) diff --git a/benchmarks/microbench/src/CMakeLists.txt b/benchmarks/microbench/src/CMakeLists.txt deleted file mode 100644 index 60b1f0f..0000000 --- a/benchmarks/microbench/src/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -add_executable(bench - qsort/qsort.c - ssort/ssort.cc - queen/queen.c - sieve/sieve.c - bf/bf.c - 15pz/15pz.cc - dinic/dinic.cc - lzip/lzip.c - lzip/quicklz.c - md5/md5.c - bench.c - fib/fib.c -) - -target_link_libraries(bench am-${ARCH} klib) -create_binary(bench) -install_target_and_binary(bench) diff --git a/benchmarks/microbench/src/bench.c b/benchmarks/microbench/src/bench.c index e36d78d..6f36de0 100644 --- a/benchmarks/microbench/src/bench.c +++ b/benchmarks/microbench/src/bench.c @@ -74,7 +74,7 @@ static uint32_t score(Benchmark *b, uint64_t usec) { } int main(const char *args) { - const char *setting_name = "test"; + const char *setting_name = args; if (args == NULL || strcmp(args, "") == 0) { printf("Empty mainargs. Use \"ref\" by default\n"); setting_name = "ref"; diff --git a/default.nix b/default.nix deleted file mode 100644 index 72a3e96..0000000 --- a/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ lib, - stdenv, - cmake, - abstract-machine, - arch ? "riscv-nemu" -}: - -stdenv.mkDerivation rec { - pname = "am-kernel"; - version = "2024-07-10"; - - src = ./.; - - nativeBuildInputs = [ - cmake - ]; - - buildInputs = [ - abstract-machine - ]; - - cmakeFlags = [ - (lib.cmakeFeature "ARCH" arch) - ]; - - cmakeBuildType = "Debug"; - dontStrip = true; - - doCheck = true; - - meta = with lib; { - description = "AbstractMachine kernels"; - homepage = "https://github.com/NJU-ProjectN/am-kernels.git"; - license = with licenses; [ ]; - maintainers = with maintainers; [ ]; - }; -} diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 1e9e208..0000000 --- a/flake.lock +++ /dev/null @@ -1,986 +0,0 @@ -{ - "nodes": { - "am-kernels": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_2", - "pre-commit-hooks": "pre-commit-hooks_2", - "ysyx-workbench": "ysyx-workbench_2" - }, - "locked": { - "lastModified": 1723617032, - "narHash": "sha256-oL5Vx933Jhn+T9jn67wFbh8vy7w8OJNCn4DOOlX/r0U=", - "ref": "dev", - "rev": "3ee527c3de481e38767fffbd9e16bf48359fc638", - "revCount": 78, - "type": "git", - "url": "https://git.xinyang.life/xin/am-kernels.git" - }, - "original": { - "ref": "dev", - "type": "git", - "url": "https://git.xinyang.life/xin/am-kernels.git" - } - }, - "diffu": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_3", - "nur-xin": "nur-xin_2", - "pre-commit-hooks": "pre-commit-hooks_4" - }, - "locked": { - "lastModified": 1723627842, - "narHash": "sha256-+Ovf1e5ESap4sGMsH945SkZLhyYUxGE7shKVl3Ue1CQ=", - "ref": "refs/heads/master", - "rev": "7b3881a9712bcb7bfea90614a44888ae5df6e849", - "revCount": 17, - "type": "git", - "url": "https://git.xinyang.life/xin/diffu.git" - }, - "original": { - "type": "git", - "url": "https://git.xinyang.life/xin/diffu.git" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_10": { - "inputs": { - "systems": "systems_10" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "inputs": { - "systems": "systems_4" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "inputs": { - "systems": "systems_6" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { - "inputs": { - "systems": "systems_7" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_8": { - "inputs": { - "systems": "systems_8" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_9": { - "inputs": { - "systems": "systems_9" - }, - "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "ysyx-workbench", - "am-kernels", - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_3": { - "inputs": { - "nixpkgs": [ - "ysyx-workbench", - "am-kernels", - "ysyx-workbench", - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_4": { - "inputs": { - "nixpkgs": [ - "ysyx-workbench", - "diffu", - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_5": { - "inputs": { - "nixpkgs": [ - "ysyx-workbench", - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1709237383, - "narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-circt162": { - "locked": { - "lastModified": 1705645507, - "narHash": "sha256-tX3vipIAmNDBA8WNWG4oY4KyTfnm2YieTHO2BhG8ISA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7995cae3ad60e3d6931283d650d7f43d31aaa5c7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7995cae3ad60e3d6931283d650d7f43d31aaa5c7", - "type": "github" - } - }, - "nixpkgs-circt162_2": { - "locked": { - "lastModified": 1705645507, - "narHash": "sha256-tX3vipIAmNDBA8WNWG4oY4KyTfnm2YieTHO2BhG8ISA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7995cae3ad60e3d6931283d650d7f43d31aaa5c7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7995cae3ad60e3d6931283d650d7f43d31aaa5c7", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_3": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_4": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_5": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1709237383, - "narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1711703276, - "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nur-xin": { - "inputs": { - "nixpkgs": [ - "ysyx-workbench", - "am-kernels", - "ysyx-workbench", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1721891452, - "narHash": "sha256-2c9nDuXXARzoRXE67lte5kKBeFb1XmTNsvdiIbRUEgE=", - "ref": "refs/heads/master", - "rev": "de8ad578fc4fe527772cec23a7f660bde14c8570", - "revCount": 152, - "type": "git", - "url": "https://git.xinyang.life/xin/nur.git" - }, - "original": { - "type": "git", - "url": "https://git.xinyang.life/xin/nur.git" - } - }, - "nur-xin_2": { - "inputs": { - "nixpkgs": [ - "ysyx-workbench", - "diffu", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1721891452, - "narHash": "sha256-2c9nDuXXARzoRXE67lte5kKBeFb1XmTNsvdiIbRUEgE=", - "ref": "refs/heads/master", - "rev": "de8ad578fc4fe527772cec23a7f660bde14c8570", - "revCount": 152, - "type": "git", - "url": "https://git.xinyang.life/xin/nur.git" - }, - "original": { - "type": "git", - "url": "https://git.xinyang.life/xin/nur.git" - } - }, - "nur-xin_3": { - "inputs": { - "nixpkgs": [ - "ysyx-workbench", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1721891452, - "narHash": "sha256-2c9nDuXXARzoRXE67lte5kKBeFb1XmTNsvdiIbRUEgE=", - "ref": "refs/heads/master", - "rev": "de8ad578fc4fe527772cec23a7f660bde14c8570", - "revCount": 152, - "type": "git", - "url": "https://git.xinyang.life/xin/nur.git" - }, - "original": { - "type": "git", - "url": "https://git.xinyang.life/xin/nur.git" - } - }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils_2", - "gitignore": "gitignore", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1712055707, - "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks_2": { - "inputs": { - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_4", - "gitignore": "gitignore_2", - "nixpkgs": [ - "ysyx-workbench", - "am-kernels", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_2" - }, - "locked": { - "lastModified": 1712055707, - "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks_3": { - "inputs": { - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_6", - "gitignore": "gitignore_3", - "nixpkgs": [ - "ysyx-workbench", - "am-kernels", - "ysyx-workbench", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_3" - }, - "locked": { - "lastModified": 1712055707, - "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks_4": { - "inputs": { - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_8", - "gitignore": "gitignore_4", - "nixpkgs": [ - "ysyx-workbench", - "diffu", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_4" - }, - "locked": { - "lastModified": 1712055707, - "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks_5": { - "inputs": { - "flake-compat": "flake-compat_5", - "flake-utils": "flake-utils_10", - "gitignore": "gitignore_5", - "nixpkgs": [ - "ysyx-workbench", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_5" - }, - "locked": { - "lastModified": 1712055707, - "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs", - "pre-commit-hooks": "pre-commit-hooks", - "ysyx-workbench": "ysyx-workbench" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_10": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_9": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "ysyx-workbench": { - "inputs": { - "am-kernels": "am-kernels", - "diffu": "diffu", - "flake-utils": "flake-utils_9", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-circt162": "nixpkgs-circt162_2", - "nur-xin": "nur-xin_3", - "pre-commit-hooks": "pre-commit-hooks_5" - }, - "locked": { - "lastModified": 1723714692, - "narHash": "sha256-EU6HE8DfSorD2Wx7yjBicSSLxGKxKbDD/3XI+RUB7Gs=", - "ref": "refs/heads/master", - "rev": "0e408882b21b17fa19158b2044498ddad8e691e7", - "revCount": 126, - "type": "git", - "url": "https://git.xinyang.life/xin/ysyx-workbench" - }, - "original": { - "type": "git", - "url": "https://git.xinyang.life/xin/ysyx-workbench" - } - }, - "ysyx-workbench_2": { - "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": [ - "ysyx-workbench", - "am-kernels", - "nixpkgs" - ], - "nixpkgs-circt162": "nixpkgs-circt162", - "nur-xin": "nur-xin", - "pre-commit-hooks": "pre-commit-hooks_3" - }, - "locked": { - "lastModified": 1723551098, - "narHash": "sha256-/AnVxufgQoAuvNBSKm0BG+tTS++/HuaNoW+loroSQig=", - "ref": "refs/heads/master", - "rev": "8ee1551dc2857091fca6456c1367aab7090899fe", - "revCount": 119, - "type": "git", - "url": "https://git.xinyang.life/xin/ysyx-workbench" - }, - "original": { - "type": "git", - "url": "https://git.xinyang.life/xin/ysyx-workbench" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index dff9e9b..0000000 --- a/flake.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - flake-utils.url = "github:numtide/flake-utils"; - pre-commit-hooks = { - url = "github:cachix/pre-commit-hooks.nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - ysyx-workbench = { - url = "git+https://git.xinyang.life/xin/ysyx-workbench"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - }; - - outputs = { self, flake-utils, nixpkgs, pre-commit-hooks, ysyx-workbench }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = import nixpkgs { inherit system; }; - - rv32CrossConfig = import nixpkgs { - localSystem = system; - crossSystem = { - config = "riscv32-none-elf"; - gcc = { - abi = "ilp32"; - arch = "rv32if"; - }; - }; - }; - - ysyx-pkgs = ysyx-workbench.packages.${system}; - in - { - checks = { - pre-commit-check = pre-commit-hooks.lib.${system}.run { - src = ./.; - hooks = { - trim-trailing-whitespace.enable = true; - end-of-file-fixer.enable = true; - cmake-format.enable = true; - }; - }; - }; - - packages = { - am-kernels = pkgs.callPackage ./default.nix { inherit (ysyx-pkgs) abstract-machine; arch = "native"; }; - - rv32Cross = { - am-kernels-npc = rv32CrossConfig.callPackage ./default.nix { - inherit (ysyx-pkgs.rv32Cross) abstract-machine; - arch = "riscv-npc"; - }; - am-kernels-nemu = rv32CrossConfig.callPackage ./default.nix { - inherit (ysyx-pkgs.rv32Cross) abstract-machine; - arch = "riscv-nemu"; - }; - }; - }; - }); -} diff --git a/kernels/CMakeLists.txt b/kernels/CMakeLists.txt deleted file mode 100644 index b3d5b95..0000000 --- a/kernels/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -add_subdirectory(hello) -add_subdirectory(demo) -add_subdirectory(yield-os) diff --git a/kernels/demo/CMakeLists.txt b/kernels/demo/CMakeLists.txt deleted file mode 100644 index febd4f0..0000000 --- a/kernels/demo/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(src) diff --git a/kernels/demo/include/io.h b/kernels/demo/include/io.h index b2c7c61..9ed6b50 100644 --- a/kernels/demo/include/io.h +++ b/kernels/demo/include/io.h @@ -1,6 +1,6 @@ #ifndef __DRAW_H__ -// #define HAS_GUI +#define HAS_GUI #include #include diff --git a/kernels/demo/src/CMakeLists.txt b/kernels/demo/src/CMakeLists.txt deleted file mode 100644 index 1c97f14..0000000 --- a/kernels/demo/src/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -add_executable(demo - aclock/aclock.c - ant/ant.c - bf/bf.c - cmatrix/cmatrix.c - donut/donut.c - galton/galton.c - hanoi/hanoi.c - life/life.c - main.c -) -target_include_directories(demo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include) -target_link_libraries(demo PRIVATE am-${ARCH} klib) - -create_binary(demo) -install_target_and_binary(demo) diff --git a/kernels/demo/src/main.c b/kernels/demo/src/main.c index e1b81d2..9457fa5 100644 --- a/kernels/demo/src/main.c +++ b/kernels/demo/src/main.c @@ -36,9 +36,9 @@ int main(const char *args) { } printf("Press Q to Exit\n"); - // while (1) { - // AM_INPUT_KEYBRD_T ev = io_read(AM_INPUT_KEYBRD); - // if (ev.keydown && ev.keycode == AM_KEY_Q) break; - // } + while (1) { + AM_INPUT_KEYBRD_T ev = io_read(AM_INPUT_KEYBRD); + if (ev.keydown && ev.keycode == AM_KEY_Q) break; + } return 0; } diff --git a/kernels/hello/CMakeLists.txt b/kernels/hello/CMakeLists.txt deleted file mode 100644 index 1571a4f..0000000 --- a/kernels/hello/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_executable(hello - hello.c -) -target_include_directories(hello PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include) -target_link_libraries(hello PRIVATE am-${ARCH} klib) - -create_binary(hello) -install_target_and_binary(hello) diff --git a/kernels/yield-os/CMakeLists.txt b/kernels/yield-os/CMakeLists.txt deleted file mode 100644 index 7684719..0000000 --- a/kernels/yield-os/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -add_executable(yield-os - yield-os.c -) -target_link_libraries(yield-os PRIVATE am-${ARCH} klib) - -# -- Extract binary file from ELF -add_custom_command(TARGET yield-os - COMMAND ${CMAKE_OBJCOPY} ARGS -S --set-section-flags .bss=alloc,contents -O binary yield-os yield-os.bin) - -create_binary(yield-os) -install_target_and_binary(yield-os) diff --git a/kernels/yield-os/yield-os.c b/kernels/yield-os/yield-os.c index caf4e84..90eb3ff 100644 --- a/kernels/yield-os/yield-os.c +++ b/kernels/yield-os/yield-os.c @@ -4,20 +4,16 @@ #define STACK_SIZE (4096 * 8) typedef union { uint8_t stack[STACK_SIZE]; - struct { - Context *cp; - }; + struct { Context *cp; }; } PCB; static PCB pcb[2], pcb_boot, *current = &pcb_boot; static void f(void *arg) { - for (int i = 0; i < 100; i++) { + while (1) { putch("?AB"[(uintptr_t)arg > 2 ? 0 : (uintptr_t)arg]); - for (int volatile i = 0; i < 100000; i++) - ; + for (int volatile i = 0; i < 100000; i++) ; yield(); } - halt(0); } static Context *schedule(Event ev, Context *prev) { @@ -28,8 +24,8 @@ static Context *schedule(Event ev, Context *prev) { int main() { cte_init(schedule); - pcb[0].cp = kcontext((Area){pcb[0].stack, &pcb[0] + 1}, f, (void *)1L); - pcb[1].cp = kcontext((Area){pcb[1].stack, &pcb[1] + 1}, f, (void *)2L); + pcb[0].cp = kcontext((Area) { pcb[0].stack, &pcb[0] + 1 }, f, (void *)1L); + pcb[1].cp = kcontext((Area) { pcb[1].stack, &pcb[1] + 1 }, f, (void *)2L); yield(); panic("Should not reach here!"); } diff --git a/tests/alu-tests/CMakeLists.txt b/tests/alu-tests/CMakeLists.txt deleted file mode 100644 index 8d6ed7d..0000000 --- a/tests/alu-tests/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -# TODO: CMake does not support multiple toolchain in one run. We need a seperate -# project for native binary compilation - -# cmake_minimum_required(VERSION 3.22) - -# project(alu-tests) -# set(CMAKE_C_STANDARD 11) -# enable_language(C ASM) -# include(GNUInstallDirs) - -# add_executable(gen_alu_test gen_alu_test.c) - -# add_custom_command(TARGET gen_alu_test POST_BUILD -# BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/alu_test.c -# COMMAND $ > alu_test.c) - -add_executable(alu_test alu_test.c) - -target_include_directories(alu_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include) -target_link_libraries(alu_test PRIVATE am-${ARCH} klib) - - -# -- Extract binary file from ELF -add_custom_command(TARGET alu_test - COMMAND ${CMAKE_OBJCOPY} ARGS -S --set-section-flags .bss=alloc,contents -O binary alu_test alu_test.bin) - -install(TARGETS alu_test RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/am-kernels) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/alu_test.bin DESTINATION ${CMAKE_INSTALL_DATADIR}/am-kernels) diff --git a/tests/alu-tests/gen_alu_test.c b/tests/alu-tests/gen_alu_test.c index 5e16e56..9ae5009 100644 --- a/tests/alu-tests/gen_alu_test.c +++ b/tests/alu-tests/gen_alu_test.c @@ -114,7 +114,7 @@ int exclude(type t, char* op, int x, int y) int main(void) { printf("#include \n"); - printf("int main(const char *) {\n"); + printf("int main(void) {\n"); printf(" int exit_code = 0;\n"); FOR_SET_ALL(signed int, vsi); diff --git a/tests/am-tests/CMakeLists.txt b/tests/am-tests/CMakeLists.txt deleted file mode 100644 index febd4f0..0000000 --- a/tests/am-tests/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(src) diff --git a/tests/am-tests/src/CMakeLists.txt b/tests/am-tests/src/CMakeLists.txt deleted file mode 100644 index 5115a71..0000000 --- a/tests/am-tests/src/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -add_executable(am-tests - tests/audio/audio-data.S - tests/audio.c - tests/devscan.c - tests/hello.c - tests/intr.c - tests/keyboard.c - tests/mp.c - tests/rtc.c - tests/video.c - tests/vm.c - main.c -) -# set_propertygSOURCE tests/audio/audio-data.S APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/audio/little-star.pcm) - -target_include_directories(am-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include) -target_link_libraries(am-tests PRIVATE am-${ARCH} klib) - -create_binary(am-tests) -install_target_and_binary(am-tests) diff --git a/tests/am-tests/src/tests/audio/audio-data.S b/tests/am-tests/src/tests/audio/audio-data.S index 90120ea..f1fc11b 100644 --- a/tests/am-tests/src/tests/audio/audio-data.S +++ b/tests/am-tests/src/tests/audio/audio-data.S @@ -2,5 +2,5 @@ .global audio_payload, audio_payload_end .p2align 3 audio_payload: -.incbin "little-star.pcm" +.incbin "src/tests/audio/little-star.pcm" audio_payload_end: diff --git a/tests/am-tests/include/little-star.pcm b/tests/am-tests/src/tests/audio/little-star.pcm similarity index 100% rename from tests/am-tests/include/little-star.pcm rename to tests/am-tests/src/tests/audio/little-star.pcm diff --git a/tests/am-tests/src/tests/hello.c b/tests/am-tests/src/tests/hello.c index e2be6a3..7672018 100644 --- a/tests/am-tests/src/tests/hello.c +++ b/tests/am-tests/src/tests/hello.c @@ -2,6 +2,6 @@ void hello() { for (int i = 0; i < 10; i ++) { - putstr("Hello, AM World @ " "__ISA__" "\n"); + putstr("Hello, AM World @ " __ISA__ "\n"); } } diff --git a/tests/am-tests/src/tests/intr.c b/tests/am-tests/src/tests/intr.c index e9695a5..855179d 100644 --- a/tests/am-tests/src/tests/intr.c +++ b/tests/am-tests/src/tests/intr.c @@ -1,19 +1,15 @@ #include Context *simple_trap(Event ev, Context *ctx) { - switch (ev.event) { - case EVENT_IRQ_TIMER: - putch('t'); - break; - case EVENT_IRQ_IODEV: - putch('d'); - break; - case EVENT_YIELD: - putch('y'); - break; - default: - panic("Unhandled event"); - break; + switch(ev.event) { + case EVENT_IRQ_TIMER: + putch('t'); break; + case EVENT_IRQ_IODEV: + putch('d'); break; + case EVENT_YIELD: + putch('y'); break; + default: + panic("Unhandled event"); break; } return ctx; } @@ -24,8 +20,7 @@ void hello_intr() { io_read(AM_INPUT_CONFIG); iset(1); while (1) { - for (volatile int i = 0; i < 10000000; i++) - ; + for (volatile int i = 0; i < 10000000; i++) ; yield(); } } diff --git a/tests/cpu-tests/tests/CMakeLists.txt b/tests/cpu-tests/tests/CMakeLists.txt index 03e071d..3e1bb7a 100644 --- a/tests/cpu-tests/tests/CMakeLists.txt +++ b/tests/cpu-tests/tests/CMakeLists.txt @@ -1,3 +1,6 @@ +find_package(am-${ARCH}) +find_package(klib) + set(SOURCES add.c add-longlong.c @@ -39,8 +42,12 @@ foreach(SOURCE IN LISTS SOURCES) get_filename_component(SOURCE_NAME ${SOURCE} NAME_WLE) add_executable(${SOURCE_NAME} ${SOURCE}) - target_link_libraries(${SOURCE_NAME} PRIVATE am-${ARCH} klib) + target_link_libraries(${SOURCE_NAME} PRIVATE am-${ARCH}) - create_binary(${SOURCE_NAME}) - install_target_and_binary(${SOURCE_NAME}) + # -- Extract binary file from ELF + add_custom_command(TARGET ${SOURCE_NAME} + COMMAND ${CMAKE_OBJCOPY} ARGS -S --set-section-flags .bss=alloc,contents -O binary ${SOURCE_NAME} ${SOURCE_NAME}.bin) + + install(TARGETS ${SOURCE_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_DATADIR}/elf) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_NAME}.bin DESTINATION ${CMAKE_INSTALL_DATADIR}/binary) endforeach() diff --git a/tests/cpu-tests/tests/hello-str.c b/tests/cpu-tests/tests/hello-str.c index c4376b4..90e5b1a 100644 --- a/tests/cpu-tests/tests/hello-str.c +++ b/tests/cpu-tests/tests/hello-str.c @@ -3,15 +3,14 @@ char buf[128]; int main() { - sprintf(buf, "%s", "Hello world!\n"); - check(strcmp(buf, "Hello world!\n") == 0); + sprintf(buf, "%s", "Hello world!\n"); + check(strcmp(buf, "Hello world!\n") == 0); - sprintf(buf, "%d + %d = %d\n", 1, 1, 2); - check(strcmp(buf, "1 + 1 = 2\n") == 0); + sprintf(buf, "%d + %d = %d\n", 1, 1, 2); + check(strcmp(buf, "1 + 1 = 2\n") == 0); - sprintf(buf, "%d + %d = %d\n", 2, 10, 12); - printf(buf); - check(strcmp(buf, "2 + 10 = 12\n") == 0); + sprintf(buf, "%d + %d = %d\n", 2, 10, 12); + check(strcmp(buf, "2 + 10 = 12\n") == 0); - return 0; + return 0; }