qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PULL 0/1] Register API Queue
@ 2020-05-05 23:09 Alistair Francis
  2020-05-05 23:09 ` [PULL 1/1] hw/core/register: Add register_init_block8 helper Alistair Francis
  2020-05-06 20:12 ` [PULL 0/1] Register API Queue Peter Maydell
  0 siblings, 2 replies; 3+ messages in thread
From: Alistair Francis @ 2020-05-05 23:09 UTC (permalink / raw)
  To: peter.maydell; +Cc: Alistair Francis, qemu-devel

The following changes since commit f19d118bed77bb95681b07f4e76dbb700c16918d:

  Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2020-05-04' into staging (2020-05-05 15:47:44 +0100)

are available in the Git repository at:

  git@github.com:alistair23/qemu.git tags/pull-reg-to-apply-20200505

for you to fetch changes up to f08085f49fb66a5cdc86653bd896d0e728bcee50:

  hw/core/register: Add register_init_block8 helper. (2020-05-05 13:37:51 -0700)

----------------------------------------------------------------
Pull request for RegisterAPI

This is a single patch to add support to the RegisterAPI for different
data sizes.

----------------------------------------------------------------
Joaquin de Andres (1):
      hw/core/register: Add register_init_block8 helper.

 hw/core/register.c    | 46 ++++++++++++++++++++++++++++++++++++----------
 include/hw/register.h |  8 ++++++++
 2 files changed, 44 insertions(+), 10 deletions(-)


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PULL 1/1] hw/core/register: Add register_init_block8 helper.
  2020-05-05 23:09 [PULL 0/1] Register API Queue Alistair Francis
@ 2020-05-05 23:09 ` Alistair Francis
  2020-05-06 20:12 ` [PULL 0/1] Register API Queue Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Alistair Francis @ 2020-05-05 23:09 UTC (permalink / raw)
  To: peter.maydell; +Cc: Joaquin de Andres, Alistair Francis, qemu-devel

From: Joaquin de Andres <me@xcancerberox.com.ar>

There was no support for 8 bits block registers. Changed
register_init_block32 to be generic and static, adding register
size in bits as parameter. Created one helper for each size.

Signed-off-by: Joaquin de Andres <me@xcancerberox.com.ar>
Message-Id: <20200402162839.76636-1-me@xcancerberox.com.ar>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
---
 hw/core/register.c    | 46 +++++++++++++++++++++++++++++++++----------
 include/hw/register.h |  8 ++++++++
 2 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/hw/core/register.c b/hw/core/register.c
index 3c77396587..ddf91eb445 100644
--- a/hw/core/register.c
+++ b/hw/core/register.c
@@ -246,16 +246,18 @@ uint64_t register_read_memory(void *opaque, hwaddr addr,
     return extract64(read_val, 0, size * 8);
 }
 
