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