[v1,1/5] meson: Introduce target-specific Kconfig

Message ID 20210621152120.4465-2-alex.bennee@linaro.org
State Superseded
Headers show
Series
  • custom device configs (split from larger series)
Related show

Commit Message

Alex Bennée June 21, 2021, 3:21 p.m.
From: Philippe Mathieu-Daudé <f4bug@amsat.org>


Add a target-specific Kconfig. We need the definitions in Kconfig so
the minikconf tool can verify they exit. However CONFIG_FOO is only
enabled for target foo via the meson.build rules.

Two architecture have a particularity, ARM and MIPS:
their 64-bit version include the 32-bit subset.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Message-Id: <20210131111316.232778-6-f4bug@amsat.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>


---
vajb:
  - removed targets that no longer exist
  - reword commit message to show why we need the Kconfigs
---
 meson.build               |  3 ++-
 Kconfig                   |  1 +
 target/Kconfig            | 19 +++++++++++++++++++
 target/alpha/Kconfig      |  2 ++
 target/arm/Kconfig        |  6 ++++++
 target/avr/Kconfig        |  2 ++
 target/cris/Kconfig       |  2 ++
 target/hppa/Kconfig       |  2 ++
 target/i386/Kconfig       |  5 +++++
 target/m68k/Kconfig       |  2 ++
 target/microblaze/Kconfig |  2 ++
 target/mips/Kconfig       |  6 ++++++
 target/nios2/Kconfig      |  2 ++
 target/openrisc/Kconfig   |  2 ++
 target/ppc/Kconfig        |  5 +++++
 target/riscv/Kconfig      |  5 +++++
 target/rx/Kconfig         |  2 ++
 target/s390x/Kconfig      |  2 ++
 target/sh4/Kconfig        |  2 ++
 target/sparc/Kconfig      |  5 +++++
 target/tricore/Kconfig    |  2 ++
 target/xtensa/Kconfig     |  2 ++
 22 files changed, 80 insertions(+), 1 deletion(-)
 create mode 100644 target/Kconfig
 create mode 100644 target/alpha/Kconfig
 create mode 100644 target/arm/Kconfig
 create mode 100644 target/avr/Kconfig
 create mode 100644 target/cris/Kconfig
 create mode 100644 target/hppa/Kconfig
 create mode 100644 target/i386/Kconfig
 create mode 100644 target/m68k/Kconfig
 create mode 100644 target/microblaze/Kconfig
 create mode 100644 target/mips/Kconfig
 create mode 100644 target/nios2/Kconfig
 create mode 100644 target/openrisc/Kconfig
 create mode 100644 target/ppc/Kconfig
 create mode 100644 target/riscv/Kconfig
 create mode 100644 target/rx/Kconfig
 create mode 100644 target/s390x/Kconfig
 create mode 100644 target/sh4/Kconfig
 create mode 100644 target/sparc/Kconfig
 create mode 100644 target/tricore/Kconfig
 create mode 100644 target/xtensa/Kconfig

-- 
2.20.1

Comments

Thomas Huth July 6, 2021, 10:52 a.m. | #1
On 21/06/2021 17.21, Alex Bennée wrote:
> From: Philippe Mathieu-Daudé <f4bug@amsat.org>

> 

> Add a target-specific Kconfig. We need the definitions in Kconfig so

> the minikconf tool can verify they exit. However CONFIG_FOO is only


s/exit/exist/ ?

> enabled for target foo via the meson.build rules.

> 

> Two architecture have a particularity, ARM and MIPS:

> their 64-bit version include the 32-bit subset.


Why do you mention these here, but not x86, Sparc, PPC and RISC-V which also 
have 32-bit and 64-bit variants?

The patch itself looks fine to me, so once you've clarified the commit message:

Reviewed-by: Thomas Huth <thuth@redhat.com>



> 

> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> Message-Id: <20210131111316.232778-6-f4bug@amsat.org>

> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

> 

> ---

> vajb:

>    - removed targets that no longer exist

>    - reword commit message to show why we need the Kconfigs

> ---

>   meson.build               |  3 ++-

>   Kconfig                   |  1 +

>   target/Kconfig            | 19 +++++++++++++++++++

>   target/alpha/Kconfig      |  2 ++

>   target/arm/Kconfig        |  6 ++++++

>   target/avr/Kconfig        |  2 ++

