* [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE @ 2017-04-04 10:16 Alan Hayward 2017-04-05 10:23 ` Yao Qi 0 siblings, 1 reply; 9+ messages in thread From: Alan Hayward @ 2017-04-04 10:16 UTC (permalink / raw) To: gdb-patches; +Cc: nd Max size set to 128bits, which I determined using xtensa_register_type() Tested on a --enable-targets=all build using make check with board files unix and native-gdbserver. I do not have a XTENSA machine to test on. Ok to commit? Alan. 2017-04-04 Alan Hayward <alan.hayward@arm.com> * xtensa-tdep.c (xtensa_register_write_masked): Use XTENSA_MAX_REGISTER_SIZE. (xtensa_register_read_masked): Likewise. (xtensa_pseudo_register_read): Likewise. (xtensa_pseudo_register_write): Likewise. * xtensa-tdep.h (XTENSA_MAX_REGISTER_SIZE): Add. diff --git a/gdb/xtensa-tdep.h b/gdb/xtensa-tdep.h index 46aeecb35567930ac1497df3dae09d5ffe57e9e1..39abe1f8acb8fc508f48c7cf5bd81366e5f584be 100644 --- a/gdb/xtensa-tdep.h +++ b/gdb/xtensa-tdep.h @@ -222,6 +222,9 @@ struct gdbarch_tdep struct ctype_cache *type_entries; }; +/* Big enough to hold the size of the largest register in bytes. */ +#define XTENSA_MAX_REGISTER_SIZE 16 + /* Macro to instantiate a gdbarch_tdep structure. */ #define XTENSA_GDBARCH_TDEP_INSTANTIATE(rmap,spillsz) \ diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c index 376f4c7340c3292273d5b0912b23ff7166382e8b..655f884926dfad88cb03b582f608788c049d3bad 100644 --- a/gdb/xtensa-tdep.c +++ b/gdb/xtensa-tdep.c @@ -370,7 +370,7 @@ static void xtensa_register_write_masked (struct regcache *regcache, xtensa_register_t *reg, const gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; /* Shift for next mask (mod 32). */ @@ -454,7 +454,7 @@ static enum register_status xtensa_register_read_masked (struct regcache *regcache, xtensa_register_t *reg, gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; @@ -559,7 +559,7 @@ xtensa_pseudo_register_read (struct gdbarch *gdbarch, && (regnum >= gdbarch_tdep (gdbarch)->a0_base) && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) { - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); + gdb_byte *buf = (gdb_byte *) alloca (XTENSA_MAX_REGISTER_SIZE); enum register_status status; status = regcache_raw_read (regcache, @@ -655,7 +655,7 @@ xtensa_pseudo_register_write (struct gdbarch *gdbarch, && (regnum >= gdbarch_tdep (gdbarch)->a0_base) && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) { - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); + gdb_byte *buf = (gdb_byte *) alloca (XTENSA_MAX_REGISTER_SIZE); regcache_raw_read (regcache, gdbarch_tdep (gdbarch)->wb_regnum, buf); ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE 2017-04-04 10:16 [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE Alan Hayward @ 2017-04-05 10:23 ` Yao Qi 2017-04-06 12:49 ` Alan Hayward 0 siblings, 1 reply; 9+ messages in thread From: Yao Qi @ 2017-04-05 10:23 UTC (permalink / raw) To: Alan Hayward; +Cc: gdb-patches, nd Alan Hayward <Alan.Hayward@arm.com> writes: > @@ -559,7 +559,7 @@ xtensa_pseudo_register_read (struct gdbarch *gdbarch, > && (regnum >= gdbarch_tdep (gdbarch)->a0_base) > && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) > { > - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); > + gdb_byte *buf = (gdb_byte *) alloca (XTENSA_MAX_REGISTER_SIZE); > enum register_status status; > > status = regcache_raw_read (regcache, > @@ -655,7 +655,7 @@ xtensa_pseudo_register_write (struct gdbarch *gdbarch, > && (regnum >= gdbarch_tdep (gdbarch)->a0_base) > && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) > { > - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); > + gdb_byte *buf = (gdb_byte *) alloca (XTENSA_MAX_REGISTER_SIZE); > > regcache_raw_read (regcache, > gdbarch_tdep (gdbarch)->wb_regnum, buf); The "buf" can be removed by using regcache_raw_read_unsigned. -- Yao (齐尧) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE 2017-04-05 10:23 ` Yao Qi @ 2017-04-06 12:49 ` Alan Hayward 2017-04-25 15:39 ` Yao Qi 0 siblings, 1 reply; 9+ messages in thread From: Alan Hayward @ 2017-04-06 12:49 UTC (permalink / raw) To: Yao Qi; +Cc: gdb-patches, nd > On 5 Apr 2017, at 11:23, Yao Qi <qiyaoltc@gmail.com> wrote: > > Alan Hayward <Alan.Hayward@arm.com> writes: > >> @@ -559,7 +559,7 @@ xtensa_pseudo_register_read (struct gdbarch *gdbarch, >> && (regnum >= gdbarch_tdep (gdbarch)->a0_base) >> && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) >> { >> - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); >> + gdb_byte *buf = (gdb_byte *) alloca (XTENSA_MAX_REGISTER_SIZE); >> enum register_status status; >> >> status = regcache_raw_read (regcache, >> @@ -655,7 +655,7 @@ xtensa_pseudo_register_write (struct gdbarch *gdbarch, >> && (regnum >= gdbarch_tdep (gdbarch)->a0_base) >> && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) >> { >> - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); >> + gdb_byte *buf = (gdb_byte *) alloca (XTENSA_MAX_REGISTER_SIZE); >> >> regcache_raw_read (regcache, >> gdbarch_tdep (gdbarch)->wb_regnum, buf); > > The "buf" can be removed by using regcache_raw_read_unsigned. > > -- > Yao (齐尧) Ok, the patch below makes that change. I want to make it clear that I do not have an xtensa machine. With the previous patch I was confident that it would not cause any regressions - as it only switched the define being used, and shouldn't cause any functional change. With the new patch there is more untested code and I am less confident that I've not introduced a subtle error. Tested on a --enable-targets=all build using make check with board files unix and native-gdbserver. Ok to commit (or the previous version? Alan. 2017-04-06 Alan Hayward <alan.hayward@arm.com> * xtensa-tdep.c (XTENSA_MAX_REGISTER_SIZE): Add. (xtensa_register_write_masked): Use XTENSA_MAX_REGISTER_SIZE. (xtensa_register_read_masked): Likewise. (xtensa_pseudo_register_read): Use regcache_raw_read_unsigned. (xtensa_pseudo_register_write): Likewise. diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c index 13f1514e7651e47a268ef809b1324167f1f759bd..53c866075841fb00170cc34e446d6fc21c869032 100644 --- a/gdb/xtensa-tdep.c +++ b/gdb/xtensa-tdep.c @@ -120,6 +120,9 @@ static unsigned int xtensa_debug_level = 0; #define PS_WOE (1<<18) #define PS_EXC (1<<4) +/* Big enough to hold the size of the largest register in bytes. */ +#define XTENSA_MAX_REGISTER_SIZE 16 + static int windowing_enabled (struct gdbarch *gdbarch, unsigned int ps) { @@ -370,7 +373,7 @@ static void xtensa_register_write_masked (struct regcache *regcache, xtensa_register_t *reg, const gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; /* Shift for next mask (mod 32). */ @@ -454,7 +457,7 @@ static enum register_status xtensa_register_read_masked (struct regcache *regcache, xtensa_register_t *reg, gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; @@ -559,16 +562,15 @@ xtensa_pseudo_register_read (struct gdbarch *gdbarch, && (regnum >= gdbarch_tdep (gdbarch)->a0_base) && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) { - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); + ULONGEST value; enum register_status status; - status = regcache_raw_read (regcache, - gdbarch_tdep (gdbarch)->wb_regnum, - buf); + status = regcache_raw_read_unsigned (regcache, + gdbarch_tdep (gdbarch)->wb_regnum, + &value); if (status != REG_VALID) return status; - regnum = arreg_number (gdbarch, regnum, - extract_unsigned_integer (buf, 4, byte_order)); + regnum = arreg_number (gdbarch, regnum, value); } /* We can always read non-pseudo registers. */ @@ -656,12 +658,10 @@ xtensa_pseudo_register_write (struct gdbarch *gdbarch, && (regnum >= gdbarch_tdep (gdbarch)->a0_base) && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) { - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); - - regcache_raw_read (regcache, - gdbarch_tdep (gdbarch)->wb_regnum, buf); - regnum = arreg_number (gdbarch, regnum, - extract_unsigned_integer (buf, 4, byte_order)); + ULONGEST value; + regcache_raw_read_unsigned (regcache, + gdbarch_tdep (gdbarch)->wb_regnum, &value); + regnum = arreg_number (gdbarch, regnum, value); } /* We can always write 'core' registers. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE 2017-04-06 12:49 ` Alan Hayward @ 2017-04-25 15:39 ` Yao Qi 2017-04-26 9:59 ` Alan Hayward 0 siblings, 1 reply; 9+ messages in thread From: Yao Qi @ 2017-04-25 15:39 UTC (permalink / raw) To: Alan Hayward; +Cc: gdb-patches Alan Hayward <Alan.Hayward@arm.com> writes: > @@ -559,16 +562,15 @@ xtensa_pseudo_register_read (struct gdbarch *gdbarch, > && (regnum >= gdbarch_tdep (gdbarch)->a0_base) > && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) > { > - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); > + ULONGEST value; > enum register_status status; > > - status = regcache_raw_read (regcache, > - gdbarch_tdep (gdbarch)->wb_regnum, > - buf); > + status = regcache_raw_read_unsigned (regcache, > + gdbarch_tdep (gdbarch)->wb_regnum, > + &value); > if (status != REG_VALID) > return status; > - regnum = arreg_number (gdbarch, regnum, > - extract_unsigned_integer (buf, 4, byte_order)); > + regnum = arreg_number (gdbarch, regnum, value); > } > > /* We can always read non-pseudo registers. */ > @@ -656,12 +658,10 @@ xtensa_pseudo_register_write (struct gdbarch *gdbarch, > && (regnum >= gdbarch_tdep (gdbarch)->a0_base) > && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) > { > - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); > - > - regcache_raw_read (regcache, > - gdbarch_tdep (gdbarch)->wb_regnum, buf); > - regnum = arreg_number (gdbarch, regnum, > - extract_unsigned_integer (buf, 4, byte_order)); > + ULONGEST value; > + regcache_raw_read_unsigned (regcache, > + gdbarch_tdep (gdbarch)->wb_regnum, &value); > + regnum = arreg_number (gdbarch, regnum, value); This part of patch is OK, but the part using XTENSA_MAX_REGISTER_SIZE still needs some review. -- Yao (齐尧) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE 2017-04-25 15:39 ` Yao Qi @ 2017-04-26 9:59 ` Alan Hayward 2017-06-08 9:42 ` Alan Hayward 0 siblings, 1 reply; 9+ messages in thread From: Alan Hayward @ 2017-04-26 9:59 UTC (permalink / raw) To: Yao Qi; +Cc: gdb-patches, nd > On 25 Apr 2017, at 16:39, Yao Qi <qiyaoltc@gmail.com> wrote: > > Alan Hayward <Alan.Hayward@arm.com> writes: > >> @@ -559,16 +562,15 @@ xtensa_pseudo_register_read (struct gdbarch *gdbarch, >> && (regnum >= gdbarch_tdep (gdbarch)->a0_base) >> && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) >> { >> - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); >> + ULONGEST value; >> enum register_status status; >> >> - status = regcache_raw_read (regcache, >> - gdbarch_tdep (gdbarch)->wb_regnum, >> - buf); >> + status = regcache_raw_read_unsigned (regcache, >> + gdbarch_tdep (gdbarch)->wb_regnum, >> + &value); >> if (status != REG_VALID) >> return status; >> - regnum = arreg_number (gdbarch, regnum, >> - extract_unsigned_integer (buf, 4, byte_order)); >> + regnum = arreg_number (gdbarch, regnum, value); >> } >> >> /* We can always read non-pseudo registers. */ >> @@ -656,12 +658,10 @@ xtensa_pseudo_register_write (struct gdbarch *gdbarch, >> && (regnum >= gdbarch_tdep (gdbarch)->a0_base) >> && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) >> { >> - gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); >> - >> - regcache_raw_read (regcache, >> - gdbarch_tdep (gdbarch)->wb_regnum, buf); >> - regnum = arreg_number (gdbarch, regnum, >> - extract_unsigned_integer (buf, 4, byte_order)); >> + ULONGEST value; >> + regcache_raw_read_unsigned (regcache, >> + gdbarch_tdep (gdbarch)->wb_regnum, &value); >> + regnum = arreg_number (gdbarch, regnum, value); > > This part of patch is OK, but the part using XTENSA_MAX_REGISTER_SIZE > still needs some review. > > -- > Yao (齐尧) Ok, Above committed with: 2017-04-26 Alan Hayward <alan.hayward@arm.com> * xtensa-tdep.c (xtensa_pseudo_register_read): Use regcache_raw_read_unsigned. (xtensa_pseudo_register_write): Likewise. This leaves the following left to review (below). Looking at the code, I'm still a little unsure exactly how "value" is being used. "value" is declared as max register size, rounded up to the next int. Looking at the use of value, I think the code requires max size of a register multiplied by the value in reg->mask + 1 - and checking xtensa-config.c, this never goes above one. The comment also states the size of a masked register is never greater than 32bits. Maybe the value should be given a size of 32bits * (mask->count + 1) ? 2017-04-06 Alan Hayward <alan.hayward@arm.com> * xtensa-tdep.c (XTENSA_MAX_REGISTER_SIZE): Add. (xtensa_register_write_masked): Use XTENSA_MAX_REGISTER_SIZE. (xtensa_register_read_masked): Likewise. diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c index 0a4ed37cf9582a7aa43ec601fc013f1f93624a39..e79c925b345a8bd03e3a674c731c00e86f1ea39a 100644 --- a/gdb/xtensa-tdep.c +++ b/gdb/xtensa-tdep.c @@ -120,6 +120,9 @@ static unsigned int xtensa_debug_level = 0; #define PS_WOE (1<<18) #define PS_EXC (1<<4) +/* Big enough to hold the size of the largest register in bytes. */ +#define XTENSA_MAX_REGISTER_SIZE 16 + static int windowing_enabled (struct gdbarch *gdbarch, unsigned int ps) { @@ -370,7 +373,7 @@ static void xtensa_register_write_masked (struct regcache *regcache, xtensa_register_t *reg, const gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; /* Shift for next mask (mod 32). */ @@ -454,7 +457,7 @@ static enum register_status xtensa_register_read_masked (struct regcache *regcache, xtensa_register_t *reg, gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE 2017-04-26 9:59 ` Alan Hayward @ 2017-06-08 9:42 ` Alan Hayward 2017-06-12 9:54 ` Yao Qi 0 siblings, 1 reply; 9+ messages in thread From: Alan Hayward @ 2017-06-08 9:42 UTC (permalink / raw) To: Yao Qi, gdb-patches; +Cc: nd > On 26 Apr 2017, at 10:59, Alan Hayward <Alan.Hayward@arm.com> wrote: > > >> On 25 Apr 2017, at 16:39, Yao Qi <qiyaoltc@gmail.com> wrote: >> >> Alan Hayward <Alan.Hayward@arm.com> writes: >> I’ve rebased this patch due to Yao’s unit test changes. XTENSA_MAX_REGISTER_SIZE is set to 64 to ensure nothing breaks. I don't have a XTENSA machine to test on. Tested on a --enable-targets=all and asan build using make check with board files unix, native-gdbserver and unittest Ok to commit? Alan. 2017-06-08 Alan Hayward <alan.hayward@arm.com> * xtensa-tdep.c (XTENSA_MAX_REGISTER_SIZE): Add. (xtensa_register_write_masked): Use XTENSA_MAX_REGISTER_SIZE. (xtensa_register_read_masked): Likewise. diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c index f9e858473a409ff082d30f9ff474d48da63903e3..f875f20d32b68abc37e3db37ab3e6053918536e5 100644 --- a/gdb/xtensa-tdep.c +++ b/gdb/xtensa-tdep.c @@ -120,6 +120,9 @@ static unsigned int xtensa_debug_level = 0; #define PS_WOE (1<<18) #define PS_EXC (1<<4) +/* Big enough to hold the size of the largest register in bytes. */ +#define XTENSA_MAX_REGISTER_SIZE 64 + static int windowing_enabled (struct gdbarch *gdbarch, unsigned int ps) { @@ -370,7 +373,7 @@ static void xtensa_register_write_masked (struct regcache *regcache, xtensa_register_t *reg, const gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; /* Shift for next mask (mod 32). */ @@ -454,7 +457,7 @@ static enum register_status xtensa_register_read_masked (struct regcache *regcache, xtensa_register_t *reg, gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE 2017-06-08 9:42 ` Alan Hayward @ 2017-06-12 9:54 ` Yao Qi 2017-06-21 9:36 ` Alan Hayward 0 siblings, 1 reply; 9+ messages in thread From: Yao Qi @ 2017-06-12 9:54 UTC (permalink / raw) To: Alan Hayward, maxim2405; +Cc: gdb-patches, nd Alan Hayward <Alan.Hayward@arm.com> writes: > I don't have a XTENSA machine to test on. > Tested on a --enable-targets=all and asan build using > make check with board files unix, native-gdbserver and unittest > > Ok to commit? > > Alan. > > 2017-06-08 Alan Hayward <alan.hayward@arm.com> > > * xtensa-tdep.c (XTENSA_MAX_REGISTER_SIZE): Add. > (xtensa_register_write_masked): Use XTENSA_MAX_REGISTER_SIZE. > (xtensa_register_read_masked): Likewise. Hi Maxim, What do you think about this patch? -- Yao (齐尧) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE 2017-06-12 9:54 ` Yao Qi @ 2017-06-21 9:36 ` Alan Hayward 2017-06-22 16:40 ` Max Filippov 0 siblings, 1 reply; 9+ messages in thread From: Alan Hayward @ 2017-06-21 9:36 UTC (permalink / raw) To: Yao Qi, jcmvbkbc, larue; +Cc: maxim2405, gdb-patches, nd Adding Woody and Max, the xtensa maintainers. Patch is to remove uses of MAX_REGISTER_SIZE in xtensa-tdep.c Re-pasted patch to end of email for convenience. > On 12 Jun 2017, at 10:54, Yao Qi <qiyaoltc@gmail.com> wrote: > > Alan Hayward <Alan.Hayward@arm.com> writes: > >> I don't have a XTENSA machine to test on. >> Tested on a --enable-targets=all and asan build using >> make check with board files unix, native-gdbserver and unittest >> >> Ok to commit? >> >> Alan. >> >> 2017-06-08 Alan Hayward <alan.hayward@arm.com> >> >> * xtensa-tdep.c (XTENSA_MAX_REGISTER_SIZE): Add. >> (xtensa_register_write_masked): Use XTENSA_MAX_REGISTER_SIZE. >> (xtensa_register_read_masked): Likewise. > > Hi Maxim, > What do you think about this patch? > > -- > Yao (齐尧) diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c index f9e858473a409ff082d30f9ff474d48da63903e3..f875f20d32b68abc37e3db37ab3e6053918536e5 100644 --- a/gdb/xtensa-tdep.c +++ b/gdb/xtensa-tdep.c @@ -120,6 +120,9 @@ static unsigned int xtensa_debug_level = 0; #define PS_WOE (1<<18) #define PS_EXC (1<<4) +/* Big enough to hold the size of the largest register in bytes. */ +#define XTENSA_MAX_REGISTER_SIZE 64 + static int windowing_enabled (struct gdbarch *gdbarch, unsigned int ps) { @@ -370,7 +373,7 @@ static void xtensa_register_write_masked (struct regcache *regcache, xtensa_register_t *reg, const gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; /* Shift for next mask (mod 32). */ @@ -454,7 +457,7 @@ static enum register_status xtensa_register_read_masked (struct regcache *regcache, xtensa_register_t *reg, gdb_byte *buffer) { - unsigned int value[(MAX_REGISTER_SIZE + 3) / 4]; + unsigned int value[(XTENSA_MAX_REGISTER_SIZE + 3) / 4]; const xtensa_mask_t *mask = reg->mask; int shift = 0; ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE 2017-06-21 9:36 ` Alan Hayward @ 2017-06-22 16:40 ` Max Filippov 0 siblings, 0 replies; 9+ messages in thread From: Max Filippov @ 2017-06-22 16:40 UTC (permalink / raw) To: Alan Hayward; +Cc: Yao Qi, larue, maxim2405, gdb-patches, nd Hi Alan, On Wed, Jun 21, 2017 at 2:35 AM, Alan Hayward <Alan.Hayward@arm.com> wrote: > Adding Woody and Max, the xtensa maintainers. > Patch is to remove uses of MAX_REGISTER_SIZE in xtensa-tdep.c > Re-pasted patch to end of email for convenience. the change looks good to me. -- Thanks. -- Max ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2017-06-22 16:40 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-04-04 10:16 [PATCH 10/11] Add XTENSA_MAX_REGISTER_SIZE Alan Hayward 2017-04-05 10:23 ` Yao Qi 2017-04-06 12:49 ` Alan Hayward 2017-04-25 15:39 ` Yao Qi 2017-04-26 9:59 ` Alan Hayward 2017-06-08 9:42 ` Alan Hayward 2017-06-12 9:54 ` Yao Qi 2017-06-21 9:36 ` Alan Hayward 2017-06-22 16:40 ` Max Filippov
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 read-only IMAP folder(s) and NNTP newsgroup(s).