qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: peter.maydell@linaro.org
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"open list:ARM" <qemu-arm@nongnu.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 05/28] target/arm: fixup some of the commentary for arm-semi
Date: Tue, 28 May 2019 10:49:30 +0100	[thread overview]
Message-ID: <20190528094953.14898-6-alex.bennee@linaro.org> (raw)
In-Reply-To: <20190528094953.14898-1-alex.bennee@linaro.org>

This cleans up a number of the block comments to fit the proper style.
While we are at it we also reference the official specification and
document what the return register value can be.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

diff --git a/target/arm/arm-semi.c b/target/arm/arm-semi.c
index a99049c7d58..d812eef1519 100644
--- a/target/arm/arm-semi.c
+++ b/target/arm/arm-semi.c
@@ -2,6 +2,7 @@
  *  Arm "Angel" semihosting syscalls
  *
  *  Copyright (c) 2005, 2007 CodeSourcery.
+ *  Copyright (c) 2019 Linaro
  *  Written by Paul Brook.
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -16,6 +17,10 @@
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ *  ARM Semihosting is documented in:
+ *     Semihosting for AArch32 and AArch64 Release 2.0
+ *     https://static.docs.arm.com/100863/0200/semihosting.pdf
  */
 
 #include "qemu/osdep.h"
@@ -239,6 +244,15 @@ static target_ulong arm_gdb_syscall(ARMCPU *cpu, gdb_syscall_complete_cb cb,
      put_user_u64(val, args + (n) * 8) :                \
      put_user_u32(val, args + (n) * 4))
 
+/*
+ * Do a semihosting call.
+ *
+ * The specification always says that the "return register" either
+ * returns a specific value or is corrupted, so we don't need to
+ * report to our caller whether we are returning a value or trying to
+ * leave the register unchanged. We use 0xdeadbeef as the return value
+ * when there isn't a defined return value for the call.
+ */
 target_ulong do_arm_semihosting(CPUARMState *env)
 {
     ARMCPU *cpu = arm_env_get_cpu(env);
@@ -509,14 +523,16 @@ target_ulong do_arm_semihosting(CPUARMState *env)
 
             output_size = ts->info->arg_end - ts->info->arg_start;
             if (!output_size) {
-                /* We special-case the "empty command line" case (argc==0).
-                   Just provide the terminating 0. */
+                /*
+                 * We special-case the "empty command line" case (argc==0).
+                 * Just provide the terminating 0.
+                 */
                 output_size = 1;
             }
 #endif
 
             if (output_size > input_size) {
-                 /* Not enough space to store command-line arguments.  */
+                /* Not enough space to store command-line arguments.  */
                 return -1;
             }
 
@@ -570,8 +586,10 @@ target_ulong do_arm_semihosting(CPUARMState *env)
             GET_ARG(0);
 
 #ifdef CONFIG_USER_ONLY
-            /* Some C libraries assume the heap immediately follows .bss, so
-               allocate it using sbrk.  */
+            /*
+             * Some C libraries assume the heap immediately follows .bss, so
+             * allocate it using sbrk.
+             */
             if (!ts->heap_limit) {
                 abi_ulong ret;
 
@@ -619,7 +637,8 @@ target_ulong do_arm_semihosting(CPUARMState *env)
         }
     case TARGET_SYS_EXIT:
         if (is_a64(env)) {
-            /* The A64 version of this call takes a parameter block,
+            /*
+             * The A64 version of this call takes a parameter block,
              * so the application-exit type can return a subcode which
              * is the exit status code from the application.
              */
@@ -632,14 +651,17 @@ target_ulong do_arm_semihosting(CPUARMState *env)
                 ret = 1;
             }
         } else {
-            /* ARM specifies only Stopped_ApplicationExit as normal
-             * exit, everything else is considered an error */
+            /*
+             * ARM specifies only Stopped_ApplicationExit as normal
+             * exit, everything else is considered an error
+             */
             ret = (args == ADP_Stopped_ApplicationExit) ? 0 : 1;
         }
         gdb_exit(env, ret);
         exit(ret);
     case TARGET_SYS_SYNCCACHE:
-        /* Clean the D-cache and invalidate the I-cache for the specified
+        /*
+         * Clean the D-cache and invalidate the I-cache for the specified
          * virtual address range. This is a nop for us since we don't
          * implement caches. This is only present on A64.
          */
-- 
2.20.1



  parent reply	other threads:[~2019-05-28  9:51 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-28  9:49 [Qemu-devel] [PULL 00/28] testing/next (system tests, docker, iotests) Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 01/28] semihosting: move semihosting configuration into its own directory Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 02/28] semihosting: introduce CONFIG_SEMIHOSTING Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 03/28] semihosting: implement a semihosting console Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 04/28] semihosting: enable chardev backed output for console Alex Bennée
2019-05-28  9:49 ` Alex Bennée [this message]
2019-05-28  9:49 ` [Qemu-devel] [PULL 06/28] target/arm: use the common interface for WRITE0/WRITEC in arm-semi Alex Bennée
2019-05-30 11:34   ` Peter Maydell
2019-05-30 12:35     ` Alex Bennée
2019-05-30 12:36       ` Peter Maydell
2019-05-28  9:49 ` [Qemu-devel] [PULL 07/28] target/arm: add LOG_UNIMP messages to arm-semi Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 08/28] target/arm: correct return values for WRITE/READ in arm-semi Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 09/28] target/mips: only build mips-semi for softmmu Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 10/28] target/mips: convert UHI_plog to use common semihosting code Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 11/28] MAINTAINERS: update for semihostings new home Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 12/28] tests/docker: add ubuntu 18.04 Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 13/28] tests/docker: Test more components on the Fedora default image Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 14/28] tests/tcg/multiarch: add support for multiarch system tests Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 15/28] tests/tcg/multiarch: add hello world system test Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 16/28] editorconfig: add settings for .s/.S files Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 17/28] tests/tcg/aarch64: add system boot.S Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 18/28] tests/tcg/multiarch: move the system memory test Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 19/28] tests/tcg/minilib: support %c format char Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 20/28] tests/tcg/multiarch: expand system memory test to cover more Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 21/28] tests/tcg/alpha: add system boot.S Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 22/28] .travis.yml: enable aarch64-softmmu and alpha-softmmu tcg tests Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 23/28] Makefile: fix coverage-report reference to BUILD_DIR Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 24/28] Makefile: include per-target build directories in coverage report Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 25/28] Makefile.target: support per-target coverage reports Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 26/28] tests/qemu-iotests/group: Re-use the "auto" group for tests that can always run Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 27/28] tests/qemu-iotests: re-format output to for make check-block Alex Bennée
2019-05-28  9:49 ` [Qemu-devel] [PULL 28/28] tests: Run the iotests during "make check" again Alex Bennée
2019-05-28 13:24 ` [Qemu-devel] [PULL 00/28] testing/next (system tests, docker, iotests) Peter Maydell
2019-05-28 13:47   ` Alex Bennée
2019-05-28 14:02     ` Peter Maydell
2019-05-28 15:09       ` Alex Bennée
2019-05-30 15:14       ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190528094953.14898-6-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).