>   target/cris/Kconfig       |  2 ++

>   target/hppa/Kconfig       |  2 ++

>   target/i386/Kconfig       |  5 +++++

>   target/m68k/Kconfig       |  2 ++

>   target/microblaze/Kconfig |  2 ++

>   target/mips/Kconfig       |  6 ++++++

>   target/nios2/Kconfig      |  2 ++

>   target/openrisc/Kconfig   |  2 ++

>   target/ppc/Kconfig        |  5 +++++

>   target/riscv/Kconfig      |  5 +++++

>   target/rx/Kconfig         |  2 ++

>   target/s390x/Kconfig      |  2 ++

>   target/sh4/Kconfig        |  2 ++

>   target/sparc/Kconfig      |  5 +++++

>   target/tricore/Kconfig    |  2 ++

>   target/xtensa/Kconfig     |  2 ++

>   22 files changed, 80 insertions(+), 1 deletion(-)

>   create mode 100644 target/Kconfig

>   create mode 100644 target/alpha/Kconfig

>   create mode 100644 target/arm/Kconfig

>   create mode 100644 target/avr/Kconfig

>   create mode 100644 target/cris/Kconfig

>   create mode 100644 target/hppa/Kconfig

>   create mode 100644 target/i386/Kconfig

>   create mode 100644 target/m68k/Kconfig

>   create mode 100644 target/microblaze/Kconfig

>   create mode 100644 target/mips/Kconfig

>   create mode 100644 target/nios2/Kconfig

>   create mode 100644 target/openrisc/Kconfig

>   create mode 100644 target/ppc/Kconfig

>   create mode 100644 target/riscv/Kconfig

>   create mode 100644 target/rx/Kconfig

>   create mode 100644 target/s390x/Kconfig

>   create mode 100644 target/sh4/Kconfig

>   create mode 100644 target/sparc/Kconfig

>   create mode 100644 target/tricore/Kconfig

>   create mode 100644 target/xtensa/Kconfig

> 

> diff --git a/meson.build b/meson.build

> index d8a92666fb..3ddd22ab7a 100644

> --- a/meson.build

> +++ b/meson.build

> @@ -1377,7 +1377,8 @@ foreach target : target_dirs

>         command: [minikconf,

>                   get_option('default_devices') ? '--defconfig' : '--allnoconfig',

>                   config_devices_mak, '@DEPFILE@', '@INPUT@',

> -                host_kconfig, accel_kconfig])

> +                host_kconfig, accel_kconfig,

> +                'CONFIG_' + config_target['TARGET_ARCH'].to_upper() + '=y'])

>   

>       config_devices_data = configuration_data()

>       config_devices = keyval.load(config_devices_mak)

> diff --git a/Kconfig b/Kconfig

> index d52ebd839b..fb6a24a2de 100644

> --- a/Kconfig

> +++ b/Kconfig

> @@ -1,5 +1,6 @@

>   source Kconfig.host

>   source backends/Kconfig

>   source accel/Kconfig

> +source target/Kconfig

>   source hw/Kconfig

>   source semihosting/Kconfig

> diff --git a/target/Kconfig b/target/Kconfig

> new file mode 100644

> index 0000000000..ae7f24fc66

> --- /dev/null

> +++ b/target/Kconfig

> @@ -0,0 +1,19 @@

> +source alpha/Kconfig

> +source arm/Kconfig

> +source avr/Kconfig

> +source cris/Kconfig

> +source hppa/Kconfig

> +source i386/Kconfig

> +source m68k/Kconfig

> +source microblaze/Kconfig

> +source mips/Kconfig

> +source nios2/Kconfig

> +source openrisc/Kconfig

> +source ppc/Kconfig

> +source riscv/Kconfig

> +source rx/Kconfig

> +source s390x/Kconfig

> +source sh4/Kconfig

> +source sparc/Kconfig

> +source tricore/Kconfig

> +source xtensa/Kconfig

> diff --git a/target/alpha/Kconfig b/target/alpha/Kconfig

> new file mode 100644

> index 0000000000..267222c05b

> --- /dev/null

> +++ b/target/alpha/Kconfig

> @@ -0,0 +1,2 @@

> +config ALPHA

> +    bool

> diff --git a/target/arm/Kconfig b/target/arm/Kconfig

> new file mode 100644

> index 0000000000..3f3394a22b