-RegisterInfoArray *register_init_block32(DeviceState *owner,
-                                         const RegisterAccessInfo *rae,
-                                         int num, RegisterInfo *ri,
-                                         uint32_t *data,
-                                         const MemoryRegionOps *ops,
-                                         bool debug_enabled,
-                                         uint64_t memory_size)
+static RegisterInfoArray *register_init_block(DeviceState *owner,
+                                              const RegisterAccessInfo *rae,
+                                              int num, RegisterInfo *ri,
+                                              void *data,
+                                              const MemoryRegionOps *ops,
+                                              bool debug_enabled,
+                                              uint64_t memory_size,
+                                              size_t data_size_bits)
 {
     const char *device_prefix = object_get_typename(OBJECT(owner));
     RegisterInfoArray *r_array = g_new0(RegisterInfoArray, 1);
+    int data_size = data_size_bits >> 3;
     int i;
 
     r_array->r = g_new0(RegisterInfo *, num);
@@ -264,12 +266,12 @@ RegisterInfoArray *register_init_block32(DeviceState *owner,
     r_array->prefix = device_prefix;
 
     for (i = 0; i < num; i++) {
-        int index = rae[i].addr / 4;
+        int index = rae[i].addr / data_size;
         RegisterInfo *r = &ri[index];
 
         *r = (RegisterInfo) {
-            .data = &data[index],
-            .data_size = sizeof(uint32_t),
+            .data = data + data_size * index,
+            .data_size = data_size,
             .access = &rae[i],
             .opaque = owner,
         };
@@ -284,6 +286,30 @@ RegisterInfoArray *register_init_block32(DeviceState *owner,
     return r_array;
 }
 
+RegisterInfoArray *register_init_block8(DeviceState *owner,
+                                        const RegisterAccessInfo *rae,
+                                        int num, RegisterInfo *ri,
+                                        uint8_t *data,
+                                        const MemoryRegionOps *ops,
+                                        bool debug_enabled,
+                                        uint64_t memory_size)
+{
+    return register_init_block(owner, rae, num, ri, (void *)
+                               data, ops, debug_enabled, memory_size, 8);
+}
+
+RegisterInfoArray *register_init_block32(DeviceState *owner,
+                                         const RegisterAccessInfo *rae,
+                                         int num, RegisterInfo *ri,
+                                         uint32_t *data,
+                                         const MemoryRegionOps *ops,
+                                         bool debug_enabled,
+                                         uint64_t memory_size)
+{
+    return register_init_block(owner, rae, num, ri, (void *)
+                               data, ops, debug_enabled, memory_size, 32);
+}
+
 void register_finalize_block(RegisterInfoArray *r_array)
 {
     object_unparent(OBJECT(&r_array->mem));
diff --git a/include/hw/register.h b/include/hw/register.h
index 5796584588..5d2c565ae0 100644
--- a/include/hw/register.h
+++ b/include/hw/register.h
@@ -185,6 +185,14 @@ uint64_t register_read_memory(void *opaque, hwaddr addr, unsigned size);
  *          memory region (r_array->mem) the caller should add to a container.
  */
 
+RegisterInfoArray *register_init_block8(DeviceState *owner,
+                                        const RegisterAccessInfo *rae,
+                                        int num, RegisterInfo *ri,
+                                        uint8_t *data,
+                                        const MemoryRegionOps *ops,
+                                        bool debug_enabled,
+                                        uint64_t memory_size);
+
 RegisterInfoArray *register_init_block32(DeviceState *owner,
                                          const RegisterAccessInfo *rae,
                                          int num, RegisterInfo *ri,
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PULL 0/1] Register API Queue
  2020-05-05 23:09 [PULL 0/1] Register API Queue Alistair Francis
  2020-05-05 23:09 ` [PULL 1/1] hw/core/register: Add register_init_block8 helper Alistair Francis
@ 2020-05-06 20:12 ` Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2020-05-06 20:12 UTC (permalink / raw)
  To: Alistair Francis; +Cc: QEMU Developers

On Wed, 6 May 2020 at 00:18, Alistair Francis <alistair.francis@wdc.com> wrote:
>
> The following changes since commit f19d118bed77bb95681b07f4e76dbb700c16918d:
>
>   Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2020-05-04' into staging (2020-05-05 15:47:44 +0100)
>
> are available in the Git repository at:
>
>   git@github.com:alistair23/qemu.git tags/pull-reg-to-apply-20200505
>
> for you to fetch changes up to f08085f49fb66a5cdc86653bd896d0e728bcee50:
>
>   hw/core/register: Add register_init_block8 helper. (2020-05-05 13:37:51 -0700)
>
> ----------------------------------------------------------------
> Pull request for RegisterAPI
>
> This is a single patch to add support to the RegisterAPI for different
> data sizes.


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/5.1
for any user-visible changes.

-- PMM


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-05-06 20:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-05 23:09 [PULL 0/1] Register API Queue Alistair Francis
2020-05-05 23:09 ` [PULL 1/1] hw/core/register: Add register_init_block8 helper Alistair Francis
2020-05-06 20:12 ` [PULL 0/1] Register API Queue Peter Maydell

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).