[v2,2/4] bpf: consolidate register format specifier handling [NFC]
Checks
| Context |
Check |
Description |
| linaro-tcwg-bot/tcwg_binutils_build--master-arm |
success
|
Build passed
|
| linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 |
success
|
Build passed
|
| linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 |
success
|
Test passed
|
| linaro-tcwg-bot/tcwg_binutils_check--master-arm |
success
|
Test passed
|
Commit Message
NFC. Combine the separate if blocks for %dr/%dw and %sr/%sw into
single blocks each, using the tag character to drive
parse_bpf_register().
Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
---
gas/config/tc-bpf.c | 50 ++++++++-------------------------------------
opcodes/bpf-dis.c | 16 ++++-----------
2 files changed, 12 insertions(+), 54 deletions(-)
Comments
OK.
> NFC. Combine the separate if blocks for %dr/%dw and %sr/%sw into
> single blocks each, using the tag character to drive
> parse_bpf_register().
>
> Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
> ---
> gas/config/tc-bpf.c | 50 ++++++++-------------------------------------
> opcodes/bpf-dis.c | 16 ++++-----------
> 2 files changed, 12 insertions(+), 54 deletions(-)
>
> diff --git a/gas/config/tc-bpf.c b/gas/config/tc-bpf.c
> index 57c2b869cbab..ecb6c5a70535 100644
> --- a/gas/config/tc-bpf.c
> +++ b/gas/config/tc-bpf.c
> @@ -1524,10 +1524,12 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
> s += 1;
> p += 2;
> }
> - else if (strncmp (p, "%dr", 3) == 0)
> + else if (strncmp (p, "%dr", 3) == 0
> + || strncmp (p, "%dw", 3) == 0)
> {
> + char rw = *(p + 2);
> uint8_t regno;
> - char *news = parse_bpf_register (s, 'r', ®no);
> + char *news = parse_bpf_register (s, rw, ®no);
>
> if (news == NULL || (insn.has_dst && regno != insn.dst))
> {
> @@ -1543,48 +1545,12 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
> insn.has_dst = 1;
> p += 3;
> }
> - else if (strncmp (p, "%sr", 3) == 0)
> + else if (strncmp (p, "%sr", 3) == 0
> + || strncmp (p, "%sw", 3) == 0)
> {
> + char rw = *(p + 2);
> uint8_t regno;
> - char *news = parse_bpf_register (s, 'r', ®no);
> -
> - if (news == NULL || (insn.has_src && regno != insn.src))
> - {
> - if (news != NULL)
> - PARSE_ERROR ("expected register r%d, got r%d",
> - insn.dst, regno);
> - else
> - PARSE_ERROR ("expected register name, got '%s'", s);
> - break;
> - }
> - s = news;
> - insn.src = regno;
> - insn.has_src = 1;
> - p += 3;
> - }
> - else if (strncmp (p, "%dw", 3) == 0)
> - {
> - uint8_t regno;
> - char *news = parse_bpf_register (s, 'w', ®no);
> -
> - if (news == NULL || (insn.has_dst && regno != insn.dst))
> - {
> - if (news != NULL)
> - PARSE_ERROR ("expected register r%d, got r%d",
> - insn.dst, regno);
> - else
> - PARSE_ERROR ("expected register name, got '%s'", s);
> - break;
> - }
> - s = news;
> - insn.dst = regno;
> - insn.has_dst = 1;
> - p += 3;
> - }
> - else if (strncmp (p, "%sw", 3) == 0)
> - {
> - uint8_t regno;
> - char *news = parse_bpf_register (s, 'w', ®no);
> + char *news = parse_bpf_register (s, rw, ®no);
>
> if (news == NULL || (insn.has_src && regno != insn.src))
> {
> diff --git a/opcodes/bpf-dis.c b/opcodes/bpf-dis.c
> index 7b89a7994ee6..de8d417dcd38 100644
> --- a/opcodes/bpf-dis.c
> +++ b/opcodes/bpf-dis.c
> @@ -214,22 +214,14 @@ print_insn_bpf (bfd_vma pc, disassemble_info *info)
> (*info->fprintf_styled_func) (info->stream, dis_style_text, " ");
> p += 2;
> }
> - else if (strncmp (p, "%dr", 3) == 0)
> + else if (strncmp (p, "%dr", 3) == 0
> + || strncmp (p, "%dw", 3) == 0)
> {
> print_register (info, p, bpf_extract_dst (word, endian));
> p += 3;
> }
> - else if (strncmp (p, "%sr", 3) == 0)
> - {
> - print_register (info, p, bpf_extract_src (word, endian));
> - p += 3;
> - }
> - else if (strncmp (p, "%dw", 3) == 0)
> - {
> - print_register (info, p, bpf_extract_dst (word, endian));
> - p += 3;
> - }
> - else if (strncmp (p, "%sw", 3) == 0)
> + else if (strncmp (p, "%sr", 3) == 0
> + || strncmp (p, "%sw", 3) == 0)
> {
> print_register (info, p, bpf_extract_src (word, endian));
> p += 3;
@@ -1524,10 +1524,12 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
s += 1;
p += 2;
}
- else if (strncmp (p, "%dr", 3) == 0)
+ else if (strncmp (p, "%dr", 3) == 0
+ || strncmp (p, "%dw", 3) == 0)
{
+ char rw = *(p + 2);
uint8_t regno;
- char *news = parse_bpf_register (s, 'r', ®no);
+ char *news = parse_bpf_register (s, rw, ®no);
if (news == NULL || (insn.has_dst && regno != insn.dst))
{
@@ -1543,48 +1545,12 @@ md_assemble (char *str ATTRIBUTE_UNUSED)
insn.has_dst = 1;
p += 3;
}
- else if (strncmp (p, "%sr", 3) == 0)
+ else if (strncmp (p, "%sr", 3) == 0
+ || strncmp (p, "%sw", 3) == 0)
{
+ char rw = *(p + 2);
uint8_t regno;
- char *news = parse_bpf_register (s, 'r', ®no);
-
- if (news == NULL || (insn.has_src && regno != insn.src))
- {
- if (news != NULL)
- PARSE_ERROR ("expected register r%d, got r%d",
- insn.dst, regno);
- else
- PARSE_ERROR ("expected register name, got '%s'", s);
- break;
- }
- s = news;
- insn.src = regno;
- insn.has_src = 1;
- p += 3;
- }
- else if (strncmp (p, "%dw", 3) == 0)
- {
- uint8_t regno;
- char *news = parse_bpf_register (s, 'w', ®no);
-
- if (news == NULL || (insn.has_dst && regno != insn.dst))
- {
- if (news != NULL)
- PARSE_ERROR ("expected register r%d, got r%d",
- insn.dst, regno);
- else
- PARSE_ERROR ("expected register name, got '%s'", s);
- break;
- }
- s = news;
- insn.dst = regno;
- insn.has_dst = 1;
- p += 3;
- }
- else if (strncmp (p, "%sw", 3) == 0)
- {
- uint8_t regno;
- char *news = parse_bpf_register (s, 'w', ®no);
+ char *news = parse_bpf_register (s, rw, ®no);
if (news == NULL || (insn.has_src && regno != insn.src))
{
@@ -214,22 +214,14 @@ print_insn_bpf (bfd_vma pc, disassemble_info *info)
(*info->fprintf_styled_func) (info->stream, dis_style_text, " ");
p += 2;
}
- else if (strncmp (p, "%dr", 3) == 0)
+ else if (strncmp (p, "%dr", 3) == 0
+ || strncmp (p, "%dw", 3) == 0)
{
print_register (info, p, bpf_extract_dst (word, endian));
p += 3;
}
- else if (strncmp (p, "%sr", 3) == 0)
- {
- print_register (info, p, bpf_extract_src (word, endian));
- p += 3;
- }
- else if (strncmp (p, "%dw", 3) == 0)
- {
- print_register (info, p, bpf_extract_dst (word, endian));
- p += 3;
- }
- else if (strncmp (p, "%sw", 3) == 0)
+ else if (strncmp (p, "%sr", 3) == 0
+ || strncmp (p, "%sw", 3) == 0)
{
print_register (info, p, bpf_extract_src (word, endian));
p += 3;