> --- /dev/null

> +++ b/target/arm/Kconfig

> @@ -0,0 +1,6 @@

> +config ARM

> +    bool

> +

> +config AARCH64

> +    bool

> +    select ARM

> diff --git a/target/avr/Kconfig b/target/avr/Kconfig

> new file mode 100644

> index 0000000000..155592d353

> --- /dev/null

> +++ b/target/avr/Kconfig

> @@ -0,0 +1,2 @@

> +config AVR

> +    bool

> diff --git a/target/cris/Kconfig b/target/cris/Kconfig

> new file mode 100644

> index 0000000000..3fdc309fbb

> --- /dev/null

> +++ b/target/cris/Kconfig

> @@ -0,0 +1,2 @@

> +config CRIS

> +    bool

> diff --git a/target/hppa/Kconfig b/target/hppa/Kconfig

> new file mode 100644

> index 0000000000..395a35d799

> --- /dev/null

> +++ b/target/hppa/Kconfig

> @@ -0,0 +1,2 @@

> +config HPPA

> +    bool

> diff --git a/target/i386/Kconfig b/target/i386/Kconfig

> new file mode 100644

> index 0000000000..ce6968906e

> --- /dev/null

> +++ b/target/i386/Kconfig

> @@ -0,0 +1,5 @@

> +config I386

> +    bool

> +

> +config X86_64

> +    bool

> diff --git a/target/m68k/Kconfig b/target/m68k/Kconfig

> new file mode 100644

> index 0000000000..23debad519

> --- /dev/null

> +++ b/target/m68k/Kconfig

> @@ -0,0 +1,2 @@

> +config M68K

> +    bool

> diff --git a/target/microblaze/Kconfig b/target/microblaze/Kconfig

> new file mode 100644

> index 0000000000..a5410d9218

> --- /dev/null

> +++ b/target/microblaze/Kconfig

> @@ -0,0 +1,2 @@

> +config MICROBLAZE

> +    bool

> diff --git a/target/mips/Kconfig b/target/mips/Kconfig

> new file mode 100644

> index 0000000000..6adf145354

> --- /dev/null

> +++ b/target/mips/Kconfig

> @@ -0,0 +1,6 @@

> +config MIPS

> +    bool

> +

> +config MIPS64

> +    bool

> +    select MIPS

> diff --git a/target/nios2/Kconfig b/target/nios2/Kconfig

> new file mode 100644

> index 0000000000..1529ab8950

> --- /dev/null

> +++ b/target/nios2/Kconfig

> @@ -0,0 +1,2 @@

> +config NIOS2

> +    bool

> diff --git a/target/openrisc/Kconfig b/target/openrisc/Kconfig

> new file mode 100644

> index 0000000000..e0da4ac1df

> --- /dev/null

> +++ b/target/openrisc/Kconfig

> @@ -0,0 +1,2 @@

> +config OPENRISC

> +    bool

> diff --git a/target/ppc/Kconfig b/target/ppc/Kconfig

> new file mode 100644

> index 0000000000..3ff152051a

> --- /dev/null

> +++ b/target/ppc/Kconfig

> @@ -0,0 +1,5 @@

> +config PPC

> +    bool

> +

> +config PPC64

> +    bool

> diff --git a/target/riscv/Kconfig b/target/riscv/Kconfig

> new file mode 100644

> index 0000000000..b9e5932f13

> --- /dev/null

> +++ b/target/riscv/Kconfig

> @@ -0,0 +1,5 @@

> +config RISCV32

> +    bool

> +

> +config RISCV64

> +    bool

> diff --git a/target/rx/Kconfig b/target/rx/Kconfig

> new file mode 100644

> index 0000000000..aceb5ed28f

> --- /dev/null

> +++ b/target/rx/Kconfig

> @@ -0,0 +1,2 @@

> +config RX

> +    bool

> diff --git a/target/s390x/Kconfig b/target/s390x/Kconfig

> new file mode 100644

> index 0000000000..72da48136c

> --- /dev/null

> +++ b/target/s390x/Kconfig

> @@ -0,0 +1,2 @@

> +config S390X

> +    bool

> diff --git a/target/sh4/Kconfig b/target/sh4/Kconfig

> new file mode 100644

> index 0000000000..2397c86028

> --- /dev/null

> +++ b/target/sh4/Kconfig

