From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id 13D9F3898512 for ; Sat, 17 Apr 2021 17:59:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 13D9F3898512 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=jimw@sifive.com Received: by mail-pf1-x42a.google.com with SMTP id c3so1646686pfo.3 for ; Sat, 17 Apr 2021 10:59:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pUHRgfSCV6siEGMFJsGTXOQyjR5RKtH3UKoYHRmieO0=; b=j3VacjxtX7WqOBtaQ3bh+YRqaj5hmo0KzmTkI+OLKIHDD9HN8p5JwfkKkRdTh7HIbk rfm6IIWekuIAAKMqA249AtgTEo+PaxzNZBFcl4ca0F60q72zdgnKpwr5LAylEkpKBYQj f2FiZgfnnC3VZjP49uaYke2ecgkUz8aSg+3u/IC1TGuIPlazzmG2lYcd5cd7iZlCfs/E 4Lhst/gxuYWBoy4F1/Xz1dSxu8zivD6UtuUd+9eRsGB+pTeIDIghSXa5T7pSVm/ndMpo fec+YPUyZA3LyROQaWldTt67bSjhfrgg4l/JZCAveGd1T68jkyoD6OLTJWSloSUp6qTv uCjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=pUHRgfSCV6siEGMFJsGTXOQyjR5RKtH3UKoYHRmieO0=; b=Zc/VviqJ+FdH8A4Pv3deGK2b93pjX8lHdIt7/KSQN+4nRnl/Ps2QNmCjjFeKq9483u oVfGN2vKT1RTlLUYYWBRwHFv1Vm1/AcQ1GeOXQgJN7OHjC5d5mWW3FGWgp9BlFxlkof6 81TyQYAZk0Sz1ceeHL8ONgPzYHWHqprS0jHjuIqVDc3DAM4xuJ2vRRzCNUIuGt2Bziv5 kdn+I5PmXsAzOF2AWBBug0HGBkypZ5HcS7pPht29r/y/jpUy7JfLA5bftq4TvZ9Qcs6z C/4dNjGcOt6MD2pFeYlelAsnaqbopzJhQC1e4gbQMCKZuw5MCqIwPmWbG9TrBfck0tEr YSng== X-Gm-Message-State: AOAM533TBWvlnzg3zJUveDDUSFYX7Ne+UlUYnYlPAXNCiYwcAy3XgNW5 qQ/BGnU5Ix/jVGZ5vYH7FldC/BvqgMK0qQ== X-Google-Smtp-Source: ABdhPJyDtCi4MTnd5FS1cvSiqz7dDnOgaszRZ3EjGCPQ2IDO5mM/po6dtGm1U91uydYF8EsSBdFFYQ== X-Received: by 2002:a05:6a00:1386:b029:24b:6967:117f with SMTP id t6-20020a056a001386b029024b6967117fmr12937788pfg.26.1618682345903; Sat, 17 Apr 2021 10:59:05 -0700 (PDT) Received: from rohan.hsd1.ca.comcast.net ([2601:646:c180:b150:1820:3ed4:975:3fbe]) by smtp.gmail.com with ESMTPSA id u4sm5030705pfk.56.2021.04.17.10.59.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Apr 2021 10:59:05 -0700 (PDT) From: Jim Wilson To: gdb-patches@sourceware.org Cc: Kuan-Lin Chen Subject: [PATCH 07/24] RISC-V sim: Add link syscall support. Date: Sat, 17 Apr 2021 10:58:14 -0700 Message-Id: <20210417175831.16413-8-jimw@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210417175831.16413-1-jimw@sifive.com> References: <20210417175831.16413-1-jimw@sifive.com> X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Apr 2021 17:59:14 -0000 From: Kuan-Lin Chen Use callback routines to support more syscalls, add TARGET_SYS_link support. sim/riscv/ * sim-main.c: Include unistd.h. (execute_i): In case MATCH_ECALL, Call cb_target_to_host_syscall and handle TARGET_sys_link. --- sim/riscv/sim-main.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/sim/riscv/sim-main.c b/sim/riscv/sim-main.c index de76089..03ba79b 100644 --- a/sim/riscv/sim-main.c +++ b/sim/riscv/sim-main.c @@ -25,6 +25,7 @@ #include #include +#include #include "sim-main.h" #include "sim-fpu.h" @@ -1245,7 +1246,41 @@ execute_i (SIM_CPU *cpu, unsigned_word iw, const struct riscv_opcode *op) break; case MATCH_ECALL: TRACE_INSN (cpu, "ecall;"); - cpu->a0 = sim_syscall (cpu, cpu->a7, cpu->a0, cpu->a1, cpu->a2, cpu->a3); + if (cb_target_to_host_syscall (STATE_CALLBACK (sd), cpu->a7) == -1) + { + host_callback *cb = STATE_CALLBACK (sd); + CB_SYSCALL sc; + + CB_SYSCALL_INIT (&sc); + + sc.arg1 = cpu->a0; + sc.arg2 = cpu->a1; + sc.arg3 = cpu->a2; + sc.arg4 = cpu->a3; + sc.func = cpu->a7; + + sc.p1 = (PTR) sd; + sc.p2 = (PTR) cpu; + sc.read_mem = sim_syscall_read_mem; + sc.write_mem = sim_syscall_write_mem; + + switch (cpu->a7) + { + case TARGET_SYS_link: + { + char oldpath[1024], newpath[1024]; + cb_get_string (cb, &sc, oldpath, sizeof (oldpath), sc.arg1); + cb_get_string (cb, &sc, newpath, sizeof (newpath), sc.arg2); + cpu->a0 = link (oldpath, newpath); + break; + } + default: + cpu->a0 = -1; + break; + } + } + else + cpu->a0 = sim_syscall (cpu, cpu->a7, cpu->a0, cpu->a1, cpu->a2, cpu->a3); break; default: TRACE_INSN (cpu, "UNHANDLED INSN: %s", op->name); -- 2.7.4