xref: /linux/scripts/gdb/linux/xarray.py (revision cb9f145f638d7afa633632a9290d6ad06caeb8ee)
1*a02b0cdeSFlorian Fainelli# SPDX-License-Identifier: GPL-2.0
2*a02b0cdeSFlorian Fainelli#
3*a02b0cdeSFlorian Fainelli#  Xarray helpers
4*a02b0cdeSFlorian Fainelli#
5*a02b0cdeSFlorian Fainelli# Copyright (c) 2025 Broadcom
6*a02b0cdeSFlorian Fainelli#
7*a02b0cdeSFlorian Fainelli# Authors:
8*a02b0cdeSFlorian Fainelli#  Florian Fainelli <florian.fainelli@broadcom.com>
9*a02b0cdeSFlorian Fainelli
10*a02b0cdeSFlorian Fainelliimport gdb
11*a02b0cdeSFlorian Fainelli
12*a02b0cdeSFlorian Fainellifrom linux import utils
13*a02b0cdeSFlorian Fainellifrom linux import constants
14*a02b0cdeSFlorian Fainelli
15*a02b0cdeSFlorian Fainellidef xa_is_internal(entry):
16*a02b0cdeSFlorian Fainelli    ulong_type = utils.get_ulong_type()
17*a02b0cdeSFlorian Fainelli    return ((entry.cast(ulong_type) & 3) == 2)
18*a02b0cdeSFlorian Fainelli
19*a02b0cdeSFlorian Fainellidef xa_mk_internal(v):
20*a02b0cdeSFlorian Fainelli    return ((v << 2) | 2)
21*a02b0cdeSFlorian Fainelli
22*a02b0cdeSFlorian Fainellidef xa_is_zero(entry):
23*a02b0cdeSFlorian Fainelli    ulong_type = utils.get_ulong_type()
24*a02b0cdeSFlorian Fainelli    return entry.cast(ulong_type) == xa_mk_internal(257)
25*a02b0cdeSFlorian Fainelli
26*a02b0cdeSFlorian Fainellidef xa_is_node(entry):
27*a02b0cdeSFlorian Fainelli    ulong_type = utils.get_ulong_type()
28*a02b0cdeSFlorian Fainelli    return xa_is_internal(entry) and (entry.cast(ulong_type) > 4096)
29