> @@ -0,0 +1,2 @@

> +config SH4

> +    bool

> diff --git a/target/sparc/Kconfig b/target/sparc/Kconfig

> new file mode 100644

> index 0000000000..70cc0f3a21

> --- /dev/null

> +++ b/target/sparc/Kconfig

> @@ -0,0 +1,5 @@

> +config SPARC

> +    bool

> +

> +config SPARC64

> +    bool

> diff --git a/target/tricore/Kconfig b/target/tricore/Kconfig

> new file mode 100644

> index 0000000000..9313409309

> --- /dev/null

> +++ b/target/tricore/Kconfig

> @@ -0,0 +1,2 @@

> +config TRICORE

> +    bool

> diff --git a/target/xtensa/Kconfig b/target/xtensa/Kconfig

> new file mode 100644

> index 0000000000..a3c8dc7f6d

> --- /dev/null

> +++ b/target/xtensa/Kconfig

> @@ -0,0 +1,2 @@

> +config XTENSA

> +    bool

>
Philippe Mathieu-Daudé July 6, 2021, 12:47 p.m. | #2
On 7/6/21 12:52 PM, Thomas Huth wrote:
> On 21/06/2021 17.21, Alex Bennée wrote:

>> From: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>

>> Add a target-specific Kconfig. We need the definitions in Kconfig so

>> the minikconf tool can verify they exit. However CONFIG_FOO is only

> 

> s/exit/exist/ ?

> 

>> enabled for target foo via the meson.build rules.

>>

>> Two architecture have a particularity, ARM and MIPS:

>> their 64-bit version include the 32-bit subset.

> 

> Why do you mention these here, but not x86, Sparc, PPC and RISC-V which

> also have 32-bit and 64-bit variants?


Because we consider them as different targets, they don't include
(kselect) the subset.

> 

> The patch itself looks fine to me, so once you've clarified the commit

> message:

> 

> Reviewed-by: Thomas Huth <thuth@redhat.com>

> 

> 

>>

>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>> Message-Id: <20210131111316.232778-6-f4bug@amsat.org>

>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

>>

>> ---

>> vajb:

>>    - removed targets that no longer exist

>>    - reword commit message to show why we need the Kconfigs

>> ---


>> diff --git a/target/arm/Kconfig b/target/arm/Kconfig

>> new file mode 100644

>> index 0000000000..3f3394a22b

>> --- /dev/null

>> +++ b/target/arm/Kconfig

>> @@ -0,0 +1,6 @@

>> +config ARM

>> +    bool

>> +

>> +config AARCH64

>> +    bool

>> +    select ARM


>> diff --git a/target/mips/Kconfig b/target/mips/Kconfig

>> new file mode 100644

>> index 0000000000..6adf145354

>> --- /dev/null

>> +++ b/target/mips/Kconfig

>> @@ -0,0 +1,6 @@

>> +config MIPS

>> +    bool

>> +

>> +config MIPS64

>> +    bool

>> +    select MIPS
Thomas Huth July 6, 2021, 1:10 p.m. | #3
On 06/07/2021 14.47, Philippe Mathieu-Daudé wrote:
> On 7/6/21 12:52 PM, Thomas Huth wrote:

>> On 21/06/2021 17.21, Alex Bennée wrote:

>>> From: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>>

>>> Add a target-specific Kconfig. We need the definitions in Kconfig so

>>> the minikconf tool can verify they exit. However CONFIG_FOO is only

>>

>> s/exit/exist/ ?

>>

>>> enabled for target foo via the meson.build rules.

>>>

>>> Two architecture have a particularity, ARM and MIPS:

>>> their 64-bit version include the 32-bit subset.

>>

>> Why do you mention these here, but not x86, Sparc, PPC and RISC-V which

>> also have 32-bit and 64-bit variants?

> 

> Because we consider them as different targets, they don't include

> (kselect) the subset.


And why is that done this way? There is certainly a big difference between 
Sparc and Sparc64, but for x86 and PPC, the 64-bit variant is a superset of 
the 32-bit variant, so why is it done different here compared to ARM and MIPS?

  Thomas


>>

>> The patch itself looks fine to me, so once you've clarified the commit

>> message:

>>

>> Reviewed-by: Thomas Huth <thuth@redhat.com>

>>

>>

>>>

>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>> Message-Id: <20210131111316.232778-6-f4bug@amsat.org>

