From patchwork Wed Jul 8 21:48:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11652751 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 42A5A60D for ; Wed, 8 Jul 2020 21:48:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2C1A1206C3 for ; Wed, 8 Jul 2020 21:48:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="o0TkmTgg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725978AbgGHVsQ (ORCPT ); Wed, 8 Jul 2020 17:48:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33546 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725787AbgGHVsQ (ORCPT ); Wed, 8 Jul 2020 17:48:16 -0400 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7ED2BC061A0B for ; Wed, 8 Jul 2020 14:48:16 -0700 (PDT) Received: by mail-ej1-x641.google.com with SMTP id dr13so69704ejc.3 for ; Wed, 08 Jul 2020 14:48:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GtrZPZJFo7LjtLTzLGgK88m9Q5oELmXUtOHFgPyFOPU=; b=o0TkmTggjPnzflS6iW3I4vH1Dt49sHt1hNbpb9IuZhIQMZ+xWToXla0Wdn1lQqRlj8 w5vEQNROip/wJqYs1iCg/HXlYRwW9wyD3Qg5v5D39S5nlKG2bWc+Ju9dNgMgrXCdawTl awVYhm7a+kvo9XQ4nV8W7SvowbNWfTjVqMdrgoysaVWnxhMUrT2cvnQWMP3fbbDmLSDq BuwlN+h96qHxblQOyvMMC58Y4rNp0NZmvXxUbeRS/uJ/KC7/aecBu0y5zQ9F7cZYyzc0 6Z1jRrSQP4rNnIxXlIa45gkOi9rt3kPoc8OgTX74UVw20y1JS+YUhWPXcWWDIeiN9NwD W5gA== 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:mime-version:content-transfer-encoding; bh=GtrZPZJFo7LjtLTzLGgK88m9Q5oELmXUtOHFgPyFOPU=; b=ky5qaALcc7JaZYnvZcCB3JfY0TY92NRWws2gYEa67ENPBREycvG8dROKHlcB1WTC6l k35TJFib4WtBOb2nyFPWv8K/RfQkzaUDrSNzdtAPgfvFje4PhBRzbOlWeB+irt8O3oT2 M3Alp2G0wN6zWiK1jGgXfDqck5cIILV7W8rK8OcTwGtf2+kuDGk7/M7M4pxHQREhw+lD OUcSJ99i6w0uV1GpW0kVpqMeqt5SnGi9XRj3myckcFAxqIfP7UH+5pPheGV7M17MPUD8 rwDIH4IA58FH6XATj9r00fOyN8tCQ3FLaVAQFgkOYv0lO3N+2QHWhuTF4nZPU86OrhWK BtrA== X-Gm-Message-State: AOAM531mOaMUouuKw76Jy4/LoRgH/5pwXmagezl1hlip4IwixTRoHu0R Wrq48bboAtmSZeq2aXyouLCAJO7f X-Google-Smtp-Source: ABdhPJwZSFK8FGCheqH45CSBNg3rKNdJOdqLp2gj/whDsEte6cAfAxHHP2rQiLSKu4dll2OE8v4Exg== X-Received: by 2002:a17:906:5909:: with SMTP id h9mr52096859ejq.501.1594244894895; Wed, 08 Jul 2020 14:48:14 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7f9:7600:b1eb:f280:ff97:eab2]) by smtp.gmail.com with ESMTPSA id l15sm450370ejd.100.2020.07.08.14.48.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2020 14:48:14 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 1/3] arch: teach sparse about the '-march' option Date: Wed, 8 Jul 2020 23:48:07 +0200 Message-Id: <20200708214810.56214-2-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200708214810.56214-1-luc.vanoostenryck@gmail.com> References: <20200708214810.56214-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The option '-march' is not one of the common option but is architecture specific. So, teach sparse to delegate the parsing of this option to the targets. Signed-off-by: Luc Van Oostenryck --- options.c | 8 ++++++++ target.h | 1 + 2 files changed, 9 insertions(+) diff --git a/options.c b/options.c index 9f05bdf9cf4f..1a3fee3c6751 100644 --- a/options.c +++ b/options.c @@ -609,6 +609,13 @@ static char **handle_switch_M(char *arg, char **next) return next; } +static int handle_march(const char *opt, const char *arg, const struct flag *flag, int options) +{ + if (arch_target->parse_march) + arch_target->parse_march(arg); + return 1; +} + static int handle_mcmodel(const char *opt, const char *arg, const struct flag *flag, int options) { static const struct val_map cmodels[] = { @@ -650,6 +657,7 @@ static const struct flag mflags[] = { { "x32",&arch_m64, NULL, OPT_VAL, ARCH_X32 }, { "size-llp64", &arch_m64, NULL, OPT_VAL, ARCH_LLP64 }, { "size-long", &arch_msize_long }, + { "arch=", NULL, handle_march }, { "big-endian", &arch_big_endian, NULL }, { "little-endian", &arch_big_endian, NULL, OPT_INVERSE }, { "cmodel", &arch_cmodel, handle_mcmodel }, diff --git a/target.h b/target.h index 8f79426c096a..54e97e83b10d 100644 --- a/target.h +++ b/target.h @@ -76,6 +76,7 @@ struct target { const struct builtin_fn *builtins; void (*init)(const struct target *self); + void (*parse_march)(const char *arg); void (*predefine)(const struct target *self); const char *(*asm_constraint)(struct asm_operand *op, int c, const char *str); }; From patchwork Wed Jul 8 21:48:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11652753 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 134C360D for ; Wed, 8 Jul 2020 21:48:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F178D20772 for ; Wed, 8 Jul 2020 21:48:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Xxhs/xHt" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726006AbgGHVsR (ORCPT ); Wed, 8 Jul 2020 17:48:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725787AbgGHVsR (ORCPT ); Wed, 8 Jul 2020 17:48:17 -0400 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 488BCC061A0B for ; Wed, 8 Jul 2020 14:48:17 -0700 (PDT) Received: by mail-ej1-x641.google.com with SMTP id ga4so29305ejb.11 for ; Wed, 08 Jul 2020 14:48:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EjKnwL369JtLls31rYSGteaFWmynoX0fnGDZ3FC1FjI=; b=Xxhs/xHtWe68QXPvOiH99zfk2+epc5nx+E1m81GaKO3+vIbkYW6ieeMBXfE/CkrZdx 3KeT/aJpMmMWk4OU2PkMWelfCwz/djk52z/pOURw45gW/t7zd0WGYyfwzbbDK3OadAGl 9O5E+F222pdHaKRcqW2e8cP4nFa+GiGWmeeaxBRkLGxAda5W58ItmlYcRECPTTf3NEWH GrPPD/DNMPFFlyW03hi+8xtGbrE8GUeozcFLnC4FiBvwyfVGwh2Lp6bjtVBREkyWBqnL lxXESsWsZuxlia/aaXeK9rRqbTPTGQ5SYUOx5ygX8nl9kjsc9eA7uJ0f45jzKLu75/oo xuQQ== 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:mime-version:content-transfer-encoding; bh=EjKnwL369JtLls31rYSGteaFWmynoX0fnGDZ3FC1FjI=; b=LfgFIdEo2QE1yCpYbIGuwWFayLYG+lxkfGc8W+Ia3KjR1SCehr1q2ugXKduusK44YE bOlhDgf8k5tcw6TZKEgA3YEoO6mzHXuMeeDXeybvFfX4GRhWAOmBeBCodoK72+oOCVE8 o9oe3ifryooGQs33pgUG7wTl+Ub417uS4KUM/d89p/pD5h1k2PTCSUDwU+RYdIV3gmWA 0J78z2BgjHFkh8f/H8XRxBUu893ip6GedVOqDzOCcB7/xudiL72vg21aK8Gcr8DiOh6O 8q3gQqmfYI5r/DcuZ5uUgtMTkJJLnujgxOiN0MKy6W5U/ho4qsoI43l7VaJemNhEBoXK Zq/w== X-Gm-Message-State: AOAM530BLZCZ1K6a6nvPev8Ou4J62kW3pfcWcEw90OQ5O7ffXcCmkNIf eAtpODFUOAqL1BsfWRTR4DFXJo8Y X-Google-Smtp-Source: ABdhPJxIeXltTZHPwclLJd+ad0xQU2NHyuC5kQYMPCpKSrmAz22LQvJlqgSikE2LB9KGHhA5bWD2vA== X-Received: by 2002:a17:906:1102:: with SMTP id h2mr52128281eja.356.1594244895750; Wed, 08 Jul 2020 14:48:15 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7f9:7600:b1eb:f280:ff97:eab2]) by smtp.gmail.com with ESMTPSA id l15sm450370ejd.100.2020.07.08.14.48.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2020 14:48:15 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 2/3] riscv: parse '-march=....' Date: Wed, 8 Jul 2020 23:48:08 +0200 Message-Id: <20200708214810.56214-3-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200708214810.56214-1-luc.vanoostenryck@gmail.com> References: <20200708214810.56214-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The RISC-V architecture has quite a bit of extensions. Some of these correspond to a predefined macro and thus parsing correctly the '-march' flag can be important. So, teach sparse how to parse this flag for RISC-V. Signed-off-by: Luc Van Oostenryck --- target-riscv.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ target.h | 1 + 2 files changed, 81 insertions(+) diff --git a/target-riscv.c b/target-riscv.c index d68fb585c254..9431ebc9cabb 100644 --- a/target-riscv.c +++ b/target-riscv.c @@ -1,7 +1,80 @@ +#include "lib.h" #include "symbol.h" #include "target.h" #include "machine.h" +#include +#define RISCV_32BIT (1 << 0) +#define RISCV_64BIT (1 << 1) +#define RISCV_MUL (1 << 2) +#define RISCV_DIV (1 << 3) +#define RISCV_ATOMIC (1 << 4) +#define RISCV_FLOAT (1 << 5) +#define RISCV_DOUBLE (1 << 6) +#define RISCV_FDIV (1 << 7) +#define RISCV_COMP (1 << 8) +#define RISCV_EMBD (1 << 9) +#define RISCV_FPU (RISCV_FLOAT|RISCV_DOUBLE|RISCV_FDIV) +#define RISCV_GENERIC (RISCV_MUL|RISCV_DIV|RISCV_ATOMIC|RISCV_FPU) + +static unsigned int riscv_flags; + +static void parse_march_riscv(const char *arg) +{ + static struct { + const char *pattern; + unsigned int flags; + } basic_sets[] = { + { "rv32i", RISCV_32BIT }, + { "rv32e", RISCV_32BIT|RISCV_EMBD }, + { "rv32g", RISCV_32BIT|RISCV_GENERIC }, + { "rv64i", RISCV_64BIT }, + { "rv64g", RISCV_64BIT|RISCV_GENERIC }, + }, extensions[] = { + { "m", RISCV_MUL|RISCV_DIV }, + { "a", RISCV_ATOMIC }, + { "f", RISCV_FLOAT|RISCV_FDIV }, + { "d", RISCV_DOUBLE|RISCV_FDIV }, + { "g", RISCV_GENERIC }, + { "q", 0 }, + { "l", 0 }, + { "c", RISCV_COMP }, + { "b", 0 }, + { "j", 0 }, + { "t", 0 }, + { "p", 0 }, + { "v", 0 }, + { "n", 0 }, + { "h", 0 }, + { "s", 0 }, + }; + int i; + + for (i = 0; i < ARRAY_SIZE(basic_sets); i++) { + const char *pat = basic_sets[i].pattern; + size_t len = strlen(pat); + + if (!strncmp(arg, pat, len)) { + riscv_flags |= basic_sets[i].flags; + arg += len; + goto ext; + } + } + die("invalid argument to '-march': '%s'\n", arg); + +ext: + for (i = 0; i < ARRAY_SIZE(extensions); i++) { + const char *pat = extensions[i].pattern; + size_t len = strlen(pat); + + if (!strncmp(arg, pat, len)) { + riscv_flags |= extensions[i].flags; + arg += len; + } + } + if (arg[0]) + die("invalid argument to '-march': '%s'\n", arg); +} static void init_riscv(const struct target *self) { @@ -9,6 +82,9 @@ static void init_riscv(const struct target *self) arch_cmodel = CMODEL_MEDLOW; if (fpic) arch_cmodel = CMODEL_PIC; + + if (riscv_flags == 0) + riscv_flags = self->flags; } static void predefine_riscv(const struct target *self) @@ -32,11 +108,13 @@ const struct target target_riscv32 = { .bitness = ARCH_LP32, .big_endian = 0, .unsigned_char = 1, + .flags = RISCV_32BIT|RISCV_GENERIC|RISCV_COMP, .target_64bit = &target_riscv64, .init = init_riscv, .predefine = predefine_riscv, + .parse_march = parse_march_riscv, }; const struct target target_riscv64 = { @@ -45,9 +123,11 @@ const struct target target_riscv64 = { .big_endian = 0, .unsigned_char = 1, .has_int128 = 1, + .flags = RISCV_64BIT|RISCV_GENERIC|RISCV_COMP, .target_32bit = &target_riscv32, .init = init_riscv, .predefine = predefine_riscv, + .parse_march = parse_march_riscv, }; diff --git a/target.h b/target.h index 54e97e83b10d..76b7d12318c6 100644 --- a/target.h +++ b/target.h @@ -63,6 +63,7 @@ struct target { unsigned int unsigned_char:1; unsigned int size_t_long:1; unsigned int has_int128:1; + unsigned long flags; struct symbol *wchar; struct symbol *wint; From patchwork Wed Jul 8 21:48:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11652755 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 28E9F60D for ; Wed, 8 Jul 2020 21:48:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0F8F7206C3 for ; Wed, 8 Jul 2020 21:48:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dqgvwxKf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726072AbgGHVsS (ORCPT ); Wed, 8 Jul 2020 17:48:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725787AbgGHVsS (ORCPT ); Wed, 8 Jul 2020 17:48:18 -0400 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45D5DC061A0B for ; Wed, 8 Jul 2020 14:48:18 -0700 (PDT) Received: by mail-ej1-x642.google.com with SMTP id w16so59679ejj.5 for ; Wed, 08 Jul 2020 14:48:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ck2eF3uwoIPgb8DIRtQUMU/tYiEWecjeHtZWn9LBa9Q=; b=dqgvwxKfGiKaNS9fpam+N5cmc+s0/xTwHqVy7D89SB+6K+DxpeoIANq+HjTMcK/4Ps nTgYn0Q9m+kTwMZBNgtY7RR8GCmXIdu7hO4fH58zU5d/1Z/hIg6plPmwEb1WNhyo2WyH D3HaB6xWTGylRaSUKNBeVVFcLNW8lIIIwUPf0ZmwxdoqiArENoakB0jguQpUYGFR4+HV NK4g3shxbtHzFaKHCTzPJnpP/Vq4baQjwya5Gi5+3Xtl2aDnz/v9ydYdLrpiCiEMVX/M S49F2oQAeKduyjlY7PXPhJLlLms2d27UuaSfU/EfYTnwr+Z5c5npp84iyHX81dZ0tWno TY9A== 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:mime-version:content-transfer-encoding; bh=ck2eF3uwoIPgb8DIRtQUMU/tYiEWecjeHtZWn9LBa9Q=; b=lArVBuzBvfBpWnM6aASkJy/teo8Vn96tG2DOG4mBSvySyh796ZAuYFV7ZXnvzUV3zM i7U/TJmVQaketIHFgpN4tZXNsVxwEjcOzX5KBwYH0gJOMRwjacPn3cdqNpyvHZ4pLh9M YmqY3zWgJ97Zh5whnHWAQRsWeNC+0hZxB+jmNIggj2cvSScBOCRQOFa1ym55+EwYNaOF BPSF/sOF2uV3/EuIC5CUsFScWMQwSJV0SG7jcVRafwaH+GeSrt64DJDA+40SSS2DOlq8 mxDb8+hO9V2cQxuJzU5cZmWuQTpN+KCNqezx3jHlk0SYBFVtktjodNSyoX10A3ICVpA1 jgZw== X-Gm-Message-State: AOAM5323z6+76D+P4x+nbey7+l8shzPnU+Z2mLuHEisXn0w0Q4TNrBHV 2xMYlWKpR2D3axpgXh2nvWh/f84o X-Google-Smtp-Source: ABdhPJywLPjZlGshM+lz0Jspg9C8yq7N335MmbZ6TISBBmj3IwAWz/kTH7AxxLOlTM1NAHxd5R/kRw== X-Received: by 2002:a17:906:6d4d:: with SMTP id a13mr29229974ejt.146.1594244896620; Wed, 08 Jul 2020 14:48:16 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7f9:7600:b1eb:f280:ff97:eab2]) by smtp.gmail.com with ESMTPSA id l15sm450370ejd.100.2020.07.08.14.48.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2020 14:48:16 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 3/3] riscv: add the predefines for the extensions Date: Wed, 8 Jul 2020 23:48:09 +0200 Message-Id: <20200708214810.56214-4-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200708214810.56214-1-luc.vanoostenryck@gmail.com> References: <20200708214810.56214-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The RISC-V architecture has some predefined macros to specify which extensions are supported. So, now that these extensions are known via the '-march' options, add the corresponding predefines. Signed-off-by: Luc Van Oostenryck --- target-riscv.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/target-riscv.c b/target-riscv.c index 9431ebc9cabb..e7f2b03b821b 100644 --- a/target-riscv.c +++ b/target-riscv.c @@ -99,6 +99,25 @@ static void predefine_riscv(const struct target *self) predefine("__riscv", 1, "1"); predefine("__riscv_xlen", 1, "%d", ptr_ctype.bit_size); + if (riscv_flags & RISCV_ATOMIC) + predefine("__riscv_atomic", 1, "1"); + if (riscv_flags & RISCV_COMP) + predefine("__riscv_compressed", 1, "1"); + if (riscv_flags & RISCV_DIV) + predefine("__riscv_div", 1, "1"); + if (riscv_flags & RISCV_EMBD) + predefine("__riscv_32e", 1, "1"); + if (riscv_flags & RISCV_FPU) + predefine("__riscv_flen", 1, "%d", (riscv_flags & RISCV_DOUBLE) ? 64 : 32); + if (riscv_flags & RISCV_FDIV) + predefine("__riscv_fdiv", 1, "1"); + if (riscv_flags & RISCV_FDIV) + predefine("__riscv_fsqrt", 1, "1"); + if (riscv_flags & RISCV_MUL) + predefine("__riscv_mul", 1, "1"); + if ((riscv_flags & RISCV_MUL) && (riscv_flags & RISCV_DIV)) + predefine("__riscv_muldiv", 1, "1"); + if (cmodel) predefine_strong("__riscv_cmodel_%s", cmodel); }