> Date: Sun, 10 Nov 2019 13:09:44 +0100
> From: Martin Pieuchot <[email protected]>
> 
> 'db_expr_t' is defined as 'long' on all platforms.  I'd like to use some
> of the ddb interfaces without having to pull all the type & cast mess into
> non-DDB code.
> 
> Here's an example of getting rid of <machine/db_machdep.h> in MI code
> and using 'long' instead of 'db_expr_t'.
> 
> ok?

I think this one actually makes the code easier to understand.
However, I do agree that there is no reason for this to be in an MD
file.  Could we move the typedef into some other ddb header file?

> Index: ddb/db_access.c
> ===================================================================
> RCS file: /cvs/src/sys/ddb/db_access.c,v
> retrieving revision 1.16
> diff -u -p -r1.16 db_access.c
> --- ddb/db_access.c   7 Nov 2019 13:16:25 -0000       1.16
> +++ ddb/db_access.c   10 Nov 2019 10:30:35 -0000
> @@ -33,19 +33,17 @@
>  #include <sys/param.h>
>  #include <sys/endian.h>
>  
> -#include <machine/db_machdep.h>              /* type definitions */
> -
>  #include <ddb/db_access.h>
>  
>  /*
>   * Access unaligned data items on aligned (longword)
>   * boundaries.
>   */
> -db_expr_t
> +long
>  db_get_value(vaddr_t addr, size_t size, int is_signed)
>  {
> -     char data[sizeof(db_expr_t)];
> -     db_expr_t value, extend;
> +     char data[sizeof(long)];
> +     long value, extend;
>       int i;
>  
>  #ifdef DIAGNOSTIC
> @@ -56,7 +54,7 @@ db_get_value(vaddr_t addr, size_t size, 
>       db_read_bytes(addr, size, data);
>  
>       value = 0;
> -     extend = (~(db_expr_t)0) << (size * 8 - 1);
> +     extend = (~(long)0) << (size * 8 - 1);
>  #if BYTE_ORDER == LITTLE_ENDIAN
>       for (i = size - 1; i >= 0; i--)
>  #else /* BYTE_ORDER == BIG_ENDIAN */
> @@ -64,15 +62,15 @@ db_get_value(vaddr_t addr, size_t size, 
>  #endif /* BYTE_ORDER */
>               value = (value << 8) + (data[i] & 0xFF);
>  
> -     if (size < sizeof(db_expr_t) && is_signed && (value & extend))
> +     if (size < sizeof(long) && is_signed && (value & extend))
>               value |= extend;
>       return (value);
>  }
>  
>  void
> -db_put_value(vaddr_t addr, size_t size, db_expr_t value)
> +db_put_value(vaddr_t addr, size_t size, long value)
>  {
> -     char data[sizeof(db_expr_t)];
> +     char data[sizeof(long)];
>       int i;
>  
>  #ifdef DIAGNOSTIC
> Index: ddb/db_access.h
> ===================================================================
> RCS file: /cvs/src/sys/ddb/db_access.h,v
> retrieving revision 1.10
> diff -u -p -r1.10 db_access.h
> --- ddb/db_access.h   7 Nov 2019 13:16:25 -0000       1.10
> +++ ddb/db_access.h   10 Nov 2019 10:30:47 -0000
> @@ -33,8 +33,8 @@
>  /*
>   * Data access functions for debugger.
>   */
> -db_expr_t db_get_value(vaddr_t, size_t, int);
> -void db_put_value(vaddr_t, size_t, db_expr_t);
> +long db_get_value(vaddr_t, size_t, int);
> +void db_put_value(vaddr_t, size_t, long);
>  
>  void db_read_bytes(vaddr_t, size_t, char *);
>  void db_write_bytes(vaddr_t, size_t, char *);
> 
> 

Reply via email to