>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

>>>

>>> ---

>>> vajb:

>>>     - removed targets that no longer exist

>>>     - reword commit message to show why we need the Kconfigs

>>> ---

> 

>>> diff --git a/target/arm/Kconfig b/target/arm/Kconfig

>>> new file mode 100644

>>> index 0000000000..3f3394a22b

>>> --- /dev/null

>>> +++ b/target/arm/Kconfig

>>> @@ -0,0 +1,6 @@

>>> +config ARM

>>> +    bool

>>> +

>>> +config AARCH64

>>> +    bool

>>> +    select ARM

> 

>>> diff --git a/target/mips/Kconfig b/target/mips/Kconfig

>>> new file mode 100644

>>> index 0000000000..6adf145354

>>> --- /dev/null

>>> +++ b/target/mips/Kconfig

>>> @@ -0,0 +1,6 @@

>>> +config MIPS

>>> +    bool

>>> +

>>> +config MIPS64

>>> +    bool

>>> +    select MIPS

>
Philippe Mathieu-Daudé July 6, 2021, 1:40 p.m. | #4
On 7/6/21 3:10 PM, Thomas Huth wrote:
> On 06/07/2021 14.47, Philippe Mathieu-Daudé wrote:

>> On 7/6/21 12:52 PM, Thomas Huth wrote:

>>> On 21/06/2021 17.21, Alex Bennée wrote:

>>>> From: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>>>

>>>> Add a target-specific Kconfig. We need the definitions in Kconfig so

>>>> the minikconf tool can verify they exit. However CONFIG_FOO is only

>>>

>>> s/exit/exist/ ?

>>>

>>>> enabled for target foo via the meson.build rules.

>>>>

>>>> Two architecture have a particularity, ARM and MIPS:

>>>> their 64-bit version include the 32-bit subset.

>>>

>>> Why do you mention these here, but not x86, Sparc, PPC and RISC-V which

>>> also have 32-bit and 64-bit variants?

>>

>> Because we consider them as different targets, they don't include

>> (kselect) the subset.

> 

> And why is that done this way? There is certainly a big difference

> between Sparc and Sparc64, but for x86 and PPC, the 64-bit variant is a

> superset of the 32-bit variant, so why is it done different here

> compared to ARM and MIPS?


I don't know these targets well. Maybe the 64-bit variants do include
their 32-bit subset. If you know, I can easily send a new patch.
Alex Bennée July 6, 2021, 1:52 p.m. | #5
Thomas Huth <thuth@redhat.com> writes:

> On 06/07/2021 14.47, Philippe Mathieu-Daudé wrote:

>> On 7/6/21 12:52 PM, Thomas Huth wrote:

>>> On 21/06/2021 17.21, Alex Bennée wrote:

>>>> From: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>>>

>>>> Add a target-specific Kconfig. We need the definitions in Kconfig so

>>>> the minikconf tool can verify they exit. However CONFIG_FOO is only

>>>

>>> s/exit/exist/ ?

>>>

>>>> enabled for target foo via the meson.build rules.

>>>>

>>>> Two architecture have a particularity, ARM and MIPS:

>>>> their 64-bit version include the 32-bit subset.

>>>

>>> Why do you mention these here, but not x86, Sparc, PPC and RISC-V which

>>> also have 32-bit and 64-bit variants?

>> Because we consider them as different targets, they don't include

>> (kselect) the subset.

>

> And why is that done this way? There is certainly a big difference

> between Sparc and Sparc64, but for x86 and PPC, the 64-bit variant is

> a superset of the 32-bit variant, so why is it done different here

> compared to ARM and MIPS?


Both ARM and MIPS have a somewhat separated set of translate.c functions
which means they can be built as individual units. AFAICT all the others
have a unified translate.c that handles all ISA variants so they
couldn't be built as standalone units if they wanted to.

You are right for AArch64 at least we have to include translate.c to
support AArch32 encoding. But for qemu-arm we skip all the 64 bit stuff
by compilation units:

arm_ss.add(when: 'TARGET_AARCH64', if_true: files(
  'cpu64.c',
  'gdbstub64.c',
  'helper-a64.c',
  'mte_helper.c',
  'pauth_helper.c',
  'sve_helper.c',
  'translate-a64.c',
  'translate-sve.c',
))


>

>  Thomas

>

>

>>>

>>> The patch itself looks fine to me, so once you've clarified the commit

>>> message:

>>>

>>> Reviewed-by: Thomas Huth <thuth@redhat.com>

>>>

>>>

>>>>

>>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>>> Message-Id: <20210131111316.232778-6-f4bug@amsat.org>

>>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

>>>>

>>>> ---

>>>> vajb:

>>>>     - removed targets that no longer exist

>>>>     - reword commit message to show why we need the Kconfigs

>>>> ---

>> 

>>>> diff --git a/target/arm/Kconfig b/target/arm/Kconfig

>>>> new file mode 100644

>>>> index 0000000000..3f3394a22b

>>>> --- /dev/null

>>>> +++ b/target/arm/Kconfig

>>>> @@ -0,0 +1,6 @@

>>>> +config ARM

>>>> +    bool

>>>> +

>>>> +config AARCH64

>>>> +    bool

>>>> +    select ARM

>> 

>>>> diff --git a/target/mips/Kconfig b/target/mips/Kconfig

>>>> new file mode 100644

>>>> index 0000000000..6adf145354

>>>> --- /dev/null

>>>> +++ b/target/mips/Kconfig

>>>> @@ -0,0 +1,6 @@

>>>> +config MIPS

>>>> +    bool

>>>> +

>>>> +config MIPS64

>>>> +    bool

>>>> +    select MIPS

>> 



-- 
Alex Bennée

Patch

diff --git a/meson.build b/meson.build
index d8a92666fb..3ddd22ab7a 100644
--- a/meson.build
+++ b/meson.build
@@ -1377,7 +1377,8 @@  foreach target : target_dirs
       command: [minikconf,
                 get_option('default_devices') ? '--defconfig' : '--allnoconfig',
                 config_devices_mak, '@DEPFILE@', '@INPUT@',
-                host_kconfig, accel_kconfig])
+                host_kconfig, accel_kconfig,
+                'CONFIG_' + config_target['TARGET_ARCH'].to_upper() + '=y'])
 
     config_devices_data = configuration_data()
     config_devices = keyval.load(config_devices_mak)
diff --git a/Kconfig b/Kconfig
index d52ebd839b..fb6a24a2de 100644
--- a/Kconfig
+++ b/Kconfig
@@ -1,5 +1,6 @@ 
 source Kconfig.host
 source backends/Kconfig
 source accel/Kconfig
+source target/Kconfig
 source hw/Kconfig
 source semihosting/Kconfig
diff --git a/target/Kconfig b/target/Kconfig
new file mode 100644
index 0000000000..ae7f24fc66
--- /dev/null
+++ b/target/Kconfig
@@ -0,0 +1,19 @@ 
+source alpha/Kconfig
+source arm/Kconfig
+source avr/Kconfig
+source cris/Kconfig
+source hppa/Kconfig
+source i386/Kconfig
+source m68k/Kconfig
+source microblaze/Kconfig
+source mips/Kconfig
+source nios2/Kconfig
+source openrisc/Kconfig
+source ppc/Kconfig
+source riscv/Kconfig
+source rx/Kconfig
+source s390x/Kconfig
+source sh4/Kconfig
+source sparc/Kconfig
+source tricore/Kconfig
+source xtensa/Kconfig
diff --git a/target/alpha/Kconfig b/target/alpha/Kconfig
new file mode 100644
index 0000000000..267222c05b
--- /dev/null
+++ b/target/alpha/Kconfig
@@ -0,0 +1,2 @@ 
+config ALPHA
+    bool
diff --git a/target/arm/Kconfig b/target/arm/Kconfig
new file mode 100644
index 0000000000..3f3394a22b
--- /dev/null
+++ b/target/arm/Kconfig
@@ -0,0 +1,6 @@ 
+config ARM
+    bool
+
+config AARCH64
+    bool
+    select ARM
diff --git a/target/avr/Kconfig b/target/avr/Kconfig
new file mode 100644
index 0000000000..155592d353
--- /dev/null
+++ b/target/avr/Kconfig
@@ -0,0 +1,2 @@ 
+config AVR
+    bool
diff --git a/target/cris/Kconfig b/target/cris/Kconfig
new file mode 100644
index 0000000000..3fdc309fbb
--- /dev/null
+++ b/target/cris/Kconfig
@@ -0,0 +1,2 @@ 
+config CRIS
+    bool
diff --git a/target/hppa/Kconfig b/target/hppa/Kconfig
new file mode 100644
index 0000000000..395a35d799
--- /dev/null
+++ b/target/hppa/Kconfig
@@ -0,0 +1,2 @@ 
+config HPPA
+    bool
diff --git a/target/i386/Kconfig b/target/i386/Kconfig
new file mode 100644
index 0000000000..ce6968906e
--- /dev/null
+++ b/target/i386/Kconfig
@@ -0,0 +1,5 @@ 
+config I386
+    bool
+
+config X86_64
+    bool
diff --git a/target/m68k/Kconfig b/target/m68k/Kconfig
new file mode 100644
index 0000000000..23debad519
--- /dev/null
+++ b/target/m68k/Kconfig
@@ -0,0 +1,2 @@ 
+config M68K
+    bool
diff --git a/target/microblaze/Kconfig b/target/microblaze/Kconfig
new file mode 100644
index 0000000000..a5410d9218
--- /dev/null
+++ b/target/microblaze/Kconfig
@@ -0,0 +1,2 @@ 
+config MICROBLAZE
+    bool
diff --git a/target/mips/Kconfig b/target/mips/Kconfig
new file mode 100644
index 0000000000..6adf145354
--- /dev/null
+++ b/target/mips/Kconfig
@@ -0,0 +1,6 @@ 
+config MIPS
+    bool
+
+config MIPS64
+    bool
+    select MIPS
diff --git a/target/nios2/Kconfig b/target/nios2/Kconfig
new file mode 100644
index 0000000000..1529ab8950
--- /dev/null
+++ b/target/nios2/Kconfig
@@ -0,0 +1,2 @@ 
+config NIOS2
+    bool
diff --git a/target/openrisc/Kconfig b/target/openrisc/Kconfig
new file mode 100644
index 0000000000..e0da4ac1df
--- /dev/null
+++ b/target/openrisc/Kconfig
@@ -0,0 +1,2 @@ 
+config OPENRISC
+    bool
diff --git a/target/ppc/Kconfig b/target/ppc/Kconfig
new file mode 100644
index 0000000000..3ff152051a
--- /dev/null
+++ b/target/ppc/Kconfig
@@ -0,0 +1,5 @@ 
+config PPC
+    bool
+
+config PPC64
+    bool
diff --git a/target/riscv/Kconfig b/target/riscv/Kconfig
new file mode 100644
index 0000000000..b9e5932f13
--- /dev/null
+++ b/target/riscv/Kconfig
@@ -0,0 +1,5 @@ 
+config RISCV32
+    bool
+
+config RISCV64
+    bool
diff --git a/target/rx/Kconfig b/target/rx/Kconfig
new file mode 100644
index 0000000000..aceb5ed28f
--- /dev/null
+++ b/target/rx/Kconfig
@@ -0,0 +1,2 @@ 
+config RX
+    bool
diff --git a/target/s390x/Kconfig b/target/s390x/Kconfig
new file mode 100644
index 0000000000..72da48136c
--- /dev/null
+++ b/target/s390x/Kconfig
@@ -0,0 +1,2 @@ 
+config S390X
+    bool
diff --git a/target/sh4/Kconfig b/target/sh4/Kconfig
new file mode 100644
index 0000000000..2397c86028
--- /dev/null
+++ b/target/sh4/Kconfig
@@ -0,0 +1,2 @@ 
+config SH4
+    bool
diff --git a/target/sparc/Kconfig b/target/sparc/Kconfig
new file mode 100644
index 0000000000..70cc0f3a21
--- /dev/null
+++ b/target/sparc/Kconfig
@@ -0,0 +1,5 @@ 
+config SPARC
+    bool
+
+config SPARC64
+    bool
diff --git a/target/tricore/Kconfig b/target/tricore/Kconfig
new file mode 100644
index 0000000000..9313409309
--- /dev/null
+++ b/target/tricore/Kconfig
@@ -0,0 +1,2 @@ 
+config TRICORE
+    bool
diff --git a/target/xtensa/Kconfig b/target/xtensa/Kconfig
new file mode 100644
index 0000000000..a3c8dc7f6d
--- /dev/null
+++ b/target/xtensa/Kconfig
@@ -0,0 +1,2 @@ 
+config XTENSA
+    bool