* Re: kernel since 5.6 do not boot anymore on Apple PowerBook
From: Giuseppe Sacco @ 2020-07-08 17:00 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <aab7a9fefe9ccfa272fbc45eeaa8228fced14d3b.camel@sguazz.it>
Hello,
while trying to debug a problem using git bisect, I am now at a point
where I cannot build the kernel at all. This is the error message I
get:
$ LANG=C make ARCH=powerpc \
CROSS_COMPILE=powerpc-linux- \
CONFIG_MODULE_COMPRESS_GZIP=true \
INSTALL_MOD_STRIP=1 CONFIG_MODULE_COMPRESS=1 \
-j4 INSTALL_MOD_PATH=$BOOT INSTALL_PATH=$BOOT \
CONFIG_DEBUG_INFO_COMPRESSED=1 \
install modules_install
make[2]: *** No rule to make target 'vmlinux', needed by
'arch/powerpc/boot/zImage.pmac'. Stop.
make[1]: *** [arch/powerpc/Makefile:407: install] Error 2
make: *** [Makefile:328: __build_one_by_one] Error 2
How can I continue?
Thank you,
Giuseppe
^ permalink raw reply
* Re: powerpc: Incorrect stw operand modifier in __set_pte_at
From: Christophe Leroy @ 2020-07-08 16:16 UTC (permalink / raw)
To: Mathieu Desnoyers, Michael Ellerman, Benjamin Herrenschmidt,
Paul Mackerras, Kumar Gala
Cc: linuxppc-dev
In-Reply-To: <873469922.2744.1594219513228.JavaMail.zimbra@efficios.com>
Le 08/07/2020 à 16:45, Mathieu Desnoyers a écrit :
> Hi,
>
> Reviewing use of the patterns "Un%Xn" with lwz and stw instructions
> (where n should be the operand number) within the Linux kernel led
> me to spot those 2 weird cases:
>
> arch/powerpc/include/asm/nohash/pgtable.h:__set_pte_at()
>
> __asm__ __volatile__("\
> stw%U0%X0 %2,%0\n\
> eieio\n\
> stw%U0%X0 %L2,%1"
> : "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
> : "r" (pte) : "memory");
>
> I would have expected the stw to be:
>
> stw%U1%X1 %L2,%1"
>
> and:
> arch/powerpc/include/asm/book3s/32/pgtable.h:__set_pte_at()
>
> __asm__ __volatile__("\
> stw%U0%X0 %2,%0\n\
> eieio\n\
> stw%U0%X0 %L2,%1"
> : "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
> : "r" (pte) : "memory");
>
> where I would have expected:
>
> stw%U1%X1 %L2,%1"
>
> Is it a bug or am I missing something ?
Well spotted. I guess it's definitly a bug.
Introduced 12 years ago by commit
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9bf2b5cd
("powerpc: Fixes for CONFIG_PTE_64BIT for SMP support").
It's gone unnoticed until now it seems.
Can you submit a patch for it ?
Christophe
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Christophe Leroy @ 2020-07-08 16:11 UTC (permalink / raw)
To: Mathieu Desnoyers; +Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <1137155888.2676.1594218740683.JavaMail.zimbra@efficios.com>
Le 08/07/2020 à 16:32, Mathieu Desnoyers a écrit :
> ----- On Jul 8, 2020, at 10:21 AM, Christophe Leroy christophe.leroy@csgroup.eu wrote:
>
>> Le 08/07/2020 à 16:00, Mathieu Desnoyers a écrit :
>>> ----- On Jul 8, 2020, at 8:33 AM, Mathieu Desnoyers
>>> mathieu.desnoyers@efficios.com wrote:
>>>
>>>> ----- On Jul 7, 2020, at 8:59 PM, Segher Boessenkool segher@kernel.crashing.org
>>>> wrote:
>>> [...]
>>>>>
>>>>> So perhaps you have code like
>>>>>
>>>>> int *p;
>>>>> int x;
>>>>> ...
>>>>> asm ("lwz %0,%1" : "=r"(x) : "m"(*p));
>>>>
>>>> We indeed have explicit "lwz" and "stw" instructions in there.
>>>>
>>>>>
>>>>> where that last line should actually read
>>>>>
>>>>> asm ("lwz%X1 %0,%1" : "=r"(x) : "m"(*p));
>>>>
>>>> Indeed, turning those into "lwzx" and "stwx" seems to fix the issue.
>>>>
>>>> There has been some level of extra CPP macro coating around those instructions
>>>> to
>>>> support both ppc32 and ppc64 with the same assembly. So adding %X[arg] is not
>>>> trivial.
>>>> Let me see what can be done here.
>>>
>>> I did the following changes which appear to generate valid asm.
>>> See attached corresponding .S output.
>>>
>>> I grepped for uses of "m" asm operand in Linux powerpc code and noticed it's
>>> pretty much
>>> always used with e.g. "lwz%U1%X1". I could find one blog post discussing that %U
>>> is about
>>> update flag, and nothing about %X. Are those documented ?
>>
>> As far as I can see, %U is mentioned in
>> https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html in the
>> powerpc subpart, at the "m" constraint.
>
> Yep, I did notice it, but mistakenly thought it was only needed for "m<>" operand,
> not "m".
You are right, AFAIU on recent versions of GCC, %U has no effect without m<>
Christophe
>
> Thanks,
>
> Mathieu
>
>>
>> For the %X I don't know.
>>
>> Christophe
>>
>>>
>>> Although it appears to generate valid asm, I have the feeling I'm relying on
>>> undocumented
>>> features here. :-/
>
^ permalink raw reply
* [PATCH 5/5] powerpc: use the generic dma_ops_bypass mode
From: Christoph Hellwig @ 2020-07-08 15:24 UTC (permalink / raw)
To: iommu, Alexey Kardashevskiy
Cc: Björn Töpel, Daniel Borkmann, Greg Kroah-Hartman,
Joerg Roedel, Robin Murphy, linux-kernel, Jesper Dangaard Brouer,
linuxppc-dev, Lu Baolu
In-Reply-To: <20200708152449.316476-1-hch@lst.de>
Use the DMA API bypass mechanism for direct window mappings. This uses
common code and speed up the direct mapping case by avoiding indirect
calls just when not using dma ops at all. It also fixes a problem where
the sync_* methods were using the bypass check for DMA allocations, but
those are part of the streaming ops.
Note that this patch loses the DMA_ATTR_WEAK_ORDERING override, which
has never been well defined, as is only used by a few drivers, which
IIRC never showed up in the typical Cell blade setups that are affected
by the ordering workaround.
Fixes: efd176a04bef ("powerpc/pseries/dma: Allow SWIOTLB")
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
arch/powerpc/Kconfig | 1 +
arch/powerpc/include/asm/device.h | 5 --
arch/powerpc/kernel/dma-iommu.c | 90 ++++---------------------------
3 files changed, 10 insertions(+), 86 deletions(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index e9b091d3587222..be868bfbe76ecf 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -152,6 +152,7 @@ config PPC
select CLONE_BACKWARDS
select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
select DMA_OPS if PPC64
+ select DMA_OPS_BYPASS if PPC64
select DYNAMIC_FTRACE if FUNCTION_TRACER
select EDAC_ATOMIC_SCRUB
select EDAC_SUPPORT
diff --git a/arch/powerpc/include/asm/device.h b/arch/powerpc/include/asm/device.h
index 266542769e4bd1..452402215e1210 100644
--- a/arch/powerpc/include/asm/device.h
+++ b/arch/powerpc/include/asm/device.h
@@ -18,11 +18,6 @@ struct iommu_table;
* drivers/macintosh/macio_asic.c
*/
struct dev_archdata {
- /*
- * Set to %true if the dma_iommu_ops are requested to use a direct
- * window instead of dynamically mapping memory.
- */
- bool iommu_bypass : 1;
/*
* These two used to be a union. However, with the hybrid ops we need
* both so here we store both a DMA offset for direct mappings and
diff --git a/arch/powerpc/kernel/dma-iommu.c b/arch/powerpc/kernel/dma-iommu.c
index e486d1d78de288..569fecd7b5b234 100644
--- a/arch/powerpc/kernel/dma-iommu.c
+++ b/arch/powerpc/kernel/dma-iommu.c
@@ -14,23 +14,6 @@
* Generic iommu implementation
*/
-/*
- * The coherent mask may be smaller than the real mask, check if we can
- * really use a direct window.
- */
-static inline bool dma_iommu_alloc_bypass(struct device *dev)
-{
- return dev->archdata.iommu_bypass && !iommu_fixed_is_weak &&
- dma_direct_supported(dev, dev->coherent_dma_mask);
-}
-
-static inline bool dma_iommu_map_bypass(struct device *dev,
- unsigned long attrs)
-{
- return dev->archdata.iommu_bypass &&
- (!iommu_fixed_is_weak || (attrs & DMA_ATTR_WEAK_ORDERING));
-}
-
/* Allocates a contiguous real buffer and creates mappings over it.
* Returns the virtual address of the buffer and sets dma_handle
* to the dma address (mapping) of the first page.
@@ -39,8 +22,6 @@ static void *dma_iommu_alloc_coherent(struct device *dev, size_t size,
dma_addr_t *dma_handle, gfp_t flag,
unsigned long attrs)
{
- if (dma_iommu_alloc_bypass(dev))
- return dma_direct_alloc(dev, size, dma_handle, flag, attrs);
return iommu_alloc_coherent(dev, get_iommu_table_base(dev), size,
dma_handle, dev->coherent_dma_mask, flag,
dev_to_node(dev));
@@ -50,11 +31,7 @@ static void dma_iommu_free_coherent(struct device *dev, size_t size,
void *vaddr, dma_addr_t dma_handle,
unsigned long attrs)
{
- if (dma_iommu_alloc_bypass(dev))
- dma_direct_free(dev, size, vaddr, dma_handle, attrs);
- else
- iommu_free_coherent(get_iommu_table_base(dev), size, vaddr,
- dma_handle);
+ iommu_free_coherent(get_iommu_table_base(dev), size, vaddr, dma_handle);
}
/* Creates TCEs for a user provided buffer. The user buffer must be
@@ -67,9 +44,6 @@ static dma_addr_t dma_iommu_map_page(struct device *dev, struct page *page,
enum dma_data_direction direction,
unsigned long attrs)
{
- if (dma_iommu_map_bypass(dev, attrs))
- return dma_direct_map_page(dev, page, offset, size, direction,
- attrs);
return iommu_map_page(dev, get_iommu_table_base(dev), page, offset,
size, dma_get_mask(dev), direction, attrs);
}
@@ -79,11 +53,8 @@ static void dma_iommu_unmap_page(struct device *dev, dma_addr_t dma_handle,
size_t size, enum dma_data_direction direction,
unsigned long attrs)
{
- if (!dma_iommu_map_bypass(dev, attrs))
- iommu_unmap_page(get_iommu_table_base(dev), dma_handle, size,
- direction, attrs);
- else
- dma_direct_unmap_page(dev, dma_handle, size, direction, attrs);
+ iommu_unmap_page(get_iommu_table_base(dev), dma_handle, size, direction,
+ attrs);
}
@@ -91,8 +62,6 @@ static int dma_iommu_map_sg(struct device *dev, struct scatterlist *sglist,
int nelems, enum dma_data_direction direction,
unsigned long attrs)
{
- if (dma_iommu_map_bypass(dev, attrs))
- return dma_direct_map_sg(dev, sglist, nelems, direction, attrs);
return ppc_iommu_map_sg(dev, get_iommu_table_base(dev), sglist, nelems,
dma_get_mask(dev), direction, attrs);
}
@@ -101,11 +70,8 @@ static void dma_iommu_unmap_sg(struct device *dev, struct scatterlist *sglist,
int nelems, enum dma_data_direction direction,
unsigned long attrs)
{
- if (!dma_iommu_map_bypass(dev, attrs))
- ppc_iommu_unmap_sg(get_iommu_table_base(dev), sglist, nelems,
+ ppc_iommu_unmap_sg(get_iommu_table_base(dev), sglist, nelems,
direction, attrs);
- else
- dma_direct_unmap_sg(dev, sglist, nelems, direction, attrs);
}
static bool dma_iommu_bypass_supported(struct device *dev, u64 mask)
@@ -113,8 +79,9 @@ static bool dma_iommu_bypass_supported(struct device *dev, u64 mask)
struct pci_dev *pdev = to_pci_dev(dev);
struct pci_controller *phb = pci_bus_to_host(pdev->bus);
- return phb->controller_ops.iommu_bypass_supported &&
- phb->controller_ops.iommu_bypass_supported(pdev, mask);
+ if (iommu_fixed_is_weak || !phb->controller_ops.iommu_bypass_supported)
+ return false;
+ return phb->controller_ops.iommu_bypass_supported(pdev, mask);
}
/* We support DMA to/from any memory page via the iommu */
@@ -123,7 +90,7 @@ int dma_iommu_dma_supported(struct device *dev, u64 mask)
struct iommu_table *tbl = get_iommu_table_base(dev);
if (dev_is_pci(dev) && dma_iommu_bypass_supported(dev, mask)) {
- dev->archdata.iommu_bypass = true;
+ dev->dma_ops_bypass = true;
dev_dbg(dev, "iommu: 64-bit OK, using fixed ops\n");
return 1;
}
@@ -141,7 +108,7 @@ int dma_iommu_dma_supported(struct device *dev, u64 mask)
}
dev_dbg(dev, "iommu: not 64-bit, using default ops\n");
- dev->archdata.iommu_bypass = false;
+ dev->dma_ops_bypass = false;
return 1;
}
@@ -153,47 +120,12 @@ u64 dma_iommu_get_required_mask(struct device *dev)
if (!tbl)
return 0;
- if (dev_is_pci(dev)) {
- u64 bypass_mask = dma_direct_get_required_mask(dev);
-
- if (dma_iommu_bypass_supported(dev, bypass_mask))
- return bypass_mask;
- }
-
mask = 1ULL < (fls_long(tbl->it_offset + tbl->it_size) - 1);
mask += mask - 1;
return mask;
}
-static void dma_iommu_sync_for_cpu(struct device *dev, dma_addr_t addr,
- size_t size, enum dma_data_direction dir)
-{
- if (dma_iommu_alloc_bypass(dev))
- dma_direct_sync_single_for_cpu(dev, addr, size, dir);
-}
-
-static void dma_iommu_sync_for_device(struct device *dev, dma_addr_t addr,
- size_t sz, enum dma_data_direction dir)
-{
- if (dma_iommu_alloc_bypass(dev))
- dma_direct_sync_single_for_device(dev, addr, sz, dir);
-}
-
-extern void dma_iommu_sync_sg_for_cpu(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir)
-{
- if (dma_iommu_alloc_bypass(dev))
- dma_direct_sync_sg_for_cpu(dev, sgl, nents, dir);
-}
-
-extern void dma_iommu_sync_sg_for_device(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir)
-{
- if (dma_iommu_alloc_bypass(dev))
- dma_direct_sync_sg_for_device(dev, sgl, nents, dir);
-}
-
const struct dma_map_ops dma_iommu_ops = {
.alloc = dma_iommu_alloc_coherent,
.free = dma_iommu_free_coherent,
@@ -203,10 +135,6 @@ const struct dma_map_ops dma_iommu_ops = {
.map_page = dma_iommu_map_page,
.unmap_page = dma_iommu_unmap_page,
.get_required_mask = dma_iommu_get_required_mask,
- .sync_single_for_cpu = dma_iommu_sync_for_cpu,
- .sync_single_for_device = dma_iommu_sync_for_device,
- .sync_sg_for_cpu = dma_iommu_sync_sg_for_cpu,
- .sync_sg_for_device = dma_iommu_sync_sg_for_device,
.mmap = dma_common_mmap,
.get_sgtable = dma_common_get_sgtable,
};
--
2.26.2
^ permalink raw reply related
* [PATCH 4/5] dma-mapping: add a dma_ops_bypass flag to struct device
From: Christoph Hellwig @ 2020-07-08 15:24 UTC (permalink / raw)
To: iommu, Alexey Kardashevskiy
Cc: Björn Töpel, Daniel Borkmann, Greg Kroah-Hartman,
Joerg Roedel, Robin Murphy, linux-kernel, Jesper Dangaard Brouer,
linuxppc-dev, Lu Baolu
In-Reply-To: <20200708152449.316476-1-hch@lst.de>
Several IOMMU drivers have a bypass mode where they can use a direct
mapping if the devices DMA mask is large enough. Add generic support
to the core dma-mapping code to do that to switch those drivers to
a common solution.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
include/linux/device.h | 8 +++++
kernel/dma/Kconfig | 8 +++++
kernel/dma/mapping.c | 74 +++++++++++++++++++++++++++++-------------
3 files changed, 68 insertions(+), 22 deletions(-)
diff --git a/include/linux/device.h b/include/linux/device.h
index 4c4af98321ebd6..1f71acf37f78d7 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -523,6 +523,11 @@ struct dev_links_info {
* sync_state() callback.
* @dma_coherent: this particular device is dma coherent, even if the
* architecture supports non-coherent devices.
+ * @dma_ops_bypass: If set to %true then the dma_ops are bypassed for the
+ * streaming DMA operations (->map_* / ->unmap_* / ->sync_*),
+ * and optionall (if the coherent mask is large enough) also
+ * for dma allocations. This flag is managed by the dma ops
+ * instance from ->dma_supported.
*
* At the lowest level, every device in a Linux system is represented by an
* instance of struct device. The device structure contains the information
@@ -623,6 +628,9 @@ struct device {
defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL)
bool dma_coherent:1;
#endif
+#ifdef CONFIG_DMA_OPS_BYPASS
+ bool dma_ops_bypass : 1;
+#endif
};
static inline struct device *kobj_to_dev(struct kobject *kobj)
diff --git a/kernel/dma/Kconfig b/kernel/dma/Kconfig
index 5cfb2428593ac7..f4770fcfa62bb3 100644
--- a/kernel/dma/Kconfig
+++ b/kernel/dma/Kconfig
@@ -8,6 +8,14 @@ config HAS_DMA
config DMA_OPS
bool
+#
+# IOMMU drivers that can bypass the IOMMU code and optionally use the direct
+# mapping fast path should select this option and set the dma_ops_bypass
+# flag in struct device where applicable
+#
+config DMA_OPS_BYPASS
+ bool
+
config NEED_SG_DMA_LENGTH
bool
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index b53953024512fe..0d129421e75fc8 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -105,9 +105,35 @@ void *dmam_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle,
}
EXPORT_SYMBOL(dmam_alloc_attrs);
-static inline bool dma_is_direct(const struct dma_map_ops *ops)
+static bool dma_go_direct(struct device *dev, dma_addr_t mask,
+ const struct dma_map_ops *ops)
{
- return likely(!ops);
+ if (likely(!ops))
+ return true;
+#ifdef CONFIG_DMA_OPS_BYPASS
+ if (dev->dma_ops_bypass)
+ return min_not_zero(mask, dev->bus_dma_limit) >=
+ dma_direct_get_required_mask(dev);
+#endif
+ return false;
+}
+
+
+/*
+ * Check if the devices uses a direct mapping for streaming DMA operations.
+ * This allows IOMMU drivers to set a bypass mode if the DMA mask is large
+ * enough.
+ */
+static inline bool dma_alloc_direct(struct device *dev,
+ const struct dma_map_ops *ops)
+{
+ return dma_go_direct(dev, dev->coherent_dma_mask, ops);
+}
+
+static inline bool dma_map_direct(struct device *dev,
+ const struct dma_map_ops *ops)
+{
+ return dma_go_direct(dev, *dev->dma_mask, ops);
}
dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page,
@@ -118,7 +144,7 @@ dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page,
dma_addr_t addr;
BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
addr = dma_direct_map_page(dev, page, offset, size, dir, attrs);
else
addr = ops->map_page(dev, page, offset, size, dir, attrs);
@@ -134,7 +160,7 @@ void dma_unmap_page_attrs(struct device *dev, dma_addr_t addr, size_t size,
const struct dma_map_ops *ops = get_dma_ops(dev);
BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
dma_direct_unmap_page(dev, addr, size, dir, attrs);
else if (ops->unmap_page)
ops->unmap_page(dev, addr, size, dir, attrs);
@@ -153,7 +179,7 @@ int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, int nents,
int ents;
BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
ents = dma_direct_map_sg(dev, sg, nents, dir, attrs);
else
ents = ops->map_sg(dev, sg, nents, dir, attrs);
@@ -172,7 +198,7 @@ void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg,
BUG_ON(!valid_dma_direction(dir));
debug_dma_unmap_sg(dev, sg, nents, dir);
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
dma_direct_unmap_sg(dev, sg, nents, dir, attrs);
else if (ops->unmap_sg)
ops->unmap_sg(dev, sg, nents, dir, attrs);
@@ -191,7 +217,7 @@ dma_addr_t dma_map_resource(struct device *dev, phys_addr_t phys_addr,
if (WARN_ON_ONCE(pfn_valid(PHYS_PFN(phys_addr))))
return DMA_MAPPING_ERROR;
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
addr = dma_direct_map_resource(dev, phys_addr, size, dir, attrs);
else if (ops->map_resource)
addr = ops->map_resource(dev, phys_addr, size, dir, attrs);
@@ -207,7 +233,7 @@ void dma_unmap_resource(struct device *dev, dma_addr_t addr, size_t size,
const struct dma_map_ops *ops = get_dma_ops(dev);
BUG_ON(!valid_dma_direction(dir));
- if (!dma_is_direct(ops) && ops->unmap_resource)
+ if (!dma_map_direct(dev, ops) && ops->unmap_resource)
ops->unmap_resource(dev, addr, size, dir, attrs);
debug_dma_unmap_resource(dev, addr, size, dir);
}
@@ -219,7 +245,7 @@ void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t size,
const struct dma_map_ops *ops = get_dma_ops(dev);
BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
dma_direct_sync_single_for_cpu(dev, addr, size, dir);
else if (ops->sync_single_for_cpu)
ops->sync_single_for_cpu(dev, addr, size, dir);
@@ -233,7 +259,7 @@ void dma_sync_single_for_device(struct device *dev, dma_addr_t addr,
const struct dma_map_ops *ops = get_dma_ops(dev);
BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
dma_direct_sync_single_for_device(dev, addr, size, dir);
else if (ops->sync_single_for_device)
ops->sync_single_for_device(dev, addr, size, dir);
@@ -247,7 +273,7 @@ void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
const struct dma_map_ops *ops = get_dma_ops(dev);
BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
dma_direct_sync_sg_for_cpu(dev, sg, nelems, dir);
else if (ops->sync_sg_for_cpu)
ops->sync_sg_for_cpu(dev, sg, nelems, dir);
@@ -261,7 +287,7 @@ void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
const struct dma_map_ops *ops = get_dma_ops(dev);
BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
dma_direct_sync_sg_for_device(dev, sg, nelems, dir);
else if (ops->sync_sg_for_device)
ops->sync_sg_for_device(dev, sg, nelems, dir);
@@ -302,7 +328,7 @@ int dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt,
{
const struct dma_map_ops *ops = get_dma_ops(dev);
- if (dma_is_direct(ops))
+ if (dma_alloc_direct(dev, ops))
return dma_direct_get_sgtable(dev, sgt, cpu_addr, dma_addr,
size, attrs);
if (!ops->get_sgtable)
@@ -372,7 +398,7 @@ bool dma_can_mmap(struct device *dev)
{
const struct dma_map_ops *ops = get_dma_ops(dev);
- if (dma_is_direct(ops))
+ if (dma_alloc_direct(dev, ops))
return dma_direct_can_mmap(dev);
return ops->mmap != NULL;
}
@@ -397,7 +423,7 @@ int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma,
{
const struct dma_map_ops *ops = get_dma_ops(dev);
- if (dma_is_direct(ops))
+ if (dma_alloc_direct(dev, ops))
return dma_direct_mmap(dev, vma, cpu_addr, dma_addr, size,
attrs);
if (!ops->mmap)
@@ -410,7 +436,7 @@ u64 dma_get_required_mask(struct device *dev)
{
const struct dma_map_ops *ops = get_dma_ops(dev);
- if (dma_is_direct(ops))
+ if (dma_alloc_direct(dev, ops))
return dma_direct_get_required_mask(dev);
if (ops->get_required_mask)
return ops->get_required_mask(dev);
@@ -441,7 +467,7 @@ void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle,
/* let the implementation decide on the zone to allocate from: */
flag &= ~(__GFP_DMA | __GFP_DMA32 | __GFP_HIGHMEM);
- if (dma_is_direct(ops))
+ if (dma_alloc_direct(dev, ops))
cpu_addr = dma_direct_alloc(dev, size, dma_handle, flag, attrs);
else if (ops->alloc)
cpu_addr = ops->alloc(dev, size, dma_handle, flag, attrs);
@@ -473,7 +499,7 @@ void dma_free_attrs(struct device *dev, size_t size, void *cpu_addr,
return;
debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);
- if (dma_is_direct(ops))
+ if (dma_alloc_direct(dev, ops))
dma_direct_free(dev, size, cpu_addr, dma_handle, attrs);
else if (ops->free)
ops->free(dev, size, cpu_addr, dma_handle, attrs);
@@ -484,7 +510,11 @@ int dma_supported(struct device *dev, u64 mask)
{
const struct dma_map_ops *ops = get_dma_ops(dev);
- if (dma_is_direct(ops))
+ /*
+ * ->dma_supported sets the bypass flag, so we must always call
+ * into the method here unless the device is truly direct mapped.
+ */
+ if (!ops)
return dma_direct_supported(dev, mask);
if (!ops->dma_supported)
return 1;
@@ -540,7 +570,7 @@ void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
+ if (dma_alloc_direct(dev, ops))
arch_dma_cache_sync(dev, vaddr, size, dir);
else if (ops->cache_sync)
ops->cache_sync(dev, vaddr, size, dir);
@@ -552,7 +582,7 @@ size_t dma_max_mapping_size(struct device *dev)
const struct dma_map_ops *ops = get_dma_ops(dev);
size_t size = SIZE_MAX;
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
size = dma_direct_max_mapping_size(dev);
else if (ops && ops->max_mapping_size)
size = ops->max_mapping_size(dev);
@@ -565,7 +595,7 @@ bool dma_need_sync(struct device *dev, dma_addr_t dma_addr)
{
const struct dma_map_ops *ops = get_dma_ops(dev);
- if (dma_is_direct(ops))
+ if (dma_map_direct(dev, ops))
return dma_direct_need_sync(dev, dma_addr);
return ops->sync_single_for_cpu || ops->sync_single_for_device;
}
--
2.26.2
^ permalink raw reply related
* [PATCH 3/5] dma-mapping: make support for dma ops optional
From: Christoph Hellwig @ 2020-07-08 15:24 UTC (permalink / raw)
To: iommu, Alexey Kardashevskiy
Cc: Björn Töpel, Daniel Borkmann, Greg Kroah-Hartman,
Joerg Roedel, Robin Murphy, linux-kernel, Jesper Dangaard Brouer,
linuxppc-dev, Lu Baolu
In-Reply-To: <20200708152449.316476-1-hch@lst.de>
Avoid the overhead of the dma ops support for tiny builds that only
use the direct mapping.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
arch/alpha/Kconfig | 1 +
arch/arm/Kconfig | 1 +
arch/ia64/Kconfig | 1 +
arch/mips/Kconfig | 1 +
arch/parisc/Kconfig | 1 +
arch/powerpc/Kconfig | 1 +
arch/s390/Kconfig | 1 +
arch/sparc/Kconfig | 1 +
arch/x86/Kconfig | 1 +
drivers/iommu/Kconfig | 2 ++
drivers/misc/mic/Kconfig | 1 +
drivers/vdpa/Kconfig | 1 +
drivers/xen/Kconfig | 1 +
include/linux/device.h | 3 ++-
include/linux/dma-mapping.h | 12 +++++++++++-
kernel/dma/Kconfig | 4 ++++
kernel/dma/Makefile | 3 ++-
17 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 10862c5a8c7682..9c5f06e8eb9bc0 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -7,6 +7,7 @@ config ALPHA
select ARCH_NO_PREEMPT
select ARCH_NO_SG_CHAIN
select ARCH_USE_CMPXCHG_LOCKREF
+ select DMA_OPS if PCI
select FORCE_PCI if !ALPHA_JENSEN
select PCI_DOMAINS if PCI
select PCI_SYSCALL if PCI
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 2ac74904a3ce58..bee35b0187e452 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -41,6 +41,7 @@ config ARM
select CPU_PM if SUSPEND || CPU_IDLE
select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS
select DMA_DECLARE_COHERENT
+ select DMA_OPS
select DMA_REMAP if MMU
select EDAC_SUPPORT
select EDAC_ATOMIC_SCRUB
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 1fa2fe2ef053f8..5b4ec80bf5863a 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -192,6 +192,7 @@ config IA64_SGI_UV
config IA64_HP_SBA_IOMMU
bool "HP SBA IOMMU support"
+ select DMA_OPS
default y
help
Say Y here to add support for the SBA IOMMU found on HP zx1 and
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 6fee1a133e9d6a..8a458105e445b6 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -367,6 +367,7 @@ config MACH_JAZZ
select ARC_PROMLIB
select ARCH_MIGHT_HAVE_PC_PARPORT
select ARCH_MIGHT_HAVE_PC_SERIO
+ select DMA_OPS
select FW_ARC
select FW_ARC32
select ARCH_MAY_HAVE_PC_FDC
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 8e4c3708773d08..38c1eafc1f1ae9 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -14,6 +14,7 @@ config PARISC
select ARCH_HAS_UBSAN_SANITIZE_ALL
select ARCH_NO_SG_CHAIN
select ARCH_SUPPORTS_MEMORY_FAILURE
+ select DMA_OPS
select RTC_CLASS
select RTC_DRV_GENERIC
select INIT_ALL_POSSIBLE
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 9fa23eb320ff5a..e9b091d3587222 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -151,6 +151,7 @@ config PPC
select BUILDTIME_TABLE_SORT
select CLONE_BACKWARDS
select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
+ select DMA_OPS if PPC64
select DYNAMIC_FTRACE if FUNCTION_TRACER
select EDAC_ATOMIC_SCRUB
select EDAC_SUPPORT
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index c7d7ede6300c59..687fe23f61cc8d 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -113,6 +113,7 @@ config S390
select ARCH_WANT_IPC_PARSE_VERSION
select BUILDTIME_TABLE_SORT
select CLONE_BACKWARDS2
+ select DMA_OPS if PCI
select DYNAMIC_FTRACE if FUNCTION_TRACER
select GENERIC_CLOCKEVENTS
select GENERIC_CPU_AUTOPROBE
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 5bf2dc163540fc..5db1faaaee31c8 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -15,6 +15,7 @@ config SPARC
default y
select ARCH_MIGHT_HAVE_PC_PARPORT if SPARC64 && PCI
select ARCH_MIGHT_HAVE_PC_SERIO
+ select DMA_OPS
select OF
select OF_PROMTREE
select HAVE_ASM_MODVERSIONS
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 883da0abf7790c..96ab92754158dd 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -909,6 +909,7 @@ config DMI
config GART_IOMMU
bool "Old AMD GART IOMMU support"
+ select DMA_OPS
select IOMMU_HELPER
select SWIOTLB
depends on X86_64 && PCI && AMD_NB
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index 6dc49ed8377a5c..d6ce878a7e8684 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -97,6 +97,7 @@ config OF_IOMMU
# IOMMU-agnostic DMA-mapping layer
config IOMMU_DMA
bool
+ select DMA_OPS
select IOMMU_API
select IOMMU_IOVA
select IRQ_MSI_IOMMU
@@ -183,6 +184,7 @@ config DMAR_TABLE
config INTEL_IOMMU
bool "Support for Intel IOMMU using DMA Remapping Devices"
depends on PCI_MSI && ACPI && (X86 || IA64)
+ select DMA_OPS
select IOMMU_API
select IOMMU_IOVA
select NEED_DMA_MAP_STATE
diff --git a/drivers/misc/mic/Kconfig b/drivers/misc/mic/Kconfig
index 8f201d019f5a4d..a9ec0b25ac40c9 100644
--- a/drivers/misc/mic/Kconfig
+++ b/drivers/misc/mic/Kconfig
@@ -49,6 +49,7 @@ config INTEL_MIC_HOST
tristate "Intel MIC Host Driver"
depends on 64BIT && PCI && X86
depends on INTEL_MIC_BUS && SCIF_BUS && MIC_COSM && VOP_BUS
+ select DMA_OPS
help
This enables Host Driver support for the Intel Many Integrated
Core (MIC) family of PCIe form factor coprocessor devices that
diff --git a/drivers/vdpa/Kconfig b/drivers/vdpa/Kconfig
index 3e1ceb8e9f2b52..d93a69b12f81e3 100644
--- a/drivers/vdpa/Kconfig
+++ b/drivers/vdpa/Kconfig
@@ -11,6 +11,7 @@ if VDPA
config VDPA_SIM
tristate "vDPA device simulator"
depends on RUNTIME_TESTING_MENU && HAS_DMA
+ select DMA_OPS
select VHOST_RING
default n
help
diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
index 727f11eb46b2bf..1d339ef924228c 100644
--- a/drivers/xen/Kconfig
+++ b/drivers/xen/Kconfig
@@ -179,6 +179,7 @@ config XEN_GRANT_DMA_ALLOC
config SWIOTLB_XEN
def_bool y
+ select DMA_OPS
select SWIOTLB
config XEN_PCIDEV_BACKEND
diff --git a/include/linux/device.h b/include/linux/device.h
index 15460a5ac024a1..4c4af98321ebd6 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -568,8 +568,9 @@ struct device {
#ifdef CONFIG_GENERIC_MSI_IRQ
struct list_head msi_list;
#endif
-
+#ifdef CONFIG_DMA_OPS
const struct dma_map_ops *dma_ops;
+#endif
u64 *dma_mask; /* dma mask (if dma'able device) */
u64 coherent_dma_mask;/* Like dma_mask, but for
alloc_coherent mappings as
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index bd0a6f5ee44581..39da883c861954 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -191,6 +191,7 @@ static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma,
#ifdef CONFIG_HAS_DMA
#include <asm/dma-mapping.h>
+#ifdef CONFIG_DMA_OPS
static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
{
if (dev->dma_ops)
@@ -203,7 +204,16 @@ static inline void set_dma_ops(struct device *dev,
{
dev->dma_ops = dma_ops;
}
-
+#else /* CONFIG_DMA_OPS */
+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
+{
+ return NULL;
+}
+static inline void set_dma_ops(struct device *dev,
+ const struct dma_map_ops *dma_ops)
+{
+}
+#endif /* CONFIG_DMA_OPS */
static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
{
diff --git a/kernel/dma/Kconfig b/kernel/dma/Kconfig
index 1da3f44f2565b4..5cfb2428593ac7 100644
--- a/kernel/dma/Kconfig
+++ b/kernel/dma/Kconfig
@@ -5,6 +5,9 @@ config HAS_DMA
depends on !NO_DMA
default y
+config DMA_OPS
+ bool
+
config NEED_SG_DMA_LENGTH
bool
@@ -60,6 +63,7 @@ config DMA_NONCOHERENT_CACHE_SYNC
config DMA_VIRT_OPS
bool
depends on HAS_DMA
+ select DMA_OPS
config SWIOTLB
bool
diff --git a/kernel/dma/Makefile b/kernel/dma/Makefile
index 370f63344e9cd9..32c7c1942bbd6c 100644
--- a/kernel/dma/Makefile
+++ b/kernel/dma/Makefile
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_HAS_DMA) += mapping.o direct.o dummy.o
+obj-$(CONFIG_HAS_DMA) += mapping.o direct.o
+obj-$(CONFIG_DMA_OPS) += dummy.o
obj-$(CONFIG_DMA_CMA) += contiguous.o
obj-$(CONFIG_DMA_DECLARE_COHERENT) += coherent.o
obj-$(CONFIG_DMA_VIRT_OPS) += virt.o
--
2.26.2
^ permalink raw reply related
* [PATCH 2/5] dma-mapping: inline the fast path dma-direct calls
From: Christoph Hellwig @ 2020-07-08 15:24 UTC (permalink / raw)
To: iommu, Alexey Kardashevskiy
Cc: Björn Töpel, Daniel Borkmann, Greg Kroah-Hartman,
Joerg Roedel, Robin Murphy, linux-kernel, Jesper Dangaard Brouer,
linuxppc-dev, Lu Baolu
In-Reply-To: <20200708152449.316476-1-hch@lst.de>
Inline the single page map/unmap/sync dma-direct calls into the now
out of line generic wrappers. This restores the behavior of a single
function call that we had before moving the generic calls out of line.
Besides the dma-mapping callers there are just a few callers in IOMMU
drivers that have a bypass mode, and more of those are going to be
switched to the generic bypass soon.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
include/linux/dma-direct.h | 92 ++++++++++++++++++++++++++++----------
kernel/dma/direct.c | 65 ---------------------------
2 files changed, 69 insertions(+), 88 deletions(-)
diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h
index 78dc3524adf880..dbb19dd9869054 100644
--- a/include/linux/dma-direct.h
+++ b/include/linux/dma-direct.h
@@ -1,10 +1,16 @@
/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Internals of the DMA direct mapping implementation. Only for use by the
+ * DMA mapping code and IOMMU drivers.
+ */
#ifndef _LINUX_DMA_DIRECT_H
#define _LINUX_DMA_DIRECT_H 1
#include <linux/dma-mapping.h>
+#include <linux/dma-noncoherent.h>
#include <linux/memblock.h> /* for min_low_pfn */
#include <linux/mem_encrypt.h>
+#include <linux/swiotlb.h>
extern unsigned int zone_dma_bits;
@@ -86,25 +92,17 @@ int dma_direct_mmap(struct device *dev, struct vm_area_struct *vma,
unsigned long attrs);
int dma_direct_supported(struct device *dev, u64 mask);
bool dma_direct_need_sync(struct device *dev, dma_addr_t dma_addr);
-dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
- unsigned long offset, size_t size, enum dma_data_direction dir,
- unsigned long attrs);
int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
enum dma_data_direction dir, unsigned long attrs);
dma_addr_t dma_direct_map_resource(struct device *dev, phys_addr_t paddr,
size_t size, enum dma_data_direction dir, unsigned long attrs);
+size_t dma_direct_max_mapping_size(struct device *dev);
#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
defined(CONFIG_SWIOTLB)
-void dma_direct_sync_single_for_device(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir);
-void dma_direct_sync_sg_for_device(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir);
+void dma_direct_sync_sg_for_device(struct device *dev, struct scatterlist *sgl,
+ int nents, enum dma_data_direction dir);
#else
-static inline void dma_direct_sync_single_for_device(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir)
-{
-}
static inline void dma_direct_sync_sg_for_device(struct device *dev,
struct scatterlist *sgl, int nents, enum dma_data_direction dir)
{
@@ -114,34 +112,82 @@ static inline void dma_direct_sync_sg_for_device(struct device *dev,
#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL) || \
defined(CONFIG_SWIOTLB)
-void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
- size_t size, enum dma_data_direction dir, unsigned long attrs);
void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
int nents, enum dma_data_direction dir, unsigned long attrs);
-void dma_direct_sync_single_for_cpu(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir);
void dma_direct_sync_sg_for_cpu(struct device *dev,
struct scatterlist *sgl, int nents, enum dma_data_direction dir);
#else
-static inline void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
- size_t size, enum dma_data_direction dir, unsigned long attrs)
-{
-}
static inline void dma_direct_unmap_sg(struct device *dev,
struct scatterlist *sgl, int nents, enum dma_data_direction dir,
unsigned long attrs)
{
}
+static inline void dma_direct_sync_sg_for_cpu(struct device *dev,
+ struct scatterlist *sgl, int nents, enum dma_data_direction dir)
+{
+}
+#endif
+
+static inline void dma_direct_sync_single_for_device(struct device *dev,
+ dma_addr_t addr, size_t size, enum dma_data_direction dir)
+{
+ phys_addr_t paddr = dma_to_phys(dev, addr);
+
+ if (unlikely(is_swiotlb_buffer(paddr)))
+ swiotlb_tbl_sync_single(dev, paddr, size, dir, SYNC_FOR_DEVICE);
+
+ if (!dev_is_dma_coherent(dev))
+ arch_sync_dma_for_device(paddr, size, dir);
+}
+
static inline void dma_direct_sync_single_for_cpu(struct device *dev,
dma_addr_t addr, size_t size, enum dma_data_direction dir)
{
+ phys_addr_t paddr = dma_to_phys(dev, addr);
+
+ if (!dev_is_dma_coherent(dev)) {
+ arch_sync_dma_for_cpu(paddr, size, dir);
+ arch_sync_dma_for_cpu_all();
+ }
+
+ if (unlikely(is_swiotlb_buffer(paddr)))
+ swiotlb_tbl_sync_single(dev, paddr, size, dir, SYNC_FOR_CPU);
}
-static inline void dma_direct_sync_sg_for_cpu(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir)
+
+static inline dma_addr_t dma_direct_map_page(struct device *dev,
+ struct page *page, unsigned long offset, size_t size,
+ enum dma_data_direction dir, unsigned long attrs)
{
+ phys_addr_t phys = page_to_phys(page) + offset;
+ dma_addr_t dma_addr = phys_to_dma(dev, phys);
+
+ if (unlikely(swiotlb_force == SWIOTLB_FORCE))
+ return swiotlb_map(dev, phys, size, dir, attrs);
+
+ if (unlikely(!dma_capable(dev, dma_addr, size, true))) {
+ if (swiotlb_force != SWIOTLB_NO_FORCE)
+ return swiotlb_map(dev, phys, size, dir, attrs);
+
+ dev_WARN_ONCE(dev, 1,
+ "DMA addr %pad+%zu overflow (mask %llx, bus limit %llx).\n",
+ &dma_addr, size, *dev->dma_mask, dev->bus_dma_limit);
+ return DMA_MAPPING_ERROR;
+ }
+
+ if (!dev_is_dma_coherent(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC))
+ arch_sync_dma_for_device(phys, size, dir);
+ return dma_addr;
}
-#endif
-size_t dma_direct_max_mapping_size(struct device *dev);
+static inline void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
+ size_t size, enum dma_data_direction dir, unsigned long attrs)
+{
+ phys_addr_t phys = dma_to_phys(dev, addr);
+ if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
+ dma_direct_sync_single_for_cpu(dev, addr, size, dir);
+
+ if (unlikely(is_swiotlb_buffer(phys)))
+ swiotlb_tbl_unmap_single(dev, phys, size, size, dir, attrs);
+}
#endif /* _LINUX_DMA_DIRECT_H */
diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
index 6d1975c4a26873..3078e36941e6d4 100644
--- a/kernel/dma/direct.c
+++ b/kernel/dma/direct.c
@@ -10,11 +10,9 @@
#include <linux/dma-direct.h>
#include <linux/scatterlist.h>
#include <linux/dma-contiguous.h>
-#include <linux/dma-noncoherent.h>
#include <linux/pfn.h>
#include <linux/vmalloc.h>
#include <linux/set_memory.h>
-#include <linux/swiotlb.h>
/*
* Most architectures use ZONE_DMA for the first 16 Megabytes, but some use it
@@ -304,18 +302,6 @@ void dma_direct_free(struct device *dev, size_t size,
#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
defined(CONFIG_SWIOTLB)
-void dma_direct_sync_single_for_device(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir)
-{
- phys_addr_t paddr = dma_to_phys(dev, addr);
-
- if (unlikely(is_swiotlb_buffer(paddr)))
- swiotlb_tbl_sync_single(dev, paddr, size, dir, SYNC_FOR_DEVICE);
-
- if (!dev_is_dma_coherent(dev))
- arch_sync_dma_for_device(paddr, size, dir);
-}
-
void dma_direct_sync_sg_for_device(struct device *dev,
struct scatterlist *sgl, int nents, enum dma_data_direction dir)
{
@@ -339,20 +325,6 @@ void dma_direct_sync_sg_for_device(struct device *dev,
#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL) || \
defined(CONFIG_SWIOTLB)
-void dma_direct_sync_single_for_cpu(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir)
-{
- phys_addr_t paddr = dma_to_phys(dev, addr);
-
- if (!dev_is_dma_coherent(dev)) {
- arch_sync_dma_for_cpu(paddr, size, dir);
- arch_sync_dma_for_cpu_all();
- }
-
- if (unlikely(is_swiotlb_buffer(paddr)))
- swiotlb_tbl_sync_single(dev, paddr, size, dir, SYNC_FOR_CPU);
-}
-
void dma_direct_sync_sg_for_cpu(struct device *dev,
struct scatterlist *sgl, int nents, enum dma_data_direction dir)
{
@@ -374,18 +346,6 @@ void dma_direct_sync_sg_for_cpu(struct device *dev,
arch_sync_dma_for_cpu_all();
}
-void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
- size_t size, enum dma_data_direction dir, unsigned long attrs)
-{
- phys_addr_t phys = dma_to_phys(dev, addr);
-
- if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
- dma_direct_sync_single_for_cpu(dev, addr, size, dir);
-
- if (unlikely(is_swiotlb_buffer(phys)))
- swiotlb_tbl_unmap_single(dev, phys, size, size, dir, attrs);
-}
-
void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
int nents, enum dma_data_direction dir, unsigned long attrs)
{
@@ -398,31 +358,6 @@ void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
}
#endif
-dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
- unsigned long offset, size_t size, enum dma_data_direction dir,
- unsigned long attrs)
-{
- phys_addr_t phys = page_to_phys(page) + offset;
- dma_addr_t dma_addr = phys_to_dma(dev, phys);
-
- if (unlikely(swiotlb_force == SWIOTLB_FORCE))
- return swiotlb_map(dev, phys, size, dir, attrs);
-
- if (unlikely(!dma_capable(dev, dma_addr, size, true))) {
- if (swiotlb_force != SWIOTLB_NO_FORCE)
- return swiotlb_map(dev, phys, size, dir, attrs);
-
- dev_WARN_ONCE(dev, 1,
- "DMA addr %pad+%zu overflow (mask %llx, bus limit %llx).\n",
- &dma_addr, size, *dev->dma_mask, dev->bus_dma_limit);
- return DMA_MAPPING_ERROR;
- }
-
- if (!dev_is_dma_coherent(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC))
- arch_sync_dma_for_device(phys, size, dir);
- return dma_addr;
-}
-
int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
enum dma_data_direction dir, unsigned long attrs)
{
--
2.26.2
^ permalink raw reply related
* [PATCH 1/5] dma-mapping: move the remaining DMA API calls out of line
From: Christoph Hellwig @ 2020-07-08 15:24 UTC (permalink / raw)
To: iommu, Alexey Kardashevskiy
Cc: Björn Töpel, Daniel Borkmann, Greg Kroah-Hartman,
Joerg Roedel, Robin Murphy, linux-kernel, Jesper Dangaard Brouer,
linuxppc-dev, Lu Baolu
In-Reply-To: <20200708152449.316476-1-hch@lst.de>
For a long time the DMA API has been implemented inline in dma-mapping.h,
but the function bodies can be quite large. Move them all out of line.
This also removes all the dma_direct_* exports as those are just
implementation details and should never be used by drivers directly.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
include/linux/dma-direct.h | 58 +++++++++
include/linux/dma-mapping.h | 247 ++++--------------------------------
kernel/dma/direct.c | 9 --
kernel/dma/mapping.c | 164 ++++++++++++++++++++++++
4 files changed, 244 insertions(+), 234 deletions(-)
diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h
index 5184735a0fe8eb..78dc3524adf880 100644
--- a/include/linux/dma-direct.h
+++ b/include/linux/dma-direct.h
@@ -86,4 +86,62 @@ int dma_direct_mmap(struct device *dev, struct vm_area_struct *vma,
unsigned long attrs);
int dma_direct_supported(struct device *dev, u64 mask);
bool dma_direct_need_sync(struct device *dev, dma_addr_t dma_addr);
+dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
+ unsigned long offset, size_t size, enum dma_data_direction dir,
+ unsigned long attrs);
+int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
+ enum dma_data_direction dir, unsigned long attrs);
+dma_addr_t dma_direct_map_resource(struct device *dev, phys_addr_t paddr,
+ size_t size, enum dma_data_direction dir, unsigned long attrs);
+
+#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
+ defined(CONFIG_SWIOTLB)
+void dma_direct_sync_single_for_device(struct device *dev,
+ dma_addr_t addr, size_t size, enum dma_data_direction dir);
+void dma_direct_sync_sg_for_device(struct device *dev,
+ struct scatterlist *sgl, int nents, enum dma_data_direction dir);
+#else
+static inline void dma_direct_sync_single_for_device(struct device *dev,
+ dma_addr_t addr, size_t size, enum dma_data_direction dir)
+{
+}
+static inline void dma_direct_sync_sg_for_device(struct device *dev,
+ struct scatterlist *sgl, int nents, enum dma_data_direction dir)
+{
+}
+#endif
+
+#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
+ defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL) || \
+ defined(CONFIG_SWIOTLB)
+void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
+ size_t size, enum dma_data_direction dir, unsigned long attrs);
+void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
+ int nents, enum dma_data_direction dir, unsigned long attrs);
+void dma_direct_sync_single_for_cpu(struct device *dev,
+ dma_addr_t addr, size_t size, enum dma_data_direction dir);
+void dma_direct_sync_sg_for_cpu(struct device *dev,
+ struct scatterlist *sgl, int nents, enum dma_data_direction dir);
+#else
+static inline void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
+ size_t size, enum dma_data_direction dir, unsigned long attrs)
+{
+}
+static inline void dma_direct_unmap_sg(struct device *dev,
+ struct scatterlist *sgl, int nents, enum dma_data_direction dir,
+ unsigned long attrs)
+{
+}
+static inline void dma_direct_sync_single_for_cpu(struct device *dev,
+ dma_addr_t addr, size_t size, enum dma_data_direction dir)
+{
+}
+static inline void dma_direct_sync_sg_for_cpu(struct device *dev,
+ struct scatterlist *sgl, int nents, enum dma_data_direction dir)
+{
+}
+#endif
+
+size_t dma_direct_max_mapping_size(struct device *dev);
+
#endif /* _LINUX_DMA_DIRECT_H */
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index a33ed3954ed465..bd0a6f5ee44581 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -188,73 +188,6 @@ static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma,
}
#endif /* CONFIG_DMA_DECLARE_COHERENT */
-static inline bool dma_is_direct(const struct dma_map_ops *ops)
-{
- return likely(!ops);
-}
-
-/*
- * All the dma_direct_* declarations are here just for the indirect call bypass,
- * and must not be used directly drivers!
- */
-dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
- unsigned long offset, size_t size, enum dma_data_direction dir,
- unsigned long attrs);
-int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
- enum dma_data_direction dir, unsigned long attrs);
-dma_addr_t dma_direct_map_resource(struct device *dev, phys_addr_t paddr,
- size_t size, enum dma_data_direction dir, unsigned long attrs);
-
-#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
- defined(CONFIG_SWIOTLB)
-void dma_direct_sync_single_for_device(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir);
-void dma_direct_sync_sg_for_device(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir);
-#else
-static inline void dma_direct_sync_single_for_device(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir)
-{
-}
-static inline void dma_direct_sync_sg_for_device(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir)
-{
-}
-#endif
-
-#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
- defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL) || \
- defined(CONFIG_SWIOTLB)
-void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
- size_t size, enum dma_data_direction dir, unsigned long attrs);
-void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
- int nents, enum dma_data_direction dir, unsigned long attrs);
-void dma_direct_sync_single_for_cpu(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir);
-void dma_direct_sync_sg_for_cpu(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir);
-#else
-static inline void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
- size_t size, enum dma_data_direction dir, unsigned long attrs)
-{
-}
-static inline void dma_direct_unmap_sg(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir,
- unsigned long attrs)
-{
-}
-static inline void dma_direct_sync_single_for_cpu(struct device *dev,
- dma_addr_t addr, size_t size, enum dma_data_direction dir)
-{
-}
-static inline void dma_direct_sync_sg_for_cpu(struct device *dev,
- struct scatterlist *sgl, int nents, enum dma_data_direction dir)
-{
-}
-#endif
-
-size_t dma_direct_max_mapping_size(struct device *dev);
-
#ifdef CONFIG_HAS_DMA
#include <asm/dma-mapping.h>
@@ -271,164 +204,6 @@ static inline void set_dma_ops(struct device *dev,
dev->dma_ops = dma_ops;
}
-static inline dma_addr_t dma_map_page_attrs(struct device *dev,
- struct page *page, size_t offset, size_t size,
- enum dma_data_direction dir, unsigned long attrs)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
- dma_addr_t addr;
-
- BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
- addr = dma_direct_map_page(dev, page, offset, size, dir, attrs);
- else
- addr = ops->map_page(dev, page, offset, size, dir, attrs);
- debug_dma_map_page(dev, page, offset, size, dir, addr);
-
- return addr;
-}
-
-static inline void dma_unmap_page_attrs(struct device *dev, dma_addr_t addr,
- size_t size, enum dma_data_direction dir, unsigned long attrs)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
-
- BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
- dma_direct_unmap_page(dev, addr, size, dir, attrs);
- else if (ops->unmap_page)
- ops->unmap_page(dev, addr, size, dir, attrs);
- debug_dma_unmap_page(dev, addr, size, dir);
-}
-
-/*
- * dma_maps_sg_attrs returns 0 on error and > 0 on success.
- * It should never return a value < 0.
- */
-static inline int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg,
- int nents, enum dma_data_direction dir,
- unsigned long attrs)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
- int ents;
-
- BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
- ents = dma_direct_map_sg(dev, sg, nents, dir, attrs);
- else
- ents = ops->map_sg(dev, sg, nents, dir, attrs);
- BUG_ON(ents < 0);
- debug_dma_map_sg(dev, sg, nents, ents, dir);
-
- return ents;
-}
-
-static inline void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg,
- int nents, enum dma_data_direction dir,
- unsigned long attrs)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
-
- BUG_ON(!valid_dma_direction(dir));
- debug_dma_unmap_sg(dev, sg, nents, dir);
- if (dma_is_direct(ops))
- dma_direct_unmap_sg(dev, sg, nents, dir, attrs);
- else if (ops->unmap_sg)
- ops->unmap_sg(dev, sg, nents, dir, attrs);
-}
-
-static inline dma_addr_t dma_map_resource(struct device *dev,
- phys_addr_t phys_addr,
- size_t size,
- enum dma_data_direction dir,
- unsigned long attrs)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
- dma_addr_t addr = DMA_MAPPING_ERROR;
-
- BUG_ON(!valid_dma_direction(dir));
-
- /* Don't allow RAM to be mapped */
- if (WARN_ON_ONCE(pfn_valid(PHYS_PFN(phys_addr))))
- return DMA_MAPPING_ERROR;
-
- if (dma_is_direct(ops))
- addr = dma_direct_map_resource(dev, phys_addr, size, dir, attrs);
- else if (ops->map_resource)
- addr = ops->map_resource(dev, phys_addr, size, dir, attrs);
-
- debug_dma_map_resource(dev, phys_addr, size, dir, addr);
- return addr;
-}
-
-static inline void dma_unmap_resource(struct device *dev, dma_addr_t addr,
- size_t size, enum dma_data_direction dir,
- unsigned long attrs)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
-
- BUG_ON(!valid_dma_direction(dir));
- if (!dma_is_direct(ops) && ops->unmap_resource)
- ops->unmap_resource(dev, addr, size, dir, attrs);
- debug_dma_unmap_resource(dev, addr, size, dir);
-}
-
-static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr,
- size_t size,
- enum dma_data_direction dir)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
-
- BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
- dma_direct_sync_single_for_cpu(dev, addr, size, dir);
- else if (ops->sync_single_for_cpu)
- ops->sync_single_for_cpu(dev, addr, size, dir);
- debug_dma_sync_single_for_cpu(dev, addr, size, dir);
-}
-
-static inline void dma_sync_single_for_device(struct device *dev,
- dma_addr_t addr, size_t size,
- enum dma_data_direction dir)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
-
- BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
- dma_direct_sync_single_for_device(dev, addr, size, dir);
- else if (ops->sync_single_for_device)
- ops->sync_single_for_device(dev, addr, size, dir);
- debug_dma_sync_single_for_device(dev, addr, size, dir);
-}
-
-static inline void
-dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
- int nelems, enum dma_data_direction dir)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
-
- BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
- dma_direct_sync_sg_for_cpu(dev, sg, nelems, dir);
- else if (ops->sync_sg_for_cpu)
- ops->sync_sg_for_cpu(dev, sg, nelems, dir);
- debug_dma_sync_sg_for_cpu(dev, sg, nelems, dir);
-}
-
-static inline void
-dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
- int nelems, enum dma_data_direction dir)
-{
- const struct dma_map_ops *ops = get_dma_ops(dev);
-
- BUG_ON(!valid_dma_direction(dir));
- if (dma_is_direct(ops))
- dma_direct_sync_sg_for_device(dev, sg, nelems, dir);
- else if (ops->sync_sg_for_device)
- ops->sync_sg_for_device(dev, sg, nelems, dir);
- debug_dma_sync_sg_for_device(dev, sg, nelems, dir);
-
-}
static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
{
@@ -439,6 +214,28 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
return 0;
}
+dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page,
+ size_t offset, size_t size, enum dma_data_direction dir,
+ unsigned long attrs);
+void dma_unmap_page_attrs(struct device *dev, dma_addr_t addr, size_t size,
+ enum dma_data_direction dir, unsigned long attrs);
+int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, int nents,
+ enum dma_data_direction dir, unsigned long attrs);
+void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg,
+ int nents, enum dma_data_direction dir,
+ unsigned long attrs);
+dma_addr_t dma_map_resource(struct device *dev, phys_addr_t phys_addr,
+ size_t size, enum dma_data_direction dir, unsigned long attrs);
+void dma_unmap_resource(struct device *dev, dma_addr_t addr, size_t size,
+ enum dma_data_direction dir, unsigned long attrs);
+void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t size,
+ enum dma_data_direction dir);
+void dma_sync_single_for_device(struct device *dev, dma_addr_t addr,
+ size_t size, enum dma_data_direction dir);
+void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
+ int nelems, enum dma_data_direction dir);
+void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
+ int nelems, enum dma_data_direction dir);
void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle,
gfp_t flag, unsigned long attrs);
void dma_free_attrs(struct device *dev, size_t size, void *cpu_addr,
diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
index 95866b64758100..6d1975c4a26873 100644
--- a/kernel/dma/direct.c
+++ b/kernel/dma/direct.c
@@ -315,7 +315,6 @@ void dma_direct_sync_single_for_device(struct device *dev,
if (!dev_is_dma_coherent(dev))
arch_sync_dma_for_device(paddr, size, dir);
}
-EXPORT_SYMBOL(dma_direct_sync_single_for_device);
void dma_direct_sync_sg_for_device(struct device *dev,
struct scatterlist *sgl, int nents, enum dma_data_direction dir)
@@ -335,7 +334,6 @@ void dma_direct_sync_sg_for_device(struct device *dev,
dir);
}
}
-EXPORT_SYMBOL(dma_direct_sync_sg_for_device);
#endif
#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
@@ -354,7 +352,6 @@ void dma_direct_sync_single_for_cpu(struct device *dev,
if (unlikely(is_swiotlb_buffer(paddr)))
swiotlb_tbl_sync_single(dev, paddr, size, dir, SYNC_FOR_CPU);
}
-EXPORT_SYMBOL(dma_direct_sync_single_for_cpu);
void dma_direct_sync_sg_for_cpu(struct device *dev,
struct scatterlist *sgl, int nents, enum dma_data_direction dir)
@@ -376,7 +373,6 @@ void dma_direct_sync_sg_for_cpu(struct device *dev,
if (!dev_is_dma_coherent(dev))
arch_sync_dma_for_cpu_all();
}
-EXPORT_SYMBOL(dma_direct_sync_sg_for_cpu);
void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
size_t size, enum dma_data_direction dir, unsigned long attrs)
@@ -389,7 +385,6 @@ void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
if (unlikely(is_swiotlb_buffer(phys)))
swiotlb_tbl_unmap_single(dev, phys, size, size, dir, attrs);
}
-EXPORT_SYMBOL(dma_direct_unmap_page);
void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
int nents, enum dma_data_direction dir, unsigned long attrs)
@@ -401,7 +396,6 @@ void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
dma_direct_unmap_page(dev, sg->dma_address, sg_dma_len(sg), dir,
attrs);
}
-EXPORT_SYMBOL(dma_direct_unmap_sg);
#endif
dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
@@ -428,7 +422,6 @@ dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
arch_sync_dma_for_device(phys, size, dir);
return dma_addr;
}
-EXPORT_SYMBOL(dma_direct_map_page);
int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
enum dma_data_direction dir, unsigned long attrs)
@@ -450,7 +443,6 @@ int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
dma_direct_unmap_sg(dev, sgl, i, dir, attrs | DMA_ATTR_SKIP_CPU_SYNC);
return 0;
}
-EXPORT_SYMBOL(dma_direct_map_sg);
dma_addr_t dma_direct_map_resource(struct device *dev, phys_addr_t paddr,
size_t size, enum dma_data_direction dir, unsigned long attrs)
@@ -467,7 +459,6 @@ dma_addr_t dma_direct_map_resource(struct device *dev, phys_addr_t paddr,
return dma_addr;
}
-EXPORT_SYMBOL(dma_direct_map_resource);
int dma_direct_get_sgtable(struct device *dev, struct sg_table *sgt,
void *cpu_addr, dma_addr_t dma_addr, size_t size,
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index a8c18c9a796fdc..b53953024512fe 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -105,6 +105,170 @@ void *dmam_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle,
}
EXPORT_SYMBOL(dmam_alloc_attrs);
+static inline bool dma_is_direct(const struct dma_map_ops *ops)
+{
+ return likely(!ops);
+}
+
+dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page,
+ size_t offset, size_t size, enum dma_data_direction dir,
+ unsigned long attrs)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+ dma_addr_t addr;
+
+ BUG_ON(!valid_dma_direction(dir));
+ if (dma_is_direct(ops))
+ addr = dma_direct_map_page(dev, page, offset, size, dir, attrs);
+ else
+ addr = ops->map_page(dev, page, offset, size, dir, attrs);
+ debug_dma_map_page(dev, page, offset, size, dir, addr);
+
+ return addr;
+}
+EXPORT_SYMBOL(dma_map_page_attrs);
+
+void dma_unmap_page_attrs(struct device *dev, dma_addr_t addr, size_t size,
+ enum dma_data_direction dir, unsigned long attrs)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+
+ BUG_ON(!valid_dma_direction(dir));
+ if (dma_is_direct(ops))
+ dma_direct_unmap_page(dev, addr, size, dir, attrs);
+ else if (ops->unmap_page)
+ ops->unmap_page(dev, addr, size, dir, attrs);
+ debug_dma_unmap_page(dev, addr, size, dir);
+}
+EXPORT_SYMBOL(dma_unmap_page_attrs);
+
+/*
+ * dma_maps_sg_attrs returns 0 on error and > 0 on success.
+ * It should never return a value < 0.
+ */
+int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, int nents,
+ enum dma_data_direction dir, unsigned long attrs)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+ int ents;
+
+ BUG_ON(!valid_dma_direction(dir));
+ if (dma_is_direct(ops))
+ ents = dma_direct_map_sg(dev, sg, nents, dir, attrs);
+ else
+ ents = ops->map_sg(dev, sg, nents, dir, attrs);
+ BUG_ON(ents < 0);
+ debug_dma_map_sg(dev, sg, nents, ents, dir);
+
+ return ents;
+}
+EXPORT_SYMBOL(dma_map_sg_attrs);
+
+void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg,
+ int nents, enum dma_data_direction dir,
+ unsigned long attrs)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+
+ BUG_ON(!valid_dma_direction(dir));
+ debug_dma_unmap_sg(dev, sg, nents, dir);
+ if (dma_is_direct(ops))
+ dma_direct_unmap_sg(dev, sg, nents, dir, attrs);
+ else if (ops->unmap_sg)
+ ops->unmap_sg(dev, sg, nents, dir, attrs);
+}
+EXPORT_SYMBOL(dma_unmap_sg_attrs);
+
+dma_addr_t dma_map_resource(struct device *dev, phys_addr_t phys_addr,
+ size_t size, enum dma_data_direction dir, unsigned long attrs)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+ dma_addr_t addr = DMA_MAPPING_ERROR;
+
+ BUG_ON(!valid_dma_direction(dir));
+
+ /* Don't allow RAM to be mapped */
+ if (WARN_ON_ONCE(pfn_valid(PHYS_PFN(phys_addr))))
+ return DMA_MAPPING_ERROR;
+
+ if (dma_is_direct(ops))
+ addr = dma_direct_map_resource(dev, phys_addr, size, dir, attrs);
+ else if (ops->map_resource)
+ addr = ops->map_resource(dev, phys_addr, size, dir, attrs);
+
+ debug_dma_map_resource(dev, phys_addr, size, dir, addr);
+ return addr;
+}
+EXPORT_SYMBOL(dma_map_resource);
+
+void dma_unmap_resource(struct device *dev, dma_addr_t addr, size_t size,
+ enum dma_data_direction dir, unsigned long attrs)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+
+ BUG_ON(!valid_dma_direction(dir));
+ if (!dma_is_direct(ops) && ops->unmap_resource)
+ ops->unmap_resource(dev, addr, size, dir, attrs);
+ debug_dma_unmap_resource(dev, addr, size, dir);
+}
+EXPORT_SYMBOL(dma_unmap_resource);
+
+void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t size,
+ enum dma_data_direction dir)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+
+ BUG_ON(!valid_dma_direction(dir));
+ if (dma_is_direct(ops))
+ dma_direct_sync_single_for_cpu(dev, addr, size, dir);
+ else if (ops->sync_single_for_cpu)
+ ops->sync_single_for_cpu(dev, addr, size, dir);
+ debug_dma_sync_single_for_cpu(dev, addr, size, dir);
+}
+EXPORT_SYMBOL(dma_sync_single_for_cpu);
+
+void dma_sync_single_for_device(struct device *dev, dma_addr_t addr,
+ size_t size, enum dma_data_direction dir)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+
+ BUG_ON(!valid_dma_direction(dir));
+ if (dma_is_direct(ops))
+ dma_direct_sync_single_for_device(dev, addr, size, dir);
+ else if (ops->sync_single_for_device)
+ ops->sync_single_for_device(dev, addr, size, dir);
+ debug_dma_sync_single_for_device(dev, addr, size, dir);
+}
+EXPORT_SYMBOL(dma_sync_single_for_device);
+
+void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
+ int nelems, enum dma_data_direction dir)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+
+ BUG_ON(!valid_dma_direction(dir));
+ if (dma_is_direct(ops))
+ dma_direct_sync_sg_for_cpu(dev, sg, nelems, dir);
+ else if (ops->sync_sg_for_cpu)
+ ops->sync_sg_for_cpu(dev, sg, nelems, dir);
+ debug_dma_sync_sg_for_cpu(dev, sg, nelems, dir);
+}
+EXPORT_SYMBOL(dma_sync_sg_for_cpu);
+
+void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
+ int nelems, enum dma_data_direction dir)
+{
+ const struct dma_map_ops *ops = get_dma_ops(dev);
+
+ BUG_ON(!valid_dma_direction(dir));
+ if (dma_is_direct(ops))
+ dma_direct_sync_sg_for_device(dev, sg, nelems, dir);
+ else if (ops->sync_sg_for_device)
+ ops->sync_sg_for_device(dev, sg, nelems, dir);
+ debug_dma_sync_sg_for_device(dev, sg, nelems, dir);
+}
+EXPORT_SYMBOL(dma_sync_sg_for_device);
+
/*
* Create scatter-list for the already allocated DMA buffer.
*/
--
2.26.2
^ permalink raw reply related
* generic DMA bypass flag v4
From: Christoph Hellwig @ 2020-07-08 15:24 UTC (permalink / raw)
To: iommu, Alexey Kardashevskiy
Cc: Björn Töpel, Daniel Borkmann, Greg Kroah-Hartman,
Joerg Roedel, Robin Murphy, linux-kernel, Jesper Dangaard Brouer,
linuxppc-dev, Lu Baolu
Hi all,
I've recently beeing chatting with Lu about using dma-iommu and
per-device DMA ops in the intel IOMMU driver, and one missing feature
in dma-iommu is a bypass mode where the direct mapping is used even
when an iommu is attached to improve performance. The powerpc
code already has a similar mode, so I'd like to move it to the core
DMA mapping code. As part of that I noticed that the current
powerpc code has a little bug in that it used the wrong check in the
dma_sync_* routines to see if the direct mapping code is used.
These two patches just add the generic code and move powerpc over,
the intel IOMMU bits will require a separate discussion.
The x86 AMD Gart code also has a bypass mode, but it is a lot
strange, so I'm not going to touch it for now.
Note that as-is this breaks the XSK buffer pool, which unfortunately
poked directly into DMA internals. A fix for that is already queued
up in the netdev tree.
Jesper and XDP gang: this should not regress any performance as
the dma-direct calls are now inlined into the out of line DMA mapping
calls. But if you can verify the performance numbers that would be
greatly appreciated.
A git tree is available here:
git://git.infradead.org/users/hch/misc.git dma-bypass.4
Gitweb:
git.infradead.org/users/hch/misc.git/shortlog/refs/heads/dma-bypass.4
Changes since v3:
- add config options for the dma ops bypass and dma ops themselves
to not increase the size of tinyconfig builds
Changes since v2:
- move the dma mapping helpers out of line
- check for possible direct mappings using the dma mask
Changes since v1:
- rebased to the current dma-mapping-for-next tree
Diffstat:
arch/alpha/Kconfig | 1
arch/arm/Kconfig | 1
arch/ia64/Kconfig | 1
arch/mips/Kconfig | 1
arch/parisc/Kconfig | 1
arch/powerpc/Kconfig | 2
arch/powerpc/include/asm/device.h | 5
arch/powerpc/kernel/dma-iommu.c | 90 +------------
arch/s390/Kconfig | 1
arch/sparc/Kconfig | 1
arch/x86/Kconfig | 1
drivers/iommu/Kconfig | 2
drivers/misc/mic/Kconfig | 1
drivers/vdpa/Kconfig | 1
drivers/xen/Kconfig | 1
include/linux/device.h | 11 +
include/linux/dma-direct.h | 104 +++++++++++++++
include/linux/dma-mapping.h | 251 ++++----------------------------------
kernel/dma/Kconfig | 12 +
kernel/dma/Makefile | 3
kernel/dma/direct.c | 74 -----------
kernel/dma/mapping.c | 214 ++++++++++++++++++++++++++++++--
22 files changed, 385 insertions(+), 394 deletions(-)
^ permalink raw reply
* powerpc: Incorrect stw operand modifier in __set_pte_at
From: Mathieu Desnoyers @ 2020-07-08 14:45 UTC (permalink / raw)
To: Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras; +Cc: linuxppc-dev
Hi,
Reviewing use of the patterns "Un%Xn" with lwz and stw instructions
(where n should be the operand number) within the Linux kernel led
me to spot those 2 weird cases:
arch/powerpc/include/asm/nohash/pgtable.h:__set_pte_at()
__asm__ __volatile__("\
stw%U0%X0 %2,%0\n\
eieio\n\
stw%U0%X0 %L2,%1"
: "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
: "r" (pte) : "memory");
I would have expected the stw to be:
stw%U1%X1 %L2,%1"
and:
arch/powerpc/include/asm/book3s/32/pgtable.h:__set_pte_at()
__asm__ __volatile__("\
stw%U0%X0 %2,%0\n\
eieio\n\
stw%U0%X0 %L2,%1"
: "=m" (*ptep), "=m" (*((unsigned char *)ptep+4))
: "r" (pte) : "memory");
where I would have expected:
stw%U1%X1 %L2,%1"
Is it a bug or am I missing something ?
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Mathieu Desnoyers @ 2020-07-08 14:32 UTC (permalink / raw)
To: Christophe Leroy; +Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <96994487-ae4a-3bfb-b0f1-34228e51bea2@csgroup.eu>
----- On Jul 8, 2020, at 10:21 AM, Christophe Leroy christophe.leroy@csgroup.eu wrote:
> Le 08/07/2020 à 16:00, Mathieu Desnoyers a écrit :
>> ----- On Jul 8, 2020, at 8:33 AM, Mathieu Desnoyers
>> mathieu.desnoyers@efficios.com wrote:
>>
>>> ----- On Jul 7, 2020, at 8:59 PM, Segher Boessenkool segher@kernel.crashing.org
>>> wrote:
>> [...]
>>>>
>>>> So perhaps you have code like
>>>>
>>>> int *p;
>>>> int x;
>>>> ...
>>>> asm ("lwz %0,%1" : "=r"(x) : "m"(*p));
>>>
>>> We indeed have explicit "lwz" and "stw" instructions in there.
>>>
>>>>
>>>> where that last line should actually read
>>>>
>>>> asm ("lwz%X1 %0,%1" : "=r"(x) : "m"(*p));
>>>
>>> Indeed, turning those into "lwzx" and "stwx" seems to fix the issue.
>>>
>>> There has been some level of extra CPP macro coating around those instructions
>>> to
>>> support both ppc32 and ppc64 with the same assembly. So adding %X[arg] is not
>>> trivial.
>>> Let me see what can be done here.
>>
>> I did the following changes which appear to generate valid asm.
>> See attached corresponding .S output.
>>
>> I grepped for uses of "m" asm operand in Linux powerpc code and noticed it's
>> pretty much
>> always used with e.g. "lwz%U1%X1". I could find one blog post discussing that %U
>> is about
>> update flag, and nothing about %X. Are those documented ?
>
> As far as I can see, %U is mentioned in
> https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html in the
> powerpc subpart, at the "m" constraint.
Yep, I did notice it, but mistakenly thought it was only needed for "m<>" operand,
not "m".
Thanks,
Mathieu
>
> For the %X I don't know.
>
> Christophe
>
>>
>> Although it appears to generate valid asm, I have the feeling I'm relying on
>> undocumented
>> features here. :-/
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Christophe Leroy @ 2020-07-08 14:21 UTC (permalink / raw)
To: Mathieu Desnoyers, Segher Boessenkool
Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <1623833219.1877.1594216801865.JavaMail.zimbra@efficios.com>
Le 08/07/2020 à 16:00, Mathieu Desnoyers a écrit :
> ----- On Jul 8, 2020, at 8:33 AM, Mathieu Desnoyers mathieu.desnoyers@efficios.com wrote:
>
>> ----- On Jul 7, 2020, at 8:59 PM, Segher Boessenkool segher@kernel.crashing.org
>> wrote:
> [...]
>>>
>>> So perhaps you have code like
>>>
>>> int *p;
>>> int x;
>>> ...
>>> asm ("lwz %0,%1" : "=r"(x) : "m"(*p));
>>
>> We indeed have explicit "lwz" and "stw" instructions in there.
>>
>>>
>>> where that last line should actually read
>>>
>>> asm ("lwz%X1 %0,%1" : "=r"(x) : "m"(*p));
>>
>> Indeed, turning those into "lwzx" and "stwx" seems to fix the issue.
>>
>> There has been some level of extra CPP macro coating around those instructions
>> to
>> support both ppc32 and ppc64 with the same assembly. So adding %X[arg] is not
>> trivial.
>> Let me see what can be done here.
>
> I did the following changes which appear to generate valid asm.
> See attached corresponding .S output.
>
> I grepped for uses of "m" asm operand in Linux powerpc code and noticed it's pretty much
> always used with e.g. "lwz%U1%X1". I could find one blog post discussing that %U is about
> update flag, and nothing about %X. Are those documented ?
As far as I can see, %U is mentioned in
https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html in the
powerpc subpart, at the "m" constraint.
For the %X I don't know.
Christophe
>
> Although it appears to generate valid asm, I have the feeling I'm relying on undocumented
> features here. :-/
>
^ permalink raw reply
* Re: [PATCH] powerpc: select ARCH_HAS_MEMBARRIER_SYNC_CORE
From: Mathieu Desnoyers @ 2020-07-08 14:12 UTC (permalink / raw)
To: Nicholas Piggin; +Cc: linux-arch, linuxppc-dev
In-Reply-To: <1594185107.e130s0d92x.astroid@bobo.none>
----- On Jul 8, 2020, at 1:17 AM, Nicholas Piggin npiggin@gmail.com wrote:
> Excerpts from Mathieu Desnoyers's message of July 7, 2020 9:25 pm:
>> ----- On Jul 7, 2020, at 1:50 AM, Nicholas Piggin npiggin@gmail.com wrote:
>>
[...]
>>> I should actually change the comment for 64-bit because soft masked
>>> interrupt replay is an interesting case. I thought it was okay (because
>>> the IPI would cause a hard interrupt which does do the rfi) but that
>>> should at least be written.
>>
>> Yes.
>>
>>> The context synchronisation happens before
>>> the Linux IPI function is called, but for the purpose of membarrier I
>>> think that is okay (the membarrier just needs to have caused a memory
>>> barrier + context synchronistaion by the time it has done).
>>
>> Can you point me to the code implementing this logic ?
>
> It's mostly in arch/powerpc/kernel/exception-64s.S and
> powerpc/kernel/irq.c, but a lot of asm so easier to explain.
>
> When any Linux code does local_irq_disable(), we set interrupts as
> software-masked in a per-cpu flag. When interrupts (including IPIs) come
> in, the first thing we do is check that flag and if we are masked, then
> record that the interrupt needs to be "replayed" in another per-cpu
> flag. The interrupt handler then exits back using RFI (which is context
> synchronising the CPU). Later, when the kernel code does
> local_irq_enable(), it checks the replay flag to see if anything needs
> to be done. At that point we basically just call the interrupt handler
> code like a normal function, and when that returns there is no context
> synchronising instruction.
AFAIU this can only happen for interrupts nesting over irqoff sections,
therefore over kernel code, never userspace, right ?
>
> So membarrier IPI will always cause target CPUs to perform a context
> synchronising instruction, but sometimes it happens before the IPI
> handler function runs.
If my understanding is correct, the replayed interrupt handler logic
only nests over kernel code, which will eventually need to issue a
context synchronizing instruction before returning to user-space.
All we care about is that starting from the membarrier, each core
either:
- interrupt user-space to issue the context synchronizing instruction if
they were running userspace, or
- _eventually_ issue a context synchronizing instruction before returning
to user-space if they were running kernel code.
So your earlier statement "the membarrier just needs to have caused a memory
barrier + context synchronistaion by the time it has done" is not strictly
correct: the context synchronizing instruction does not strictly need to
happen on each core before membarrier returns. A similar line of thoughts
can be followed for memory barriers.
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Mathieu Desnoyers @ 2020-07-08 14:00 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <841816533.1735.1594211583710.JavaMail.zimbra@efficios.com>
[-- Attachment #1: Type: text/plain, Size: 6799 bytes --]
----- On Jul 8, 2020, at 8:33 AM, Mathieu Desnoyers mathieu.desnoyers@efficios.com wrote:
> ----- On Jul 7, 2020, at 8:59 PM, Segher Boessenkool segher@kernel.crashing.org
> wrote:
[...]
>>
>> So perhaps you have code like
>>
>> int *p;
>> int x;
>> ...
>> asm ("lwz %0,%1" : "=r"(x) : "m"(*p));
>
> We indeed have explicit "lwz" and "stw" instructions in there.
>
>>
>> where that last line should actually read
>>
>> asm ("lwz%X1 %0,%1" : "=r"(x) : "m"(*p));
>
> Indeed, turning those into "lwzx" and "stwx" seems to fix the issue.
>
> There has been some level of extra CPP macro coating around those instructions
> to
> support both ppc32 and ppc64 with the same assembly. So adding %X[arg] is not
> trivial.
> Let me see what can be done here.
I did the following changes which appear to generate valid asm.
See attached corresponding .S output.
I grepped for uses of "m" asm operand in Linux powerpc code and noticed it's pretty much
always used with e.g. "lwz%U1%X1". I could find one blog post discussing that %U is about
update flag, and nothing about %X. Are those documented ?
Although it appears to generate valid asm, I have the feeling I'm relying on undocumented
features here. :-/
Here is the diff on https://git.kernel.org/pub/scm/libs/librseq/librseq.git/tree/include/rseq/rseq-ppc.h
It's only compile-tested on powerpc32 so far:
diff --git a/include/rseq/rseq-ppc.h b/include/rseq/rseq-ppc.h
index eb53953..f689fe9 100644
--- a/include/rseq/rseq-ppc.h
+++ b/include/rseq/rseq-ppc.h
@@ -47,9 +47,9 @@ do { \
#ifdef __PPC64__
-#define STORE_WORD "std "
-#define LOAD_WORD "ld "
-#define LOADX_WORD "ldx "
+#define STORE_WORD(arg) "std%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] " /* To memory ("m" constraint) */
+#define LOAD_WORD(arg) "lwd%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] " /* From memory ("m" constraint) */
+#define LOADX_WORD "ldx " /* From base register ("b" constraint) */
#define CMP_WORD "cmpd "
#define __RSEQ_ASM_DEFINE_TABLE(label, version, flags, \
@@ -89,9 +89,9 @@ do { \
#else /* #ifdef __PPC64__ */
-#define STORE_WORD "stw "
-#define LOAD_WORD "lwz "
-#define LOADX_WORD "lwzx "
+#define STORE_WORD(arg) "stw%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] " /* To memory ("m" constraint) */
+#define LOAD_WORD(arg) "lwz%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] " /* From memory ("m" constraint) */
+#define LOADX_WORD "lwzx " /* From base register ("b" constraint) */
#define CMP_WORD "cmpw "
#define __RSEQ_ASM_DEFINE_TABLE(label, version, flags, \
@@ -125,7 +125,7 @@ do { \
RSEQ_INJECT_ASM(1) \
"lis %%r17, (" __rseq_str(cs_label) ")@ha\n\t" \
"addi %%r17, %%r17, (" __rseq_str(cs_label) ")@l\n\t" \
- "stw %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \
+ "stw%U[" __rseq_str(rseq_cs) "]%X[" __rseq_str(rseq_cs) "] %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \
__rseq_str(label) ":\n\t"
#endif /* #ifdef __PPC64__ */
@@ -136,7 +136,7 @@ do { \
#define RSEQ_ASM_CMP_CPU_ID(cpu_id, current_cpu_id, label) \
RSEQ_INJECT_ASM(2) \
- "lwz %%r17, %[" __rseq_str(current_cpu_id) "]\n\t" \
+ "lwz%U[" __rseq_str(current_cpu_id) "]%X[" __rseq_str(current_cpu_id) "] %%r17, %[" __rseq_str(current_cpu_id) "]\n\t" \
"cmpw cr7, %[" __rseq_str(cpu_id) "], %%r17\n\t" \
"bne- cr7, " __rseq_str(label) "\n\t"
@@ -153,25 +153,25 @@ do { \
* RSEQ_ASM_OP_* (else): doesn't have hard-code registers(unless cr7)
*/
#define RSEQ_ASM_OP_CMPEQ(var, expect, label) \
- LOAD_WORD "%%r17, %[" __rseq_str(var) "]\n\t" \
+ LOAD_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t" \
CMP_WORD "cr7, %%r17, %[" __rseq_str(expect) "]\n\t" \
"bne- cr7, " __rseq_str(label) "\n\t"
#define RSEQ_ASM_OP_CMPNE(var, expectnot, label) \
- LOAD_WORD "%%r17, %[" __rseq_str(var) "]\n\t" \
+ LOAD_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t" \
CMP_WORD "cr7, %%r17, %[" __rseq_str(expectnot) "]\n\t" \
"beq- cr7, " __rseq_str(label) "\n\t"
#define RSEQ_ASM_OP_STORE(value, var) \
- STORE_WORD "%[" __rseq_str(value) "], %[" __rseq_str(var) "]\n\t"
+ STORE_WORD(var) "%[" __rseq_str(value) "], %[" __rseq_str(var) "]\n\t"
/* Load @var to r17 */
#define RSEQ_ASM_OP_R_LOAD(var) \
- LOAD_WORD "%%r17, %[" __rseq_str(var) "]\n\t"
+ LOAD_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t"
/* Store r17 to @var */
#define RSEQ_ASM_OP_R_STORE(var) \
- STORE_WORD "%%r17, %[" __rseq_str(var) "]\n\t"
+ STORE_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t"
/* Add @count to r17 */
#define RSEQ_ASM_OP_R_ADD(count) \
@@ -196,11 +196,11 @@ do { \
"333:\n\t" \
#define RSEQ_ASM_OP_R_FINAL_STORE(var, post_commit_label) \
- STORE_WORD "%%r17, %[" __rseq_str(var) "]\n\t" \
+ STORE_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t" \
__rseq_str(post_commit_label) ":\n\t"
#define RSEQ_ASM_OP_FINAL_STORE(value, var, post_commit_label) \
- STORE_WORD "%[" __rseq_str(value) "], %[" __rseq_str(var) "]\n\t" \
+ STORE_WORD(var) "%[" __rseq_str(value) "], %[" __rseq_str(var) "]\n\t" \
__rseq_str(post_commit_label) ":\n\t"
static inline __attribute__((always_inline))
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
[-- Attachment #2: basic_percpu_ops_test-fix.S --]
[-- Type: application/octet-stream, Size: 91499 bytes --]
.file "basic_percpu_ops_test.c"
.machine ppc
.section ".text"
.Ltext0:
.cfi_sections .debug_frame
.align 2
.p2align 4,,15
.type rseq_percpu_unlock.part.0, @function
rseq_percpu_unlock.part.0:
.LFB125:
.file 1 "basic_percpu_ops_test.c"
.loc 1 72 0
.cfi_startproc
.LVL0:
stwu 1,-16(1)
.cfi_def_cfa_offset 16
.loc 1 74 0
lis 6,.LANCHOR0@ha
.loc 1 72 0
mflr 0
.loc 1 74 0
lis 4,.LC0@ha
lis 3,.LC1@ha
la 6,.LANCHOR0@l(6)
li 5,74
la 4,.LC0@l(4)
la 3,.LC1@l(3)
.loc 1 72 0
stw 0,20(1)
.cfi_offset 65, 4
.loc 1 74 0
bl __assert_fail
.LVL1:
.cfi_endproc
.LFE125:
.size rseq_percpu_unlock.part.0,.-rseq_percpu_unlock.part.0
.align 2
.p2align 4,,15
.globl rseq_this_cpu_lock
.type rseq_this_cpu_lock, @function
rseq_this_cpu_lock:
.LFB115:
.loc 1 51 0
.cfi_startproc
.LVL2:
stwu 1,-80(1)
.cfi_def_cfa_offset 80
.LBB72:
.LBB73:
.LBB74:
.file 2 "../include/rseq/rseq.h"
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
.LBE74:
.LBE73:
.LBB77:
.LBB78:
.file 3 "../include/rseq/rseq-ppc.h"
.loc 3 211 0
li 6,0
.LBE78:
.LBE77:
.LBB81:
.LBB75:
.loc 2 142 0
add 9,9,__rseq_abi@tls
.LBE75:
.LBE81:
.LBB82:
.LBB79:
.loc 3 211 0
li 7,1
.LBE79:
.LBE82:
.LBE72:
.loc 1 51 0
stw 17,20(1)
.cfi_offset 17, -60
.L4:
.L7:
.L5:
.LBB85:
.LBB83:
.LBB76:
.loc 2 142 0
lwz 10,0(9)
.LVL3:
.LBE76:
.LBE83:
.loc 1 58 0
slwi 8,10,7
.LBB84:
.LBB80:
.loc 3 211 0
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L7
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwzx %r17, 3,8
cmpw cr7, %r17, 6
bne- cr7, .L7
stwx 7, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L7
.popsection
# 0 "" 2
.LVL4:
#NO_APP
.LBE80:
.LBE84:
.LBE85:
.loc 1 68 0
#APP
# 68 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 70 0
#NO_APP
lwz 17,20(1)
mr 3,10
.LVL5:
addi 1,1,80
.cfi_restore 17
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE115:
.size rseq_this_cpu_lock,.-rseq_this_cpu_lock
.align 2
.p2align 4,,15
.globl test_percpu_spinlock_thread
.type test_percpu_spinlock_thread, @function
test_percpu_spinlock_thread:
.LFB117:
.loc 1 83 0
.cfi_startproc
.LVL6:
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 31,28(1)
stw 0,36(1)
stw 28,16(1)
stw 29,20(1)
stw 30,24(1)
.cfi_offset 65, 4
.cfi_offset 31, -4
.cfi_offset 28, -16
.cfi_offset 29, -12
.cfi_offset 30, -8
.loc 1 83 0
mr 31,3
.LVL7:
.loc 1 87 0
bl rseq_register_current_thread
.LVL8:
cmpwi 7,3,0
bne- 7,.L11
.LVL9:
.loc 1 92 0 discriminator 1
addis 29,31,0x4
li 30,0
lwz 9,0(29)
.LBB86:
.LBB87:
.loc 1 79 0 discriminator 1
li 28,0
.LBE87:
.LBE86:
.loc 1 92 0 discriminator 1
cmpwi 7,9,0
ble 7,.L17
.LVL10:
.p2align 4,,15
.L18:
.loc 1 93 0 discriminator 3
mr 3,31
bl rseq_this_cpu_lock
.LVL11:
slwi 3,3,7
.LVL12:
add 9,31,3
.loc 1 94 0 discriminator 3
addis 9,9,0x2
lwz 10,0(9)
addi 10,10,1
stw 10,0(9)
.LVL13:
.LBB90:
.LBB88:
.loc 1 74 0 discriminator 3
lwzx 9,31,3
cmpwi 7,9,1
bne- 7,.L23
.loc 1 79 0
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
#NO_APP
stwx 28,31,3
.LVL14:
.LBE88:
.LBE90:
.loc 1 92 0
addi 30,30,1
.LVL15:
lwz 9,0(29)
cmpw 7,9,30
bgt 7,.L18
.LVL16:
.L17:
.loc 1 97 0
bl rseq_unregister_current_thread
.LVL17:
cmpwi 7,3,0
bne- 7,.L24
.loc 1 104 0
lwz 0,36(1)
lwz 28,16(1)
lwz 29,20(1)
lwz 30,24(1)
mtlr 0
.cfi_remember_state
.cfi_restore 65
lwz 31,28(1)
.LVL18:
addi 1,1,32
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_def_cfa_offset 0
blr
.LVL19:
.L23:
.cfi_restore_state
.LBB91:
.LBB89:
bl rseq_percpu_unlock.part.0
.LVL20:
.L11:
.LBE89:
.LBE91:
.loc 1 88 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 89 0
bl __errno_location
.LVL21:
.loc 1 88 0
lwz 31,0(3)
.LVL22:
mr 3,31
bl strerror
.LVL23:
.LBB92:
.LBB93:
.file 4 "/usr/include/powerpc-linux-gnu/bits/stdio2.h"
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL24:
.LBE93:
.LBE92:
.loc 1 90 0
bl abort
.LVL25:
.L24:
.loc 1 98 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 99 0
bl __errno_location
.LVL26:
.loc 1 98 0
lwz 31,0(3)
.LVL27:
mr 3,31
bl strerror
.LVL28:
.LBB94:
.LBB95:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL29:
.LBE95:
.LBE94:
.loc 1 100 0
bl abort
.LVL30:
.cfi_endproc
.LFE117:
.size test_percpu_spinlock_thread,.-test_percpu_spinlock_thread
.align 2
.p2align 4,,15
.globl rseq_percpu_unlock
.type rseq_percpu_unlock, @function
rseq_percpu_unlock:
.LFB116:
.loc 1 73 0
.cfi_startproc
.LVL31:
slwi 4,4,7
.LVL32:
.loc 1 74 0
lwzx 9,3,4
cmpwi 7,9,1
bne- 7,.L28
.loc 1 79 0
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
#NO_APP
li 9,0
stwx 9,3,4
blr
.L28:
.loc 1 73 0 discriminator 1
stwu 1,-16(1)
.cfi_def_cfa_offset 16
mflr 0
stw 0,20(1)
.cfi_offset 65, 4
bl rseq_percpu_unlock.part.0
.LVL33:
.cfi_endproc
.LFE116:
.size rseq_percpu_unlock,.-rseq_percpu_unlock
.align 2
.p2align 4,,15
.globl test_percpu_spinlock
.type test_percpu_spinlock, @function
test_percpu_spinlock:
.LFB118:
.loc 1 113 0
.cfi_startproc
.loc 1 113 0
stwu 1,-64(1)
.cfi_def_cfa_offset 64
lis 9,0xfffb
mflr 0
ori 9,9,0xff00
.LBB102:
.LBB103:
.file 5 "/usr/include/powerpc-linux-gnu/bits/string3.h"
.loc 5 90 0
lis 5,0x4
ori 5,5,0x80
li 4,0
.LBE103:
.LBE102:
.loc 1 113 0
lwz 10,0(1)
stw 25,36(1)
stw 26,40(1)
stw 27,44(1)
stw 28,48(1)
stw 29,52(1)
stw 30,56(1)
stw 31,60(1)
stw 0,68(1)
.cfi_offset 65, 4
.cfi_offset 25, -28
.cfi_offset 26, -24
.cfi_offset 27, -20
.cfi_offset 28, -16
.cfi_offset 29, -12
.cfi_offset 30, -8
.cfi_offset 31, -4
mr 31,1
.cfi_def_cfa_register 31
.loc 1 113 0
stwux 10,1,9
lis 26,test_percpu_spinlock_thread@ha
la 26,test_percpu_spinlock_thread@l(26)
addi 9,1,135
lwz 8,-28680(2)
stw 8,28(31)
li 8,0
.LVL34:
.loc 1 117 0
stwu 10,-816(1)
.loc 1 113 0
rlwinm 30,9,0,0,24
.LBB106:
.LBB104:
.loc 5 90 0
mr 3,30
.LBE104:
.LBE106:
.loc 1 121 0
addis 27,30,0x4
.LBB107:
.LBB105:
.loc 5 90 0
bl memset
.LVL35:
.LBE105:
.LBE107:
.loc 1 121 0
li 9,5000
.loc 1 117 0
addi 28,1,8
.LVL36:
.loc 1 121 0
stw 9,0(27)
mr 29,28
addi 25,28,800
.LVL37:
.p2align 5,,31
.L30:
.loc 1 124 0 discriminator 3
mr 3,29
mr 6,30
mr 5,26
li 4,0
addi 29,29,4
bl pthread_create
.LVL38:
.loc 1 123 0 discriminator 3
cmplw 7,29,25
bne 7,.L30
addi 29,28,-4
addi 28,28,796
.LVL39:
.p2align 5,,31
.L31:
.loc 1 128 0 discriminator 3
lwzu 3,4(29)
li 4,0
bl pthread_join
.LVL40:
.loc 1 127 0 discriminator 3
cmplw 7,28,29
bne 7,.L31
addis 9,30,0x2
.loc 1 127 0 is_stmt 0
li 7,0
li 10,0
.p2align 5,,31
.L32:
.LVL41:
.loc 1 132 0 is_stmt 1 discriminator 3
lwz 8,0(9)
addi 9,9,128
.loc 1 131 0 discriminator 3
cmplw 7,27,9
.loc 1 132 0 discriminator 3
srawi 6,8,31
addc 10,8,10
.LVL42:
adde 7,6,7
.LVL43:
.loc 1 131 0 discriminator 3
bne 7,.L32
.loc 1 134 0
lwz 9,0(27)
li 8,200
mulhw 8,9,8
mulli 9,9,200
cmplw 7,7,8
bne- 7,.L36
cmplw 7,10,9
bne- 7,.L36
.loc 1 135 0
lwz 9,28(31)
lwz 10,-28680(2)
xor. 9,9,10
li 10,0
.LVL44:
bne- 0,.L42
addi 11,31,64
lwz 0,4(11)
lwz 25,-28(11)
lwz 31,-4(11)
.cfi_remember_state
.cfi_def_cfa 11, 0
lwz 26,-24(11)
mtlr 0
.cfi_restore 65
lwz 27,-20(11)
lwz 28,-16(11)
.LVL45:
lwz 29,-12(11)
lwz 30,-8(11)
mr 1,11
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
.cfi_def_cfa_register 1
.LVL46:
blr
.LVL47:
.L36:
.cfi_restore_state
.LBB108:
.LBB109:
.loc 1 134 0
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC4@ha
addi 6,6,20
li 5,134
la 4,.LC0@l(4)
la 3,.LC4@l(3)
bl __assert_fail
.LVL48:
.L42:
.LBE109:
.LBE108:
.loc 1 135 0
bl __stack_chk_fail
.LVL49:
.cfi_endproc
.LFE118:
.size test_percpu_spinlock,.-test_percpu_spinlock
.align 2
.p2align 4,,15
.globl this_cpu_list_push
.type this_cpu_list_push, @function
this_cpu_list_push:
.LFB119:
.loc 1 140 0
.cfi_startproc
.LVL50:
stwu 1,-80(1)
.cfi_def_cfa_offset 80
.LBB110:
.LBB111:
.LBB112:
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
add 9,9,__rseq_abi@tls
.LBE112:
.LBE111:
.LBE110:
.loc 1 140 0
stw 17,20(1)
.cfi_offset 17, -60
.L44:
.L45:
.LBB117:
.LBB114:
.LBB113:
.loc 2 142 0
lwz 10,0(9)
.LVL51:
.LBE113:
.LBE114:
.loc 1 149 0
slwi 8,10,7
lwzx 7,3,8
.LVL52:
.loc 1 152 0
stw 7,4(4)
.LVL53:
.LBB115:
.LBB116:
.loc 3 211 0
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L44
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwzx %r17, 3,8
cmpw cr7, %r17, 7
bne- cr7, .L44
stwx 4, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L44
.popsection
# 0 "" 2
.LVL54:
#NO_APP
.LBE116:
.LBE115:
.LBE117:
.loc 1 158 0
cmpwi 7,5,0
beq 7,.L43
.loc 1 159 0
stw 10,0(5)
.L43:
.loc 1 160 0
lwz 17,20(1)
addi 1,1,80
.cfi_restore 17
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE119:
.size this_cpu_list_push,.-this_cpu_list_push
.align 2
.p2align 4,,15
.globl this_cpu_list_pop
.type this_cpu_list_pop, @function
this_cpu_list_pop:
.LFB120:
.loc 1 169 0
.cfi_startproc
.LVL55:
stwu 1,-96(1)
.cfi_def_cfa_offset 96
.LBB118:
.LBB119:
.LBB120:
.loc 3 271 0
li 6,0
.LBE120:
.LBE119:
.LBE118:
.loc 1 169 0
mflr 0
.LBB127:
.LBB123:
.LBB121:
.loc 3 271 0
li 7,4
.LBE121:
.LBE123:
.LBE127:
.loc 1 169 0
stw 0,100(1)
stw 17,36(1)
.cfi_offset 65, 4
.cfi_offset 17, -60
.loc 1 169 0
lwz 9,-28680(2)
stw 9,28(1)
li 9,0
.LBB128:
.LBB124:
.LBB125:
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
add 9,9,__rseq_abi@tls
.L57:
lwz 10,0(9)
.LVL56:
.LBE125:
.LBE124:
.loc 1 177 0
slwi 8,10,7
.LBB126:
.LBB122:
.loc 3 271 0
#APP
# 271 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L61
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwzx %r17, 3,8
cmpw cr7, %r17, 6
beq- cr7, .L61
lwzx %r17, 3,8
stw %r17, 24(1)
lwzx %r17, 7, %r17
stwx %r17, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L57
.popsection
# 0 "" 2
.LVL57:
#NO_APP
.LBE122:
.LBE126:
.loc 1 184 0
cmpwi 7,4,0
beq 7,.L59
.loc 1 185 0
stw 10,0(4)
.L59:
.loc 1 186 0
lwz 3,24(1)
.LVL58:
b .L55
.L54:
.LVL59:
.L61:
.loc 1 189 0
li 3,0
.LVL60:
.L55:
.LBE128:
.loc 1 192 0 discriminator 1
lwz 10,28(1)
lwz 9,-28680(2)
xor. 10,10,9
li 9,0
.LVL61:
bne- 0,.L67
.loc 1 192 0 is_stmt 0
lwz 0,100(1)
lwz 17,36(1)
addi 1,1,96
.cfi_remember_state
.cfi_restore 17
.cfi_def_cfa_offset 0
.LVL62:
mtlr 0
.cfi_restore 65
blr
.LVL63:
.L67:
.cfi_restore_state
bl __stack_chk_fail
.LVL64:
.cfi_endproc
.LFE120:
.size this_cpu_list_pop,.-this_cpu_list_pop
.align 2
.p2align 4,,15
.globl test_percpu_list_thread
.type test_percpu_list_thread, @function
test_percpu_list_thread:
.LFB122:
.loc 1 210 0 is_stmt 1
.cfi_startproc
.LVL65:
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 29,20(1)
stw 31,28(1)
stw 0,36(1)
stw 30,24(1)
.cfi_offset 65, 4
.cfi_offset 29, -12
.cfi_offset 31, -4
.cfi_offset 30, -8
.loc 1 210 0
mr 29,3
.loc 1 214 0
bl rseq_register_current_thread
.LVL66:
lis 31,0x1
ori 31,31,0x86a0
cmpwi 7,3,0
bne- 7,.L81
.p2align 4,,15
.L75:
.LVL67:
.LBB139:
.loc 1 223 0
li 4,0
mr 3,29
bl this_cpu_list_pop
.LVL68:
mr 30,3
.LVL69:
.loc 1 224 0
bl sched_yield
.LVL70:
.loc 1 225 0
cmpwi 7,30,0
beq 7,.L70
.loc 1 226 0
li 5,0
mr 4,30
mr 3,29
bl this_cpu_list_push
.LVL71:
.L70:
.LBE139:
.loc 1 220 0 discriminator 2
cmpwi 0,31,1
addi 31,31,-1
.LVL72:
bne 0,.L75
.loc 1 229 0
bl rseq_unregister_current_thread
.LVL73:
cmpwi 7,3,0
bne- 7,.L82
.loc 1 236 0
lwz 0,36(1)
lwz 29,20(1)
.LVL74:
lwz 30,24(1)
.LVL75:
lwz 31,28(1)
.LVL76:
addi 1,1,32
.cfi_remember_state
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.LVL77:
.L81:
.cfi_restore_state
.LBB140:
.LBB141:
.loc 1 215 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 216 0
bl __errno_location
.LVL78:
.loc 1 215 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL79:
.LBB142:
.LBB143:
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL80:
.LBE143:
.LBE142:
.loc 1 217 0
bl abort
.LVL81:
.L82:
.LBE141:
.LBE140:
.loc 1 230 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.LVL82:
.loc 1 231 0
bl __errno_location
.LVL83:
.loc 1 230 0
lwz 31,0(3)
.LVL84:
mr 3,31
bl strerror
.LVL85:
.LBB144:
.LBB145:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL86:
.LBE145:
.LBE144:
.loc 1 232 0
bl abort
.LVL87:
.cfi_endproc
.LFE122:
.size test_percpu_list_thread,.-test_percpu_list_thread
.align 2
.p2align 4,,15
.globl __percpu_list_pop
.type __percpu_list_pop, @function
__percpu_list_pop:
.LFB121:
.loc 1 199 0
.cfi_startproc
.LVL88:
stwu 1,-16(1)
.cfi_def_cfa_offset 16
slwi 4,4,7
.LVL89:
.loc 1 202 0
lwzx 9,3,4
.LVL90:
.loc 1 203 0
cmpwi 7,9,0
beq 7,.L84
.loc 1 205 0
lwz 10,4(9)
stwx 10,3,4
.L84:
.loc 1 207 0
mr 3,9
.LVL91:
addi 1,1,16
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE121:
.size __percpu_list_pop,.-__percpu_list_pop
.align 2
.p2align 4,,15
.globl test_percpu_list
.type test_percpu_list, @function
test_percpu_list:
.LFB123:
.loc 1 240 0
.cfi_startproc
stwu 1,-1008(1)
.cfi_def_cfa_offset 1008
lis 9,0xfffd
mflr 0
ori 9,9,0xff80
.LBB146:
.LBB147:
.loc 5 90 0
lis 5,0x2
li 4,0
.LBE147:
.LBE146:
.loc 1 240 0
lwz 10,0(1)
stw 0,1012(1)
stw 23,972(1)
stw 24,976(1)
stw 25,980(1)
stw 26,984(1)
stw 27,988(1)
stw 29,996(1)
stw 31,1004(1)
stw 28,992(1)
.cfi_offset 65, 4
.cfi_offset 23, -36
.cfi_offset 24, -32
.cfi_offset 25, -28
.cfi_offset 26, -24
.cfi_offset 27, -20
.cfi_offset 29, -12
.cfi_offset 31, -4
.cfi_offset 28, -16
mr 31,1
.cfi_def_cfa_register 31
stw 30,1000(1)
.cfi_offset 30, -8
.loc 1 240 0
stwux 10,1,9
.loc 1 242 0
li 26,0
li 29,0
.loc 1 251 0
li 24,0
.loc 1 240 0
addi 23,1,135
lwz 9,-28680(2)
stw 9,956(31)
li 9,0
.LVL92:
rlwinm 23,23,0,0,24
.LVL93:
.LBB149:
.LBB148:
.loc 5 90 0
mr 3,23
bl memset
.LVL94:
.LBE148:
.LBE149:
.loc 1 250 0
addi 5,31,28
li 4,128
li 3,0
mr 25,23
bl sched_getaffinity
.LVL95:
mr 27,23
.LVL96:
.p2align 4,,15
.L93:
.LBB150:
.loc 1 252 0
addi 10,31,960
rlwinm 9,24,29,3,29
add 9,10,9
rlwinm 10,24,0,27,31
lwz 9,-932(9)
srw 9,9,10
andi. 10,9,1
beq 0,.L90
li 28,0
li 30,1
.LVL97:
.p2align 4,,15
.L114:
.LBE150:
.LBB151:
.loc 1 257 0
addc 29,30,29
.LVL98:
.loc 1 259 0
li 3,8
.loc 1 257 0
adde 26,28,26
.loc 1 259 0
bl malloc
.LVL99:
.loc 1 260 0
cmpwi 0,3,0
beq- 0,.L121
addic 10,30,1
.loc 1 262 0 discriminator 2
lwz 8,0(27)
.loc 1 261 0 discriminator 2
stw 30,0(3)
addze 28,28
.loc 1 263 0 discriminator 2
stw 3,0(27)
.LVL100:
.LBE151:
.loc 1 254 0 discriminator 2
cmpwi 7,28,0
.LBB152:
.loc 1 262 0 discriminator 2
stw 8,4(3)
mr 30,10
.LVL101:
.LBE152:
.loc 1 254 0 discriminator 2
bne 7,.L114
cmplwi 7,10,101
bne 7,.L114
.LVL102:
.p2align 4,,15
.L90:
.loc 1 251 0 discriminator 2
cmpwi 7,24,1023
addi 27,27,128
addi 24,24,1
.LVL103:
bne 7,.L93
lis 28,test_percpu_list_thread@ha
addi 30,31,156
addi 27,31,956
la 28,test_percpu_list_thread@l(28)
.LVL104:
.p2align 5,,31
.L94:
.loc 1 268 0 discriminator 3
mr 3,30
mr 6,23
mr 5,28
li 4,0
addi 30,30,4
bl pthread_create
.LVL105:
.loc 1 267 0 discriminator 3
cmplw 7,27,30
bne 7,.L94
addi 30,31,152
addi 28,31,952
.p2align 5,,31
.L95:
.loc 1 272 0 discriminator 3
lwzu 3,4(30)
li 4,0
bl pthread_join
.LVL106:
.loc 1 271 0 discriminator 3
cmplw 7,28,30
bne 7,.L95
li 28,0
li 30,0
li 27,0
b .L98
.LVL107:
.p2align 4,,15
.L96:
.loc 1 274 0 discriminator 2
cmpwi 7,27,1023
addi 25,25,128
addi 27,27,1
.LVL108:
beq 7,.L122
.LVL109:
.L98:
.LBB153:
.LBB154:
.loc 1 277 0
addi 10,31,960
rlwinm 9,27,29,3,29
add 9,10,9
rlwinm 10,27,0,27,31
lwz 9,-932(9)
srw 9,9,10
andi. 10,9,1
beq 0,.L96
.LVL110:
.LBE154:
.LBB155:
.LBB156:
.loc 1 202 0
lwz 3,0(25)
.LVL111:
.loc 1 203 0
cmpwi 7,3,0
beq 7,.L96
.p2align 4,,15
.L97:
.LVL112:
.loc 1 205 0
lwz 8,4(3)
.LBE156:
.LBE155:
.loc 1 281 0
lwz 9,0(3)
.LBB159:
.LBB157:
.loc 1 205 0
stw 8,0(25)
.LVL113:
.LBE157:
.LBE159:
.loc 1 281 0
srawi 10,9,31
addc 30,9,30
.LVL114:
adde 28,10,28
.LVL115:
.loc 1 282 0
bl free
.LVL116:
.LBB160:
.LBB158:
.loc 1 202 0
lwz 3,0(25)
.LVL117:
.loc 1 203 0
cmpwi 7,3,0
bne 7,.L97
.LVL118:
.LBE158:
.LBE160:
.LBE153:
.loc 1 274 0
cmpwi 7,27,1023
addi 25,25,128
addi 27,27,1
.LVL119:
bne 7,.L98
.LVL120:
.L122:
.loc 1 291 0
cmplw 7,28,26
bne- 7,.L102
cmplw 7,30,29
bne- 7,.L102
.loc 1 292 0
lwz 9,956(31)
lwz 10,-28680(2)
xor. 9,9,10
li 10,0
bne- 0,.L123
addi 11,31,1008
lwz 0,4(11)
lwz 23,-36(11)
lwz 31,-4(11)
.cfi_remember_state
.cfi_def_cfa 11, 0
lwz 24,-32(11)
.LVL121:
mtlr 0
.cfi_restore 65
lwz 25,-28(11)
lwz 26,-24(11)
.LVL122:
lwz 27,-20(11)
.LVL123:
lwz 28,-16(11)
lwz 29,-12(11)
lwz 30,-8(11)
mr 1,11
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
.cfi_restore 24
.cfi_restore 23
.cfi_def_cfa_register 1
blr
.LVL124:
.L121:
.cfi_restore_state
.LBB161:
.loc 1 260 0 discriminator 1
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC5@ha
.LVL125:
addi 6,6,44
li 5,260
la 4,.LC0@l(4)
la 3,.LC5@l(3)
bl __assert_fail
.LVL126:
.L102:
.LBE161:
.loc 1 291 0 discriminator 1
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC6@ha
addi 6,6,44
li 5,291
la 4,.LC0@l(4)
la 3,.LC6@l(3)
bl __assert_fail
.LVL127:
.L123:
.loc 1 292 0
bl __stack_chk_fail
.LVL128:
.cfi_endproc
.LFE123:
.size test_percpu_list,.-test_percpu_list
.section .text.startup,"ax",@progbits
.align 2
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB124:
.loc 1 295 0
.cfi_startproc
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 30,24(1)
stw 0,36(1)
stw 31,28(1)
.cfi_offset 65, 4
.cfi_offset 30, -8
.cfi_offset 31, -4
.loc 1 296 0
bl rseq_register_current_thread
.LVL129:
cmpwi 7,3,0
bne 7,.L131
.LVL130:
.LBB162:
.LBB163:
.loc 4 104 0
lis 3,.LC7@ha
la 3,.LC7@l(3)
bl puts
.LVL131:
.LBE163:
.LBE162:
.loc 1 302 0
bl test_percpu_spinlock
.LVL132:
.LBB164:
.LBB165:
.loc 4 104 0
lis 3,.LC8@ha
la 3,.LC8@l(3)
bl puts
.LVL133:
.LBE165:
.LBE164:
.loc 1 304 0
bl test_percpu_list
.LVL134:
.loc 1 305 0
bl rseq_unregister_current_thread
.LVL135:
cmpwi 0,3,0
bne 0,.L132
.L126:
.loc 1 314 0
lwz 0,36(1)
lwz 30,24(1)
lwz 31,28(1)
addi 1,1,32
.cfi_remember_state
.cfi_restore 31
.cfi_restore 30
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.L131:
.cfi_restore_state
.loc 1 297 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 298 0
bl __errno_location
.LVL136:
.loc 1 297 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL137:
.LBB166:
.LBB167:
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL138:
.LBE167:
.LBE166:
.loc 1 313 0
li 3,-1
b .L126
.LVL139:
.L132:
.loc 1 306 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 307 0
bl __errno_location
.LVL140:
.loc 1 306 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL141:
.LBB168:
.LBB169:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL142:
.LBE169:
.LBE168:
.loc 1 313 0
li 3,-1
b .L126
.cfi_endproc
.LFE124:
.size main,.-main
.section .rodata
.align 2
.set .LANCHOR0,. + 0
.type __PRETTY_FUNCTION__.5645, @object
.size __PRETTY_FUNCTION__.5645, 19
__PRETTY_FUNCTION__.5645:
.string "rseq_percpu_unlock"
.zero 1
.type __PRETTY_FUNCTION__.5672, @object
.size __PRETTY_FUNCTION__.5672, 21
__PRETTY_FUNCTION__.5672:
.string "test_percpu_spinlock"
.zero 3
.type __PRETTY_FUNCTION__.5725, @object
.size __PRETTY_FUNCTION__.5725, 17
__PRETTY_FUNCTION__.5725:
.string "test_percpu_list"
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "basic_percpu_ops_test.c"
.LC1:
.string "lock->c[cpu].v == 1"
.LC2:
.string "Error: rseq_register_current_thread(...) failed(%d): %s\n"
.zero 3
.LC3:
.string "Error: rseq_unregister_current_thread(...) failed(%d): %s\n"
.zero 1
.LC4:
.string "sum == (uint64_t)data.reps * num_threads"
.zero 3
.LC5:
.string "node"
.zero 3
.LC6:
.string "sum == expected_sum"
.LC7:
.string "spinlock"
.zero 3
.LC8:
.string "percpu_list"
.section ".text"
.Letext0:
.file 6 "/usr/include/powerpc-linux-gnu/bits/types.h"
.file 7 "/usr/lib/gcc/powerpc-linux-gnu/5/include/stddef.h"
.file 8 "/usr/include/powerpc-linux-gnu/bits/sched.h"
.file 9 "/usr/include/powerpc-linux-gnu/bits/pthreadtypes.h"
.file 10 "/usr/include/stdint.h"
.file 11 "/usr/include/stdio.h"
.file 12 "/usr/include/libio.h"
.file 13 "/usr/include/asm-generic/int-ll64.h"
.file 14 "/home/compudj/git/librseq/extra/linux/rseq.h"
.file 15 "/usr/include/assert.h"
.file 16 "/usr/include/powerpc-linux-gnu/bits/errno.h"
.file 17 "/usr/include/string.h"
.file 18 "/usr/include/stdlib.h"
.file 19 "/usr/include/pthread.h"
.file 20 "/usr/include/sched.h"
.file 21 "<built-in>"
.section .debug_info,"",@progbits
.Ldebug_info0:
.4byte 0x142c
.2byte 0x4
.4byte .Ldebug_abbrev0
.byte 0x4
.uleb128 0x1
.4byte .LASF140
.byte 0xc
.4byte .LASF141
.4byte .LASF142
.4byte .Ldebug_ranges0+0x160
.4byte 0
.4byte .Ldebug_line0
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF0
.uleb128 0x2
.byte 0x2
.byte 0x7
.4byte .LASF1
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF2
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF3
.uleb128 0x2
.byte 0x1
.byte 0x6
.4byte .LASF4
.uleb128 0x2
.byte 0x2
.byte 0x5
.4byte .LASF5
.uleb128 0x3
.byte 0x4
.byte 0x5
.string "int"
.uleb128 0x2
.byte 0x8
.byte 0x5
.4byte .LASF6
.uleb128 0x2
.byte 0x8
.byte 0x7
.4byte .LASF7
.uleb128 0x4
.4byte .LASF8
.byte 0x6
.byte 0x37
.4byte 0x56
.uleb128 0x4
.4byte .LASF9
.byte 0x6
.byte 0x83
.4byte 0x7a
.uleb128 0x2
.byte 0x4
.byte 0x5
.4byte .LASF10
.uleb128 0x4
.4byte .LASF11
.byte 0x6
.byte 0x84
.4byte 0x64
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF12
.uleb128 0x5
.byte 0x4
.uleb128 0x6
.byte 0x4
.4byte 0x9b
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF13
.uleb128 0x4
.4byte .LASF14
.byte 0x7
.byte 0xd8
.4byte 0x33
.uleb128 0x4
.4byte .LASF15
.byte 0x8
.byte 0x76
.4byte 0x3a
.uleb128 0x7
.byte 0x80
.byte 0x8
.byte 0x7d
.4byte 0xcd
.uleb128 0x8
.4byte .LASF22
.byte 0x8
.byte 0x7f
.4byte 0xcd
.byte 0
.byte 0
.uleb128 0x9
.4byte 0xad
.4byte 0xdd
.uleb128 0xa
.4byte 0x8c
.byte 0x1f
.byte 0
.uleb128 0x4
.4byte .LASF16
.byte 0x8
.byte 0x80
.4byte 0xb8
.uleb128 0x6
.byte 0x4
.4byte 0xee
.uleb128 0xb
.4byte 0x9b
.uleb128 0xb
.4byte 0x4f
.uleb128 0x4
.4byte .LASF17
.byte 0x9
.byte 0x31
.4byte 0x3a
.uleb128 0x4
.4byte .LASF18
.byte 0xa
.byte 0x33
.4byte 0x33
.uleb128 0x4
.4byte .LASF19
.byte 0xa
.byte 0x3a
.4byte 0x5d
.uleb128 0x4
.4byte .LASF20
.byte 0xa
.byte 0x7d
.4byte 0x4f
.uleb128 0x4
.4byte .LASF21
.byte 0xb
.byte 0x30
.4byte 0x12f
.uleb128 0xc
.4byte .LASF52
.byte 0x98
.byte 0xc
.byte 0xf1
.4byte 0x2ac
.uleb128 0x8
.4byte .LASF23
.byte 0xc
.byte 0xf2
.4byte 0x4f
.byte 0
.uleb128 0x8
.4byte .LASF24
.byte 0xc
.byte 0xf7
.4byte 0x95
.byte 0x4
.uleb128 0x8
.4byte .LASF25
.byte 0xc
.byte 0xf8
.4byte 0x95
.byte 0x8
.uleb128 0x8
.4byte .LASF26
.byte 0xc
.byte 0xf9
.4byte 0x95
.byte 0xc
.uleb128 0x8
.4byte .LASF27
.byte 0xc
.byte 0xfa
.4byte 0x95
.byte 0x10
.uleb128 0x8
.4byte .LASF28
.byte 0xc
.byte 0xfb
.4byte 0x95
.byte 0x14
.uleb128 0x8
.4byte .LASF29
.byte 0xc
.byte 0xfc
.4byte 0x95
.byte 0x18
.uleb128 0x8
.4byte .LASF30
.byte 0xc
.byte 0xfd
.4byte 0x95
.byte 0x1c
.uleb128 0x8
.4byte .LASF31
.byte 0xc
.byte 0xfe
.4byte 0x95
.byte 0x20
.uleb128 0xd
.4byte .LASF32
.byte 0xc
.2byte 0x100
.4byte 0x95
.byte 0x24
.uleb128 0xd
.4byte .LASF33
.byte 0xc
.2byte 0x101
.4byte 0x95
.byte 0x28
.uleb128 0xd
.4byte .LASF34
.byte 0xc
.2byte 0x102
.4byte 0x95
.byte 0x2c
.uleb128 0xd
.4byte .LASF35
.byte 0xc
.2byte 0x104
.4byte 0x2e4
.byte 0x30
.uleb128 0xd
.4byte .LASF36
.byte 0xc
.2byte 0x106
.4byte 0x2ea
.byte 0x34
.uleb128 0xd
.4byte .LASF37
.byte 0xc
.2byte 0x108
.4byte 0x4f
.byte 0x38
.uleb128 0xd
.4byte .LASF38
.byte 0xc
.2byte 0x10c
.4byte 0x4f
.byte 0x3c
.uleb128 0xd
.4byte .LASF39
.byte 0xc
.2byte 0x10e
.4byte 0x6f
.byte 0x40
.uleb128 0xd
.4byte .LASF40
.byte 0xc
.2byte 0x112
.4byte 0x2c
.byte 0x44
.uleb128 0xd
.4byte .LASF41
.byte 0xc
.2byte 0x113
.4byte 0x41
.byte 0x46
.uleb128 0xd
.4byte .LASF42
.byte 0xc
.2byte 0x114
.4byte 0x2f0
.byte 0x47
.uleb128 0xd
.4byte .LASF43
.byte 0xc
.2byte 0x118
.4byte 0x300
.byte 0x48
.uleb128 0xd
.4byte .LASF44
.byte 0xc
.2byte 0x121
.4byte 0x81
.byte 0x50
.uleb128 0xd
.4byte .LASF45
.byte 0xc
.2byte 0x129
.4byte 0x93
.byte 0x58
.uleb128 0xd
.4byte .LASF46
.byte 0xc
.2byte 0x12a
.4byte 0x93
.byte 0x5c
.uleb128 0xd
.4byte .LASF47
.byte 0xc
.2byte 0x12b
.4byte 0x93
.byte 0x60
.uleb128 0xd
.4byte .LASF48
.byte 0xc
.2byte 0x12c
.4byte 0x93
.byte 0x64
.uleb128 0xd
.4byte .LASF49
.byte 0xc
.2byte 0x12e
.4byte 0xa2
.byte 0x68
.uleb128 0xd
.4byte .LASF50
.byte 0xc
.2byte 0x12f
.4byte 0x4f
.byte 0x6c
.uleb128 0xd
.4byte .LASF51
.byte 0xc
.2byte 0x131
.4byte 0x306
.byte 0x70
.byte 0
.uleb128 0xe
.4byte .LASF143
.byte 0xc
.byte 0x96
.uleb128 0xc
.4byte .LASF53
.byte 0xc
.byte 0xc
.byte 0x9c
.4byte 0x2e4
.uleb128 0x8
.4byte .LASF54
.byte 0xc
.byte 0x9d
.4byte 0x2e4
.byte 0
.uleb128 0x8
.4byte .LASF55
.byte 0xc
.byte 0x9e
.4byte 0x2ea
.byte 0x4
.uleb128 0x8
.4byte .LASF56
.byte 0xc
.byte 0xa2
.4byte 0x4f
.byte 0x8
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x2b3
.uleb128 0x6
.byte 0x4
.4byte 0x12f
.uleb128 0x9
.4byte 0x9b
.4byte 0x300
.uleb128 0xa
.4byte 0x8c
.byte 0
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x2ac
.uleb128 0x9
.4byte 0x9b
.4byte 0x316
.uleb128 0xa
.4byte 0x8c
.byte 0x27
.byte 0
.uleb128 0x4
.4byte .LASF57
.byte 0xb
.byte 0x5a
.4byte 0x6f
.uleb128 0x6
.byte 0x4
.4byte 0x4f
.uleb128 0x2
.byte 0x10
.byte 0x4
.4byte .LASF58
.uleb128 0x4
.4byte .LASF59
.byte 0xd
.byte 0x1a
.4byte 0x33
.uleb128 0x4
.4byte .LASF60
.byte 0xd
.byte 0x1e
.4byte 0x5d
.uleb128 0x2
.byte 0x8
.byte 0x4
.4byte .LASF61
.uleb128 0x7
.byte 0x8
.byte 0xe
.byte 0x72
.4byte 0x36c
.uleb128 0x8
.4byte .LASF62
.byte 0xe
.byte 0x74
.4byte 0x32e
.byte 0
.uleb128 0x8
.4byte .LASF63
.byte 0xe
.byte 0x75
.4byte 0x32e
.byte 0x4
.byte 0
.uleb128 0xf
.byte 0x8
.byte 0xe
.byte 0x6d
.4byte 0x38b
.uleb128 0x10
.4byte .LASF64
.byte 0xe
.byte 0x6e
.4byte 0x339
.uleb128 0x11
.string "ptr"
.byte 0xe
.byte 0x7a
.4byte 0x34b
.byte 0
.uleb128 0xc
.4byte .LASF65
.byte 0x20
.byte 0xe
.byte 0x3e
.4byte 0x3c8
.uleb128 0x8
.4byte .LASF66
.byte 0xe
.byte 0x4b
.4byte 0x32e
.byte 0
.uleb128 0x8
.4byte .LASF67
.byte 0xe
.byte 0x5a
.4byte 0x32e
.byte 0x4
.uleb128 0x8
.4byte .LASF68
.byte 0xe
.byte 0x7c
.4byte 0x36c
.byte 0x8
.uleb128 0x8
.4byte .LASF69
.byte 0xe
.byte 0x90
.4byte 0x32e
.byte 0x10
.byte 0
.uleb128 0xc
.4byte .LASF70
.byte 0x80
.byte 0x1
.byte 0x12
.4byte 0x3df
.uleb128 0x12
.string "v"
.byte 0x1
.byte 0x13
.4byte 0x119
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF71
.4byte 0x20000
.byte 0x1
.byte 0x16
.4byte 0x3f9
.uleb128 0x12
.string "c"
.byte 0x1
.byte 0x17
.4byte 0x3f9
.byte 0
.byte 0
.uleb128 0x9
.4byte 0x3c8
.4byte 0x40a
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0xc
.4byte .LASF72
.byte 0x80
.byte 0x1
.byte 0x1a
.4byte 0x423
.uleb128 0x8
.4byte .LASF73
.byte 0x1
.byte 0x1b
.4byte 0x119
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF74
.4byte 0x40080
.byte 0x1
.byte 0x1e
.4byte 0x45b
.uleb128 0x8
.4byte .LASF75
.byte 0x1
.byte 0x1f
.4byte 0x3df
.byte 0
.uleb128 0x15
.string "c"
.byte 0x1
.byte 0x20
.4byte 0x45b
.4byte 0x20000
.uleb128 0x16
.4byte .LASF76
.byte 0x1
.byte 0x21
.4byte 0x4f
.4byte 0x40000
.byte 0
.uleb128 0x9
.4byte 0x40a
.4byte 0x46c
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0xc
.4byte .LASF77
.byte 0x8
.byte 0x1
.byte 0x24
.4byte 0x491
.uleb128 0x8
.4byte .LASF78
.byte 0x1
.byte 0x25
.4byte 0x119
.byte 0
.uleb128 0x8
.4byte .LASF79
.byte 0x1
.byte 0x26
.4byte 0x491
.byte 0x4
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x46c
.uleb128 0xc
.4byte .LASF80
.byte 0x80
.byte 0x1
.byte 0x29
.4byte 0x4b0
.uleb128 0x8
.4byte .LASF81
.byte 0x1
.byte 0x2a
.4byte 0x491
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF82
.4byte 0x20000
.byte 0x1
.byte 0x2d
.4byte 0x4ca
.uleb128 0x12
.string "c"
.byte 0x1
.byte 0x2e
.4byte 0x4ca
.byte 0
.byte 0
.uleb128 0x9
.4byte 0x497
.4byte 0x4db
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0x17
.4byte .LASF99
.byte 0x3
.byte 0xcf
.4byte 0x4f
.byte 0x3
.4byte 0x524
.uleb128 0x18
.string "v"
.byte 0x3
.byte 0xcf
.4byte 0x524
.uleb128 0x19
.4byte .LASF83
.byte 0x3
.byte 0xcf
.4byte 0x119
.uleb128 0x19
.4byte .LASF84
.byte 0x3
.byte 0xcf
.4byte 0x119
.uleb128 0x18
.string "cpu"
.byte 0x3
.byte 0xcf
.4byte 0x4f
.uleb128 0x1a
.4byte .LASF85
.byte 0x3
.byte 0xfc
.uleb128 0x1a
.4byte .LASF86
.byte 0x3
.byte 0xff
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x119
.uleb128 0x1b
.4byte .LASF144
.byte 0x2
.byte 0x8c
.4byte 0x103
.byte 0x3
.uleb128 0x1c
.4byte .LASF94
.byte 0x1
.byte 0x48
.byte 0x1
.4byte 0x566
.uleb128 0x19
.4byte .LASF75
.byte 0x1
.byte 0x48
.4byte 0x566
.uleb128 0x18
.string "cpu"
.byte 0x1
.byte 0x48
.4byte 0x4f
.uleb128 0x1d
.4byte .LASF96
.4byte 0x57c
.4byte .LASF94
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x3df
.uleb128 0x9
.4byte 0xee
.4byte 0x57c
.uleb128 0xa
.4byte 0x8c
.byte 0x12
.byte 0
.uleb128 0xb
.4byte 0x56c
.uleb128 0x1e
.4byte .LASF89
.byte 0x4
.byte 0x5f
.4byte 0x4f
.byte 0x3
.4byte 0x5a9
.uleb128 0x19
.4byte .LASF87
.byte 0x4
.byte 0x5f
.4byte 0x5af
.uleb128 0x19
.4byte .LASF88
.byte 0x4
.byte 0x5f
.4byte 0x5b4
.uleb128 0x1f
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x124
.uleb128 0x20
.4byte 0x5a9
.uleb128 0x20
.4byte 0xe8
.uleb128 0x1e
.4byte .LASF90
.byte 0x5
.byte 0x4e
.4byte 0x93
.byte 0x3
.4byte 0x5eb
.uleb128 0x19
.4byte .LASF91
.byte 0x5
.byte 0x4e
.4byte 0x93
.uleb128 0x19
.4byte .LASF92
.byte 0x5
.byte 0x4e
.4byte 0x4f
.uleb128 0x19
.4byte .LASF93
.byte 0x5
.byte 0x4e
.4byte 0xa2
.byte 0
.uleb128 0x1c
.4byte .LASF95
.byte 0x1
.byte 0x70
.byte 0x1
.4byte 0x63a
.uleb128 0x21
.4byte .LASF97
.byte 0x1
.byte 0x72
.4byte 0xf3
.uleb128 0x22
.string "i"
.byte 0x1
.byte 0x73
.4byte 0x4f
.uleb128 0x22
.string "sum"
.byte 0x1
.byte 0x74
.4byte 0x10e
.uleb128 0x21
.4byte .LASF98
.byte 0x1
.byte 0x75
.4byte 0x63a
.uleb128 0x21
.4byte .LASF78
.byte 0x1
.byte 0x76
.4byte 0x423
.uleb128 0x1d
.4byte .LASF96
.4byte 0x659
.4byte .LASF95
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0x649
.uleb128 0x23
.4byte 0x8c
.byte 0
.uleb128 0x9
.4byte 0xee
.4byte 0x659
.uleb128 0xa
.4byte 0x8c
.byte 0x14
.byte 0
.uleb128 0xb
.4byte 0x649
.uleb128 0x24
.4byte .LASF100
.byte 0x3
.2byte 0x10a
.4byte 0x4f
.byte 0x3
.4byte 0x6ba
.uleb128 0x25
.string "v"
.byte 0x3
.2byte 0x10a
.4byte 0x524
.uleb128 0x26
.4byte .LASF101
.byte 0x3
.2byte 0x10a
.4byte 0x119
.uleb128 0x26
.4byte .LASF102
.byte 0x3
.2byte 0x10b
.4byte 0x316
.uleb128 0x26
.4byte .LASF103
.byte 0x3
.2byte 0x10b
.4byte 0x524
.uleb128 0x25
.string "cpu"
.byte 0x3
.2byte 0x10b
.4byte 0x4f
.uleb128 0x27
.4byte .LASF85
.byte 0x3
.2byte 0x140
.uleb128 0x27
.4byte .LASF86
.byte 0x3
.2byte 0x143
.byte 0
.uleb128 0x28
.4byte .LASF106
.byte 0x1
.byte 0xd1
.4byte 0x93
.byte 0x1
.4byte 0x6f7
.uleb128 0x18
.string "arg"
.byte 0x1
.byte 0xd1
.4byte 0x93
.uleb128 0x22
.string "i"
.byte 0x1
.byte 0xd3
.4byte 0x4f
.uleb128 0x21
.4byte .LASF104
.byte 0x1
.byte 0xd4
.4byte 0x6f7
.uleb128 0x29
.uleb128 0x21
.4byte .LASF105
.byte 0x1
.byte 0xdd
.4byte 0x491
.byte 0
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x4b0
.uleb128 0x28
.4byte .LASF107
.byte 0x1
.byte 0xc6
.4byte 0x491
.byte 0x1
.4byte 0x72f
.uleb128 0x19
.4byte .LASF104
.byte 0x1
.byte 0xc6
.4byte 0x6f7
.uleb128 0x18
.string "cpu"
.byte 0x1
.byte 0xc6
.4byte 0x4f
.uleb128 0x21
.4byte .LASF105
.byte 0x1
.byte 0xc8
.4byte 0x491
.byte 0
.uleb128 0x1e
.4byte .LASF108
.byte 0x4
.byte 0x66
.4byte 0x4f
.byte 0x3
.4byte 0x74c
.uleb128 0x19
.4byte .LASF88
.byte 0x4
.byte 0x66
.4byte 0x5b4
.uleb128 0x1f
.byte 0
.uleb128 0x2a
.4byte 0x536
.4byte .LFB125
.4byte .LFE125-.LFB125
.uleb128 0x1
.byte 0x9c
.4byte 0x7ae
.uleb128 0x2b
.4byte 0x54d
.uleb128 0x6
.byte 0xfa
.4byte 0x54d
.byte 0x9f
.uleb128 0x2b
.4byte 0x542
.uleb128 0x6
.byte 0xfa
.4byte 0x542
.byte 0x9f
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL1
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC1
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x4a
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF109
.byte 0x1
.byte 0x32
.4byte 0x4f
.4byte .LFB115
.4byte .LFE115-.LFB115
.uleb128 0x1
.byte 0x9c
.4byte 0x850
.uleb128 0x30
.4byte .LASF75
.byte 0x1
.byte 0x32
.4byte 0x566
.4byte .LLST0
.uleb128 0x31
.string "cpu"
.byte 0x1
.byte 0x34
.4byte 0x4f
.uleb128 0x1
.byte 0x5a
.uleb128 0x32
.4byte .Ldebug_ranges0+0
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0x37
.4byte 0x4f
.uleb128 0x33
.4byte 0x52a
.4byte .LBB73
.4byte .Ldebug_ranges0+0x18
.byte 0x1
.byte 0x39
.uleb128 0x34
.4byte 0x4db
.4byte .LBB77
.4byte .Ldebug_ranges0+0x38
.byte 0x1
.byte 0x3a
.uleb128 0x35
.4byte 0x50a
.4byte .LLST1
.uleb128 0x35
.4byte 0x4ff
.4byte .LLST2
.uleb128 0x35
.4byte 0x4f4
.4byte .LLST3
.uleb128 0x35
.4byte 0x4eb
.4byte .LLST4
.uleb128 0x32
.4byte .Ldebug_ranges0+0x38
.uleb128 0x36
.4byte 0x515
.4byte .L5
.uleb128 0x36
.4byte 0x51c
.4byte .L4
.byte 0
.byte 0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF110
.byte 0x1
.byte 0x52
.4byte 0x93
.4byte .LFB117
.4byte .LFE117-.LFB117
.uleb128 0x1
.byte 0x9c
.4byte 0x9ef
.uleb128 0x37
.string "arg"
.byte 0x1
.byte 0x52
.4byte 0x93
.4byte .LLST5
.uleb128 0x38
.4byte .LASF78
.byte 0x1
.byte 0x54
.4byte 0x9ef
.4byte .LLST6
.uleb128 0x39
.string "i"
.byte 0x1
.byte 0x55
.4byte 0x4f
.4byte .LLST7
.uleb128 0x39
.string "cpu"
.byte 0x1
.byte 0x55
.4byte 0x4f
.4byte .LLST8
.uleb128 0x3a
.4byte 0x536
.4byte .LBB86
.4byte .Ldebug_ranges0+0x58
.byte 0x1
.byte 0x5f
.4byte 0x8e8
.uleb128 0x3b
.4byte 0x54d
.uleb128 0x35
.4byte 0x542
.4byte .LLST9
.uleb128 0x32
.4byte .Ldebug_ranges0+0x58
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL20
.4byte 0x74c
.uleb128 0x3c
.4byte 0x542
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB92
.4byte .LBE92-.LBB92
.byte 0x1
.byte 0x58
.4byte 0x932
.uleb128 0x35
.4byte 0x59c
.4byte .LLST10
.uleb128 0x35
.4byte 0x591
.4byte .LLST11
.uleb128 0x2d
.4byte .LVL24
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB94
.4byte .LBE94-.LBB94
.byte 0x1
.byte 0x62
.4byte 0x97c
.uleb128 0x35
.4byte 0x59c
.4byte .LLST12
.uleb128 0x35
.4byte 0x591
.4byte .LLST13
.uleb128 0x2d
.4byte .LVL29
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL8
.4byte 0x1372
.uleb128 0x3f
.4byte .LVL11
.4byte 0x7ae
.4byte 0x999
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL17
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL21
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL23
.4byte 0x1393
.4byte 0x9bf
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL25
.4byte 0x139f
.uleb128 0x3e
.4byte .LVL26
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL28
.4byte 0x1393
.4byte 0x9e5
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL30
.4byte 0x139f
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x423
.uleb128 0x2a
.4byte 0x536
.4byte .LFB116
.4byte .LFE116-.LFB116
.uleb128 0x1
.byte 0x9c
.4byte 0xa42
.uleb128 0x35
.4byte 0x542
.4byte .LLST14
.uleb128 0x35
.4byte 0x54d
.4byte .LLST15
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL33
.4byte 0x74c
.uleb128 0x3c
.4byte 0x542
.uleb128 0x3
.byte 0xf3
.uleb128 0x1
.byte 0x53
.uleb128 0x3c
.4byte 0x54d
.uleb128 0x3
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0
.byte 0
.uleb128 0x2a
.4byte 0x5eb
.4byte .LFB118
.4byte .LFE118-.LFB118
.uleb128 0x1
.byte 0x9c
.4byte 0xb71
.uleb128 0x40
.4byte 0x5f7
.byte 0xc8
.uleb128 0x41
.4byte 0x602
.4byte .LLST16
.uleb128 0x41
.4byte 0x60b
.4byte .LLST17
.uleb128 0x42
.4byte 0x616
.4byte 0x63a
.4byte .LLST18
.uleb128 0x2c
.4byte 0x621
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2c
.4byte 0x62c
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5672
.uleb128 0x3a
.4byte 0x5b9
.4byte .LBB102
.4byte .Ldebug_ranges0+0x78
.byte 0x1
.byte 0x78
.4byte 0xace
.uleb128 0x3b
.4byte 0x5df
.uleb128 0x3b
.4byte 0x5d4
.uleb128 0x3b
.4byte 0x5c9
.uleb128 0x2d
.4byte .LVL35
.4byte 0x13ab
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0xc
.4byte 0x40080
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB109
.4byte .LBE109-.LBB109
.4byte 0xb2f
.uleb128 0x44
.4byte 0x5f7
.uleb128 0x44
.4byte 0x602
.uleb128 0x44
.4byte 0x60b
.uleb128 0x45
.4byte 0x616
.4byte 0xb71
.uleb128 0x44
.4byte 0x621
.uleb128 0x2c
.4byte 0x62c
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5672
.uleb128 0x2d
.4byte .LVL48
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x86
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+20
.byte 0
.byte 0
.uleb128 0x3f
.4byte .LVL38
.4byte 0x13b4
.4byte 0xb54
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 -4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8a
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8e
.sleb128 0
.byte 0
.uleb128 0x3f
.4byte .LVL40
.4byte 0x13bf
.4byte 0xb67
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3e
.4byte .LVL49
.4byte 0x13ca
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0xb80
.uleb128 0x23
.4byte 0x8c
.byte 0
.uleb128 0x46
.4byte .LASF116
.byte 0x1
.byte 0x89
.4byte .LFB119
.4byte .LFE119-.LFB119
.uleb128 0x1
.byte 0x9c
.4byte 0xc68
.uleb128 0x47
.4byte .LASF104
.byte 0x1
.byte 0x89
.4byte 0x6f7
.uleb128 0x1
.byte 0x53
.uleb128 0x47
.4byte .LASF105
.byte 0x1
.byte 0x8a
.4byte 0x491
.uleb128 0x1
.byte 0x54
.uleb128 0x47
.4byte .LASF111
.byte 0x1
.byte 0x8b
.4byte 0x321
.uleb128 0x1
.byte 0x55
.uleb128 0x31
.string "cpu"
.byte 0x1
.byte 0x8d
.4byte 0x4f
.uleb128 0x1
.byte 0x5a
.uleb128 0x32
.4byte .Ldebug_ranges0+0x98
.uleb128 0x48
.4byte .LASF112
.byte 0x1
.byte 0x90
.4byte 0x524
.uleb128 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.uleb128 0x48
.4byte .LASF113
.byte 0x1
.byte 0x90
.4byte 0x119
.uleb128 0x1
.byte 0x54
.uleb128 0x48
.4byte .LASF83
.byte 0x1
.byte 0x90
.4byte 0x119
.uleb128 0x1
.byte 0x57
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0x91
.4byte 0x4f
.uleb128 0x33
.4byte 0x52a
.4byte .LBB111
.4byte .Ldebug_ranges0+0xb0
.byte 0x1
.byte 0x93
.uleb128 0x49
.4byte 0x4db
.4byte .LBB115
.4byte .LBE115-.LBB115
.byte 0x1
.byte 0x99
.uleb128 0x35
.4byte 0x50a
.4byte .LLST19
.uleb128 0x35
.4byte 0x4ff
.4byte .LLST20
.uleb128 0x35
.4byte 0x4f4
.4byte .LLST21
.uleb128 0x35
.4byte 0x4eb
.4byte .LLST22
.uleb128 0x4a
.4byte .LBB116
.4byte .LBE116-.LBB116
.uleb128 0x36
.4byte 0x515
.4byte .L45
.uleb128 0x36
.4byte 0x51c
.4byte .L44
.byte 0
.byte 0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF114
.byte 0x1
.byte 0xa7
.4byte 0x491
.4byte .LFB120
.4byte .LFE120-.LFB120
.uleb128 0x1
.byte 0x9c
.4byte 0xd7a
.uleb128 0x30
.4byte .LASF104
.byte 0x1
.byte 0xa7
.4byte 0x6f7
.4byte .LLST23
.uleb128 0x30
.4byte .LASF111
.byte 0x1
.byte 0xa8
.4byte 0x321
.4byte .LLST24
.uleb128 0x4b
.4byte .Ldebug_ranges0+0xc8
.4byte 0xd70
.uleb128 0x48
.4byte .LASF81
.byte 0x1
.byte 0xab
.4byte 0x491
.uleb128 0x3
.byte 0x91
.sleb128 -72
.uleb128 0x38
.4byte .LASF112
.byte 0x1
.byte 0xac
.4byte 0x524
.4byte .LLST25
.uleb128 0x4c
.4byte .LASF101
.byte 0x1
.byte 0xac
.4byte 0x119
.byte 0
.uleb128 0x38
.4byte .LASF103
.byte 0x1
.byte 0xac
.4byte 0x524
.4byte .LLST26
.uleb128 0x4c
.4byte .LASF115
.byte 0x1
.byte 0xad
.4byte 0x316
.byte 0x4
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0xae
.4byte 0x4f
.uleb128 0x39
.string "cpu"
.byte 0x1
.byte 0xae
.4byte 0x4f
.4byte .LLST27
.uleb128 0x3a
.4byte 0x65e
.4byte .LBB119
.4byte .Ldebug_ranges0+0xe8
.byte 0x1
.byte 0xb5
.4byte 0xd60
.uleb128 0x35
.4byte 0x69d
.4byte .LLST28
.uleb128 0x35
.4byte 0x691
.4byte .LLST29
.uleb128 0x35
.4byte 0x685
.4byte .LLST30
.uleb128 0x35
.4byte 0x679
.4byte .LLST31
.uleb128 0x35
.4byte 0x66f
.4byte .LLST32
.uleb128 0x32
.4byte .Ldebug_ranges0+0xe8
.uleb128 0x36
.4byte 0x6a9
.4byte .L54
.uleb128 0x36
.4byte 0x6b1
.4byte .L55
.byte 0
.byte 0
.uleb128 0x4d
.4byte 0x52a
.4byte .LBB124
.4byte .LBE124-.LBB124
.byte 0x1
.byte 0xb0
.byte 0
.uleb128 0x3e
.4byte .LVL64
.4byte 0x13ca
.byte 0
.uleb128 0x2a
.4byte 0x6ba
.4byte .LFB122
.4byte .LFE122-.LFB122
.uleb128 0x1
.byte 0x9c
.4byte 0xf1a
.uleb128 0x35
.4byte 0x6ca
.4byte .LLST33
.uleb128 0x41
.4byte 0x6d5
.4byte .LLST34
.uleb128 0x41
.4byte 0x6de
.4byte .LLST35
.uleb128 0x43
.4byte .LBB139
.4byte .LBE139-.LBB139
.4byte 0xdfc
.uleb128 0x41
.4byte 0x6ea
.4byte .LLST36
.uleb128 0x3f
.4byte .LVL68
.4byte 0xc68
.4byte 0xdd7
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3e
.4byte .LVL70
.4byte 0x13d3
.uleb128 0x2d
.4byte .LVL71
.4byte 0xb80
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x1
.byte 0x30
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB140
.4byte .LBE140-.LBB140
.4byte 0xe97
.uleb128 0x35
.4byte 0x6ca
.4byte .LLST37
.uleb128 0x4a
.4byte .LBB141
.4byte .LBE141-.LBB141
.uleb128 0x44
.4byte 0x6d5
.uleb128 0x44
.4byte 0x6de
.uleb128 0x3d
.4byte 0x581
.4byte .LBB142
.4byte .LBE142-.LBB142
.byte 0x1
.byte 0xd7
.4byte 0xe6f
.uleb128 0x35
.4byte 0x59c
.4byte .LLST38
.uleb128 0x35
.4byte 0x591
.4byte .LLST39
.uleb128 0x2d
.4byte .LVL80
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL78
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL79
.4byte 0x1393
.4byte 0xe8c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL81
.4byte 0x139f
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB144
.4byte .LBE144-.LBB144
.byte 0x1
.byte 0xe6
.4byte 0xee1
.uleb128 0x35
.4byte 0x59c
.4byte .LLST40
.uleb128 0x35
.4byte 0x591
.4byte .LLST41
.uleb128 0x2d
.4byte .LVL86
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL66
.4byte 0x1372
.uleb128 0x3e
.4byte .LVL73
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL83
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL85
.4byte 0x1393
.4byte 0xf10
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL87
.4byte 0x139f
.byte 0
.uleb128 0x2a
.4byte 0x6fd
.4byte .LFB121
.4byte .LFE121-.LFB121
.uleb128 0x1
.byte 0x9c
.4byte 0xf47
.uleb128 0x35
.4byte 0x70d
.4byte .LLST42
.uleb128 0x35
.4byte 0x718
.4byte .LLST43
.uleb128 0x2c
.4byte 0x723
.uleb128 0x1
.byte 0x59
.byte 0
.uleb128 0x46
.4byte .LASF117
.byte 0x1
.byte 0xef
.4byte .LFB123
.4byte .LFE123-.LFB123
.uleb128 0x1
.byte 0x9c
.4byte 0x1195
.uleb128 0x39
.string "i"
.byte 0x1
.byte 0xf1
.4byte 0x4f
.4byte .LLST44
.uleb128 0x39
.string "j"
.byte 0x1
.byte 0xf1
.4byte 0x4f
.4byte .LLST45
.uleb128 0x39
.string "sum"
.byte 0x1
.byte 0xf2
.4byte 0x10e
.4byte .LLST46
.uleb128 0x38
.4byte .LASF118
.byte 0x1
.byte 0xf2
.4byte 0x10e
.4byte .LLST47
.uleb128 0x48
.4byte .LASF104
.byte 0x1
.byte 0xf3
.4byte 0x4b0
.uleb128 0x2
.byte 0x87
.sleb128 0
.uleb128 0x48
.4byte .LASF98
.byte 0x1
.byte 0xf4
.4byte 0x1195
.uleb128 0x3
.byte 0x91
.sleb128 -852
.uleb128 0x48
.4byte .LASF119
.byte 0x1
.byte 0xf5
.4byte 0xdd
.uleb128 0x3
.byte 0x91
.sleb128 -980
.uleb128 0x4e
.4byte .LASF96
.4byte 0x11b5
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5725
.uleb128 0x3a
.4byte 0x5b9
.4byte .LBB146
.4byte .Ldebug_ranges0+0x108
.byte 0x1
.byte 0xf7
.4byte 0x101b
.uleb128 0x35
.4byte 0x5df
.4byte .LLST48
.uleb128 0x35
.4byte 0x5d4
.4byte .LLST49
.uleb128 0x35
.4byte 0x5c9
.4byte .LLST50
.uleb128 0x2d
.4byte .LVL94
.4byte 0x13ab
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x87
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x88
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB150
.4byte .LBE150-.LBB150
.4byte 0x1038
.uleb128 0x38
.4byte .LASF120
.byte 0x1
.byte 0xfc
.4byte 0xa2
.4byte .LLST51
.byte 0
.uleb128 0x4b
.4byte .Ldebug_ranges0+0x120
.4byte 0x1090
.uleb128 0x38
.4byte .LASF105
.byte 0x1
.byte 0xff
.4byte 0x491
.4byte .LLST52
.uleb128 0x3f
.4byte .LVL99
.4byte 0x13de
.4byte 0x1063
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x1
.byte 0x38
.byte 0
.uleb128 0x2d
.4byte .LVL126
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC5
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x104
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+44
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB153
.4byte .LBE153-.LBB153
.4byte 0x1103
.uleb128 0x4f
.4byte .LASF105
.byte 0x1
.2byte 0x113
.4byte 0x491
.uleb128 0x43
.4byte .LBB154
.4byte .LBE154-.LBB154
.4byte 0x10c7
.uleb128 0x50
.4byte .LASF120
.byte 0x1
.2byte 0x115
.4byte 0xa2
.4byte .LLST53
.byte 0
.uleb128 0x51
.4byte 0x6fd
.4byte .LBB155
.4byte .Ldebug_ranges0+0x140
.byte 0x1
.2byte 0x118
.4byte 0x10f9
.uleb128 0x3b
.4byte 0x718
.uleb128 0x35
.4byte 0x70d
.4byte .LLST54
.uleb128 0x32
.4byte .Ldebug_ranges0+0x140
.uleb128 0x41
.4byte 0x723
.4byte .LLST55
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL116
.4byte 0x13ea
.byte 0
.uleb128 0x3f
.4byte .LVL95
.4byte 0x13f6
.4byte 0x1123
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x88
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8
.byte 0x80
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8f
.sleb128 28
.byte 0
.uleb128 0x3f
.4byte .LVL105
.4byte 0x13b4
.4byte 0x1148
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 -4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8c
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x87
.sleb128 0
.byte 0
.uleb128 0x3f
.4byte .LVL106
.4byte 0x13bf
.4byte 0x115b
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3f
.4byte .LVL127
.4byte 0x135c
.4byte 0x118b
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC6
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x123
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+44
.byte 0
.uleb128 0x3e
.4byte .LVL128
.4byte 0x13ca
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0x11a5
.uleb128 0xa
.4byte 0x8c
.byte 0xc7
.byte 0
.uleb128 0x9
.4byte 0xee
.4byte 0x11b5
.uleb128 0xa
.4byte 0x8c
.byte 0x10
.byte 0
.uleb128 0xb
.4byte 0x11a5
.uleb128 0x52
.4byte .LASF121
.byte 0x1
.2byte 0x126
.4byte 0x4f
.4byte .LFB124
.4byte .LFE124-.LFB124
.uleb128 0x1
.byte 0x9c
.4byte 0x1330
.uleb128 0x27
.4byte .LASF122
.byte 0x1
.2byte 0x138
.uleb128 0x53
.4byte 0x72f
.4byte .LBB162
.4byte .LBE162-.LBB162
.byte 0x1
.2byte 0x12d
.4byte 0x120d
.uleb128 0x35
.4byte 0x73f
.4byte .LLST56
.uleb128 0x2d
.4byte .LVL131
.4byte 0x140f
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC7
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x72f
.4byte .LBB164
.4byte .LBE164-.LBB164
.byte 0x1
.2byte 0x12f
.4byte 0x123e
.uleb128 0x35
.4byte 0x73f
.4byte .LLST57
.uleb128 0x2d
.4byte .LVL133
.4byte 0x140f
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC8
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x581
.4byte .LBB166
.4byte .LBE166-.LBB166
.byte 0x1
.2byte 0x129
.4byte 0x1289
.uleb128 0x35
.4byte 0x59c
.4byte .LLST58
.uleb128 0x35
.4byte 0x591
.4byte .LLST59
.uleb128 0x2d
.4byte .LVL138
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x581
.4byte .LBB168
.4byte .LBE168-.LBB168
.byte 0x1
.2byte 0x132
.4byte 0x12d5
.uleb128 0x2b
.4byte 0x59c
.uleb128 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.uleb128 0x2b
.4byte 0x591
.uleb128 0x1
.byte 0x6e
.uleb128 0x2d
.4byte .LVL142
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL129
.4byte 0x1372
.uleb128 0x3e
.4byte .LVL132
.4byte 0x5eb
.uleb128 0x3e
.4byte .LVL134
.4byte 0xf47
.uleb128 0x3e
.4byte .LVL135
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL136
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL137
.4byte 0x1393
.4byte 0x1316
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL140
.4byte 0x1388
.uleb128 0x2d
.4byte .LVL141
.4byte 0x1393
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x54
.4byte .LASF123
.byte 0xb
.byte 0xa8
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF124
.byte 0xb
.byte 0xa9
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF125
.byte 0xb
.byte 0xaa
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF126
.byte 0x2
.byte 0x33
.4byte 0x38b
.uleb128 0x55
.4byte .LASF127
.4byte .LASF127
.byte 0xf
.byte 0x45
.uleb128 0x55
.4byte .LASF128
.4byte .LASF128
.byte 0x4
.byte 0x55
.uleb128 0x55
.4byte .LASF129
.4byte .LASF129
.byte 0x2
.byte 0x6a
.uleb128 0x55
.4byte .LASF130
.4byte .LASF130
.byte 0x2
.byte 0x6f
.uleb128 0x55
.4byte .LASF131
.4byte .LASF131
.byte 0x10
.byte 0x32
.uleb128 0x56
.4byte .LASF132
.4byte .LASF132
.byte 0x11
.2byte 0x198
.uleb128 0x56
.4byte .LASF85
.4byte .LASF85
.byte 0x12
.2byte 0x203
.uleb128 0x57
.4byte .LASF90
.4byte .LASF90
.uleb128 0x55
.4byte .LASF133
.4byte .LASF133
.byte 0x13
.byte 0xe9
.uleb128 0x55
.4byte .LASF134
.4byte .LASF134
.byte 0x13
.byte 0xfa
.uleb128 0x57
.4byte .LASF135
.4byte .LASF135
.uleb128 0x55
.4byte .LASF136
.4byte .LASF136
.byte 0x14
.byte 0x41
.uleb128 0x56
.4byte .LASF137
.4byte .LASF137
.byte 0x12
.2byte 0x1d2
.uleb128 0x56
.4byte .LASF138
.4byte .LASF138
.byte 0x12
.2byte 0x1e3
.uleb128 0x55
.4byte .LASF139
.4byte .LASF139
.byte 0x14
.byte 0x7a
.uleb128 0x58
.uleb128 0xc
.byte 0x9e
.uleb128 0xa
.byte 0x73
.byte 0x70
.byte 0x69
.byte 0x6e
.byte 0x6c
.byte 0x6f
.byte 0x63
.byte 0x6b
.byte 0xa
.byte 0
.uleb128 0x59
.4byte .LASF145
.4byte .LASF146
.byte 0x15
.byte 0
.4byte .LASF145
.uleb128 0x58
.uleb128 0xf
.byte 0x9e
.uleb128 0xd
.byte 0x70
.byte 0x65
.byte 0x72
.byte 0x63
.byte 0x70
.byte 0x75
.byte 0x5f
.byte 0x6c
.byte 0x69
.byte 0x73
.byte 0x74
.byte 0xa
.byte 0
.byte 0
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x25
.uleb128 0xe
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1b
.uleb128 0xe
.uleb128 0x55
.uleb128 0x17
.uleb128 0x11
.uleb128 0x1
.uleb128 0x10
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x3
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.byte 0
.byte 0
.uleb128 0x4
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x5
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x6
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x7
.uleb128 0x13
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x8
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x9
.uleb128 0x1
.byte 0x1
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xa
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xb
.uleb128 0x26
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xc
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xd
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xe
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xf
.uleb128 0x17
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x10
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x11
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x12
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x13
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0x6
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x14
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x15
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x16
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x17
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x18
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x19
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1a
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1b
.uleb128 0x2e
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1c
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1d
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1c
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x1e
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1f
.uleb128 0x18
.byte 0
.byte 0
.byte 0
.uleb128 0x20
.uleb128 0x37
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x21
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x22
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x23
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x24
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x25
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x26
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x27
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x28
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x29
.uleb128 0xb
.byte 0x1
.byte 0
.byte 0
.uleb128 0x2a
.uleb128 0x2e
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2b
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2c
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2d
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2e
.uleb128 0x410a
.byte 0
.uleb128 0x2
.uleb128 0x18
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2f
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x30
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x31
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x32
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x33
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x34
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x35
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x36
.uleb128 0xa
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.byte 0
.byte 0
.uleb128 0x37
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x38
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x39
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x3a
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3b
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3c
.uleb128 0x410a
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x3d
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3e
.uleb128 0x4109
.byte 0
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3f
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x40
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x41
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x42
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x43
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x44
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x45
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x46
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x47
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x48
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x49
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4a
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x4b
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4c
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4d
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4e
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x4f
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x50
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x51
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x52
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x53
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x54
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0x55
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x56
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x57
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x58
.uleb128 0x36
.byte 0
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x59
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x6e
.uleb128 0xe
.byte 0
.byte 0
.byte 0
.section .debug_loc,"",@progbits
.Ldebug_loc0:
.LLST0:
.4byte .LVL2
.4byte .LVL5
.2byte 0x1
.byte 0x53
.4byte .LVL5
.4byte .LFE115
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST1:
.4byte .LVL3
.4byte .LVL4
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST2:
.4byte .LVL3
.4byte .LVL4
.2byte 0x2
.byte 0x31
.byte 0x9f
.4byte 0
.4byte 0
.LLST3:
.4byte .LVL3
.4byte .LVL4
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST4:
.4byte .LVL3
.4byte .LVL4
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST5:
.4byte .LVL6
.4byte .LVL8-1
.2byte 0x1
.byte 0x53
.4byte .LVL8-1
.4byte .LVL18
.2byte 0x1
.byte 0x6f
.4byte .LVL18
.4byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL19
.4byte .LVL22
.2byte 0x1
.byte 0x6f
.4byte .LVL22
.4byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL25
.4byte .LVL27
.2byte 0x1
.byte 0x6f
.4byte .LVL27
.4byte .LFE117
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.4byte 0
.4byte 0
.LLST6:
.4byte .LVL7
.4byte .LVL8-1
.2byte 0x1
.byte 0x53
.4byte .LVL8-1
.4byte .LVL18
.2byte 0x1
.byte 0x6f
.4byte .LVL18
.4byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL19
.4byte .LVL22
.2byte 0x1
.byte 0x6f
.4byte .LVL22
.4byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL25
.4byte .LVL27
.2byte 0x1
.byte 0x6f
.4byte .LVL27
.4byte .LFE117
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.4byte 0
.4byte 0
.LLST7:
.4byte .LVL9
.4byte .LVL10
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL10
.4byte .LVL16
.2byte 0x1
.byte 0x6e
.4byte .LVL19
.4byte .LVL20
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST8:
.4byte .LVL11
.4byte .LVL12
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST9:
.4byte .LVL13
.4byte .LVL14
.2byte 0x1
.byte 0x6f
.4byte .LVL19
.4byte .LVL20
.2byte 0x1
.byte 0x6f
.4byte 0
.4byte 0
.LLST10:
.4byte .LVL23
.4byte .LVL24
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST11:
.4byte .LVL23
.4byte .LVL24
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST12:
.4byte .LVL28
.4byte .LVL29
.2byte 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.4byte 0
.4byte 0
.LLST13:
.4byte .LVL28
.4byte .LVL29
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST14:
.4byte .LVL31
.4byte .LVL33-1
.2byte 0x1
.byte 0x53
.4byte .LVL33-1
.4byte .LFE116
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST15:
.4byte .LVL31
.4byte .LVL32
.2byte 0x1
.byte 0x54
.4byte .LVL32
.4byte .LFE116
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST16:
.4byte .LVL36
.4byte .LVL37
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST17:
.4byte .LVL41
.4byte .LVL42
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte .LVL43
.4byte .LVL44
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte .LVL47
.4byte .LVL48-1
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte 0
.4byte 0
.LLST18:
.4byte .LVL36
.4byte .LVL39
.2byte 0x2
.byte 0x8c
.sleb128 0
.4byte .LVL39
.4byte .LVL45
.2byte 0x3
.byte 0x8c
.sleb128 -796
.4byte .LVL45
.4byte .LVL46
.2byte 0x2
.byte 0x71
.sleb128 8
.4byte .LVL47
.4byte .LFE118
.2byte 0x3
.byte 0x8c
.sleb128 -796
.4byte 0
.4byte 0
.LLST19:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST20:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x54
.4byte 0
.4byte 0
.LLST21:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x57
.4byte 0
.4byte 0
.LLST22:
.4byte .LVL53
.4byte .LVL54
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST23:
.4byte .LVL55
.4byte .LVL58
.2byte 0x1
.byte 0x53
.4byte .LVL58
.4byte .LVL59
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x1
.byte 0x53
.4byte .LVL60
.4byte .LFE120
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST24:
.4byte .LVL55
.4byte .LVL64-1
.2byte 0x1
.byte 0x54
.4byte .LVL64-1
.4byte .LFE120
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST25:
.4byte .LVL56
.4byte .LVL58
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL58
.4byte .LVL59
.2byte 0x9
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL60
.4byte .LVL61
.2byte 0x9
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST26:
.4byte .LVL56
.4byte .LVL62
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL62
.4byte .LVL63
.2byte 0x4
.byte 0x71
.sleb128 -72
.byte 0x9f
.4byte .LVL63
.4byte .LVL64-1
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL64-1
.4byte .LFE120
.2byte 0x4
.byte 0x91
.sleb128 -72
.byte 0x9f
.4byte 0
.4byte 0
.LLST27:
.4byte .LVL56
.4byte .LVL61
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST28:
.4byte .LVL56
.4byte .LVL57
.2byte 0x1
.byte 0x5a
.4byte .LVL59
.4byte .LVL60
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST29:
.4byte .LVL56
.4byte .LVL57
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte 0
.4byte 0
.LLST30:
.4byte .LVL56
.4byte .LVL57
.2byte 0x2
.byte 0x34
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x2
.byte 0x34
.byte 0x9f
.4byte 0
.4byte 0
.LLST31:
.4byte .LVL56
.4byte .LVL57
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST32:
.4byte .LVL56
.4byte .LVL57
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST33:
.4byte .LVL65
.4byte .LVL66-1
.2byte 0x1
.byte 0x53
.4byte .LVL66-1
.4byte .LVL74
.2byte 0x1
.byte 0x6d
.4byte .LVL74
.4byte .LVL77
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL77
.4byte .LFE122
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST34:
.4byte .LVL67
.4byte .LVL71
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL71
.4byte .LVL72
.2byte 0x9
.byte 0xc
.4byte 0x186a1
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL72
.4byte .LVL76
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL81
.4byte .LVL84
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte 0
.4byte 0
.LLST35:
.4byte .LVL65
.4byte .LVL66-1
.2byte 0x1
.byte 0x53
.4byte .LVL66-1
.4byte .LVL74
.2byte 0x1
.byte 0x6d
.4byte .LVL74
.4byte .LVL77
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL77
.4byte .LFE122
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST36:
.4byte .LVL69
.4byte .LVL70-1
.2byte 0x1
.byte 0x53
.4byte .LVL70-1
.4byte .LVL75
.2byte 0x1
.byte 0x6e
.4byte .LVL81
.4byte .LVL82
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST37:
.4byte .LVL77
.4byte .LVL81
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST38:
.4byte .LVL79
.4byte .LVL80
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST39:
.4byte .LVL79
.4byte .LVL80
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST40:
.4byte .LVL85
.4byte .LVL86
.2byte 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.4byte 0
.4byte 0
.LLST41:
.4byte .LVL85
.4byte .LVL86
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST42:
.4byte .LVL88
.4byte .LVL91
.2byte 0x1
.byte 0x53
.4byte .LVL91
.4byte .LFE121
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST43:
.4byte .LVL88
.4byte .LVL89
.2byte 0x1
.byte 0x54
.4byte .LVL89
.4byte .LFE121
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST44:
.4byte .LVL95
.4byte .LVL96
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL96
.4byte .LVL102
.2byte 0x1
.byte 0x68
.4byte .LVL102
.4byte .LVL103
.2byte 0x3
.byte 0x88
.sleb128 1
.byte 0x9f
.4byte .LVL103
.4byte .LVL104
.2byte 0x1
.byte 0x68
.4byte .LVL107
.4byte .LVL108
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.4byte .LVL108
.4byte .LVL118
.2byte 0x1
.byte 0x6b
.4byte .LVL118
.4byte .LVL119
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.4byte .LVL119
.4byte .LVL123
.2byte 0x1
.byte 0x6b
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x68
.4byte .LVL126
.4byte .LFE123
.2byte 0x1
.byte 0x6b
.4byte 0
.4byte 0
.LLST45:
.4byte .LVL97
.4byte .LVL100
.2byte 0x1
.byte 0x6e
.4byte .LVL100
.4byte .LVL101
.2byte 0x3
.byte 0x8e
.sleb128 1
.byte 0x9f
.4byte .LVL101
.4byte .LVL102
.2byte 0x6
.byte 0x73
.sleb128 0
.byte 0x6
.byte 0x23
.uleb128 0x1
.byte 0x9f
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST46:
.4byte .LVL92
.4byte .LVL107
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte .LVL107
.4byte .LVL110
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL112
.4byte .LVL114
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL115
.4byte .LVL120
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL124
.4byte .LVL126
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte 0
.4byte 0
.LLST47:
.4byte .LVL92
.4byte .LVL96
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte .LVL96
.4byte .LVL98
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte .LVL102
.4byte .LVL122
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte .LVL126
.4byte .LFE123
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte 0
.4byte 0
.LLST48:
.4byte .LVL92
.4byte .LVL94
.2byte 0x4
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST49:
.4byte .LVL92
.4byte .LVL94
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST50:
.4byte .LVL92
.4byte .LVL93
.2byte 0x7
.byte 0x87
.sleb128 0
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte .LVL93
.4byte .LVL94
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST51:
.4byte .LVL96
.4byte .LVL103
.2byte 0x1
.byte 0x68
.4byte .LVL103
.4byte .LVL121
.2byte 0x3
.byte 0x88
.sleb128 -1
.byte 0x9f
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x68
.4byte .LVL126
.4byte .LFE123
.2byte 0x3
.byte 0x88
.sleb128 -1
.byte 0x9f
.4byte 0
.4byte 0
.LLST52:
.4byte .LVL99
.4byte .LVL102
.2byte 0x1
.byte 0x53
.4byte .LVL124
.4byte .LVL125
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST53:
.4byte .LVL107
.4byte .LVL108
.2byte 0x1
.byte 0x6b
.4byte .LVL108
.4byte .LVL109
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.4byte .LVL109
.4byte .LVL119
.2byte 0x1
.byte 0x6b
.4byte .LVL119
.4byte .LVL120
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.4byte 0
.4byte 0
.LLST54:
.4byte .LVL110
.4byte .LVL113
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte .LVL116
.4byte .LVL120
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST55:
.4byte .LVL111
.4byte .LVL113
.2byte 0x1
.byte 0x53
.4byte .LVL117
.4byte .LVL120
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST56:
.4byte .LVL130
.4byte .LVL131
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+5121
.sleb128 0
.4byte 0
.4byte 0
.LLST57:
.4byte .LVL132
.4byte .LVL133
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+5150
.sleb128 0
.4byte 0
.4byte 0
.LLST58:
.4byte .LVL137
.4byte .LVL139
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST59:
.4byte .LVL137
.4byte .LVL139
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.section .debug_aranges,"",@progbits
.4byte 0x24
.2byte 0x2
.4byte .Ldebug_info0
.byte 0x4
.byte 0
.2byte 0
.2byte 0
.4byte .Ltext0
.4byte .Letext0-.Ltext0
.4byte .LFB124
.4byte .LFE124-.LFB124
.4byte 0
.4byte 0
.section .debug_ranges,"",@progbits
.Ldebug_ranges0:
.4byte .LBB72
.4byte .LBE72
.4byte .LBB85
.4byte .LBE85
.4byte 0
.4byte 0
.4byte .LBB73
.4byte .LBE73
.4byte .LBB81
.4byte .LBE81
.4byte .LBB83
.4byte .LBE83
.4byte 0
.4byte 0
.4byte .LBB77
.4byte .LBE77
.4byte .LBB82
.4byte .LBE82
.4byte .LBB84
.4byte .LBE84
.4byte 0
.4byte 0
.4byte .LBB86
.4byte .LBE86
.4byte .LBB90
.4byte .LBE90
.4byte .LBB91
.4byte .LBE91
.4byte 0
.4byte 0
.4byte .LBB102
.4byte .LBE102
.4byte .LBB106
.4byte .LBE106
.4byte .LBB107
.4byte .LBE107
.4byte 0
.4byte 0
.4byte .LBB110
.4byte .LBE110
.4byte .LBB117
.4byte .LBE117
.4byte 0
.4byte 0
.4byte .LBB111
.4byte .LBE111
.4byte .LBB114
.4byte .LBE114
.4byte 0
.4byte 0
.4byte .LBB118
.4byte .LBE118
.4byte .LBB127
.4byte .LBE127
.4byte .LBB128
.4byte .LBE128
.4byte 0
.4byte 0
.4byte .LBB119
.4byte .LBE119
.4byte .LBB123
.4byte .LBE123
.4byte .LBB126
.4byte .LBE126
.4byte 0
.4byte 0
.4byte .LBB146
.4byte .LBE146
.4byte .LBB149
.4byte .LBE149
.4byte 0
.4byte 0
.4byte .LBB151
.4byte .LBE151
.4byte .LBB152
.4byte .LBE152
.4byte .LBB161
.4byte .LBE161
.4byte 0
.4byte 0
.4byte .LBB155
.4byte .LBE155
.4byte .LBB159
.4byte .LBE159
.4byte .LBB160
.4byte .LBE160
.4byte 0
.4byte 0
.4byte .Ltext0
.4byte .Letext0
.4byte .LFB124
.4byte .LFE124
.4byte 0
.4byte 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF84:
.string "newv"
.LASF102:
.string "voffp"
.LASF17:
.string "pthread_t"
.LASF42:
.string "_shortbuf"
.LASF143:
.string "_IO_lock_t"
.LASF125:
.string "stderr"
.LASF146:
.string "__builtin_puts"
.LASF31:
.string "_IO_buf_end"
.LASF69:
.string "flags"
.LASF83:
.string "expect"
.LASF126:
.string "__rseq_abi"
.LASF29:
.string "_IO_write_end"
.LASF2:
.string "unsigned int"
.LASF79:
.string "next"
.LASF23:
.string "_flags"
.LASF81:
.string "head"
.LASF134:
.string "pthread_join"
.LASF111:
.string "_cpu"
.LASF132:
.string "strerror"
.LASF71:
.string "percpu_lock"
.LASF35:
.string "_markers"
.LASF133:
.string "pthread_create"
.LASF122:
.string "error"
.LASF94:
.string "rseq_percpu_unlock"
.LASF131:
.string "__errno_location"
.LASF104:
.string "list"
.LASF99:
.string "rseq_cmpeqv_storev"
.LASF114:
.string "this_cpu_list_pop"
.LASF18:
.string "uint32_t"
.LASF124:
.string "stdout"
.LASF34:
.string "_IO_save_end"
.LASF137:
.string "malloc"
.LASF93:
.string "__len"
.LASF73:
.string "count"
.LASF15:
.string "__cpu_mask"
.LASF109:
.string "rseq_this_cpu_lock"
.LASF7:
.string "long long unsigned int"
.LASF33:
.string "_IO_backup_base"
.LASF44:
.string "_offset"
.LASF91:
.string "__dest"
.LASF89:
.string "fprintf"
.LASF37:
.string "_fileno"
.LASF116:
.string "this_cpu_list_push"
.LASF85:
.string "abort"
.LASF145:
.string "puts"
.LASF144:
.string "rseq_cpu_start"
.LASF14:
.string "size_t"
.LASF115:
.string "offset"
.LASF130:
.string "rseq_unregister_current_thread"
.LASF26:
.string "_IO_read_base"
.LASF123:
.string "stdin"
.LASF54:
.string "_next"
.LASF138:
.string "free"
.LASF56:
.string "_pos"
.LASF103:
.string "load"
.LASF88:
.string "__fmt"
.LASF120:
.string "__cpu"
.LASF112:
.string "targetptr"
.LASF16:
.string "cpu_set_t"
.LASF87:
.string "__stream"
.LASF117:
.string "test_percpu_list"
.LASF13:
.string "char"
.LASF128:
.string "__fprintf_chk"
.LASF50:
.string "_mode"
.LASF53:
.string "_IO_marker"
.LASF95:
.string "test_percpu_spinlock"
.LASF24:
.string "_IO_read_ptr"
.LASF78:
.string "data"
.LASF63:
.string "ptr32"
.LASF59:
.string "__u32"
.LASF118:
.string "expected_sum"
.LASF86:
.string "cmpfail"
.LASF27:
.string "_IO_write_base"
.LASF6:
.string "long long int"
.LASF108:
.string "printf"
.LASF75:
.string "lock"
.LASF32:
.string "_IO_save_base"
.LASF62:
.string "padding"
.LASF90:
.string "memset"
.LASF8:
.string "__quad_t"
.LASF67:
.string "cpu_id"
.LASF45:
.string "__pad1"
.LASF46:
.string "__pad2"
.LASF47:
.string "__pad3"
.LASF48:
.string "__pad4"
.LASF49:
.string "__pad5"
.LASF65:
.string "rseq"
.LASF129:
.string "rseq_register_current_thread"
.LASF110:
.string "test_percpu_spinlock_thread"
.LASF41:
.string "_vtable_offset"
.LASF66:
.string "cpu_id_start"
.LASF72:
.string "test_data_entry"
.LASF58:
.string "long double"
.LASF20:
.string "intptr_t"
.LASF140:
.string "GNU C11 5.4.0 20160609 -Asystem=linux -Asystem=unix -Asystem=posix -msecure-plt -g -O2 -fstack-protector-strong"
.LASF97:
.string "num_threads"
.LASF64:
.string "ptr64"
.LASF60:
.string "__u64"
.LASF92:
.string "__ch"
.LASF25:
.string "_IO_read_end"
.LASF101:
.string "expectnot"
.LASF5:
.string "short int"
.LASF10:
.string "long int"
.LASF135:
.string "__stack_chk_fail"
.LASF70:
.string "percpu_lock_entry"
.LASF105:
.string "node"
.LASF19:
.string "uint64_t"
.LASF76:
.string "reps"
.LASF113:
.string "newval"
.LASF77:
.string "percpu_list_node"
.LASF98:
.string "test_threads"
.LASF43:
.string "_lock"
.LASF119:
.string "allowed_cpus"
.LASF12:
.string "sizetype"
.LASF3:
.string "long unsigned int"
.LASF22:
.string "__bits"
.LASF39:
.string "_old_offset"
.LASF82:
.string "percpu_list"
.LASF52:
.string "_IO_FILE"
.LASF100:
.string "rseq_cmpnev_storeoffp_load"
.LASF127:
.string "__assert_fail"
.LASF141:
.string "basic_percpu_ops_test.c"
.LASF0:
.string "unsigned char"
.LASF55:
.string "_sbuf"
.LASF28:
.string "_IO_write_ptr"
.LASF80:
.string "percpu_list_entry"
.LASF142:
.string "/home/compudj/git/librseq/tests"
.LASF136:
.string "sched_yield"
.LASF74:
.string "spinlock_test_data"
.LASF139:
.string "sched_getaffinity"
.LASF9:
.string "__off_t"
.LASF4:
.string "signed char"
.LASF57:
.string "off_t"
.LASF1:
.string "short unsigned int"
.LASF121:
.string "main"
.LASF96:
.string "__PRETTY_FUNCTION__"
.LASF61:
.string "double"
.LASF106:
.string "test_percpu_list_thread"
.LASF36:
.string "_chain"
.LASF107:
.string "__percpu_list_pop"
.LASF21:
.string "FILE"
.LASF38:
.string "_flags2"
.LASF68:
.string "rseq_cs"
.LASF40:
.string "_cur_column"
.LASF11:
.string "__off64_t"
.LASF51:
.string "_unused2"
.LASF30:
.string "_IO_buf_base"
.ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609"
.section .note.GNU-stack,"",@progbits
^ permalink raw reply related
* Re: [PATCH 18/20] Documentation: security/keys: eliminate duplicated word
From: Jarkko Sakkinen @ 2020-07-08 13:32 UTC (permalink / raw)
To: Randy Dunlap
Cc: kvm, linux-doc, David Airlie, kgdb-bugreport, linux-fpga,
Liviu Dudau, dri-devel, Douglas Anderson, Paul Cercueil, keyrings,
Paul Mackerras, linux-i2c, Pavel Machek, Srinivas Pandruvada,
Mihail Atanassov, linux-leds, linux-s390, Daniel Thompson,
linux-scsi, Jonathan Corbet, Masahiro Yamada, Matthew Wilcox,
Halil Pasic, James Wang, linux-input, Mali DP Maintainers,
Derek Kiernan, linux-mips, Dragan Cvetic, Wu Hao, Tony Krowiak,
linux-kbuild, James E.J. Bottomley, Jiri Kosina, Hannes Reinecke,
linux-block, Thomas Bogendoerfer, Jacek Anaszewski, linux-mm,
Dan Williams, Andrew Morton, Mimi Zohar, Jens Axboe, Michal Marek,
Martin K. Petersen, Pierre Morel, linux-kernel, Wolfram Sang,
Daniel Vetter, Jason Wessel, Paolo Bonzini, linux-integrity,
linuxppc-dev, Mike Rapoport, Dan Murphy
In-Reply-To: <20200707180414.10467-19-rdunlap@infradead.org>
On Tue, Jul 07, 2020 at 11:04:12AM -0700, Randy Dunlap wrote:
> Drop the doubled word "in".
>
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: linux-doc@vger.kernel.org
> Cc: James Bottomley <jejb@linux.ibm.com>
> Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> Cc: Mimi Zohar <zohar@linux.ibm.com>
> Cc: linux-integrity@vger.kernel.org
> Cc: keyrings@vger.kernel.org
Acked-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
/Jarkko
^ permalink raw reply
* Re: [PATCH V4 2/3] mm/sparsemem: Enable vmem_altmap support in vmemmap_alloc_block_buf()
From: Catalin Marinas @ 2020-07-08 13:25 UTC (permalink / raw)
To: Anshuman Khandual
Cc: x86, justin.he, linux-doc, Jonathan Corbet, Peter Zijlstra,
Dave Hansen, H. Peter Anvin, linuxppc-dev, linux-kernel, linux-mm,
Ingo Molnar, Paul Mackerras, Andy Lutomirski, Borislav Petkov,
akpm, Will Deacon, Thomas Gleixner, linux-arm-kernel
In-Reply-To: <1594004178-8861-3-git-send-email-anshuman.khandual@arm.com>
On Mon, Jul 06, 2020 at 08:26:17AM +0530, Anshuman Khandual wrote:
> There are many instances where vmemap allocation is often switched between
> regular memory and device memory just based on whether altmap is available
> or not. vmemmap_alloc_block_buf() is used in various platforms to allocate
> vmemmap mappings. Lets also enable it to handle altmap based device memory
> allocation along with existing regular memory allocations. This will help
> in avoiding the altmap based allocation switch in many places. To summarize
> there are two different methods to call vmemmap_alloc_block_buf().
>
> vmemmap_alloc_block_buf(size, node, NULL) /* Allocate from system RAM */
> vmemmap_alloc_block_buf(size, node, altmap) /* Allocate from altmap */
>
> This converts altmap_alloc_block_buf() into a static function, drops it's
s/it's/its/
> entry from the header and updates Documentation/vm/memory-model.rst.
>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Dave Hansen <dave.hansen@linux.intel.com>
> Cc: Andy Lutomirski <luto@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: linux-doc@vger.kernel.org
> Cc: x86@kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linuxppc-dev@lists.ozlabs.org
> Cc: linux-mm@kvack.org
> Cc: linux-kernel@vger.kernel.org
> Tested-by: Jia He <justin.he@arm.com>
> Suggested-by: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
With the fallback argument dropped, the patch looks fine to me.
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
^ permalink raw reply
* Re: [PATCH 3/3] misc: cxl: flash: Remove unused variable 'drc_index'
From: Andrew Donnellan @ 2020-07-08 13:17 UTC (permalink / raw)
To: Lee Jones, arnd, gregkh; +Cc: Frederic Barrat, linuxppc-dev, linux-kernel
In-Reply-To: <20200708125711.3443569-4-lee.jones@linaro.org>
On 8/7/20 10:57 pm, Lee Jones wrote:
> Keeping the pointer increment though.
>
> Fixes the following W=1 kernel build warning:
>
> drivers/misc/cxl/flash.c: In function ‘update_devicetree’:
> drivers/misc/cxl/flash.c:178:16: warning: variable ‘drc_index’ set but not used [-Wunused-but-set-variable]
> 178 | __be32 *data, drc_index, phandle;
> | ^~~~~~~~~
>
> Cc: Frederic Barrat <fbarrat@linux.ibm.com>
> Cc: Andrew Donnellan <ajd@linux.ibm.com>
> Cc: linuxppc-dev@lists.ozlabs.org
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Andrew Donnellan <ajd@linux.ibm.com>
--
Andrew Donnellan OzLabs, ADL Canberra
ajd@linux.ibm.com IBM Australia Limited
^ permalink raw reply
* Re: [PATCH 04/20] Documentation: kgdb: eliminate duplicated word
From: Daniel Thompson @ 2020-07-08 13:14 UTC (permalink / raw)
To: Randy Dunlap
Cc: kvm, linux-doc, David Airlie, kgdb-bugreport, linux-fpga,
Liviu Dudau, dri-devel, Douglas Anderson, Paul Cercueil, keyrings,
Paul Mackerras, linux-i2c, Pavel Machek, Srinivas Pandruvada,
Mihail Atanassov, linux-leds, linux-s390, Hannes Reinecke,
linux-scsi, Jonathan Corbet, Masahiro Yamada, Matthew Wilcox,
Halil Pasic, Jarkko Sakkinen, James Wang, linux-input,
Mali DP Maintainers, Derek Kiernan, linux-mips, Dragan Cvetic,
Wu Hao, Tony Krowiak, linux-kbuild, James E.J. Bottomley,
Jiri Kosina, linux-block, Thomas Bogendoerfer, Jacek Anaszewski,
linux-mm, Dan Williams, Andrew Morton, Mimi Zohar, Jens Axboe,
Michal Marek, Martin K. Petersen, Pierre Morel, linux-kernel,
Wolfram Sang, Daniel Vetter, Jason Wessel, Paolo Bonzini,
linux-integrity, linuxppc-dev, Mike Rapoport, Dan Murphy
In-Reply-To: <20200707180414.10467-5-rdunlap@infradead.org>
On Tue, Jul 07, 2020 at 11:03:58AM -0700, Randy Dunlap wrote:
> Drop the doubled word "driver".
>
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: linux-doc@vger.kernel.org
> Cc: Jason Wessel <jason.wessel@windriver.com>
> Cc: Daniel Thompson <daniel.thompson@linaro.org>
> Cc: Douglas Anderson <dianders@chromium.org>
> Cc: kgdb-bugreport@lists.sourceforge.net
Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
Daniel.
^ permalink raw reply
* [PATCH 3/3] misc: cxl: flash: Remove unused variable 'drc_index'
From: Lee Jones @ 2020-07-08 12:57 UTC (permalink / raw)
To: arnd, gregkh
Cc: Frederic Barrat, linuxppc-dev, Lee Jones, linux-kernel,
Andrew Donnellan
In-Reply-To: <20200708125711.3443569-1-lee.jones@linaro.org>
Keeping the pointer increment though.
Fixes the following W=1 kernel build warning:
drivers/misc/cxl/flash.c: In function ‘update_devicetree’:
drivers/misc/cxl/flash.c:178:16: warning: variable ‘drc_index’ set but not used [-Wunused-but-set-variable]
178 | __be32 *data, drc_index, phandle;
| ^~~~~~~~~
Cc: Frederic Barrat <fbarrat@linux.ibm.com>
Cc: Andrew Donnellan <ajd@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/misc/cxl/flash.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
index cb9cca35a2263..774d582ddd70b 100644
--- a/drivers/misc/cxl/flash.c
+++ b/drivers/misc/cxl/flash.c
@@ -175,7 +175,7 @@ static int update_devicetree(struct cxl *adapter, s32 scope)
struct update_nodes_workarea *unwa;
u32 action, node_count;
int token, rc, i;
- __be32 *data, drc_index, phandle;
+ __be32 *data, phandle;
char *buf;
token = rtas_token("ibm,update-nodes");
@@ -213,7 +213,7 @@ static int update_devicetree(struct cxl *adapter, s32 scope)
break;
case OPCODE_ADD:
/* nothing to do, just move pointer */
- drc_index = *data++;
+ *data++;
break;
}
}
--
2.25.1
^ permalink raw reply related
* Re: [PATCH] selftests/powerpc: Purge extra count_pmc() calls of ebb selftests
From: Desnes Augusto Nunes do Rosario @ 2020-07-08 12:52 UTC (permalink / raw)
To: Sachin Sant; +Cc: shuah, linuxppc-dev
In-Reply-To: <F0DC61BE-076E-4977-812F-532C6F76CFBB@linux.vnet.ibm.com>
On 7/8/20 7:38 AM, Sachin Sant wrote:
>
>> On 26-Jun-2020, at 10:17 PM, Desnes A. Nunes do Rosario <desnesn@linux.ibm.com> wrote:
>>
>> An extra count on ebb_state.stats.pmc_count[PMC_INDEX(pmc)] is being per-
>> formed when count_pmc() is used to reset PMCs on a few selftests. This
>> extra pmc_count can occasionally invalidate results, such as the ones from
>> cycles_test shown hereafter. The ebb_check_count() failed with an above
>> the upper limit error due to the extra value on ebb_state.stats.pmc_count.
>>
>> Furthermore, this extra count is also indicated by extra PMC1 trace_log on
>> the output of the cycle test (as well as on pmc56_overflow_test):
>>
>> ==========
>> ...
>> [21]: counter = 8
>> [22]: register SPRN_MMCR0 = 0x0000000080000080
>> [23]: register SPRN_PMC1 = 0x0000000080000004
>> [24]: counter = 9
>> [25]: register SPRN_MMCR0 = 0x0000000080000080
>> [26]: register SPRN_PMC1 = 0x0000000080000004
>> [27]: counter = 10
>> [28]: register SPRN_MMCR0 = 0x0000000080000080
>> [29]: register SPRN_PMC1 = 0x0000000080000004
>>>> [30]: register SPRN_PMC1 = 0x000000004000051e
>> PMC1 count (0x280000546) above upper limit 0x2800003e8 (+0x15e)
>> [FAIL] Test FAILED on line 52
>> failure: cycles
>> ==========
>>
>> Signed-off-by: Desnes A. Nunes do Rosario <desnesn@linux.ibm.com>
>> ---
> I too have run into similar failure with cycles_test. I will add that the failure
> is inconsistent. I have run into this issue 1 out of 25 times. The failure always
> happen at first instance. Subsequent tries work correctly.
Indeed; on my tests I was running 100 times to validate.
Thanks for the review Sachin
>
> With this patch applied the test completes successfully 25 out of 25 times.
>
> # ./cycles_test
> test: cycles
> …..
> …..
> [25]: register SPRN_MMCR0 = 0x0000000080000080
> [26]: register SPRN_PMC1 = 0x0000000080000004
> [27]: counter = 10
> [28]: register SPRN_MMCR0 = 0x0000000080000080
> [29]: register SPRN_PMC1 = 0x0000000080000004
> [30]: register SPRN_PMC1 = 0x000000004000048f
> PMC1 count (0x2800004b7) above upper limit 0x2800003e8 (+0xcf)
> [FAIL] Test FAILED on line 52
> failure: cycles
>
> With the patch
>
> # ./cycles_test
> test: cycles
> …..
> …..
> [25]: register SPRN_MMCR0 = 0x0000000080000080
> [26]: register SPRN_PMC1 = 0x0000000080000004
> [27]: counter = 10
> [28]: register SPRN_MMCR0 = 0x0000000080000080
> [29]: register SPRN_PMC1 = 0x0000000080000004
> PMC1 count (0x280000028) is between 0x27ffffc18 and 0x2800003e8 delta +0x410/-0x3c0
> success: cycles
> #
>
> FWIW Tested-by : Sachin Sant <sachinp@linux.vnet.ibm.com>
>
> Thanks
> -Sachin
--
Desnes A. Nunes do Rosario
--------------------------------
Advisory Software Engineer - IBM
Virtual Onsite Engineer - Red Hat
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Mathieu Desnoyers @ 2020-07-08 12:33 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <20200708005922.GW3598@gate.crashing.org>
[-- Attachment #1: Type: text/plain, Size: 3101 bytes --]
----- On Jul 7, 2020, at 8:59 PM, Segher Boessenkool segher@kernel.crashing.org wrote:
> Hi!
>
> On Tue, Jul 07, 2020 at 03:17:10PM -0400, Mathieu Desnoyers wrote:
>> I'm trying to build librseq at:
>>
>> https://git.kernel.org/pub/scm/libs/librseq/librseq.git
>>
>> on powerpc, and I get these errors when building the rseq basic
>> test mirrored from the kernel selftests code:
>>
>> /tmp/ccieEWxU.s: Assembler messages:
>> /tmp/ccieEWxU.s:118: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:118: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:121: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:121: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:626: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:626: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:629: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:629: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:735: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:735: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:738: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:738: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:741: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:741: Error: junk at end of line: `,8'
>> Makefile:581: recipe for target 'basic_percpu_ops_test.o' failed
>
> You'll have to show the actual failing machine code, and with enough
> context that we can relate this to the source code.
>
> -save-temps helps, or use -S instead of -c, etc.
Sure, see attached .S file.
>
>> I am using this compiler:
>>
>> gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
>> Target: powerpc-linux-gnu
>>
>> So far, I got things to build by changing "m" operands to "Q" operands.
>> Based on
>> https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html#Machine-Constraints
>> it seems that "Q" means "A memory operand addressed by just a base register."
>
> Yup.
>
>> I suspect that lwz and stw don't expect some kind of immediate offset which
>> can be kept with "m", and "Q" fixes this. Is that the right fix ?
>>
>> And should we change all operands passed to lwz and stw to a "Q" operand ?
>
> No, lwz and stw exactly *do* take an immediate offset.
>
> It sounds like the compiler passed memory addressed by indexed
> addressing, instead. Which is fine for "m", and also fine for those
> insns... well, you need lwzx and stwx.
>
> So perhaps you have code like
>
> int *p;
> int x;
> ...
> asm ("lwz %0,%1" : "=r"(x) : "m"(*p));
We indeed have explicit "lwz" and "stw" instructions in there.
>
> where that last line should actually read
>
> asm ("lwz%X1 %0,%1" : "=r"(x) : "m"(*p));
Indeed, turning those into "lwzx" and "stwx" seems to fix the issue.
There has been some level of extra CPP macro coating around those instructions to
support both ppc32 and ppc64 with the same assembly. So adding %X[arg] is not trivial.
Let me see what can be done here.
Thanks,
Mathieu
>
> ?
>
>
> Segher
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
[-- Attachment #2: basic_percpu_ops_test.S --]
[-- Type: application/octet-stream, Size: 91492 bytes --]
.file "basic_percpu_ops_test.c"
.machine ppc
.section ".text"
.Ltext0:
.cfi_sections .debug_frame
.align 2
.p2align 4,,15
.type rseq_percpu_unlock.part.0, @function
rseq_percpu_unlock.part.0:
.LFB125:
.file 1 "basic_percpu_ops_test.c"
.loc 1 72 0
.cfi_startproc
.LVL0:
stwu 1,-16(1)
.cfi_def_cfa_offset 16
.loc 1 74 0
lis 6,.LANCHOR0@ha
.loc 1 72 0
mflr 0
.loc 1 74 0
lis 4,.LC0@ha
lis 3,.LC1@ha
la 6,.LANCHOR0@l(6)
li 5,74
la 4,.LC0@l(4)
la 3,.LC1@l(3)
.loc 1 72 0
stw 0,20(1)
.cfi_offset 65, 4
.loc 1 74 0
bl __assert_fail
.LVL1:
.cfi_endproc
.LFE125:
.size rseq_percpu_unlock.part.0,.-rseq_percpu_unlock.part.0
.align 2
.p2align 4,,15
.globl rseq_this_cpu_lock
.type rseq_this_cpu_lock, @function
rseq_this_cpu_lock:
.LFB115:
.loc 1 51 0
.cfi_startproc
.LVL2:
stwu 1,-80(1)
.cfi_def_cfa_offset 80
.LBB72:
.LBB73:
.LBB74:
.file 2 "../include/rseq/rseq.h"
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
.LBE74:
.LBE73:
.LBB77:
.LBB78:
.file 3 "../include/rseq/rseq-ppc.h"
.loc 3 211 0
li 6,0
.LBE78:
.LBE77:
.LBB81:
.LBB75:
.loc 2 142 0
add 9,9,__rseq_abi@tls
.LBE75:
.LBE81:
.LBB82:
.LBB79:
.loc 3 211 0
li 7,1
.LBE79:
.LBE82:
.LBE72:
.loc 1 51 0
stw 17,20(1)
.cfi_offset 17, -60
.L4:
.L7:
.L5:
.LBB85:
.LBB83:
.LBB76:
.loc 2 142 0
lwz 10,0(9)
.LVL3:
.LBE76:
.LBE83:
.loc 1 58 0
slwi 8,10,7
.LBB84:
.LBB80:
.loc 3 211 0
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L7
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwz %r17, 3,8
cmpw cr7, %r17, 6
bne- cr7, .L7
stw 7, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L7
.popsection
# 0 "" 2
.LVL4:
#NO_APP
.LBE80:
.LBE84:
.LBE85:
.loc 1 68 0
#APP
# 68 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 70 0
#NO_APP
lwz 17,20(1)
mr 3,10
.LVL5:
addi 1,1,80
.cfi_restore 17
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE115:
.size rseq_this_cpu_lock,.-rseq_this_cpu_lock
.align 2
.p2align 4,,15
.globl test_percpu_spinlock_thread
.type test_percpu_spinlock_thread, @function
test_percpu_spinlock_thread:
.LFB117:
.loc 1 83 0
.cfi_startproc
.LVL6:
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 31,28(1)
stw 0,36(1)
stw 28,16(1)
stw 29,20(1)
stw 30,24(1)
.cfi_offset 65, 4
.cfi_offset 31, -4
.cfi_offset 28, -16
.cfi_offset 29, -12
.cfi_offset 30, -8
.loc 1 83 0
mr 31,3
.LVL7:
.loc 1 87 0
bl rseq_register_current_thread
.LVL8:
cmpwi 7,3,0
bne- 7,.L11
.LVL9:
.loc 1 92 0 discriminator 1
addis 29,31,0x4
li 30,0
lwz 9,0(29)
.LBB86:
.LBB87:
.loc 1 79 0 discriminator 1
li 28,0
.LBE87:
.LBE86:
.loc 1 92 0 discriminator 1
cmpwi 7,9,0
ble 7,.L17
.LVL10:
.p2align 4,,15
.L18:
.loc 1 93 0 discriminator 3
mr 3,31
bl rseq_this_cpu_lock
.LVL11:
slwi 3,3,7
.LVL12:
add 9,31,3
.loc 1 94 0 discriminator 3
addis 9,9,0x2
lwz 10,0(9)
addi 10,10,1
stw 10,0(9)
.LVL13:
.LBB90:
.LBB88:
.loc 1 74 0 discriminator 3
lwzx 9,31,3
cmpwi 7,9,1
bne- 7,.L23
.loc 1 79 0
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
#NO_APP
stwx 28,31,3
.LVL14:
.LBE88:
.LBE90:
.loc 1 92 0
addi 30,30,1
.LVL15:
lwz 9,0(29)
cmpw 7,9,30
bgt 7,.L18
.LVL16:
.L17:
.loc 1 97 0
bl rseq_unregister_current_thread
.LVL17:
cmpwi 7,3,0
bne- 7,.L24
.loc 1 104 0
lwz 0,36(1)
lwz 28,16(1)
lwz 29,20(1)
lwz 30,24(1)
mtlr 0
.cfi_remember_state
.cfi_restore 65
lwz 31,28(1)
.LVL18:
addi 1,1,32
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_def_cfa_offset 0
blr
.LVL19:
.L23:
.cfi_restore_state
.LBB91:
.LBB89:
bl rseq_percpu_unlock.part.0
.LVL20:
.L11:
.LBE89:
.LBE91:
.loc 1 88 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 89 0
bl __errno_location
.LVL21:
.loc 1 88 0
lwz 31,0(3)
.LVL22:
mr 3,31
bl strerror
.LVL23:
.LBB92:
.LBB93:
.file 4 "/usr/include/powerpc-linux-gnu/bits/stdio2.h"
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL24:
.LBE93:
.LBE92:
.loc 1 90 0
bl abort
.LVL25:
.L24:
.loc 1 98 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 99 0
bl __errno_location
.LVL26:
.loc 1 98 0
lwz 31,0(3)
.LVL27:
mr 3,31
bl strerror
.LVL28:
.LBB94:
.LBB95:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL29:
.LBE95:
.LBE94:
.loc 1 100 0
bl abort
.LVL30:
.cfi_endproc
.LFE117:
.size test_percpu_spinlock_thread,.-test_percpu_spinlock_thread
.align 2
.p2align 4,,15
.globl rseq_percpu_unlock
.type rseq_percpu_unlock, @function
rseq_percpu_unlock:
.LFB116:
.loc 1 73 0
.cfi_startproc
.LVL31:
slwi 4,4,7
.LVL32:
.loc 1 74 0
lwzx 9,3,4
cmpwi 7,9,1
bne- 7,.L28
.loc 1 79 0
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
#NO_APP
li 9,0
stwx 9,3,4
blr
.L28:
.loc 1 73 0 discriminator 1
stwu 1,-16(1)
.cfi_def_cfa_offset 16
mflr 0
stw 0,20(1)
.cfi_offset 65, 4
bl rseq_percpu_unlock.part.0
.LVL33:
.cfi_endproc
.LFE116:
.size rseq_percpu_unlock,.-rseq_percpu_unlock
.align 2
.p2align 4,,15
.globl test_percpu_spinlock
.type test_percpu_spinlock, @function
test_percpu_spinlock:
.LFB118:
.loc 1 113 0
.cfi_startproc
.loc 1 113 0
stwu 1,-64(1)
.cfi_def_cfa_offset 64
lis 9,0xfffb
mflr 0
ori 9,9,0xff00
.LBB102:
.LBB103:
.file 5 "/usr/include/powerpc-linux-gnu/bits/string3.h"
.loc 5 90 0
lis 5,0x4
ori 5,5,0x80
li 4,0
.LBE103:
.LBE102:
.loc 1 113 0
lwz 10,0(1)
stw 25,36(1)
stw 26,40(1)
stw 27,44(1)
stw 28,48(1)
stw 29,52(1)
stw 30,56(1)
stw 31,60(1)
stw 0,68(1)
.cfi_offset 65, 4
.cfi_offset 25, -28
.cfi_offset 26, -24
.cfi_offset 27, -20
.cfi_offset 28, -16
.cfi_offset 29, -12
.cfi_offset 30, -8
.cfi_offset 31, -4
mr 31,1
.cfi_def_cfa_register 31
.loc 1 113 0
stwux 10,1,9
lis 26,test_percpu_spinlock_thread@ha
la 26,test_percpu_spinlock_thread@l(26)
addi 9,1,135
lwz 8,-28680(2)
stw 8,28(31)
li 8,0
.LVL34:
.loc 1 117 0
stwu 10,-816(1)
.loc 1 113 0
rlwinm 30,9,0,0,24
.LBB106:
.LBB104:
.loc 5 90 0
mr 3,30
.LBE104:
.LBE106:
.loc 1 121 0
addis 27,30,0x4
.LBB107:
.LBB105:
.loc 5 90 0
bl memset
.LVL35:
.LBE105:
.LBE107:
.loc 1 121 0
li 9,5000
.loc 1 117 0
addi 28,1,8
.LVL36:
.loc 1 121 0
stw 9,0(27)
mr 29,28
addi 25,28,800
.LVL37:
.p2align 5,,31
.L30:
.loc 1 124 0 discriminator 3
mr 3,29
mr 6,30
mr 5,26
li 4,0
addi 29,29,4
bl pthread_create
.LVL38:
.loc 1 123 0 discriminator 3
cmplw 7,29,25
bne 7,.L30
addi 29,28,-4
addi 28,28,796
.LVL39:
.p2align 5,,31
.L31:
.loc 1 128 0 discriminator 3
lwzu 3,4(29)
li 4,0
bl pthread_join
.LVL40:
.loc 1 127 0 discriminator 3
cmplw 7,28,29
bne 7,.L31
addis 9,30,0x2
.loc 1 127 0 is_stmt 0
li 7,0
li 10,0
.p2align 5,,31
.L32:
.LVL41:
.loc 1 132 0 is_stmt 1 discriminator 3
lwz 8,0(9)
addi 9,9,128
.loc 1 131 0 discriminator 3
cmplw 7,27,9
.loc 1 132 0 discriminator 3
srawi 6,8,31
addc 10,8,10
.LVL42:
adde 7,6,7
.LVL43:
.loc 1 131 0 discriminator 3
bne 7,.L32
.loc 1 134 0
lwz 9,0(27)
li 8,200
mulhw 8,9,8
mulli 9,9,200
cmplw 7,7,8
bne- 7,.L36
cmplw 7,10,9
bne- 7,.L36
.loc 1 135 0
lwz 9,28(31)
lwz 10,-28680(2)
xor. 9,9,10
li 10,0
.LVL44:
bne- 0,.L42
addi 11,31,64
lwz 0,4(11)
lwz 25,-28(11)
lwz 31,-4(11)
.cfi_remember_state
.cfi_def_cfa 11, 0
lwz 26,-24(11)
mtlr 0
.cfi_restore 65
lwz 27,-20(11)
lwz 28,-16(11)
.LVL45:
lwz 29,-12(11)
lwz 30,-8(11)
mr 1,11
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
.cfi_def_cfa_register 1
.LVL46:
blr
.LVL47:
.L36:
.cfi_restore_state
.LBB108:
.LBB109:
.loc 1 134 0
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC4@ha
addi 6,6,20
li 5,134
la 4,.LC0@l(4)
la 3,.LC4@l(3)
bl __assert_fail
.LVL48:
.L42:
.LBE109:
.LBE108:
.loc 1 135 0
bl __stack_chk_fail
.LVL49:
.cfi_endproc
.LFE118:
.size test_percpu_spinlock,.-test_percpu_spinlock
.align 2
.p2align 4,,15
.globl this_cpu_list_push
.type this_cpu_list_push, @function
this_cpu_list_push:
.LFB119:
.loc 1 140 0
.cfi_startproc
.LVL50:
stwu 1,-80(1)
.cfi_def_cfa_offset 80
.LBB110:
.LBB111:
.LBB112:
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
add 9,9,__rseq_abi@tls
.LBE112:
.LBE111:
.LBE110:
.loc 1 140 0
stw 17,20(1)
.cfi_offset 17, -60
.L44:
.L45:
.LBB117:
.LBB114:
.LBB113:
.loc 2 142 0
lwz 10,0(9)
.LVL51:
.LBE113:
.LBE114:
.loc 1 149 0
slwi 8,10,7
lwzx 7,3,8
.LVL52:
.loc 1 152 0
stw 7,4(4)
.LVL53:
.LBB115:
.LBB116:
.loc 3 211 0
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L44
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwz %r17, 3,8
cmpw cr7, %r17, 7
bne- cr7, .L44
stw 4, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L44
.popsection
# 0 "" 2
.LVL54:
#NO_APP
.LBE116:
.LBE115:
.LBE117:
.loc 1 158 0
cmpwi 7,5,0
beq 7,.L43
.loc 1 159 0
stw 10,0(5)
.L43:
.loc 1 160 0
lwz 17,20(1)
addi 1,1,80
.cfi_restore 17
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE119:
.size this_cpu_list_push,.-this_cpu_list_push
.align 2
.p2align 4,,15
.globl this_cpu_list_pop
.type this_cpu_list_pop, @function
this_cpu_list_pop:
.LFB120:
.loc 1 169 0
.cfi_startproc
.LVL55:
stwu 1,-96(1)
.cfi_def_cfa_offset 96
.LBB118:
.LBB119:
.LBB120:
.loc 3 271 0
li 6,0
.LBE120:
.LBE119:
.LBE118:
.loc 1 169 0
mflr 0
.LBB127:
.LBB123:
.LBB121:
.loc 3 271 0
li 7,4
.LBE121:
.LBE123:
.LBE127:
.loc 1 169 0
stw 0,100(1)
stw 17,36(1)
.cfi_offset 65, 4
.cfi_offset 17, -60
.loc 1 169 0
lwz 9,-28680(2)
stw 9,28(1)
li 9,0
.LBB128:
.LBB124:
.LBB125:
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
add 9,9,__rseq_abi@tls
.L57:
lwz 10,0(9)
.LVL56:
.LBE125:
.LBE124:
.loc 1 177 0
slwi 8,10,7
.LBB126:
.LBB122:
.loc 3 271 0
#APP
# 271 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L61
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwz %r17, 3,8
cmpw cr7, %r17, 6
beq- cr7, .L61
lwz %r17, 3,8
stw %r17, 24(1)
lwzx %r17, 7, %r17
stw %r17, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L57
.popsection
# 0 "" 2
.LVL57:
#NO_APP
.LBE122:
.LBE126:
.loc 1 184 0
cmpwi 7,4,0
beq 7,.L59
.loc 1 185 0
stw 10,0(4)
.L59:
.loc 1 186 0
lwz 3,24(1)
.LVL58:
b .L55
.L54:
.LVL59:
.L61:
.loc 1 189 0
li 3,0
.LVL60:
.L55:
.LBE128:
.loc 1 192 0 discriminator 1
lwz 10,28(1)
lwz 9,-28680(2)
xor. 10,10,9
li 9,0
.LVL61:
bne- 0,.L67
.loc 1 192 0 is_stmt 0
lwz 0,100(1)
lwz 17,36(1)
addi 1,1,96
.cfi_remember_state
.cfi_restore 17
.cfi_def_cfa_offset 0
.LVL62:
mtlr 0
.cfi_restore 65
blr
.LVL63:
.L67:
.cfi_restore_state
bl __stack_chk_fail
.LVL64:
.cfi_endproc
.LFE120:
.size this_cpu_list_pop,.-this_cpu_list_pop
.align 2
.p2align 4,,15
.globl test_percpu_list_thread
.type test_percpu_list_thread, @function
test_percpu_list_thread:
.LFB122:
.loc 1 210 0 is_stmt 1
.cfi_startproc
.LVL65:
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 29,20(1)
stw 31,28(1)
stw 0,36(1)
stw 30,24(1)
.cfi_offset 65, 4
.cfi_offset 29, -12
.cfi_offset 31, -4
.cfi_offset 30, -8
.loc 1 210 0
mr 29,3
.loc 1 214 0
bl rseq_register_current_thread
.LVL66:
lis 31,0x1
ori 31,31,0x86a0
cmpwi 7,3,0
bne- 7,.L81
.p2align 4,,15
.L75:
.LVL67:
.LBB139:
.loc 1 223 0
li 4,0
mr 3,29
bl this_cpu_list_pop
.LVL68:
mr 30,3
.LVL69:
.loc 1 224 0
bl sched_yield
.LVL70:
.loc 1 225 0
cmpwi 7,30,0
beq 7,.L70
.loc 1 226 0
li 5,0
mr 4,30
mr 3,29
bl this_cpu_list_push
.LVL71:
.L70:
.LBE139:
.loc 1 220 0 discriminator 2
cmpwi 0,31,1
addi 31,31,-1
.LVL72:
bne 0,.L75
.loc 1 229 0
bl rseq_unregister_current_thread
.LVL73:
cmpwi 7,3,0
bne- 7,.L82
.loc 1 236 0
lwz 0,36(1)
lwz 29,20(1)
.LVL74:
lwz 30,24(1)
.LVL75:
lwz 31,28(1)
.LVL76:
addi 1,1,32
.cfi_remember_state
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.LVL77:
.L81:
.cfi_restore_state
.LBB140:
.LBB141:
.loc 1 215 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 216 0
bl __errno_location
.LVL78:
.loc 1 215 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL79:
.LBB142:
.LBB143:
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL80:
.LBE143:
.LBE142:
.loc 1 217 0
bl abort
.LVL81:
.L82:
.LBE141:
.LBE140:
.loc 1 230 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.LVL82:
.loc 1 231 0
bl __errno_location
.LVL83:
.loc 1 230 0
lwz 31,0(3)
.LVL84:
mr 3,31
bl strerror
.LVL85:
.LBB144:
.LBB145:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL86:
.LBE145:
.LBE144:
.loc 1 232 0
bl abort
.LVL87:
.cfi_endproc
.LFE122:
.size test_percpu_list_thread,.-test_percpu_list_thread
.align 2
.p2align 4,,15
.globl __percpu_list_pop
.type __percpu_list_pop, @function
__percpu_list_pop:
.LFB121:
.loc 1 199 0
.cfi_startproc
.LVL88:
stwu 1,-16(1)
.cfi_def_cfa_offset 16
slwi 4,4,7
.LVL89:
.loc 1 202 0
lwzx 9,3,4
.LVL90:
.loc 1 203 0
cmpwi 7,9,0
beq 7,.L84
.loc 1 205 0
lwz 10,4(9)
stwx 10,3,4
.L84:
.loc 1 207 0
mr 3,9
.LVL91:
addi 1,1,16
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE121:
.size __percpu_list_pop,.-__percpu_list_pop
.align 2
.p2align 4,,15
.globl test_percpu_list
.type test_percpu_list, @function
test_percpu_list:
.LFB123:
.loc 1 240 0
.cfi_startproc
stwu 1,-1008(1)
.cfi_def_cfa_offset 1008
lis 9,0xfffd
mflr 0
ori 9,9,0xff80
.LBB146:
.LBB147:
.loc 5 90 0
lis 5,0x2
li 4,0
.LBE147:
.LBE146:
.loc 1 240 0
lwz 10,0(1)
stw 0,1012(1)
stw 23,972(1)
stw 24,976(1)
stw 25,980(1)
stw 26,984(1)
stw 27,988(1)
stw 29,996(1)
stw 31,1004(1)
stw 28,992(1)
.cfi_offset 65, 4
.cfi_offset 23, -36
.cfi_offset 24, -32
.cfi_offset 25, -28
.cfi_offset 26, -24
.cfi_offset 27, -20
.cfi_offset 29, -12
.cfi_offset 31, -4
.cfi_offset 28, -16
mr 31,1
.cfi_def_cfa_register 31
stw 30,1000(1)
.cfi_offset 30, -8
.loc 1 240 0
stwux 10,1,9
.loc 1 242 0
li 26,0
li 29,0
.loc 1 251 0
li 24,0
.loc 1 240 0
addi 23,1,135
lwz 9,-28680(2)
stw 9,956(31)
li 9,0
.LVL92:
rlwinm 23,23,0,0,24
.LVL93:
.LBB149:
.LBB148:
.loc 5 90 0
mr 3,23
bl memset
.LVL94:
.LBE148:
.LBE149:
.loc 1 250 0
addi 5,31,28
li 4,128
li 3,0
mr 25,23
bl sched_getaffinity
.LVL95:
mr 27,23
.LVL96:
.p2align 4,,15
.L93:
.LBB150:
.loc 1 252 0
addi 10,31,960
rlwinm 9,24,29,3,29
add 9,10,9
rlwinm 10,24,0,27,31
lwz 9,-932(9)
srw 9,9,10
andi. 10,9,1
beq 0,.L90
li 28,0
li 30,1
.LVL97:
.p2align 4,,15
.L114:
.LBE150:
.LBB151:
.loc 1 257 0
addc 29,30,29
.LVL98:
.loc 1 259 0
li 3,8
.loc 1 257 0
adde 26,28,26
.loc 1 259 0
bl malloc
.LVL99:
.loc 1 260 0
cmpwi 0,3,0
beq- 0,.L121
addic 10,30,1
.loc 1 262 0 discriminator 2
lwz 8,0(27)
.loc 1 261 0 discriminator 2
stw 30,0(3)
addze 28,28
.loc 1 263 0 discriminator 2
stw 3,0(27)
.LVL100:
.LBE151:
.loc 1 254 0 discriminator 2
cmpwi 7,28,0
.LBB152:
.loc 1 262 0 discriminator 2
stw 8,4(3)
mr 30,10
.LVL101:
.LBE152:
.loc 1 254 0 discriminator 2
bne 7,.L114
cmplwi 7,10,101
bne 7,.L114
.LVL102:
.p2align 4,,15
.L90:
.loc 1 251 0 discriminator 2
cmpwi 7,24,1023
addi 27,27,128
addi 24,24,1
.LVL103:
bne 7,.L93
lis 28,test_percpu_list_thread@ha
addi 30,31,156
addi 27,31,956
la 28,test_percpu_list_thread@l(28)
.LVL104:
.p2align 5,,31
.L94:
.loc 1 268 0 discriminator 3
mr 3,30
mr 6,23
mr 5,28
li 4,0
addi 30,30,4
bl pthread_create
.LVL105:
.loc 1 267 0 discriminator 3
cmplw 7,27,30
bne 7,.L94
addi 30,31,152
addi 28,31,952
.p2align 5,,31
.L95:
.loc 1 272 0 discriminator 3
lwzu 3,4(30)
li 4,0
bl pthread_join
.LVL106:
.loc 1 271 0 discriminator 3
cmplw 7,28,30
bne 7,.L95
li 28,0
li 30,0
li 27,0
b .L98
.LVL107:
.p2align 4,,15
.L96:
.loc 1 274 0 discriminator 2
cmpwi 7,27,1023
addi 25,25,128
addi 27,27,1
.LVL108:
beq 7,.L122
.LVL109:
.L98:
.LBB153:
.LBB154:
.loc 1 277 0
addi 10,31,960
rlwinm 9,27,29,3,29
add 9,10,9
rlwinm 10,27,0,27,31
lwz 9,-932(9)
srw 9,9,10
andi. 10,9,1
beq 0,.L96
.LVL110:
.LBE154:
.LBB155:
.LBB156:
.loc 1 202 0
lwz 3,0(25)
.LVL111:
.loc 1 203 0
cmpwi 7,3,0
beq 7,.L96
.p2align 4,,15
.L97:
.LVL112:
.loc 1 205 0
lwz 8,4(3)
.LBE156:
.LBE155:
.loc 1 281 0
lwz 9,0(3)
.LBB159:
.LBB157:
.loc 1 205 0
stw 8,0(25)
.LVL113:
.LBE157:
.LBE159:
.loc 1 281 0
srawi 10,9,31
addc 30,9,30
.LVL114:
adde 28,10,28
.LVL115:
.loc 1 282 0
bl free
.LVL116:
.LBB160:
.LBB158:
.loc 1 202 0
lwz 3,0(25)
.LVL117:
.loc 1 203 0
cmpwi 7,3,0
bne 7,.L97
.LVL118:
.LBE158:
.LBE160:
.LBE153:
.loc 1 274 0
cmpwi 7,27,1023
addi 25,25,128
addi 27,27,1
.LVL119:
bne 7,.L98
.LVL120:
.L122:
.loc 1 291 0
cmplw 7,28,26
bne- 7,.L102
cmplw 7,30,29
bne- 7,.L102
.loc 1 292 0
lwz 9,956(31)
lwz 10,-28680(2)
xor. 9,9,10
li 10,0
bne- 0,.L123
addi 11,31,1008
lwz 0,4(11)
lwz 23,-36(11)
lwz 31,-4(11)
.cfi_remember_state
.cfi_def_cfa 11, 0
lwz 24,-32(11)
.LVL121:
mtlr 0
.cfi_restore 65
lwz 25,-28(11)
lwz 26,-24(11)
.LVL122:
lwz 27,-20(11)
.LVL123:
lwz 28,-16(11)
lwz 29,-12(11)
lwz 30,-8(11)
mr 1,11
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
.cfi_restore 24
.cfi_restore 23
.cfi_def_cfa_register 1
blr
.LVL124:
.L121:
.cfi_restore_state
.LBB161:
.loc 1 260 0 discriminator 1
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC5@ha
.LVL125:
addi 6,6,44
li 5,260
la 4,.LC0@l(4)
la 3,.LC5@l(3)
bl __assert_fail
.LVL126:
.L102:
.LBE161:
.loc 1 291 0 discriminator 1
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC6@ha
addi 6,6,44
li 5,291
la 4,.LC0@l(4)
la 3,.LC6@l(3)
bl __assert_fail
.LVL127:
.L123:
.loc 1 292 0
bl __stack_chk_fail
.LVL128:
.cfi_endproc
.LFE123:
.size test_percpu_list,.-test_percpu_list
.section .text.startup,"ax",@progbits
.align 2
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB124:
.loc 1 295 0
.cfi_startproc
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 30,24(1)
stw 0,36(1)
stw 31,28(1)
.cfi_offset 65, 4
.cfi_offset 30, -8
.cfi_offset 31, -4
.loc 1 296 0
bl rseq_register_current_thread
.LVL129:
cmpwi 7,3,0
bne 7,.L131
.LVL130:
.LBB162:
.LBB163:
.loc 4 104 0
lis 3,.LC7@ha
la 3,.LC7@l(3)
bl puts
.LVL131:
.LBE163:
.LBE162:
.loc 1 302 0
bl test_percpu_spinlock
.LVL132:
.LBB164:
.LBB165:
.loc 4 104 0
lis 3,.LC8@ha
la 3,.LC8@l(3)
bl puts
.LVL133:
.LBE165:
.LBE164:
.loc 1 304 0
bl test_percpu_list
.LVL134:
.loc 1 305 0
bl rseq_unregister_current_thread
.LVL135:
cmpwi 0,3,0
bne 0,.L132
.L126:
.loc 1 314 0
lwz 0,36(1)
lwz 30,24(1)
lwz 31,28(1)
addi 1,1,32
.cfi_remember_state
.cfi_restore 31
.cfi_restore 30
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.L131:
.cfi_restore_state
.loc 1 297 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 298 0
bl __errno_location
.LVL136:
.loc 1 297 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL137:
.LBB166:
.LBB167:
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL138:
.LBE167:
.LBE166:
.loc 1 313 0
li 3,-1
b .L126
.LVL139:
.L132:
.loc 1 306 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 307 0
bl __errno_location
.LVL140:
.loc 1 306 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL141:
.LBB168:
.LBB169:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL142:
.LBE169:
.LBE168:
.loc 1 313 0
li 3,-1
b .L126
.cfi_endproc
.LFE124:
.size main,.-main
.section .rodata
.align 2
.set .LANCHOR0,. + 0
.type __PRETTY_FUNCTION__.5645, @object
.size __PRETTY_FUNCTION__.5645, 19
__PRETTY_FUNCTION__.5645:
.string "rseq_percpu_unlock"
.zero 1
.type __PRETTY_FUNCTION__.5672, @object
.size __PRETTY_FUNCTION__.5672, 21
__PRETTY_FUNCTION__.5672:
.string "test_percpu_spinlock"
.zero 3
.type __PRETTY_FUNCTION__.5725, @object
.size __PRETTY_FUNCTION__.5725, 17
__PRETTY_FUNCTION__.5725:
.string "test_percpu_list"
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "basic_percpu_ops_test.c"
.LC1:
.string "lock->c[cpu].v == 1"
.LC2:
.string "Error: rseq_register_current_thread(...) failed(%d): %s\n"
.zero 3
.LC3:
.string "Error: rseq_unregister_current_thread(...) failed(%d): %s\n"
.zero 1
.LC4:
.string "sum == (uint64_t)data.reps * num_threads"
.zero 3
.LC5:
.string "node"
.zero 3
.LC6:
.string "sum == expected_sum"
.LC7:
.string "spinlock"
.zero 3
.LC8:
.string "percpu_list"
.section ".text"
.Letext0:
.file 6 "/usr/include/powerpc-linux-gnu/bits/types.h"
.file 7 "/usr/lib/gcc/powerpc-linux-gnu/5/include/stddef.h"
.file 8 "/usr/include/powerpc-linux-gnu/bits/sched.h"
.file 9 "/usr/include/powerpc-linux-gnu/bits/pthreadtypes.h"
.file 10 "/usr/include/stdint.h"
.file 11 "/usr/include/stdio.h"
.file 12 "/usr/include/libio.h"
.file 13 "/usr/include/asm-generic/int-ll64.h"
.file 14 "/home/compudj/git/librseq/extra/linux/rseq.h"
.file 15 "/usr/include/assert.h"
.file 16 "/usr/include/powerpc-linux-gnu/bits/errno.h"
.file 17 "/usr/include/string.h"
.file 18 "/usr/include/stdlib.h"
.file 19 "/usr/include/pthread.h"
.file 20 "/usr/include/sched.h"
.file 21 "<built-in>"
.section .debug_info,"",@progbits
.Ldebug_info0:
.4byte 0x142c
.2byte 0x4
.4byte .Ldebug_abbrev0
.byte 0x4
.uleb128 0x1
.4byte .LASF140
.byte 0xc
.4byte .LASF141
.4byte .LASF142
.4byte .Ldebug_ranges0+0x160
.4byte 0
.4byte .Ldebug_line0
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF0
.uleb128 0x2
.byte 0x2
.byte 0x7
.4byte .LASF1
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF2
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF3
.uleb128 0x2
.byte 0x1
.byte 0x6
.4byte .LASF4
.uleb128 0x2
.byte 0x2
.byte 0x5
.4byte .LASF5
.uleb128 0x3
.byte 0x4
.byte 0x5
.string "int"
.uleb128 0x2
.byte 0x8
.byte 0x5
.4byte .LASF6
.uleb128 0x2
.byte 0x8
.byte 0x7
.4byte .LASF7
.uleb128 0x4
.4byte .LASF8
.byte 0x6
.byte 0x37
.4byte 0x56
.uleb128 0x4
.4byte .LASF9
.byte 0x6
.byte 0x83
.4byte 0x7a
.uleb128 0x2
.byte 0x4
.byte 0x5
.4byte .LASF10
.uleb128 0x4
.4byte .LASF11
.byte 0x6
.byte 0x84
.4byte 0x64
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF12
.uleb128 0x5
.byte 0x4
.uleb128 0x6
.byte 0x4
.4byte 0x9b
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF13
.uleb128 0x4
.4byte .LASF14
.byte 0x7
.byte 0xd8
.4byte 0x33
.uleb128 0x4
.4byte .LASF15
.byte 0x8
.byte 0x76
.4byte 0x3a
.uleb128 0x7
.byte 0x80
.byte 0x8
.byte 0x7d
.4byte 0xcd
.uleb128 0x8
.4byte .LASF22
.byte 0x8
.byte 0x7f
.4byte 0xcd
.byte 0
.byte 0
.uleb128 0x9
.4byte 0xad
.4byte 0xdd
.uleb128 0xa
.4byte 0x8c
.byte 0x1f
.byte 0
.uleb128 0x4
.4byte .LASF16
.byte 0x8
.byte 0x80
.4byte 0xb8
.uleb128 0x6
.byte 0x4
.4byte 0xee
.uleb128 0xb
.4byte 0x9b
.uleb128 0xb
.4byte 0x4f
.uleb128 0x4
.4byte .LASF17
.byte 0x9
.byte 0x31
.4byte 0x3a
.uleb128 0x4
.4byte .LASF18
.byte 0xa
.byte 0x33
.4byte 0x33
.uleb128 0x4
.4byte .LASF19
.byte 0xa
.byte 0x3a
.4byte 0x5d
.uleb128 0x4
.4byte .LASF20
.byte 0xa
.byte 0x7d
.4byte 0x4f
.uleb128 0x4
.4byte .LASF21
.byte 0xb
.byte 0x30
.4byte 0x12f
.uleb128 0xc
.4byte .LASF52
.byte 0x98
.byte 0xc
.byte 0xf1
.4byte 0x2ac
.uleb128 0x8
.4byte .LASF23
.byte 0xc
.byte 0xf2
.4byte 0x4f
.byte 0
.uleb128 0x8
.4byte .LASF24
.byte 0xc
.byte 0xf7
.4byte 0x95
.byte 0x4
.uleb128 0x8
.4byte .LASF25
.byte 0xc
.byte 0xf8
.4byte 0x95
.byte 0x8
.uleb128 0x8
.4byte .LASF26
.byte 0xc
.byte 0xf9
.4byte 0x95
.byte 0xc
.uleb128 0x8
.4byte .LASF27
.byte 0xc
.byte 0xfa
.4byte 0x95
.byte 0x10
.uleb128 0x8
.4byte .LASF28
.byte 0xc
.byte 0xfb
.4byte 0x95
.byte 0x14
.uleb128 0x8
.4byte .LASF29
.byte 0xc
.byte 0xfc
.4byte 0x95
.byte 0x18
.uleb128 0x8
.4byte .LASF30
.byte 0xc
.byte 0xfd
.4byte 0x95
.byte 0x1c
.uleb128 0x8
.4byte .LASF31
.byte 0xc
.byte 0xfe
.4byte 0x95
.byte 0x20
.uleb128 0xd
.4byte .LASF32
.byte 0xc
.2byte 0x100
.4byte 0x95
.byte 0x24
.uleb128 0xd
.4byte .LASF33
.byte 0xc
.2byte 0x101
.4byte 0x95
.byte 0x28
.uleb128 0xd
.4byte .LASF34
.byte 0xc
.2byte 0x102
.4byte 0x95
.byte 0x2c
.uleb128 0xd
.4byte .LASF35
.byte 0xc
.2byte 0x104
.4byte 0x2e4
.byte 0x30
.uleb128 0xd
.4byte .LASF36
.byte 0xc
.2byte 0x106
.4byte 0x2ea
.byte 0x34
.uleb128 0xd
.4byte .LASF37
.byte 0xc
.2byte 0x108
.4byte 0x4f
.byte 0x38
.uleb128 0xd
.4byte .LASF38
.byte 0xc
.2byte 0x10c
.4byte 0x4f
.byte 0x3c
.uleb128 0xd
.4byte .LASF39
.byte 0xc
.2byte 0x10e
.4byte 0x6f
.byte 0x40
.uleb128 0xd
.4byte .LASF40
.byte 0xc
.2byte 0x112
.4byte 0x2c
.byte 0x44
.uleb128 0xd
.4byte .LASF41
.byte 0xc
.2byte 0x113
.4byte 0x41
.byte 0x46
.uleb128 0xd
.4byte .LASF42
.byte 0xc
.2byte 0x114
.4byte 0x2f0
.byte 0x47
.uleb128 0xd
.4byte .LASF43
.byte 0xc
.2byte 0x118
.4byte 0x300
.byte 0x48
.uleb128 0xd
.4byte .LASF44
.byte 0xc
.2byte 0x121
.4byte 0x81
.byte 0x50
.uleb128 0xd
.4byte .LASF45
.byte 0xc
.2byte 0x129
.4byte 0x93
.byte 0x58
.uleb128 0xd
.4byte .LASF46
.byte 0xc
.2byte 0x12a
.4byte 0x93
.byte 0x5c
.uleb128 0xd
.4byte .LASF47
.byte 0xc
.2byte 0x12b
.4byte 0x93
.byte 0x60
.uleb128 0xd
.4byte .LASF48
.byte 0xc
.2byte 0x12c
.4byte 0x93
.byte 0x64
.uleb128 0xd
.4byte .LASF49
.byte 0xc
.2byte 0x12e
.4byte 0xa2
.byte 0x68
.uleb128 0xd
.4byte .LASF50
.byte 0xc
.2byte 0x12f
.4byte 0x4f
.byte 0x6c
.uleb128 0xd
.4byte .LASF51
.byte 0xc
.2byte 0x131
.4byte 0x306
.byte 0x70
.byte 0
.uleb128 0xe
.4byte .LASF143
.byte 0xc
.byte 0x96
.uleb128 0xc
.4byte .LASF53
.byte 0xc
.byte 0xc
.byte 0x9c
.4byte 0x2e4
.uleb128 0x8
.4byte .LASF54
.byte 0xc
.byte 0x9d
.4byte 0x2e4
.byte 0
.uleb128 0x8
.4byte .LASF55
.byte 0xc
.byte 0x9e
.4byte 0x2ea
.byte 0x4
.uleb128 0x8
.4byte .LASF56
.byte 0xc
.byte 0xa2
.4byte 0x4f
.byte 0x8
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x2b3
.uleb128 0x6
.byte 0x4
.4byte 0x12f
.uleb128 0x9
.4byte 0x9b
.4byte 0x300
.uleb128 0xa
.4byte 0x8c
.byte 0
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x2ac
.uleb128 0x9
.4byte 0x9b
.4byte 0x316
.uleb128 0xa
.4byte 0x8c
.byte 0x27
.byte 0
.uleb128 0x4
.4byte .LASF57
.byte 0xb
.byte 0x5a
.4byte 0x6f
.uleb128 0x6
.byte 0x4
.4byte 0x4f
.uleb128 0x2
.byte 0x10
.byte 0x4
.4byte .LASF58
.uleb128 0x4
.4byte .LASF59
.byte 0xd
.byte 0x1a
.4byte 0x33
.uleb128 0x4
.4byte .LASF60
.byte 0xd
.byte 0x1e
.4byte 0x5d
.uleb128 0x2
.byte 0x8
.byte 0x4
.4byte .LASF61
.uleb128 0x7
.byte 0x8
.byte 0xe
.byte 0x72
.4byte 0x36c
.uleb128 0x8
.4byte .LASF62
.byte 0xe
.byte 0x74
.4byte 0x32e
.byte 0
.uleb128 0x8
.4byte .LASF63
.byte 0xe
.byte 0x75
.4byte 0x32e
.byte 0x4
.byte 0
.uleb128 0xf
.byte 0x8
.byte 0xe
.byte 0x6d
.4byte 0x38b
.uleb128 0x10
.4byte .LASF64
.byte 0xe
.byte 0x6e
.4byte 0x339
.uleb128 0x11
.string "ptr"
.byte 0xe
.byte 0x7a
.4byte 0x34b
.byte 0
.uleb128 0xc
.4byte .LASF65
.byte 0x20
.byte 0xe
.byte 0x3e
.4byte 0x3c8
.uleb128 0x8
.4byte .LASF66
.byte 0xe
.byte 0x4b
.4byte 0x32e
.byte 0
.uleb128 0x8
.4byte .LASF67
.byte 0xe
.byte 0x5a
.4byte 0x32e
.byte 0x4
.uleb128 0x8
.4byte .LASF68
.byte 0xe
.byte 0x7c
.4byte 0x36c
.byte 0x8
.uleb128 0x8
.4byte .LASF69
.byte 0xe
.byte 0x90
.4byte 0x32e
.byte 0x10
.byte 0
.uleb128 0xc
.4byte .LASF70
.byte 0x80
.byte 0x1
.byte 0x12
.4byte 0x3df
.uleb128 0x12
.string "v"
.byte 0x1
.byte 0x13
.4byte 0x119
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF71
.4byte 0x20000
.byte 0x1
.byte 0x16
.4byte 0x3f9
.uleb128 0x12
.string "c"
.byte 0x1
.byte 0x17
.4byte 0x3f9
.byte 0
.byte 0
.uleb128 0x9
.4byte 0x3c8
.4byte 0x40a
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0xc
.4byte .LASF72
.byte 0x80
.byte 0x1
.byte 0x1a
.4byte 0x423
.uleb128 0x8
.4byte .LASF73
.byte 0x1
.byte 0x1b
.4byte 0x119
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF74
.4byte 0x40080
.byte 0x1
.byte 0x1e
.4byte 0x45b
.uleb128 0x8
.4byte .LASF75
.byte 0x1
.byte 0x1f
.4byte 0x3df
.byte 0
.uleb128 0x15
.string "c"
.byte 0x1
.byte 0x20
.4byte 0x45b
.4byte 0x20000
.uleb128 0x16
.4byte .LASF76
.byte 0x1
.byte 0x21
.4byte 0x4f
.4byte 0x40000
.byte 0
.uleb128 0x9
.4byte 0x40a
.4byte 0x46c
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0xc
.4byte .LASF77
.byte 0x8
.byte 0x1
.byte 0x24
.4byte 0x491
.uleb128 0x8
.4byte .LASF78
.byte 0x1
.byte 0x25
.4byte 0x119
.byte 0
.uleb128 0x8
.4byte .LASF79
.byte 0x1
.byte 0x26
.4byte 0x491
.byte 0x4
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x46c
.uleb128 0xc
.4byte .LASF80
.byte 0x80
.byte 0x1
.byte 0x29
.4byte 0x4b0
.uleb128 0x8
.4byte .LASF81
.byte 0x1
.byte 0x2a
.4byte 0x491
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF82
.4byte 0x20000
.byte 0x1
.byte 0x2d
.4byte 0x4ca
.uleb128 0x12
.string "c"
.byte 0x1
.byte 0x2e
.4byte 0x4ca
.byte 0
.byte 0
.uleb128 0x9
.4byte 0x497
.4byte 0x4db
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0x17
.4byte .LASF99
.byte 0x3
.byte 0xcf
.4byte 0x4f
.byte 0x3
.4byte 0x524
.uleb128 0x18
.string "v"
.byte 0x3
.byte 0xcf
.4byte 0x524
.uleb128 0x19
.4byte .LASF83
.byte 0x3
.byte 0xcf
.4byte 0x119
.uleb128 0x19
.4byte .LASF84
.byte 0x3
.byte 0xcf
.4byte 0x119
.uleb128 0x18
.string "cpu"
.byte 0x3
.byte 0xcf
.4byte 0x4f
.uleb128 0x1a
.4byte .LASF85
.byte 0x3
.byte 0xfc
.uleb128 0x1a
.4byte .LASF86
.byte 0x3
.byte 0xff
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x119
.uleb128 0x1b
.4byte .LASF144
.byte 0x2
.byte 0x8c
.4byte 0x103
.byte 0x3
.uleb128 0x1c
.4byte .LASF94
.byte 0x1
.byte 0x48
.byte 0x1
.4byte 0x566
.uleb128 0x19
.4byte .LASF75
.byte 0x1
.byte 0x48
.4byte 0x566
.uleb128 0x18
.string "cpu"
.byte 0x1
.byte 0x48
.4byte 0x4f
.uleb128 0x1d
.4byte .LASF96
.4byte 0x57c
.4byte .LASF94
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x3df
.uleb128 0x9
.4byte 0xee
.4byte 0x57c
.uleb128 0xa
.4byte 0x8c
.byte 0x12
.byte 0
.uleb128 0xb
.4byte 0x56c
.uleb128 0x1e
.4byte .LASF89
.byte 0x4
.byte 0x5f
.4byte 0x4f
.byte 0x3
.4byte 0x5a9
.uleb128 0x19
.4byte .LASF87
.byte 0x4
.byte 0x5f
.4byte 0x5af
.uleb128 0x19
.4byte .LASF88
.byte 0x4
.byte 0x5f
.4byte 0x5b4
.uleb128 0x1f
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x124
.uleb128 0x20
.4byte 0x5a9
.uleb128 0x20
.4byte 0xe8
.uleb128 0x1e
.4byte .LASF90
.byte 0x5
.byte 0x4e
.4byte 0x93
.byte 0x3
.4byte 0x5eb
.uleb128 0x19
.4byte .LASF91
.byte 0x5
.byte 0x4e
.4byte 0x93
.uleb128 0x19
.4byte .LASF92
.byte 0x5
.byte 0x4e
.4byte 0x4f
.uleb128 0x19
.4byte .LASF93
.byte 0x5
.byte 0x4e
.4byte 0xa2
.byte 0
.uleb128 0x1c
.4byte .LASF95
.byte 0x1
.byte 0x70
.byte 0x1
.4byte 0x63a
.uleb128 0x21
.4byte .LASF97
.byte 0x1
.byte 0x72
.4byte 0xf3
.uleb128 0x22
.string "i"
.byte 0x1
.byte 0x73
.4byte 0x4f
.uleb128 0x22
.string "sum"
.byte 0x1
.byte 0x74
.4byte 0x10e
.uleb128 0x21
.4byte .LASF98
.byte 0x1
.byte 0x75
.4byte 0x63a
.uleb128 0x21
.4byte .LASF78
.byte 0x1
.byte 0x76
.4byte 0x423
.uleb128 0x1d
.4byte .LASF96
.4byte 0x659
.4byte .LASF95
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0x649
.uleb128 0x23
.4byte 0x8c
.byte 0
.uleb128 0x9
.4byte 0xee
.4byte 0x659
.uleb128 0xa
.4byte 0x8c
.byte 0x14
.byte 0
.uleb128 0xb
.4byte 0x649
.uleb128 0x24
.4byte .LASF100
.byte 0x3
.2byte 0x10a
.4byte 0x4f
.byte 0x3
.4byte 0x6ba
.uleb128 0x25
.string "v"
.byte 0x3
.2byte 0x10a
.4byte 0x524
.uleb128 0x26
.4byte .LASF101
.byte 0x3
.2byte 0x10a
.4byte 0x119
.uleb128 0x26
.4byte .LASF102
.byte 0x3
.2byte 0x10b
.4byte 0x316
.uleb128 0x26
.4byte .LASF103
.byte 0x3
.2byte 0x10b
.4byte 0x524
.uleb128 0x25
.string "cpu"
.byte 0x3
.2byte 0x10b
.4byte 0x4f
.uleb128 0x27
.4byte .LASF85
.byte 0x3
.2byte 0x140
.uleb128 0x27
.4byte .LASF86
.byte 0x3
.2byte 0x143
.byte 0
.uleb128 0x28
.4byte .LASF106
.byte 0x1
.byte 0xd1
.4byte 0x93
.byte 0x1
.4byte 0x6f7
.uleb128 0x18
.string "arg"
.byte 0x1
.byte 0xd1
.4byte 0x93
.uleb128 0x22
.string "i"
.byte 0x1
.byte 0xd3
.4byte 0x4f
.uleb128 0x21
.4byte .LASF104
.byte 0x1
.byte 0xd4
.4byte 0x6f7
.uleb128 0x29
.uleb128 0x21
.4byte .LASF105
.byte 0x1
.byte 0xdd
.4byte 0x491
.byte 0
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x4b0
.uleb128 0x28
.4byte .LASF107
.byte 0x1
.byte 0xc6
.4byte 0x491
.byte 0x1
.4byte 0x72f
.uleb128 0x19
.4byte .LASF104
.byte 0x1
.byte 0xc6
.4byte 0x6f7
.uleb128 0x18
.string "cpu"
.byte 0x1
.byte 0xc6
.4byte 0x4f
.uleb128 0x21
.4byte .LASF105
.byte 0x1
.byte 0xc8
.4byte 0x491
.byte 0
.uleb128 0x1e
.4byte .LASF108
.byte 0x4
.byte 0x66
.4byte 0x4f
.byte 0x3
.4byte 0x74c
.uleb128 0x19
.4byte .LASF88
.byte 0x4
.byte 0x66
.4byte 0x5b4
.uleb128 0x1f
.byte 0
.uleb128 0x2a
.4byte 0x536
.4byte .LFB125
.4byte .LFE125-.LFB125
.uleb128 0x1
.byte 0x9c
.4byte 0x7ae
.uleb128 0x2b
.4byte 0x54d
.uleb128 0x6
.byte 0xfa
.4byte 0x54d
.byte 0x9f
.uleb128 0x2b
.4byte 0x542
.uleb128 0x6
.byte 0xfa
.4byte 0x542
.byte 0x9f
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL1
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC1
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x4a
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF109
.byte 0x1
.byte 0x32
.4byte 0x4f
.4byte .LFB115
.4byte .LFE115-.LFB115
.uleb128 0x1
.byte 0x9c
.4byte 0x850
.uleb128 0x30
.4byte .LASF75
.byte 0x1
.byte 0x32
.4byte 0x566
.4byte .LLST0
.uleb128 0x31
.string "cpu"
.byte 0x1
.byte 0x34
.4byte 0x4f
.uleb128 0x1
.byte 0x5a
.uleb128 0x32
.4byte .Ldebug_ranges0+0
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0x37
.4byte 0x4f
.uleb128 0x33
.4byte 0x52a
.4byte .LBB73
.4byte .Ldebug_ranges0+0x18
.byte 0x1
.byte 0x39
.uleb128 0x34
.4byte 0x4db
.4byte .LBB77
.4byte .Ldebug_ranges0+0x38
.byte 0x1
.byte 0x3a
.uleb128 0x35
.4byte 0x50a
.4byte .LLST1
.uleb128 0x35
.4byte 0x4ff
.4byte .LLST2
.uleb128 0x35
.4byte 0x4f4
.4byte .LLST3
.uleb128 0x35
.4byte 0x4eb
.4byte .LLST4
.uleb128 0x32
.4byte .Ldebug_ranges0+0x38
.uleb128 0x36
.4byte 0x515
.4byte .L5
.uleb128 0x36
.4byte 0x51c
.4byte .L4
.byte 0
.byte 0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF110
.byte 0x1
.byte 0x52
.4byte 0x93
.4byte .LFB117
.4byte .LFE117-.LFB117
.uleb128 0x1
.byte 0x9c
.4byte 0x9ef
.uleb128 0x37
.string "arg"
.byte 0x1
.byte 0x52
.4byte 0x93
.4byte .LLST5
.uleb128 0x38
.4byte .LASF78
.byte 0x1
.byte 0x54
.4byte 0x9ef
.4byte .LLST6
.uleb128 0x39
.string "i"
.byte 0x1
.byte 0x55
.4byte 0x4f
.4byte .LLST7
.uleb128 0x39
.string "cpu"
.byte 0x1
.byte 0x55
.4byte 0x4f
.4byte .LLST8
.uleb128 0x3a
.4byte 0x536
.4byte .LBB86
.4byte .Ldebug_ranges0+0x58
.byte 0x1
.byte 0x5f
.4byte 0x8e8
.uleb128 0x3b
.4byte 0x54d
.uleb128 0x35
.4byte 0x542
.4byte .LLST9
.uleb128 0x32
.4byte .Ldebug_ranges0+0x58
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL20
.4byte 0x74c
.uleb128 0x3c
.4byte 0x542
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB92
.4byte .LBE92-.LBB92
.byte 0x1
.byte 0x58
.4byte 0x932
.uleb128 0x35
.4byte 0x59c
.4byte .LLST10
.uleb128 0x35
.4byte 0x591
.4byte .LLST11
.uleb128 0x2d
.4byte .LVL24
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB94
.4byte .LBE94-.LBB94
.byte 0x1
.byte 0x62
.4byte 0x97c
.uleb128 0x35
.4byte 0x59c
.4byte .LLST12
.uleb128 0x35
.4byte 0x591
.4byte .LLST13
.uleb128 0x2d
.4byte .LVL29
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL8
.4byte 0x1372
.uleb128 0x3f
.4byte .LVL11
.4byte 0x7ae
.4byte 0x999
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL17
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL21
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL23
.4byte 0x1393
.4byte 0x9bf
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL25
.4byte 0x139f
.uleb128 0x3e
.4byte .LVL26
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL28
.4byte 0x1393
.4byte 0x9e5
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL30
.4byte 0x139f
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x423
.uleb128 0x2a
.4byte 0x536
.4byte .LFB116
.4byte .LFE116-.LFB116
.uleb128 0x1
.byte 0x9c
.4byte 0xa42
.uleb128 0x35
.4byte 0x542
.4byte .LLST14
.uleb128 0x35
.4byte 0x54d
.4byte .LLST15
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL33
.4byte 0x74c
.uleb128 0x3c
.4byte 0x542
.uleb128 0x3
.byte 0xf3
.uleb128 0x1
.byte 0x53
.uleb128 0x3c
.4byte 0x54d
.uleb128 0x3
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0
.byte 0
.uleb128 0x2a
.4byte 0x5eb
.4byte .LFB118
.4byte .LFE118-.LFB118
.uleb128 0x1
.byte 0x9c
.4byte 0xb71
.uleb128 0x40
.4byte 0x5f7
.byte 0xc8
.uleb128 0x41
.4byte 0x602
.4byte .LLST16
.uleb128 0x41
.4byte 0x60b
.4byte .LLST17
.uleb128 0x42
.4byte 0x616
.4byte 0x63a
.4byte .LLST18
.uleb128 0x2c
.4byte 0x621
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2c
.4byte 0x62c
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5672
.uleb128 0x3a
.4byte 0x5b9
.4byte .LBB102
.4byte .Ldebug_ranges0+0x78
.byte 0x1
.byte 0x78
.4byte 0xace
.uleb128 0x3b
.4byte 0x5df
.uleb128 0x3b
.4byte 0x5d4
.uleb128 0x3b
.4byte 0x5c9
.uleb128 0x2d
.4byte .LVL35
.4byte 0x13ab
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0xc
.4byte 0x40080
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB109
.4byte .LBE109-.LBB109
.4byte 0xb2f
.uleb128 0x44
.4byte 0x5f7
.uleb128 0x44
.4byte 0x602
.uleb128 0x44
.4byte 0x60b
.uleb128 0x45
.4byte 0x616
.4byte 0xb71
.uleb128 0x44
.4byte 0x621
.uleb128 0x2c
.4byte 0x62c
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5672
.uleb128 0x2d
.4byte .LVL48
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x86
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+20
.byte 0
.byte 0
.uleb128 0x3f
.4byte .LVL38
.4byte 0x13b4
.4byte 0xb54
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 -4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8a
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8e
.sleb128 0
.byte 0
.uleb128 0x3f
.4byte .LVL40
.4byte 0x13bf
.4byte 0xb67
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3e
.4byte .LVL49
.4byte 0x13ca
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0xb80
.uleb128 0x23
.4byte 0x8c
.byte 0
.uleb128 0x46
.4byte .LASF116
.byte 0x1
.byte 0x89
.4byte .LFB119
.4byte .LFE119-.LFB119
.uleb128 0x1
.byte 0x9c
.4byte 0xc68
.uleb128 0x47
.4byte .LASF104
.byte 0x1
.byte 0x89
.4byte 0x6f7
.uleb128 0x1
.byte 0x53
.uleb128 0x47
.4byte .LASF105
.byte 0x1
.byte 0x8a
.4byte 0x491
.uleb128 0x1
.byte 0x54
.uleb128 0x47
.4byte .LASF111
.byte 0x1
.byte 0x8b
.4byte 0x321
.uleb128 0x1
.byte 0x55
.uleb128 0x31
.string "cpu"
.byte 0x1
.byte 0x8d
.4byte 0x4f
.uleb128 0x1
.byte 0x5a
.uleb128 0x32
.4byte .Ldebug_ranges0+0x98
.uleb128 0x48
.4byte .LASF112
.byte 0x1
.byte 0x90
.4byte 0x524
.uleb128 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.uleb128 0x48
.4byte .LASF113
.byte 0x1
.byte 0x90
.4byte 0x119
.uleb128 0x1
.byte 0x54
.uleb128 0x48
.4byte .LASF83
.byte 0x1
.byte 0x90
.4byte 0x119
.uleb128 0x1
.byte 0x57
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0x91
.4byte 0x4f
.uleb128 0x33
.4byte 0x52a
.4byte .LBB111
.4byte .Ldebug_ranges0+0xb0
.byte 0x1
.byte 0x93
.uleb128 0x49
.4byte 0x4db
.4byte .LBB115
.4byte .LBE115-.LBB115
.byte 0x1
.byte 0x99
.uleb128 0x35
.4byte 0x50a
.4byte .LLST19
.uleb128 0x35
.4byte 0x4ff
.4byte .LLST20
.uleb128 0x35
.4byte 0x4f4
.4byte .LLST21
.uleb128 0x35
.4byte 0x4eb
.4byte .LLST22
.uleb128 0x4a
.4byte .LBB116
.4byte .LBE116-.LBB116
.uleb128 0x36
.4byte 0x515
.4byte .L45
.uleb128 0x36
.4byte 0x51c
.4byte .L44
.byte 0
.byte 0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF114
.byte 0x1
.byte 0xa7
.4byte 0x491
.4byte .LFB120
.4byte .LFE120-.LFB120
.uleb128 0x1
.byte 0x9c
.4byte 0xd7a
.uleb128 0x30
.4byte .LASF104
.byte 0x1
.byte 0xa7
.4byte 0x6f7
.4byte .LLST23
.uleb128 0x30
.4byte .LASF111
.byte 0x1
.byte 0xa8
.4byte 0x321
.4byte .LLST24
.uleb128 0x4b
.4byte .Ldebug_ranges0+0xc8
.4byte 0xd70
.uleb128 0x48
.4byte .LASF81
.byte 0x1
.byte 0xab
.4byte 0x491
.uleb128 0x3
.byte 0x91
.sleb128 -72
.uleb128 0x38
.4byte .LASF112
.byte 0x1
.byte 0xac
.4byte 0x524
.4byte .LLST25
.uleb128 0x4c
.4byte .LASF101
.byte 0x1
.byte 0xac
.4byte 0x119
.byte 0
.uleb128 0x38
.4byte .LASF103
.byte 0x1
.byte 0xac
.4byte 0x524
.4byte .LLST26
.uleb128 0x4c
.4byte .LASF115
.byte 0x1
.byte 0xad
.4byte 0x316
.byte 0x4
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0xae
.4byte 0x4f
.uleb128 0x39
.string "cpu"
.byte 0x1
.byte 0xae
.4byte 0x4f
.4byte .LLST27
.uleb128 0x3a
.4byte 0x65e
.4byte .LBB119
.4byte .Ldebug_ranges0+0xe8
.byte 0x1
.byte 0xb5
.4byte 0xd60
.uleb128 0x35
.4byte 0x69d
.4byte .LLST28
.uleb128 0x35
.4byte 0x691
.4byte .LLST29
.uleb128 0x35
.4byte 0x685
.4byte .LLST30
.uleb128 0x35
.4byte 0x679
.4byte .LLST31
.uleb128 0x35
.4byte 0x66f
.4byte .LLST32
.uleb128 0x32
.4byte .Ldebug_ranges0+0xe8
.uleb128 0x36
.4byte 0x6a9
.4byte .L54
.uleb128 0x36
.4byte 0x6b1
.4byte .L55
.byte 0
.byte 0
.uleb128 0x4d
.4byte 0x52a
.4byte .LBB124
.4byte .LBE124-.LBB124
.byte 0x1
.byte 0xb0
.byte 0
.uleb128 0x3e
.4byte .LVL64
.4byte 0x13ca
.byte 0
.uleb128 0x2a
.4byte 0x6ba
.4byte .LFB122
.4byte .LFE122-.LFB122
.uleb128 0x1
.byte 0x9c
.4byte 0xf1a
.uleb128 0x35
.4byte 0x6ca
.4byte .LLST33
.uleb128 0x41
.4byte 0x6d5
.4byte .LLST34
.uleb128 0x41
.4byte 0x6de
.4byte .LLST35
.uleb128 0x43
.4byte .LBB139
.4byte .LBE139-.LBB139
.4byte 0xdfc
.uleb128 0x41
.4byte 0x6ea
.4byte .LLST36
.uleb128 0x3f
.4byte .LVL68
.4byte 0xc68
.4byte 0xdd7
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3e
.4byte .LVL70
.4byte 0x13d3
.uleb128 0x2d
.4byte .LVL71
.4byte 0xb80
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x1
.byte 0x30
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB140
.4byte .LBE140-.LBB140
.4byte 0xe97
.uleb128 0x35
.4byte 0x6ca
.4byte .LLST37
.uleb128 0x4a
.4byte .LBB141
.4byte .LBE141-.LBB141
.uleb128 0x44
.4byte 0x6d5
.uleb128 0x44
.4byte 0x6de
.uleb128 0x3d
.4byte 0x581
.4byte .LBB142
.4byte .LBE142-.LBB142
.byte 0x1
.byte 0xd7
.4byte 0xe6f
.uleb128 0x35
.4byte 0x59c
.4byte .LLST38
.uleb128 0x35
.4byte 0x591
.4byte .LLST39
.uleb128 0x2d
.4byte .LVL80
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL78
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL79
.4byte 0x1393
.4byte 0xe8c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL81
.4byte 0x139f
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB144
.4byte .LBE144-.LBB144
.byte 0x1
.byte 0xe6
.4byte 0xee1
.uleb128 0x35
.4byte 0x59c
.4byte .LLST40
.uleb128 0x35
.4byte 0x591
.4byte .LLST41
.uleb128 0x2d
.4byte .LVL86
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL66
.4byte 0x1372
.uleb128 0x3e
.4byte .LVL73
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL83
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL85
.4byte 0x1393
.4byte 0xf10
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL87
.4byte 0x139f
.byte 0
.uleb128 0x2a
.4byte 0x6fd
.4byte .LFB121
.4byte .LFE121-.LFB121
.uleb128 0x1
.byte 0x9c
.4byte 0xf47
.uleb128 0x35
.4byte 0x70d
.4byte .LLST42
.uleb128 0x35
.4byte 0x718
.4byte .LLST43
.uleb128 0x2c
.4byte 0x723
.uleb128 0x1
.byte 0x59
.byte 0
.uleb128 0x46
.4byte .LASF117
.byte 0x1
.byte 0xef
.4byte .LFB123
.4byte .LFE123-.LFB123
.uleb128 0x1
.byte 0x9c
.4byte 0x1195
.uleb128 0x39
.string "i"
.byte 0x1
.byte 0xf1
.4byte 0x4f
.4byte .LLST44
.uleb128 0x39
.string "j"
.byte 0x1
.byte 0xf1
.4byte 0x4f
.4byte .LLST45
.uleb128 0x39
.string "sum"
.byte 0x1
.byte 0xf2
.4byte 0x10e
.4byte .LLST46
.uleb128 0x38
.4byte .LASF118
.byte 0x1
.byte 0xf2
.4byte 0x10e
.4byte .LLST47
.uleb128 0x48
.4byte .LASF104
.byte 0x1
.byte 0xf3
.4byte 0x4b0
.uleb128 0x2
.byte 0x87
.sleb128 0
.uleb128 0x48
.4byte .LASF98
.byte 0x1
.byte 0xf4
.4byte 0x1195
.uleb128 0x3
.byte 0x91
.sleb128 -852
.uleb128 0x48
.4byte .LASF119
.byte 0x1
.byte 0xf5
.4byte 0xdd
.uleb128 0x3
.byte 0x91
.sleb128 -980
.uleb128 0x4e
.4byte .LASF96
.4byte 0x11b5
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5725
.uleb128 0x3a
.4byte 0x5b9
.4byte .LBB146
.4byte .Ldebug_ranges0+0x108
.byte 0x1
.byte 0xf7
.4byte 0x101b
.uleb128 0x35
.4byte 0x5df
.4byte .LLST48
.uleb128 0x35
.4byte 0x5d4
.4byte .LLST49
.uleb128 0x35
.4byte 0x5c9
.4byte .LLST50
.uleb128 0x2d
.4byte .LVL94
.4byte 0x13ab
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x87
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x88
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB150
.4byte .LBE150-.LBB150
.4byte 0x1038
.uleb128 0x38
.4byte .LASF120
.byte 0x1
.byte 0xfc
.4byte 0xa2
.4byte .LLST51
.byte 0
.uleb128 0x4b
.4byte .Ldebug_ranges0+0x120
.4byte 0x1090
.uleb128 0x38
.4byte .LASF105
.byte 0x1
.byte 0xff
.4byte 0x491
.4byte .LLST52
.uleb128 0x3f
.4byte .LVL99
.4byte 0x13de
.4byte 0x1063
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x1
.byte 0x38
.byte 0
.uleb128 0x2d
.4byte .LVL126
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC5
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x104
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+44
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB153
.4byte .LBE153-.LBB153
.4byte 0x1103
.uleb128 0x4f
.4byte .LASF105
.byte 0x1
.2byte 0x113
.4byte 0x491
.uleb128 0x43
.4byte .LBB154
.4byte .LBE154-.LBB154
.4byte 0x10c7
.uleb128 0x50
.4byte .LASF120
.byte 0x1
.2byte 0x115
.4byte 0xa2
.4byte .LLST53
.byte 0
.uleb128 0x51
.4byte 0x6fd
.4byte .LBB155
.4byte .Ldebug_ranges0+0x140
.byte 0x1
.2byte 0x118
.4byte 0x10f9
.uleb128 0x3b
.4byte 0x718
.uleb128 0x35
.4byte 0x70d
.4byte .LLST54
.uleb128 0x32
.4byte .Ldebug_ranges0+0x140
.uleb128 0x41
.4byte 0x723
.4byte .LLST55
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL116
.4byte 0x13ea
.byte 0
.uleb128 0x3f
.4byte .LVL95
.4byte 0x13f6
.4byte 0x1123
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x88
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8
.byte 0x80
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8f
.sleb128 28
.byte 0
.uleb128 0x3f
.4byte .LVL105
.4byte 0x13b4
.4byte 0x1148
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 -4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8c
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x87
.sleb128 0
.byte 0
.uleb128 0x3f
.4byte .LVL106
.4byte 0x13bf
.4byte 0x115b
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3f
.4byte .LVL127
.4byte 0x135c
.4byte 0x118b
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC6
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x123
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+44
.byte 0
.uleb128 0x3e
.4byte .LVL128
.4byte 0x13ca
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0x11a5
.uleb128 0xa
.4byte 0x8c
.byte 0xc7
.byte 0
.uleb128 0x9
.4byte 0xee
.4byte 0x11b5
.uleb128 0xa
.4byte 0x8c
.byte 0x10
.byte 0
.uleb128 0xb
.4byte 0x11a5
.uleb128 0x52
.4byte .LASF121
.byte 0x1
.2byte 0x126
.4byte 0x4f
.4byte .LFB124
.4byte .LFE124-.LFB124
.uleb128 0x1
.byte 0x9c
.4byte 0x1330
.uleb128 0x27
.4byte .LASF122
.byte 0x1
.2byte 0x138
.uleb128 0x53
.4byte 0x72f
.4byte .LBB162
.4byte .LBE162-.LBB162
.byte 0x1
.2byte 0x12d
.4byte 0x120d
.uleb128 0x35
.4byte 0x73f
.4byte .LLST56
.uleb128 0x2d
.4byte .LVL131
.4byte 0x140f
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC7
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x72f
.4byte .LBB164
.4byte .LBE164-.LBB164
.byte 0x1
.2byte 0x12f
.4byte 0x123e
.uleb128 0x35
.4byte 0x73f
.4byte .LLST57
.uleb128 0x2d
.4byte .LVL133
.4byte 0x140f
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC8
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x581
.4byte .LBB166
.4byte .LBE166-.LBB166
.byte 0x1
.2byte 0x129
.4byte 0x1289
.uleb128 0x35
.4byte 0x59c
.4byte .LLST58
.uleb128 0x35
.4byte 0x591
.4byte .LLST59
.uleb128 0x2d
.4byte .LVL138
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x581
.4byte .LBB168
.4byte .LBE168-.LBB168
.byte 0x1
.2byte 0x132
.4byte 0x12d5
.uleb128 0x2b
.4byte 0x59c
.uleb128 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.uleb128 0x2b
.4byte 0x591
.uleb128 0x1
.byte 0x6e
.uleb128 0x2d
.4byte .LVL142
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL129
.4byte 0x1372
.uleb128 0x3e
.4byte .LVL132
.4byte 0x5eb
.uleb128 0x3e
.4byte .LVL134
.4byte 0xf47
.uleb128 0x3e
.4byte .LVL135
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL136
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL137
.4byte 0x1393
.4byte 0x1316
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL140
.4byte 0x1388
.uleb128 0x2d
.4byte .LVL141
.4byte 0x1393
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x54
.4byte .LASF123
.byte 0xb
.byte 0xa8
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF124
.byte 0xb
.byte 0xa9
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF125
.byte 0xb
.byte 0xaa
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF126
.byte 0x2
.byte 0x33
.4byte 0x38b
.uleb128 0x55
.4byte .LASF127
.4byte .LASF127
.byte 0xf
.byte 0x45
.uleb128 0x55
.4byte .LASF128
.4byte .LASF128
.byte 0x4
.byte 0x55
.uleb128 0x55
.4byte .LASF129
.4byte .LASF129
.byte 0x2
.byte 0x6a
.uleb128 0x55
.4byte .LASF130
.4byte .LASF130
.byte 0x2
.byte 0x6f
.uleb128 0x55
.4byte .LASF131
.4byte .LASF131
.byte 0x10
.byte 0x32
.uleb128 0x56
.4byte .LASF132
.4byte .LASF132
.byte 0x11
.2byte 0x198
.uleb128 0x56
.4byte .LASF85
.4byte .LASF85
.byte 0x12
.2byte 0x203
.uleb128 0x57
.4byte .LASF90
.4byte .LASF90
.uleb128 0x55
.4byte .LASF133
.4byte .LASF133
.byte 0x13
.byte 0xe9
.uleb128 0x55
.4byte .LASF134
.4byte .LASF134
.byte 0x13
.byte 0xfa
.uleb128 0x57
.4byte .LASF135
.4byte .LASF135
.uleb128 0x55
.4byte .LASF136
.4byte .LASF136
.byte 0x14
.byte 0x41
.uleb128 0x56
.4byte .LASF137
.4byte .LASF137
.byte 0x12
.2byte 0x1d2
.uleb128 0x56
.4byte .LASF138
.4byte .LASF138
.byte 0x12
.2byte 0x1e3
.uleb128 0x55
.4byte .LASF139
.4byte .LASF139
.byte 0x14
.byte 0x7a
.uleb128 0x58
.uleb128 0xc
.byte 0x9e
.uleb128 0xa
.byte 0x73
.byte 0x70
.byte 0x69
.byte 0x6e
.byte 0x6c
.byte 0x6f
.byte 0x63
.byte 0x6b
.byte 0xa
.byte 0
.uleb128 0x59
.4byte .LASF145
.4byte .LASF146
.byte 0x15
.byte 0
.4byte .LASF145
.uleb128 0x58
.uleb128 0xf
.byte 0x9e
.uleb128 0xd
.byte 0x70
.byte 0x65
.byte 0x72
.byte 0x63
.byte 0x70
.byte 0x75
.byte 0x5f
.byte 0x6c
.byte 0x69
.byte 0x73
.byte 0x74
.byte 0xa
.byte 0
.byte 0
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x25
.uleb128 0xe
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1b
.uleb128 0xe
.uleb128 0x55
.uleb128 0x17
.uleb128 0x11
.uleb128 0x1
.uleb128 0x10
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x3
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.byte 0
.byte 0
.uleb128 0x4
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x5
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x6
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x7
.uleb128 0x13
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x8
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x9
.uleb128 0x1
.byte 0x1
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xa
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xb
.uleb128 0x26
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xc
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xd
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xe
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xf
.uleb128 0x17
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x10
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x11
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x12
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x13
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0x6
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x14
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x15
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x16
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x17
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x18
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x19
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1a
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1b
.uleb128 0x2e
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1c
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1d
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1c
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x1e
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1f
.uleb128 0x18
.byte 0
.byte 0
.byte 0
.uleb128 0x20
.uleb128 0x37
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x21
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x22
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x23
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x24
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x25
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x26
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x27
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x28
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x29
.uleb128 0xb
.byte 0x1
.byte 0
.byte 0
.uleb128 0x2a
.uleb128 0x2e
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2b
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2c
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2d
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2e
.uleb128 0x410a
.byte 0
.uleb128 0x2
.uleb128 0x18
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2f
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x30
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x31
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x32
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x33
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x34
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x35
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x36
.uleb128 0xa
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.byte 0
.byte 0
.uleb128 0x37
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x38
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x39
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x3a
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3b
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3c
.uleb128 0x410a
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x3d
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3e
.uleb128 0x4109
.byte 0
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3f
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x40
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x41
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x42
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x43
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x44
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x45
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x46
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x47
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x48
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x49
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4a
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x4b
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4c
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4d
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4e
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x4f
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x50
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x51
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x52
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x53
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x54
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0x55
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x56
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x57
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x58
.uleb128 0x36
.byte 0
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x59
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x6e
.uleb128 0xe
.byte 0
.byte 0
.byte 0
.section .debug_loc,"",@progbits
.Ldebug_loc0:
.LLST0:
.4byte .LVL2
.4byte .LVL5
.2byte 0x1
.byte 0x53
.4byte .LVL5
.4byte .LFE115
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST1:
.4byte .LVL3
.4byte .LVL4
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST2:
.4byte .LVL3
.4byte .LVL4
.2byte 0x2
.byte 0x31
.byte 0x9f
.4byte 0
.4byte 0
.LLST3:
.4byte .LVL3
.4byte .LVL4
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST4:
.4byte .LVL3
.4byte .LVL4
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST5:
.4byte .LVL6
.4byte .LVL8-1
.2byte 0x1
.byte 0x53
.4byte .LVL8-1
.4byte .LVL18
.2byte 0x1
.byte 0x6f
.4byte .LVL18
.4byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL19
.4byte .LVL22
.2byte 0x1
.byte 0x6f
.4byte .LVL22
.4byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL25
.4byte .LVL27
.2byte 0x1
.byte 0x6f
.4byte .LVL27
.4byte .LFE117
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.4byte 0
.4byte 0
.LLST6:
.4byte .LVL7
.4byte .LVL8-1
.2byte 0x1
.byte 0x53
.4byte .LVL8-1
.4byte .LVL18
.2byte 0x1
.byte 0x6f
.4byte .LVL18
.4byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL19
.4byte .LVL22
.2byte 0x1
.byte 0x6f
.4byte .LVL22
.4byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL25
.4byte .LVL27
.2byte 0x1
.byte 0x6f
.4byte .LVL27
.4byte .LFE117
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.4byte 0
.4byte 0
.LLST7:
.4byte .LVL9
.4byte .LVL10
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL10
.4byte .LVL16
.2byte 0x1
.byte 0x6e
.4byte .LVL19
.4byte .LVL20
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST8:
.4byte .LVL11
.4byte .LVL12
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST9:
.4byte .LVL13
.4byte .LVL14
.2byte 0x1
.byte 0x6f
.4byte .LVL19
.4byte .LVL20
.2byte 0x1
.byte 0x6f
.4byte 0
.4byte 0
.LLST10:
.4byte .LVL23
.4byte .LVL24
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST11:
.4byte .LVL23
.4byte .LVL24
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST12:
.4byte .LVL28
.4byte .LVL29
.2byte 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.4byte 0
.4byte 0
.LLST13:
.4byte .LVL28
.4byte .LVL29
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST14:
.4byte .LVL31
.4byte .LVL33-1
.2byte 0x1
.byte 0x53
.4byte .LVL33-1
.4byte .LFE116
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST15:
.4byte .LVL31
.4byte .LVL32
.2byte 0x1
.byte 0x54
.4byte .LVL32
.4byte .LFE116
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST16:
.4byte .LVL36
.4byte .LVL37
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST17:
.4byte .LVL41
.4byte .LVL42
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte .LVL43
.4byte .LVL44
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte .LVL47
.4byte .LVL48-1
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte 0
.4byte 0
.LLST18:
.4byte .LVL36
.4byte .LVL39
.2byte 0x2
.byte 0x8c
.sleb128 0
.4byte .LVL39
.4byte .LVL45
.2byte 0x3
.byte 0x8c
.sleb128 -796
.4byte .LVL45
.4byte .LVL46
.2byte 0x2
.byte 0x71
.sleb128 8
.4byte .LVL47
.4byte .LFE118
.2byte 0x3
.byte 0x8c
.sleb128 -796
.4byte 0
.4byte 0
.LLST19:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST20:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x54
.4byte 0
.4byte 0
.LLST21:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x57
.4byte 0
.4byte 0
.LLST22:
.4byte .LVL53
.4byte .LVL54
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST23:
.4byte .LVL55
.4byte .LVL58
.2byte 0x1
.byte 0x53
.4byte .LVL58
.4byte .LVL59
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x1
.byte 0x53
.4byte .LVL60
.4byte .LFE120
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST24:
.4byte .LVL55
.4byte .LVL64-1
.2byte 0x1
.byte 0x54
.4byte .LVL64-1
.4byte .LFE120
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST25:
.4byte .LVL56
.4byte .LVL58
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL58
.4byte .LVL59
.2byte 0x9
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL60
.4byte .LVL61
.2byte 0x9
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST26:
.4byte .LVL56
.4byte .LVL62
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL62
.4byte .LVL63
.2byte 0x4
.byte 0x71
.sleb128 -72
.byte 0x9f
.4byte .LVL63
.4byte .LVL64-1
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL64-1
.4byte .LFE120
.2byte 0x4
.byte 0x91
.sleb128 -72
.byte 0x9f
.4byte 0
.4byte 0
.LLST27:
.4byte .LVL56
.4byte .LVL61
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST28:
.4byte .LVL56
.4byte .LVL57
.2byte 0x1
.byte 0x5a
.4byte .LVL59
.4byte .LVL60
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST29:
.4byte .LVL56
.4byte .LVL57
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte 0
.4byte 0
.LLST30:
.4byte .LVL56
.4byte .LVL57
.2byte 0x2
.byte 0x34
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x2
.byte 0x34
.byte 0x9f
.4byte 0
.4byte 0
.LLST31:
.4byte .LVL56
.4byte .LVL57
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST32:
.4byte .LVL56
.4byte .LVL57
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST33:
.4byte .LVL65
.4byte .LVL66-1
.2byte 0x1
.byte 0x53
.4byte .LVL66-1
.4byte .LVL74
.2byte 0x1
.byte 0x6d
.4byte .LVL74
.4byte .LVL77
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL77
.4byte .LFE122
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST34:
.4byte .LVL67
.4byte .LVL71
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL71
.4byte .LVL72
.2byte 0x9
.byte 0xc
.4byte 0x186a1
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL72
.4byte .LVL76
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL81
.4byte .LVL84
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte 0
.4byte 0
.LLST35:
.4byte .LVL65
.4byte .LVL66-1
.2byte 0x1
.byte 0x53
.4byte .LVL66-1
.4byte .LVL74
.2byte 0x1
.byte 0x6d
.4byte .LVL74
.4byte .LVL77
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL77
.4byte .LFE122
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST36:
.4byte .LVL69
.4byte .LVL70-1
.2byte 0x1
.byte 0x53
.4byte .LVL70-1
.4byte .LVL75
.2byte 0x1
.byte 0x6e
.4byte .LVL81
.4byte .LVL82
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST37:
.4byte .LVL77
.4byte .LVL81
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST38:
.4byte .LVL79
.4byte .LVL80
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST39:
.4byte .LVL79
.4byte .LVL80
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST40:
.4byte .LVL85
.4byte .LVL86
.2byte 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.4byte 0
.4byte 0
.LLST41:
.4byte .LVL85
.4byte .LVL86
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST42:
.4byte .LVL88
.4byte .LVL91
.2byte 0x1
.byte 0x53
.4byte .LVL91
.4byte .LFE121
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST43:
.4byte .LVL88
.4byte .LVL89
.2byte 0x1
.byte 0x54
.4byte .LVL89
.4byte .LFE121
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST44:
.4byte .LVL95
.4byte .LVL96
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL96
.4byte .LVL102
.2byte 0x1
.byte 0x68
.4byte .LVL102
.4byte .LVL103
.2byte 0x3
.byte 0x88
.sleb128 1
.byte 0x9f
.4byte .LVL103
.4byte .LVL104
.2byte 0x1
.byte 0x68
.4byte .LVL107
.4byte .LVL108
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.4byte .LVL108
.4byte .LVL118
.2byte 0x1
.byte 0x6b
.4byte .LVL118
.4byte .LVL119
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.4byte .LVL119
.4byte .LVL123
.2byte 0x1
.byte 0x6b
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x68
.4byte .LVL126
.4byte .LFE123
.2byte 0x1
.byte 0x6b
.4byte 0
.4byte 0
.LLST45:
.4byte .LVL97
.4byte .LVL100
.2byte 0x1
.byte 0x6e
.4byte .LVL100
.4byte .LVL101
.2byte 0x3
.byte 0x8e
.sleb128 1
.byte 0x9f
.4byte .LVL101
.4byte .LVL102
.2byte 0x6
.byte 0x73
.sleb128 0
.byte 0x6
.byte 0x23
.uleb128 0x1
.byte 0x9f
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST46:
.4byte .LVL92
.4byte .LVL107
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte .LVL107
.4byte .LVL110
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL112
.4byte .LVL114
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL115
.4byte .LVL120
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL124
.4byte .LVL126
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte 0
.4byte 0
.LLST47:
.4byte .LVL92
.4byte .LVL96
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte .LVL96
.4byte .LVL98
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte .LVL102
.4byte .LVL122
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte .LVL126
.4byte .LFE123
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte 0
.4byte 0
.LLST48:
.4byte .LVL92
.4byte .LVL94
.2byte 0x4
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST49:
.4byte .LVL92
.4byte .LVL94
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST50:
.4byte .LVL92
.4byte .LVL93
.2byte 0x7
.byte 0x87
.sleb128 0
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte .LVL93
.4byte .LVL94
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST51:
.4byte .LVL96
.4byte .LVL103
.2byte 0x1
.byte 0x68
.4byte .LVL103
.4byte .LVL121
.2byte 0x3
.byte 0x88
.sleb128 -1
.byte 0x9f
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x68
.4byte .LVL126
.4byte .LFE123
.2byte 0x3
.byte 0x88
.sleb128 -1
.byte 0x9f
.4byte 0
.4byte 0
.LLST52:
.4byte .LVL99
.4byte .LVL102
.2byte 0x1
.byte 0x53
.4byte .LVL124
.4byte .LVL125
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST53:
.4byte .LVL107
.4byte .LVL108
.2byte 0x1
.byte 0x6b
.4byte .LVL108
.4byte .LVL109
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.4byte .LVL109
.4byte .LVL119
.2byte 0x1
.byte 0x6b
.4byte .LVL119
.4byte .LVL120
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.4byte 0
.4byte 0
.LLST54:
.4byte .LVL110
.4byte .LVL113
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte .LVL116
.4byte .LVL120
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST55:
.4byte .LVL111
.4byte .LVL113
.2byte 0x1
.byte 0x53
.4byte .LVL117
.4byte .LVL120
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST56:
.4byte .LVL130
.4byte .LVL131
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+5121
.sleb128 0
.4byte 0
.4byte 0
.LLST57:
.4byte .LVL132
.4byte .LVL133
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+5150
.sleb128 0
.4byte 0
.4byte 0
.LLST58:
.4byte .LVL137
.4byte .LVL139
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST59:
.4byte .LVL137
.4byte .LVL139
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.section .debug_aranges,"",@progbits
.4byte 0x24
.2byte 0x2
.4byte .Ldebug_info0
.byte 0x4
.byte 0
.2byte 0
.2byte 0
.4byte .Ltext0
.4byte .Letext0-.Ltext0
.4byte .LFB124
.4byte .LFE124-.LFB124
.4byte 0
.4byte 0
.section .debug_ranges,"",@progbits
.Ldebug_ranges0:
.4byte .LBB72
.4byte .LBE72
.4byte .LBB85
.4byte .LBE85
.4byte 0
.4byte 0
.4byte .LBB73
.4byte .LBE73
.4byte .LBB81
.4byte .LBE81
.4byte .LBB83
.4byte .LBE83
.4byte 0
.4byte 0
.4byte .LBB77
.4byte .LBE77
.4byte .LBB82
.4byte .LBE82
.4byte .LBB84
.4byte .LBE84
.4byte 0
.4byte 0
.4byte .LBB86
.4byte .LBE86
.4byte .LBB90
.4byte .LBE90
.4byte .LBB91
.4byte .LBE91
.4byte 0
.4byte 0
.4byte .LBB102
.4byte .LBE102
.4byte .LBB106
.4byte .LBE106
.4byte .LBB107
.4byte .LBE107
.4byte 0
.4byte 0
.4byte .LBB110
.4byte .LBE110
.4byte .LBB117
.4byte .LBE117
.4byte 0
.4byte 0
.4byte .LBB111
.4byte .LBE111
.4byte .LBB114
.4byte .LBE114
.4byte 0
.4byte 0
.4byte .LBB118
.4byte .LBE118
.4byte .LBB127
.4byte .LBE127
.4byte .LBB128
.4byte .LBE128
.4byte 0
.4byte 0
.4byte .LBB119
.4byte .LBE119
.4byte .LBB123
.4byte .LBE123
.4byte .LBB126
.4byte .LBE126
.4byte 0
.4byte 0
.4byte .LBB146
.4byte .LBE146
.4byte .LBB149
.4byte .LBE149
.4byte 0
.4byte 0
.4byte .LBB151
.4byte .LBE151
.4byte .LBB152
.4byte .LBE152
.4byte .LBB161
.4byte .LBE161
.4byte 0
.4byte 0
.4byte .LBB155
.4byte .LBE155
.4byte .LBB159
.4byte .LBE159
.4byte .LBB160
.4byte .LBE160
.4byte 0
.4byte 0
.4byte .Ltext0
.4byte .Letext0
.4byte .LFB124
.4byte .LFE124
.4byte 0
.4byte 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF84:
.string "newv"
.LASF102:
.string "voffp"
.LASF17:
.string "pthread_t"
.LASF42:
.string "_shortbuf"
.LASF143:
.string "_IO_lock_t"
.LASF125:
.string "stderr"
.LASF146:
.string "__builtin_puts"
.LASF31:
.string "_IO_buf_end"
.LASF69:
.string "flags"
.LASF83:
.string "expect"
.LASF126:
.string "__rseq_abi"
.LASF29:
.string "_IO_write_end"
.LASF2:
.string "unsigned int"
.LASF79:
.string "next"
.LASF23:
.string "_flags"
.LASF81:
.string "head"
.LASF134:
.string "pthread_join"
.LASF111:
.string "_cpu"
.LASF132:
.string "strerror"
.LASF71:
.string "percpu_lock"
.LASF35:
.string "_markers"
.LASF133:
.string "pthread_create"
.LASF122:
.string "error"
.LASF94:
.string "rseq_percpu_unlock"
.LASF131:
.string "__errno_location"
.LASF104:
.string "list"
.LASF99:
.string "rseq_cmpeqv_storev"
.LASF114:
.string "this_cpu_list_pop"
.LASF18:
.string "uint32_t"
.LASF124:
.string "stdout"
.LASF34:
.string "_IO_save_end"
.LASF137:
.string "malloc"
.LASF93:
.string "__len"
.LASF73:
.string "count"
.LASF15:
.string "__cpu_mask"
.LASF109:
.string "rseq_this_cpu_lock"
.LASF7:
.string "long long unsigned int"
.LASF33:
.string "_IO_backup_base"
.LASF44:
.string "_offset"
.LASF91:
.string "__dest"
.LASF89:
.string "fprintf"
.LASF37:
.string "_fileno"
.LASF116:
.string "this_cpu_list_push"
.LASF85:
.string "abort"
.LASF145:
.string "puts"
.LASF144:
.string "rseq_cpu_start"
.LASF14:
.string "size_t"
.LASF115:
.string "offset"
.LASF130:
.string "rseq_unregister_current_thread"
.LASF26:
.string "_IO_read_base"
.LASF123:
.string "stdin"
.LASF54:
.string "_next"
.LASF138:
.string "free"
.LASF56:
.string "_pos"
.LASF103:
.string "load"
.LASF88:
.string "__fmt"
.LASF120:
.string "__cpu"
.LASF112:
.string "targetptr"
.LASF16:
.string "cpu_set_t"
.LASF87:
.string "__stream"
.LASF117:
.string "test_percpu_list"
.LASF13:
.string "char"
.LASF128:
.string "__fprintf_chk"
.LASF50:
.string "_mode"
.LASF53:
.string "_IO_marker"
.LASF95:
.string "test_percpu_spinlock"
.LASF24:
.string "_IO_read_ptr"
.LASF78:
.string "data"
.LASF63:
.string "ptr32"
.LASF59:
.string "__u32"
.LASF118:
.string "expected_sum"
.LASF86:
.string "cmpfail"
.LASF27:
.string "_IO_write_base"
.LASF6:
.string "long long int"
.LASF108:
.string "printf"
.LASF75:
.string "lock"
.LASF32:
.string "_IO_save_base"
.LASF62:
.string "padding"
.LASF90:
.string "memset"
.LASF8:
.string "__quad_t"
.LASF67:
.string "cpu_id"
.LASF45:
.string "__pad1"
.LASF46:
.string "__pad2"
.LASF47:
.string "__pad3"
.LASF48:
.string "__pad4"
.LASF49:
.string "__pad5"
.LASF65:
.string "rseq"
.LASF129:
.string "rseq_register_current_thread"
.LASF110:
.string "test_percpu_spinlock_thread"
.LASF41:
.string "_vtable_offset"
.LASF66:
.string "cpu_id_start"
.LASF72:
.string "test_data_entry"
.LASF58:
.string "long double"
.LASF20:
.string "intptr_t"
.LASF140:
.string "GNU C11 5.4.0 20160609 -Asystem=linux -Asystem=unix -Asystem=posix -msecure-plt -g -O2 -fstack-protector-strong"
.LASF97:
.string "num_threads"
.LASF64:
.string "ptr64"
.LASF60:
.string "__u64"
.LASF92:
.string "__ch"
.LASF25:
.string "_IO_read_end"
.LASF101:
.string "expectnot"
.LASF5:
.string "short int"
.LASF10:
.string "long int"
.LASF135:
.string "__stack_chk_fail"
.LASF70:
.string "percpu_lock_entry"
.LASF105:
.string "node"
.LASF19:
.string "uint64_t"
.LASF76:
.string "reps"
.LASF113:
.string "newval"
.LASF77:
.string "percpu_list_node"
.LASF98:
.string "test_threads"
.LASF43:
.string "_lock"
.LASF119:
.string "allowed_cpus"
.LASF12:
.string "sizetype"
.LASF3:
.string "long unsigned int"
.LASF22:
.string "__bits"
.LASF39:
.string "_old_offset"
.LASF82:
.string "percpu_list"
.LASF52:
.string "_IO_FILE"
.LASF100:
.string "rseq_cmpnev_storeoffp_load"
.LASF127:
.string "__assert_fail"
.LASF141:
.string "basic_percpu_ops_test.c"
.LASF0:
.string "unsigned char"
.LASF55:
.string "_sbuf"
.LASF28:
.string "_IO_write_ptr"
.LASF80:
.string "percpu_list_entry"
.LASF142:
.string "/home/compudj/git/librseq/tests"
.LASF136:
.string "sched_yield"
.LASF74:
.string "spinlock_test_data"
.LASF139:
.string "sched_getaffinity"
.LASF9:
.string "__off_t"
.LASF4:
.string "signed char"
.LASF57:
.string "off_t"
.LASF1:
.string "short unsigned int"
.LASF121:
.string "main"
.LASF96:
.string "__PRETTY_FUNCTION__"
.LASF61:
.string "double"
.LASF106:
.string "test_percpu_list_thread"
.LASF36:
.string "_chain"
.LASF107:
.string "__percpu_list_pop"
.LASF21:
.string "FILE"
.LASF38:
.string "_flags2"
.LASF68:
.string "rseq_cs"
.LASF40:
.string "_cur_column"
.LASF11:
.string "__off64_t"
.LASF51:
.string "_unused2"
.LASF30:
.string "_IO_buf_base"
.ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609"
.section .note.GNU-stack,"",@progbits
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Michael Ellerman @ 2020-07-08 12:27 UTC (permalink / raw)
To: Segher Boessenkool, Mathieu Desnoyers
Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <20200708005922.GW3598@gate.crashing.org>
[-- Attachment #1: Type: text/plain, Size: 6822 bytes --]
Segher Boessenkool <segher@kernel.crashing.org> writes:
> Hi!
>
> On Tue, Jul 07, 2020 at 03:17:10PM -0400, Mathieu Desnoyers wrote:
>> I'm trying to build librseq at:
>>
>> https://git.kernel.org/pub/scm/libs/librseq/librseq.git
>>
>> on powerpc, and I get these errors when building the rseq basic
>> test mirrored from the kernel selftests code:
>>
>> /tmp/ccieEWxU.s: Assembler messages:
>> /tmp/ccieEWxU.s:118: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:118: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:121: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:121: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:626: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:626: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:629: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:629: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:735: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:735: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:738: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:738: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:741: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:741: Error: junk at end of line: `,8'
>> Makefile:581: recipe for target 'basic_percpu_ops_test.o' failed
>
> You'll have to show the actual failing machine code, and with enough
> context that we can relate this to the source code.
>
> -save-temps helps, or use -S instead of -c, etc.
Attached below.
$ gcc -Wall basic_percpu_ops_test.s
basic_percpu_ops_test.s: Assembler messages:
basic_percpu_ops_test.s:133: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:133: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:133: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:136: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:136: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:136: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:818: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:818: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:818: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:821: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:821: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:821: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:955: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:955: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:955: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:958: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:958: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:958: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:961: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:961: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:961: Error: junk at end of line: `,8'
$ sed '133!d' basic_percpu_ops_test.s
ld %r17, 3,8
$ sed '136!d' basic_percpu_ops_test.s
std 7, 3,8
$ sed '818!d' basic_percpu_ops_test.s
ld %r17, 3,8
$ sed '821!d' basic_percpu_ops_test.s
std 4, 3,8
$ sed '955!d' basic_percpu_ops_test.s
ld %r17, 3,8
$ sed '958!d' basic_percpu_ops_test.s
ld %r17, 3,8
$ sed '961!d' basic_percpu_ops_test.s
std %r17, 3,8
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.quad 1f, (2f - 1f), 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.quad 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.quad 1f, .L8
.popsection
lis %r17, (3b)@highest
ori %r17, %r17, (3b)@higher
rldicr %r17, %r17, 32, 31
oris %r17, %r17, (3b)@high
ori %r17, %r17, (3b)@l
std %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
ld %r17, 3,8 <--- line 133
cmpd cr7, %r17, 6
bne- cr7, .L8
std 7, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L8
.popsection
Tracking back to the source is "interesting", given there's a lot of
macros involved :)
I think that's from:
#define LOAD_WORD "ld "
#define RSEQ_ASM_OP_CMPEQ(var, expect, label) \
LOAD_WORD "%%r17, %[" __rseq_str(var) "]\n\t" \
CMP_WORD "cr7, %%r17, %[" __rseq_str(expect) "]\n\t" \
"bne- cr7, " __rseq_str(label) "\n\t"
static inline __attribute__((always_inline))
int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu)
{
RSEQ_INJECT_C(9)
__asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(3, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
#ifdef RSEQ_COMPARE_TWICE
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[error1])
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[error2])
#endif
/* Start rseq by storing table entry pointer into rseq_cs. */
RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs)
/* cmp cpuid */
RSEQ_ASM_CMP_CPU_ID(cpu_id, current_cpu_id, 4f)
RSEQ_INJECT_ASM(3)
/* cmp @v equal to @expect */
RSEQ_ASM_OP_CMPEQ(v, expect, %l[cmpfail]) <----
RSEQ_INJECT_ASM(4)
#ifdef RSEQ_COMPARE_TWICE
/* cmp cpuid */
RSEQ_ASM_CMP_CPU_ID(cpu_id, current_cpu_id, %l[error1])
/* cmp @v equal to @expect */
RSEQ_ASM_OP_CMPEQ(v, expect, %l[error2])
#endif
/* final store */
RSEQ_ASM_OP_FINAL_STORE(newv, v, 2)
RSEQ_INJECT_ASM(5)
RSEQ_ASM_DEFINE_ABORT(4, abort)
: /* gcc asm goto does not allow outputs */
: [cpu_id] "r" (cpu),
[current_cpu_id] "m" (__rseq_abi.cpu_id),
[rseq_cs] "m" (__rseq_abi.rseq_cs),
[v] "m" (*v), <----
[expect] "r" (expect),
[newv] "r" (newv)
RSEQ_INJECT_INPUT
: "memory", "cc", "r17"
RSEQ_INJECT_CLOBBER
: abort, cmpfail
#ifdef RSEQ_COMPARE_TWICE
, error1, error2
#endif
);
cheers
[-- Attachment #2: basic_percpu_ops_test.s --]
[-- Type: text/plain, Size: 121743 bytes --]
.file "basic_percpu_ops_test.c"
.abiversion 2
.section ".text"
.Ltext0:
.section .rodata.str1.8,"aMS",@progbits,1
.align 3
.LC0:
.string "basic_percpu_ops_test.c"
.align 3
.LC1:
.string "lock->c[cpu].v == 1"
.section ".text"
.align 2
.p2align 4,,15
.type rseq_percpu_unlock.part.0, @function
rseq_percpu_unlock.part.0:
.LFB111:
.file 1 "basic_percpu_ops_test.c"
.loc 1 72 6 view -0
.cfi_startproc
.LCF0:
0: addis 2,12,.TOC.-.LCF0@ha
addi 2,2,.TOC.-.LCF0@l
.localentry rseq_percpu_unlock.part.0,.-rseq_percpu_unlock.part.0
mflr 0
std 0,16(1)
stdu 1,-32(1)
.cfi_def_cfa_offset 32
.cfi_offset 65, 16
.LVL0:
.loc 1 74 2 view .LVU1
li 5,74
addis 6,2,.LANCHOR0@toc@ha
addis 4,2,.LC0@toc@ha
addis 3,2,.LC1@toc@ha
addi 6,6,.LANCHOR0@toc@l
addi 4,4,.LC0@toc@l
addi 3,3,.LC1@toc@l
bl __assert_fail
nop
.LVL1:
.long 0
.byte 0,0,0,1,128,0,0,0
.cfi_endproc
.LFE111:
.size rseq_percpu_unlock.part.0,.-rseq_percpu_unlock.part.0
.align 2
.p2align 4,,15
.globl rseq_this_cpu_lock
.type rseq_this_cpu_lock, @function
rseq_this_cpu_lock:
.LVL2:
.LFB101:
.loc 1 51 1 view -0
.cfi_startproc
.LCF1:
0: addis 2,12,.TOC.-.LCF1@ha
addi 2,2,.TOC.-.LCF1@l
.localentry rseq_this_cpu_lock,.-rseq_this_cpu_lock
.loc 1 51 1 is_stmt 0 view .LVU3
std 17,-120(1)
.cfi_offset 17, -120
addis 9,2,__rseq_abi@got@tprel@ha
.LBB78:
.LBB79:
.LBB80:
.file 2 "../include/rseq/rseq-ppc.h"
.loc 2 211 2 view .LVU4
li 6,0
ld 9,__rseq_abi@got@tprel@l(9)
li 7,1
.LBE80:
.LBE79:
.LBB82:
.LBB83:
.file 3 "../include/rseq/rseq.h"
.loc 3 142 9 view .LVU5
add 9,9,__rseq_abi@tls
.L5:
.L8:
.L6:
.LBE83:
.LBE82:
.LBE78:
.loc 1 52 2 is_stmt 1 view .LVU6
.loc 1 54 2 view .LVU7
.LBB87:
.loc 1 55 3 view .LVU8
.loc 1 57 3 view .LVU9
.LBB85:
.LBI82:
.loc 3 140 24 view .LVU10
.LBB84:
.loc 3 142 2 view .LVU11
.loc 3 142 9 is_stmt 0 view .LVU12
lwz 10,0(9)
.LBE84:
.LBE85:
.loc 1 57 7 view .LVU13
extsw 10,10
.LVL3:
.loc 1 58 3 is_stmt 1 view .LVU14
.LBB86:
.LBI79:
.loc 2 207 5 view .LVU15
.LBB81:
.loc 2 211 2 view .LVU16
sldi 8,10,7
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.quad 1f, (2f - 1f), 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.quad 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.quad 1f, .L8
.popsection
lis %r17, (3b)@highest
ori %r17, %r17, (3b)@higher
rldicr %r17, %r17, 32, 31
oris %r17, %r17, (3b)@high
ori %r17, %r17, (3b)@l
std %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
ld %r17, 3,8
cmpd cr7, %r17, 6
bne- cr7, .L8
std 7, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L8
.popsection
# 0 "" 2
.LVL4:
.loc 2 211 2 is_stmt 0 view .LVU17
#NO_APP
.LBE81:
.LBE86:
.loc 1 60 3 is_stmt 1 view .LVU18
.LBE87:
.loc 1 68 2 view .LVU19
#APP
# 68 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 69 2 view .LVU20
.loc 1 70 1 is_stmt 0 view .LVU21
#NO_APP
ld 17,-120(1)
mr 3,10
.LVL5:
.loc 1 70 1 view .LVU22
.cfi_restore 17
blr
.long 0
.byte 0,0,0,0,0,15,0,0
.cfi_endproc
.LFE101:
.size rseq_this_cpu_lock,.-rseq_this_cpu_lock
.section .rodata.str1.8
.align 3
.LC3:
.string "Error: rseq_register_current_thread(...) failed(%d): %s\n"
.align 3
.LC4:
.string "Error: rseq_unregister_current_thread(...) failed(%d): %s\n"
.section ".toc","aw"
.align 3
.LC2:
.quad stderr
.section ".text"
.align 2
.p2align 4,,15
.globl test_percpu_spinlock_thread
.type test_percpu_spinlock_thread, @function
test_percpu_spinlock_thread:
.LVL6:
.LFB103:
.loc 1 83 1 is_stmt 1 view -0
.cfi_startproc
.LCF2:
0: addis 2,12,.TOC.-.LCF2@ha
addi 2,2,.TOC.-.LCF2@l
.localentry test_percpu_spinlock_thread,.-test_percpu_spinlock_thread
.loc 1 83 1 is_stmt 0 view .LVU24
mflr 0
std 28,-32(1)
std 29,-24(1)
std 30,-16(1)
std 31,-8(1)
std 0,16(1)
stdu 1,-144(1)
.cfi_def_cfa_offset 144
.cfi_offset 65, 16
.cfi_offset 28, -32
.cfi_offset 29, -24
.cfi_offset 30, -16
.cfi_offset 31, -8
.loc 1 84 2 is_stmt 1 view .LVU25
.loc 1 83 1 is_stmt 0 view .LVU26
mr 31,3
.LVL7:
.loc 1 85 2 is_stmt 1 view .LVU27
.loc 1 87 2 view .LVU28
.loc 1 87 6 is_stmt 0 view .LVU29
bl rseq_register_current_thread
nop
.LVL8:
.loc 1 87 5 view .LVU30
mr. 30,3
bne 0,.L11
.LVL9:
.LBB98:
.LBB99:
.loc 1 92 14 is_stmt 1 view .LVU31
.loc 1 92 22 is_stmt 0 view .LVU32
addis 29,31,0x4
.LBB100:
.LBB101:
.loc 1 79 2 view .LVU33
li 28,0
.LBE101:
.LBE100:
.loc 1 92 2 view .LVU34
lwz 9,0(29)
cmpwi 0,9,0
ble 0,.L17
.LVL10:
.p2align 4,,15
.L16:
.loc 1 93 3 is_stmt 1 view .LVU35
.loc 1 93 9 is_stmt 0 view .LVU36
mr 3,31
bl rseq_this_cpu_lock
.LVL11:
.loc 1 94 3 is_stmt 1 view .LVU37
sldi 3,3,7
.LVL12:
.loc 1 94 3 is_stmt 0 view .LVU38
add 9,31,3
.loc 1 94 21 view .LVU39
addis 9,9,0x2
ld 10,0(9)
addi 10,10,1
std 10,0(9)
.loc 1 95 3 is_stmt 1 view .LVU40
.LVL13:
.LBB105:
.LBI100:
.loc 1 72 6 view .LVU41
.LBB102:
.loc 1 74 2 view .LVU42
ldx 9,31,3
cmpdi 0,9,1
bne 0,.L22
.loc 1 79 2 view .LVU43
.loc 1 79 2 view .LVU44
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 79 2 view .LVU45
#NO_APP
.LBE102:
.LBE105:
.loc 1 92 2 is_stmt 0 view .LVU46
lwz 9,0(29)
.loc 1 92 31 view .LVU47
addi 10,30,1
.LBB106:
.LBB103:
.loc 1 79 2 view .LVU48
stdx 28,31,3
.loc 1 79 2 is_stmt 1 view .LVU49
.LVL14:
.loc 1 79 2 is_stmt 0 view .LVU50
.LBE103:
.LBE106:
.loc 1 92 30 is_stmt 1 view .LVU51
.loc 1 92 31 is_stmt 0 view .LVU52
extsw 30,10
.LVL15:
.loc 1 92 14 is_stmt 1 view .LVU53
.loc 1 92 2 is_stmt 0 view .LVU54
cmpw 0,9,10
bgt 0,.L16
.LVL16:
.L17:
.loc 1 97 2 is_stmt 1 view .LVU55
.loc 1 97 6 is_stmt 0 view .LVU56
bl rseq_unregister_current_thread
nop
.LVL17:
.loc 1 97 5 view .LVU57
cmpdi 0,3,0
bne 0,.L23
.LBE99:
.LBE98:
.loc 1 103 2 is_stmt 1 discriminator 1 view .LVU58
.loc 1 104 1 is_stmt 0 discriminator 1 view .LVU59
addi 1,1,144
.cfi_remember_state
.cfi_def_cfa_offset 0
ld 0,16(1)
ld 28,-32(1)
ld 29,-24(1)
ld 30,-16(1)
ld 31,-8(1)
.LVL18:
.loc 1 104 1 discriminator 1 view .LVU60
mtlr 0
.cfi_restore 65
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
blr
.LVL19:
.L22:
.cfi_restore_state
.LBB114:
.LBB112:
.LBB107:
.LBB104:
.loc 1 104 1 discriminator 1 view .LVU61
bl rseq_percpu_unlock.part.0
.LVL20:
.L11:
.loc 1 104 1 discriminator 1 view .LVU62
.LBE104:
.LBE107:
.LBE112:
.LBE114:
.loc 1 88 3 is_stmt 1 view .LVU63
addis 9,2,.LC2@toc@ha
ld 9,.LC2@toc@l(9)
ld 31,0(9)
.LVL21:
.loc 1 89 4 is_stmt 0 view .LVU64
bl __errno_location
nop
.LVL22:
.loc 1 88 3 view .LVU65
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL23:
.LBB115:
.LBI115:
.file 4 "/usr/include/powerpc64le-linux-gnu/bits/stdio2.h"
.loc 4 98 1 is_stmt 1 view .LVU66
.LBB116:
.loc 4 100 3 view .LVU67
.loc 4 100 10 is_stmt 0 view .LVU68
ld 6,104(1)
addis 5,2,.LC3@toc@ha
li 4,1
addi 5,5,.LC3@toc@l
.LBE116:
.LBE115:
.loc 1 88 3 view .LVU69
mr 7,3
.LBB118:
.LBB117:
.loc 4 100 10 view .LVU70
mr 3,31
bl __fprintf_chk
nop
.LVL24:
.loc 4 100 10 view .LVU71
.LBE117:
.LBE118:
.loc 1 90 3 is_stmt 1 view .LVU72
bl abort
nop
.LVL25:
.L23:
.LBB119:
.LBB113:
.loc 1 98 3 view .LVU73
addis 9,2,.LC2@toc@ha
ld 9,.LC2@toc@l(9)
ld 31,0(9)
.LVL26:
.loc 1 99 4 is_stmt 0 view .LVU74
bl __errno_location
nop
.LVL27:
.loc 1 98 3 view .LVU75
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL28:
.LBB108:
.LBI108:
.loc 4 98 1 is_stmt 1 view .LVU76
.LBB109:
.loc 4 100 3 view .LVU77
.loc 4 100 10 is_stmt 0 view .LVU78
ld 6,104(1)
addis 5,2,.LC4@toc@ha
li 4,1
addi 5,5,.LC4@toc@l
.LBE109:
.LBE108:
.loc 1 98 3 view .LVU79
mr 7,3
.LBB111:
.LBB110:
.loc 4 100 10 view .LVU80
mr 3,31
bl __fprintf_chk
nop
.LVL29:
.loc 4 100 10 view .LVU81
.LBE110:
.LBE111:
.loc 1 100 3 is_stmt 1 view .LVU82
bl abort
nop
.LVL30:
.LBE113:
.LBE119:
.long 0
.byte 0,0,0,1,128,4,0,0
.cfi_endproc
.LFE103:
.size test_percpu_spinlock_thread,.-test_percpu_spinlock_thread
.align 2
.p2align 4,,15
.globl rseq_percpu_unlock
.type rseq_percpu_unlock, @function
rseq_percpu_unlock:
.LVL31:
.LFB102:
.loc 1 73 1 view -0
.cfi_startproc
.LCF3:
0: addis 2,12,.TOC.-.LCF3@ha
addi 2,2,.TOC.-.LCF3@l
.localentry rseq_percpu_unlock,.-rseq_percpu_unlock
.loc 1 74 2 view .LVU84
sldi 4,4,7
.LVL32:
.loc 1 74 2 is_stmt 0 view .LVU85
ldx 9,3,4
cmpdi 0,9,1
bne 0,.L29
.loc 1 79 2 is_stmt 1 view .LVU86
.loc 1 79 2 view .LVU87
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 79 2 view .LVU88
#NO_APP
li 9,0
stdx 9,3,4
.loc 1 79 2 view .LVU89
blr
.L29:
.loc 1 73 1 is_stmt 0 discriminator 1 view .LVU90
mflr 0
std 0,16(1)
stdu 1,-32(1)
.cfi_def_cfa_offset 32
.cfi_offset 65, 16
bl rseq_percpu_unlock.part.0
.LVL33:
.loc 1 73 1 discriminator 1 view .LVU91
.long 0
.byte 0,0,0,1,128,0,0,0
.cfi_endproc
.LFE102:
.size rseq_percpu_unlock,.-rseq_percpu_unlock
.section .rodata.str1.8
.align 3
.LC5:
.string "sum == (uint64_t)data.reps * num_threads"
.section ".text"
.align 2
.p2align 4,,15
.globl test_percpu_spinlock
.type test_percpu_spinlock, @function
test_percpu_spinlock:
.LFB104:
.loc 1 113 1 is_stmt 1 view -0
.cfi_startproc
.LCF4:
0: addis 2,12,.TOC.-.LCF4@ha
addi 2,2,.TOC.-.LCF4@l
.localentry test_percpu_spinlock,.-test_percpu_spinlock
.loc 1 113 1 is_stmt 0 view .LVU93
mflr 0
addis 12,1,0xfffc
.cfi_def_cfa 12, 262144
.cfi_register 65, 0
std 25,-56(1)
std 26,-48(1)
std 27,-40(1)
std 28,-32(1)
std 29,-24(1)
std 30,-16(1)
std 31,-8(1)
std 0,16(1)
.cfi_offset 25, -56
.cfi_offset 26, -48
.cfi_offset 27, -40
.cfi_offset 28, -32
.cfi_offset 29, -24
.cfi_offset 30, -16
.cfi_offset 31, -8
.cfi_offset 65, 16
mr 0,1
.LPSRL0:
stdu 0,-4096(1)
cmpd 0,1,12
bne 0,.LPSRL0
.cfi_def_cfa_register 1
stdu 0,-352(1)
.cfi_def_cfa_offset 262496
lis 10,0x4
mr 31,1
.cfi_def_cfa_register 31
.loc 1 113 1 view .LVU94
ori 10,10,0x118
.loc 1 117 12 view .LVU95
ld 9,0(1)
.loc 1 113 1 view .LVU96
add 10,10,31
addi 6,31,159
ld 8,-28688(13)
std 8,0(10)
li 8,0
.loc 1 114 2 is_stmt 1 view .LVU97
.LVL34:
.loc 1 115 2 view .LVU98
.loc 1 116 2 view .LVU99
.loc 1 117 2 view .LVU100
.loc 1 113 1 is_stmt 0 view .LVU101
rldicr 30,6,0,56
.LBB126:
.LBB127:
.file 5 "/usr/include/powerpc64le-linux-gnu/bits/string_fortified.h"
.loc 5 71 10 view .LVU102
lis 5,0x4
.LBE127:
.LBE126:
.loc 1 117 12 view .LVU103
stdu 9,-1600(1)
.LBB131:
.LBB128:
.loc 5 71 10 view .LVU104
mr 3,30
ori 5,5,0x80
li 4,0
.LBE128:
.LBE131:
.loc 1 121 12 view .LVU105
addis 27,30,0x4
addis 25,2,test_percpu_spinlock_thread@toc@ha
addi 25,25,test_percpu_spinlock_thread@toc@l
.LBB132:
.LBB129:
.loc 5 71 10 view .LVU106
bl memset
nop
.LVL35:
.LBE129:
.LBE132:
.loc 1 121 12 view .LVU107
li 9,5000
.loc 1 117 12 view .LVU108
addi 28,1,32
.LVL36:
.loc 1 118 2 is_stmt 1 view .LVU109
.loc 1 120 2 view .LVU110
.LBB133:
.LBI126:
.loc 5 59 1 view .LVU111
.LBB130:
.loc 5 71 3 view .LVU112
.loc 5 71 3 is_stmt 0 view .LVU113
.LBE130:
.LBE133:
.loc 1 121 2 is_stmt 1 view .LVU114
addi 26,28,1600
.loc 1 121 12 is_stmt 0 view .LVU115
mr 29,28
stw 9,0(27)
.loc 1 123 2 is_stmt 1 view .LVU116
.LVL37:
.loc 1 123 14 view .LVU117
.p2align 5
.L31:
.loc 1 124 3 discriminator 3 view .LVU118
mr 3,29
mr 6,30
mr 5,25
li 4,0
addi 29,29,8
bl pthread_create
nop
.LVL38:
.loc 1 123 31 discriminator 3 view .LVU119
.loc 1 123 14 discriminator 3 view .LVU120
.loc 1 123 2 is_stmt 0 discriminator 3 view .LVU121
cmpld 0,29,26
bne 0,.L31
addi 29,28,-8
addi 28,28,1592
.LVL39:
.p2align 5
.L32:
.loc 1 128 3 is_stmt 1 discriminator 3 view .LVU122
ldu 3,8(29)
li 4,0
bl pthread_join
nop
.LVL40:
.loc 1 127 31 discriminator 3 view .LVU123
.loc 1 127 14 discriminator 3 view .LVU124
.loc 1 127 2 is_stmt 0 discriminator 3 view .LVU125
cmpld 0,29,28
bne 0,.L32
addis 30,30,0x2
.loc 1 130 6 view .LVU126
li 9,0
.p2align 5
.L33:
.LVL41:
.loc 1 132 3 is_stmt 1 discriminator 3 view .LVU127
.loc 1 132 7 is_stmt 0 discriminator 3 view .LVU128
ld 10,0(30)
addi 30,30,128
.loc 1 131 2 discriminator 3 view .LVU129
cmpld 0,27,30
.loc 1 132 7 discriminator 3 view .LVU130
add 9,9,10
.LVL42:
.loc 1 131 31 is_stmt 1 discriminator 3 view .LVU131
.loc 1 131 14 discriminator 3 view .LVU132
.loc 1 131 2 is_stmt 0 discriminator 3 view .LVU133
bne 0,.L33
.loc 1 134 2 is_stmt 1 view .LVU134
lwa 10,0(27)
mulli 10,10,200
cmpd 0,10,9
bne 0,.L40
.loc 1 135 1 is_stmt 0 view .LVU135
lis 9,0x4
.LVL43:
.loc 1 135 1 view .LVU136
ori 9,9,0x118
add 9,9,31
ld 10,0(9)
ld 9,-28688(13)
xor. 10,10,9
li 9,0
bne 0,.L41
ld 1,0(1)
.cfi_remember_state
.cfi_def_cfa 1, 0
ld 0,16(1)
ld 25,-56(1)
ld 26,-48(1)
ld 27,-40(1)
ld 28,-32(1)
.LVL44:
.loc 1 135 1 view .LVU137
ld 29,-24(1)
ld 30,-16(1)
ld 31,-8(1)
mtlr 0
.cfi_restore 65
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
blr
.LVL45:
.L40:
.cfi_restore_state
.LBB134:
.LBI134:
.loc 1 112 6 is_stmt 1 view .LVU138
.LBB135:
.loc 1 134 2 view .LVU139
addis 6,2,.LANCHOR0+24@toc@ha
addis 4,2,.LC0@toc@ha
addis 3,2,.LC5@toc@ha
addi 6,6,.LANCHOR0+24@toc@l
li 5,134
addi 4,4,.LC0@toc@l
addi 3,3,.LC5@toc@l
bl __assert_fail
nop
.LVL46:
.L41:
.loc 1 134 2 is_stmt 0 view .LVU140
.LBE135:
.LBE134:
.loc 1 135 1 view .LVU141
bl __stack_chk_fail
nop
.LVL47:
.long 0
.byte 0,0,0,1,128,7,0,0
.cfi_endproc
.LFE104:
.size test_percpu_spinlock,.-test_percpu_spinlock
.align 2
.p2align 4,,15
.globl this_cpu_list_push
.type this_cpu_list_push, @function
this_cpu_list_push:
.LVL48:
.LFB105:
.loc 1 140 1 is_stmt 1 view -0
.cfi_startproc
.LCF5:
0: addis 2,12,.TOC.-.LCF5@ha
addi 2,2,.TOC.-.LCF5@l
.localentry this_cpu_list_push,.-this_cpu_list_push
.loc 1 140 1 is_stmt 0 view .LVU143
std 17,-120(1)
.cfi_offset 17, -120
addis 9,2,__rseq_abi@got@tprel@ha
ld 9,__rseq_abi@got@tprel@l(9)
.LBB136:
.LBB137:
.LBB138:
.loc 3 142 9 view .LVU144
add 9,9,__rseq_abi@tls
.L43:
.L49:
.L44:
.LBE138:
.LBE137:
.LBE136:
.loc 1 141 2 is_stmt 1 view .LVU145
.loc 1 143 2 view .LVU146
.LBB143:
.loc 1 144 3 view .LVU147
.loc 1 145 3 view .LVU148
.loc 1 147 3 view .LVU149
.LBB140:
.LBI137:
.loc 3 140 24 view .LVU150
.LBB139:
.loc 3 142 2 view .LVU151
.loc 3 142 9 is_stmt 0 view .LVU152
lwz 10,0(9)
.LBE139:
.LBE140:
.loc 1 147 7 view .LVU153
extsw 10,10
.LVL49:
.loc 1 149 3 is_stmt 1 view .LVU154
.loc 1 149 22 is_stmt 0 view .LVU155
sldi 8,10,7
ldx 7,3,8
.LVL50:
.loc 1 150 3 is_stmt 1 view .LVU156
.loc 1 151 3 view .LVU157
.loc 1 152 3 view .LVU158
.loc 1 152 14 is_stmt 0 view .LVU159
std 7,8(4)
.loc 1 153 3 is_stmt 1 view .LVU160
.LVL51:
.LBB141:
.LBI141:
.loc 2 207 5 view .LVU161
.LBB142:
.loc 2 211 2 view .LVU162
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.quad 1f, (2f - 1f), 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.quad 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.quad 1f, .L49
.popsection
lis %r17, (3b)@highest
ori %r17, %r17, (3b)@higher
rldicr %r17, %r17, 32, 31
oris %r17, %r17, (3b)@high
ori %r17, %r17, (3b)@l
std %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
ld %r17, 3,8
cmpd cr7, %r17, 7
bne- cr7, .L49
std 4, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L49
.popsection
# 0 "" 2
.LVL52:
.loc 2 211 2 is_stmt 0 view .LVU163
#NO_APP
.LBE142:
.LBE141:
.loc 1 154 3 is_stmt 1 view .LVU164
.LBE143:
.loc 1 158 2 view .LVU165
.loc 1 158 5 is_stmt 0 view .LVU166
cmpdi 0,5,0
beq 0,.L42
.loc 1 159 3 is_stmt 1 view .LVU167
.loc 1 159 9 is_stmt 0 view .LVU168
stw 10,0(5)
.L42:
.loc 1 160 1 view .LVU169
ld 17,-120(1)
.cfi_restore 17
blr
.long 0
.byte 0,0,0,0,0,15,0,0
.cfi_endproc
.LFE105:
.size this_cpu_list_push,.-this_cpu_list_push
.align 2
.p2align 4,,15
.globl this_cpu_list_pop
.type this_cpu_list_pop, @function
this_cpu_list_pop:
.LVL53:
.LFB106:
.loc 1 169 1 is_stmt 1 view -0
.cfi_startproc
.LCF6:
0: addis 2,12,.TOC.-.LCF6@ha
addi 2,2,.TOC.-.LCF6@l
.localentry this_cpu_list_pop,.-this_cpu_list_pop
.loc 1 169 1 is_stmt 0 view .LVU171
std 17,-120(1)
stdu 1,-176(1)
.cfi_def_cfa_offset 176
.cfi_offset 17, -120
.LBB144:
.LBB145:
.LBB146:
.loc 2 271 2 view .LVU172
li 6,0
.LBE146:
.LBE145:
.LBE144:
.loc 1 169 1 view .LVU173
ld 9,-28688(13)
std 9,40(1)
li 9,0
addis 9,2,__rseq_abi@got@tprel@ha
ld 9,__rseq_abi@got@tprel@l(9)
.LBB155:
.LBB149:
.LBB150:
.loc 3 142 9 view .LVU174
add 9,9,__rseq_abi@tls
.LBE150:
.LBE149:
.LBB152:
.LBB147:
.loc 2 271 2 view .LVU175
li 7,8
.L56:
.LBE147:
.LBE152:
.LBE155:
.loc 1 170 2 is_stmt 1 view .LVU176
.LBB156:
.loc 1 171 3 view .LVU177
.loc 1 172 3 view .LVU178
.loc 1 173 3 view .LVU179
.loc 1 174 3 view .LVU180
.loc 1 176 3 view .LVU181
.LBB153:
.LBI149:
.loc 3 140 24 view .LVU182
.LBB151:
.loc 3 142 2 view .LVU183
.loc 3 142 9 is_stmt 0 view .LVU184
lwz 10,0(9)
.LBE151:
.LBE153:
.loc 1 176 7 view .LVU185
extsw 10,10
.LVL54:
.loc 1 177 3 is_stmt 1 view .LVU186
.loc 1 178 3 view .LVU187
.loc 1 179 3 view .LVU188
.loc 1 180 3 view .LVU189
.loc 1 181 3 view .LVU190
.LBB154:
.LBI145:
.loc 2 266 5 view .LVU191
.LBB148:
.loc 2 271 2 view .LVU192
sldi 8,10,7
#APP
# 271 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.quad 1f, (2f - 1f), 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.quad 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.quad 1f, .L58
.popsection
lis %r17, (3b)@highest
ori %r17, %r17, (3b)@higher
rldicr %r17, %r17, 32, 31
oris %r17, %r17, (3b)@high
ori %r17, %r17, (3b)@l
std %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
ld %r17, 3,8
cmpd cr7, %r17, 6
beq- cr7, .L58
ld %r17, 3,8
std %r17, 32(1)
ldx %r17, 7, %r17
std %r17, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L56
.popsection
# 0 "" 2
.LVL55:
.loc 2 271 2 is_stmt 0 view .LVU193
#NO_APP
.LBE148:
.LBE154:
.loc 1 183 3 is_stmt 1 view .LVU194
.loc 1 184 4 view .LVU195
.loc 1 184 7 is_stmt 0 view .LVU196
cmpdi 0,4,0
beq 0,.L55
.loc 1 185 5 is_stmt 1 view .LVU197
.loc 1 185 11 is_stmt 0 view .LVU198
stw 10,0(4)
.L55:
.loc 1 186 4 is_stmt 1 view .LVU199
.loc 1 186 11 is_stmt 0 view .LVU200
ld 3,32(1)
.LVL56:
.L52:
.loc 1 186 11 view .LVU201
.LBE156:
.loc 1 192 1 view .LVU202
ld 9,40(1)
ld 10,-28688(13)
xor. 9,9,10
li 10,0
.LVL57:
.loc 1 192 1 view .LVU203
bne 0,.L63
addi 1,1,176
.cfi_remember_state
.cfi_def_cfa_offset 0
.LVL58:
.loc 1 192 1 view .LVU204
ld 17,-120(1)
.cfi_restore 17
blr
.L53:
.LVL59:
.p2align 4,,15
.L58:
.cfi_restore_state
.L54:
.LBB157:
.loc 1 189 11 view .LVU205
li 3,0
.LVL60:
.loc 1 189 11 view .LVU206
b .L52
.LVL61:
.L63:
.loc 1 189 11 view .LVU207
mflr 0
.cfi_register 65, 0
std 0,192(1)
.cfi_offset 65, 16
.LBE157:
.loc 1 192 1 view .LVU208
bl __stack_chk_fail
nop
.LVL62:
.loc 1 192 1 view .LVU209
.long 0
.byte 0,0,0,1,128,15,0,0
.cfi_endproc
.LFE106:
.size this_cpu_list_pop,.-this_cpu_list_pop
.section ".toc","aw"
.set .LC6,.LC2
.section ".text"
.align 2
.p2align 4,,15
.globl test_percpu_list_thread
.type test_percpu_list_thread, @function
test_percpu_list_thread:
.LVL63:
.LFB108:
.loc 1 210 1 is_stmt 1 view -0
.cfi_startproc
.LCF7:
0: addis 2,12,.TOC.-.LCF7@ha
addi 2,2,.TOC.-.LCF7@l
.localentry test_percpu_list_thread,.-test_percpu_list_thread
.loc 1 210 1 is_stmt 0 view .LVU211
mflr 0
std 29,-24(1)
std 30,-16(1)
std 31,-8(1)
std 0,16(1)
stdu 1,-144(1)
.cfi_def_cfa_offset 144
.cfi_offset 65, 16
.cfi_offset 29, -24
.cfi_offset 30, -16
.cfi_offset 31, -8
.loc 1 211 2 is_stmt 1 view .LVU212
.loc 1 212 2 view .LVU213
lis 31,0x1
.loc 1 210 1 is_stmt 0 view .LVU214
mr 29,3
.LVL64:
.loc 1 214 2 is_stmt 1 view .LVU215
.loc 1 214 6 is_stmt 0 view .LVU216
bl rseq_register_current_thread
nop
.LVL65:
.loc 1 214 6 view .LVU217
ori 31,31,0x86a0
.loc 1 214 5 view .LVU218
cmpdi 0,3,0
bne 0,.L74
.p2align 4,,15
.L65:
.LVL66:
.LBB168:
.loc 1 221 3 is_stmt 1 view .LVU219
.loc 1 223 3 view .LVU220
.loc 1 223 10 is_stmt 0 view .LVU221
li 4,0
mr 3,29
bl this_cpu_list_pop
.LVL67:
mr 30,3
.LVL68:
.loc 1 224 3 is_stmt 1 view .LVU222
bl sched_yield
nop
.LVL69:
.loc 1 225 3 view .LVU223
.loc 1 225 6 is_stmt 0 view .LVU224
cmpdi 0,30,0
beq 0,.L66
.loc 1 226 4 is_stmt 1 view .LVU225
mr 4,30
li 5,0
mr 3,29
bl this_cpu_list_push
.LVL70:
.L66:
.LBE168:
.loc 1 220 26 discriminator 2 view .LVU226
.loc 1 220 14 discriminator 2 view .LVU227
addi 9,31,-1
.loc 1 220 2 is_stmt 0 discriminator 2 view .LVU228
rldicl. 31,9,0,32
.LVL71:
.loc 1 220 2 discriminator 2 view .LVU229
bne 0,.L65
.loc 1 229 2 is_stmt 1 view .LVU230
.loc 1 229 6 is_stmt 0 view .LVU231
bl rseq_unregister_current_thread
nop
.LVL72:
.loc 1 229 5 view .LVU232
cmpdi 0,3,0
bne 0,.L75
.loc 1 235 2 is_stmt 1 view .LVU233
.loc 1 236 1 is_stmt 0 view .LVU234
addi 1,1,144
.cfi_remember_state
.cfi_def_cfa_offset 0
ld 0,16(1)
ld 29,-24(1)
.LVL73:
.loc 1 236 1 view .LVU235
ld 30,-16(1)
.LVL74:
.loc 1 236 1 view .LVU236
ld 31,-8(1)
.LVL75:
.loc 1 236 1 view .LVU237
mtlr 0
.cfi_restore 65
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
blr
.LVL76:
.L74:
.cfi_restore_state
.loc 1 215 3 is_stmt 1 view .LVU238
addis 9,2,.LC6@toc@ha
ld 9,.LC6@toc@l(9)
ld 31,0(9)
.loc 1 216 4 is_stmt 0 view .LVU239
bl __errno_location
nop
.LVL77:
.loc 1 215 3 view .LVU240
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL78:
.LBB169:
.LBI169:
.loc 4 98 1 is_stmt 1 view .LVU241
.LBB170:
.loc 4 100 3 view .LVU242
.loc 4 100 10 is_stmt 0 view .LVU243
ld 6,104(1)
addis 5,2,.LC3@toc@ha
li 4,1
addi 5,5,.LC3@toc@l
.LBE170:
.LBE169:
.loc 1 215 3 view .LVU244
mr 7,3
.LBB172:
.LBB171:
.loc 4 100 10 view .LVU245
mr 3,31
bl __fprintf_chk
nop
.LVL79:
.loc 4 100 10 view .LVU246
.LBE171:
.LBE172:
.loc 1 217 3 is_stmt 1 view .LVU247
bl abort
nop
.LVL80:
.L75:
.LBB173:
.LBI173:
.loc 1 209 7 view .LVU248
.LBB174:
.loc 1 230 3 view .LVU249
addis 9,2,.LC6@toc@ha
ld 9,.LC6@toc@l(9)
ld 31,0(9)
.LVL81:
.loc 1 231 4 is_stmt 0 view .LVU250
bl __errno_location
nop
.LVL82:
.loc 1 230 3 view .LVU251
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL83:
.LBB175:
.LBI175:
.loc 4 98 1 is_stmt 1 view .LVU252
.LBB176:
.loc 4 100 3 view .LVU253
.loc 4 100 10 is_stmt 0 view .LVU254
ld 6,104(1)
addis 5,2,.LC4@toc@ha
li 4,1
addi 5,5,.LC4@toc@l
.LBE176:
.LBE175:
.loc 1 230 3 view .LVU255
mr 7,3
.LBB178:
.LBB177:
.loc 4 100 10 view .LVU256
mr 3,31
bl __fprintf_chk
nop
.LVL84:
.loc 4 100 10 view .LVU257
.LBE177:
.LBE178:
.loc 1 232 3 is_stmt 1 view .LVU258
bl abort
nop
.LVL85:
.LBE174:
.LBE173:
.long 0
.byte 0,0,0,1,128,3,0,0
.cfi_endproc
.LFE108:
.size test_percpu_list_thread,.-test_percpu_list_thread
.align 2
.p2align 4,,15
.globl __percpu_list_pop
.type __percpu_list_pop, @function
__percpu_list_pop:
.LVL86:
.LFB107:
.loc 1 199 1 view -0
.cfi_startproc
.loc 1 200 2 view .LVU260
.loc 1 202 2 view .LVU261
sldi 4,4,7
.LVL87:
.loc 1 199 1 is_stmt 0 view .LVU262
mr 9,3
.loc 1 202 7 view .LVU263
ldx 3,3,4
.LVL88:
.loc 1 203 2 is_stmt 1 view .LVU264
.loc 1 203 5 is_stmt 0 view .LVU265
cmpdi 0,3,0
beqlr 0
.loc 1 205 2 is_stmt 1 view .LVU266
.loc 1 205 20 is_stmt 0 view .LVU267
ld 10,8(3)
stdx 10,9,4
.loc 1 206 2 is_stmt 1 view .LVU268
.loc 1 207 1 is_stmt 0 view .LVU269
blr
.long 0
.byte 0,0,0,0,0,0,0,0
.cfi_endproc
.LFE107:
.size __percpu_list_pop,.-__percpu_list_pop
.section .rodata.str1.8
.align 3
.LC7:
.string "node"
.align 3
.LC8:
.string "sum == expected_sum"
.section ".text"
.align 2
.p2align 4,,15
.globl test_percpu_list
.type test_percpu_list, @function
test_percpu_list:
.LFB109:
.loc 1 240 1 is_stmt 1 view -0
.cfi_startproc
.LCF9:
0: addis 2,12,.TOC.-.LCF9@ha
addi 2,2,.TOC.-.LCF9@l
.localentry test_percpu_list,.-test_percpu_list
mflr 0
addis 12,1,0xfffe
.cfi_def_cfa 12, 131072
.cfi_register 65, 0
std 25,-56(1)
std 26,-48(1)
std 27,-40(1)
std 28,-32(1)
std 29,-24(1)
std 30,-16(1)
std 31,-8(1)
std 0,16(1)
.cfi_offset 25, -56
.cfi_offset 26, -48
.cfi_offset 27, -40
.cfi_offset 28, -32
.cfi_offset 29, -24
.cfi_offset 30, -16
.cfi_offset 31, -8
.cfi_offset 65, 16
mr 0,1
.LPSRL1:
stdu 0,-4096(1)
cmpd 0,1,12
bne 0,.LPSRL1
.cfi_def_cfa_register 1
stdu 0,-1952(1)
.cfi_def_cfa_offset 133024
.loc 1 240 1 is_stmt 0 view .LVU271
lis 9,0x2
addi 26,1,159
ori 9,9,0x758
rldicr 26,26,0,56
add 9,9,1
.LBB179:
.LBB180:
.loc 5 71 10 view .LVU272
lis 5,0x2
li 4,0
mr 3,26
.LBE180:
.LBE179:
.loc 1 240 1 view .LVU273
ld 10,-28688(13)
std 10,0(9)
li 10,0
.loc 1 241 2 is_stmt 1 view .LVU274
.loc 1 242 2 view .LVU275
.LVL89:
.loc 1 243 2 view .LVU276
.loc 1 244 2 view .LVU277
.loc 1 245 2 view .LVU278
.loc 1 247 2 view .LVU279
.LBB182:
.LBI179:
.loc 5 59 1 view .LVU280
.LBB181:
.loc 5 71 3 view .LVU281
.loc 5 71 10 is_stmt 0 view .LVU282
bl memset
nop
.LVL90:
.loc 5 71 10 view .LVU283
.LBE181:
.LBE182:
.loc 1 250 2 is_stmt 1 view .LVU284
lis 9,0x2
ori 9,9,0x98
li 4,128
add 5,1,9
li 3,0
bl sched_getaffinity
nop
.LVL91:
.loc 1 251 2 view .LVU285
.loc 1 251 14 view .LVU286
mr 28,26
.loc 1 250 2 is_stmt 0 view .LVU287
mr 30,26
li 27,0
.loc 1 242 20 view .LVU288
li 29,0
b .L85
.LVL92:
.L116:
.loc 1 251 31 is_stmt 1 discriminator 2 view .LVU289
.loc 1 251 14 discriminator 2 view .LVU290
addi 27,27,1
.LVL93:
.loc 1 251 14 is_stmt 0 discriminator 2 view .LVU291
addi 30,30,128
.loc 1 251 2 discriminator 2 view .LVU292
cmpldi 0,27,1024
beq 0,.L112
.LVL94:
.L85:
.loc 1 252 3 is_stmt 1 view .LVU293
.LBB183:
.loc 1 252 8 view .LVU294
.loc 1 252 8 view .LVU295
lis 10,0x2
srdi 9,27,6
ori 10,10,0x760
sldi 9,9,3
add 10,10,1
rlwinm 31,27,0,26,31
add 9,10,9
ld 9,-1736(9)
srd 31,9,31
andi. 31,31,0x1
bne 0,.L84
.loc 1 252 8 is_stmt 0 view .LVU296
.LBE183:
.loc 1 251 31 is_stmt 1 view .LVU297
.LVL95:
.loc 1 251 14 view .LVU298
addi 27,27,1
.LVL96:
.loc 1 251 14 is_stmt 0 view .LVU299
addi 30,30,128
.loc 1 251 2 view .LVU300
cmpldi 0,27,1024
bne 0,.L85
.LVL97:
.L112:
.loc 1 251 2 view .LVU301
lis 9,0x2
addis 27,2,test_percpu_list_thread@toc@ha
ori 9,9,0x118
addi 27,27,test_percpu_list_thread@toc@l
add 30,1,9
lis 9,0x2
ori 9,9,0x758
mr 31,30
add 25,1,9
.p2align 5
.L86:
.loc 1 268 3 is_stmt 1 discriminator 3 view .LVU302
mr 3,31
mr 6,26
mr 5,27
li 4,0
addi 31,31,8
bl pthread_create
nop
.LVL98:
.loc 1 267 23 discriminator 3 view .LVU303
.loc 1 267 14 discriminator 3 view .LVU304
.loc 1 267 2 is_stmt 0 discriminator 3 view .LVU305
cmpld 0,25,31
bne 0,.L86
lis 9,0x2
addi 30,30,1592
ori 9,9,0x110
add 31,1,9
.p2align 5
.L87:
.loc 1 272 3 is_stmt 1 discriminator 3 view .LVU306
ldu 3,8(31)
li 4,0
bl pthread_join
nop
.LVL99:
.loc 1 271 23 discriminator 3 view .LVU307
.loc 1 271 14 discriminator 3 view .LVU308
.loc 1 271 2 is_stmt 0 discriminator 3 view .LVU309
cmpld 0,31,30
bne 0,.L87
li 30,0
.loc 1 242 11 view .LVU310
li 31,0
b .L90
.LVL100:
.p2align 4,,15
.L117:
.loc 1 274 31 is_stmt 1 discriminator 2 view .LVU311
.loc 1 274 14 discriminator 2 view .LVU312
addi 30,30,1
.LVL101:
.loc 1 274 14 is_stmt 0 discriminator 2 view .LVU313
addi 28,28,128
.loc 1 274 2 discriminator 2 view .LVU314
cmpldi 0,30,1024
beq 0,.L113
.LVL102:
.L90:
.LBB184:
.loc 1 275 3 is_stmt 1 view .LVU315
.loc 1 277 3 view .LVU316
.LBB185:
.loc 1 277 8 view .LVU317
.loc 1 277 8 view .LVU318
lis 10,0x2
srdi 9,30,6
ori 10,10,0x760
sldi 9,9,3
add 10,10,1
rlwinm 8,30,0,26,31
add 9,10,9
ld 10,-1736(9)
srd 9,10,8
andi. 9,9,0x1
bne 0,.L109
.loc 1 277 8 is_stmt 0 view .LVU319
.LBE185:
.LBE184:
.loc 1 274 31 is_stmt 1 view .LVU320
.LVL103:
.loc 1 274 14 view .LVU321
addi 30,30,1
.LVL104:
.loc 1 274 14 is_stmt 0 view .LVU322
addi 28,28,128
.loc 1 274 2 view .LVU323
cmpldi 0,30,1024
bne 0,.L90
.LVL105:
.L113:
.loc 1 291 2 is_stmt 1 view .LVU324
cmpld 0,31,29
bne 0,.L114
.loc 1 292 1 is_stmt 0 view .LVU325
lis 9,0x2
ori 9,9,0x758
add 9,9,1
ld 10,0(9)
ld 9,-28688(13)
xor. 10,10,9
li 9,0
bne 0,.L115
ld 1,0(1)
.cfi_remember_state
.cfi_def_cfa_offset 0
ld 0,16(1)
ld 25,-56(1)
ld 26,-48(1)
ld 27,-40(1)
ld 28,-32(1)
ld 29,-24(1)
.LVL106:
.loc 1 292 1 view .LVU326
ld 30,-16(1)
ld 31,-8(1)
.LVL107:
.loc 1 292 1 view .LVU327
mtlr 0
.cfi_restore 65
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
blr
.LVL108:
.p2align 4,,15
.L83:
.cfi_restore_state
.LBB192:
.loc 1 261 4 is_stmt 1 discriminator 2 view .LVU328
.loc 1 261 15 is_stmt 0 discriminator 2 view .LVU329
std 31,0(3)
.loc 1 262 4 is_stmt 1 discriminator 2 view .LVU330
addi 31,31,1
.LVL109:
.loc 1 262 15 is_stmt 0 discriminator 2 view .LVU331
ld 10,0(30)
.LBE192:
.loc 1 254 3 discriminator 2 view .LVU332
cmpldi 0,31,101
.LBB193:
.loc 1 263 19 discriminator 2 view .LVU333
std 3,0(30)
.loc 1 262 15 discriminator 2 view .LVU334
std 10,8(3)
.loc 1 263 4 is_stmt 1 discriminator 2 view .LVU335
.LBE193:
.loc 1 254 25 discriminator 2 view .LVU336
.loc 1 254 15 discriminator 2 view .LVU337
.loc 1 254 3 is_stmt 0 discriminator 2 view .LVU338
beq 0,.L116
.LVL110:
.L84:
.LBB194:
.loc 1 255 4 is_stmt 1 view .LVU339
.loc 1 257 4 view .LVU340
.loc 1 259 11 is_stmt 0 view .LVU341
li 3,16
.loc 1 257 17 view .LVU342
add 29,29,31
.LVL111:
.loc 1 259 4 is_stmt 1 view .LVU343
.loc 1 259 11 is_stmt 0 view .LVU344
bl malloc
nop
.LVL112:
.loc 1 260 4 is_stmt 1 view .LVU345
cmpdi 0,3,0
.loc 1 260 4 is_stmt 0 view .LVU346
bne 0,.L83
.loc 1 260 4 is_stmt 1 discriminator 1 view .LVU347
addis 6,2,.LANCHOR0+48@toc@ha
addis 4,2,.LC0@toc@ha
addis 3,2,.LC7@toc@ha
.LVL113:
.loc 1 260 4 is_stmt 0 discriminator 1 view .LVU348
addi 6,6,.LANCHOR0+48@toc@l
li 5,260
addi 4,4,.LC0@toc@l
addi 3,3,.LC7@toc@l
bl __assert_fail
nop
.LVL114:
.p2align 4,,15
.L89:
.loc 1 260 4 discriminator 1 view .LVU349
.LBE194:
.LBB195:
.LBB186:
.LBB187:
.loc 1 205 2 is_stmt 1 view .LVU350
.loc 1 205 26 is_stmt 0 view .LVU351
ld 10,8(3)
.LBE187:
.LBE186:
.loc 1 281 8 view .LVU352
ld 9,0(3)
.LBB190:
.LBB188:
.loc 1 205 20 view .LVU353
std 10,0(28)
.loc 1 206 2 is_stmt 1 view .LVU354
.LVL115:
.loc 1 206 2 is_stmt 0 view .LVU355
.LBE188:
.LBE190:
.loc 1 281 4 is_stmt 1 view .LVU356
.loc 1 281 8 is_stmt 0 view .LVU357
add 31,31,9
.LVL116:
.loc 1 282 4 is_stmt 1 view .LVU358
bl free
nop
.LVL117:
.L109:
.loc 1 280 9 view .LVU359
.LBB191:
.LBI186:
.loc 1 198 26 view .LVU360
.LBB189:
.loc 1 200 2 view .LVU361
.loc 1 202 2 view .LVU362
.loc 1 202 7 is_stmt 0 view .LVU363
ld 3,0(28)
.LVL118:
.loc 1 203 2 is_stmt 1 view .LVU364
.loc 1 203 5 is_stmt 0 view .LVU365
cmpdi 0,3,0
bne 0,.L89
.loc 1 203 5 view .LVU366
b .L117
.LVL119:
.L114:
.loc 1 203 5 view .LVU367
.LBE189:
.LBE191:
.LBE195:
.loc 1 291 2 is_stmt 1 discriminator 1 view .LVU368
addis 6,2,.LANCHOR0+48@toc@ha
addis 4,2,.LC0@toc@ha
addis 3,2,.LC8@toc@ha
addi 6,6,.LANCHOR0+48@toc@l
li 5,291
addi 4,4,.LC0@toc@l
addi 3,3,.LC8@toc@l
bl __assert_fail
nop
.LVL120:
.L115:
.loc 1 292 1 is_stmt 0 view .LVU369
bl __stack_chk_fail
nop
.LVL121:
.long 0
.byte 0,0,0,1,128,7,0,0
.cfi_endproc
.LFE109:
.size test_percpu_list,.-test_percpu_list
.section .rodata.str1.8
.align 3
.LC10:
.string "spinlock"
.align 3
.LC11:
.string "percpu_list"
.section ".toc","aw"
.set .LC9,.LC2
.section .text.startup,"ax",@progbits
.align 2
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB110:
.loc 1 295 1 is_stmt 1 view -0
.cfi_startproc
.LCF10:
0: addis 2,12,.TOC.-.LCF10@ha
addi 2,2,.TOC.-.LCF10@l
.localentry main,.-main
mflr 0
std 0,16(1)
stdu 1,-128(1)
.cfi_def_cfa_offset 128
.cfi_offset 65, 16
.loc 1 296 2 view .LVU371
.loc 1 296 6 is_stmt 0 view .LVU372
bl rseq_register_current_thread
nop
.LVL122:
.loc 1 296 5 view .LVU373
cmpdi 0,3,0
bne 0,.L125
.loc 1 301 2 is_stmt 1 view .LVU374
.LVL123:
.LBB196:
.LBI196:
.loc 4 105 1 view .LVU375
.LBB197:
.loc 4 107 3 view .LVU376
.loc 4 107 10 is_stmt 0 view .LVU377
addis 3,2,.LC10@toc@ha
addi 3,3,.LC10@toc@l
bl puts
nop
.LVL124:
.loc 4 107 10 view .LVU378
.LBE197:
.LBE196:
.loc 1 302 2 is_stmt 1 view .LVU379
bl test_percpu_spinlock
.LVL125:
.loc 1 303 2 view .LVU380
.LBB198:
.LBI198:
.loc 4 105 1 view .LVU381
.LBB199:
.loc 4 107 3 view .LVU382
.loc 4 107 10 is_stmt 0 view .LVU383
addis 3,2,.LC11@toc@ha
addi 3,3,.LC11@toc@l
bl puts
nop
.LVL126:
.loc 4 107 10 view .LVU384
.LBE199:
.LBE198:
.loc 1 304 2 is_stmt 1 view .LVU385
bl test_percpu_list
.LVL127:
.loc 1 305 2 view .LVU386
.loc 1 305 6 is_stmt 0 view .LVU387
bl rseq_unregister_current_thread
nop
.LVL128:
.loc 1 305 5 view .LVU388
cmpdi 0,3,0
bne 0,.L126
.L120:
.loc 1 314 1 view .LVU389
addi 1,1,128
.cfi_remember_state
.cfi_def_cfa_offset 0
ld 0,16(1)
mtlr 0
.cfi_restore 65
blr
.L125:
.cfi_restore_state
.loc 1 297 3 is_stmt 1 view .LVU390
addis 9,2,.LC9@toc@ha
ld 9,.LC9@toc@l(9)
std 31,120(1)
.cfi_offset 31, -8
ld 31,0(9)
.loc 1 298 4 is_stmt 0 view .LVU391
bl __errno_location
nop
.LVL129:
.loc 1 297 3 view .LVU392
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL130:
.LBB200:
.LBI200:
.loc 4 98 1 is_stmt 1 view .LVU393
.LBB201:
.loc 4 100 3 view .LVU394
.loc 4 100 10 is_stmt 0 view .LVU395
ld 6,104(1)
addis 5,2,.LC3@toc@ha
li 4,1
addi 5,5,.LC3@toc@l
.LBE201:
.LBE200:
.loc 1 297 3 view .LVU396
mr 7,3
.LBB203:
.LBB202:
.loc 4 100 10 view .LVU397
mr 3,31
bl __fprintf_chk
nop
.LVL131:
.loc 4 100 10 view .LVU398
.LBE202:
.LBE203:
.loc 1 299 3 is_stmt 1 view .LVU399
ld 31,120(1)
.cfi_restore 31
.loc 1 313 9 is_stmt 0 view .LVU400
li 3,-1
.loc 1 299 3 view .LVU401
b .L120
.L126:
.loc 1 306 3 is_stmt 1 view .LVU402
addis 9,2,.LC9@toc@ha
ld 9,.LC9@toc@l(9)
std 31,120(1)
.cfi_offset 31, -8
.loc 1 306 3 is_stmt 0 view .LVU403
ld 31,0(9)
.loc 1 307 4 view .LVU404
bl __errno_location
nop
.LVL132:
.loc 1 306 3 view .LVU405
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL133:
.LBB204:
.LBI204:
.loc 4 98 1 is_stmt 1 view .LVU406
.LBB205:
.loc 4 100 3 view .LVU407
.loc 4 100 10 is_stmt 0 view .LVU408
ld 6,104(1)
addis 5,2,.LC4@toc@ha
li 4,1
addi 5,5,.LC4@toc@l
.LBE205:
.LBE204:
.loc 1 306 3 view .LVU409
mr 7,3
.LBB207:
.LBB206:
.loc 4 100 10 view .LVU410
mr 3,31
bl __fprintf_chk
nop
.LVL134:
.loc 4 100 10 view .LVU411
.LBE206:
.LBE207:
.loc 1 308 3 is_stmt 1 view .LVU412
.loc 1 313 9 is_stmt 0 view .LVU413
ld 31,120(1)
.cfi_restore 31
li 3,-1
.loc 1 308 3 view .LVU414
b .L120
.long 0
.byte 0,0,0,1,128,1,0,0
.cfi_endproc
.LFE110:
.size main,.-main
.section .rodata
.align 3
.set .LANCHOR0,. + 0
.type __PRETTY_FUNCTION__.6038, @object
.size __PRETTY_FUNCTION__.6038, 19
__PRETTY_FUNCTION__.6038:
.string "rseq_percpu_unlock"
.zero 5
.type __PRETTY_FUNCTION__.6065, @object
.size __PRETTY_FUNCTION__.6065, 21
__PRETTY_FUNCTION__.6065:
.string "test_percpu_spinlock"
.zero 3
.type __PRETTY_FUNCTION__.6118, @object
.size __PRETTY_FUNCTION__.6118, 17
__PRETTY_FUNCTION__.6118:
.string "test_percpu_list"
.section ".text"
.Letext0:
.file 6 "/usr/include/powerpc64le-linux-gnu/bits/types.h"
.file 7 "/usr/lib/gcc/powerpc64le-linux-gnu/9/include/stddef.h"
.file 8 "/usr/include/powerpc64le-linux-gnu/bits/cpu-set.h"
.file 9 "/usr/include/time.h"
.file 10 "/usr/include/powerpc64le-linux-gnu/bits/pthreadtypes.h"
.file 11 "/usr/include/powerpc64le-linux-gnu/bits/stdint-uintn.h"
.file 12 "/usr/include/stdint.h"
.file 13 "/usr/include/powerpc64le-linux-gnu/bits/types/struct_FILE.h"
.file 14 "/usr/include/powerpc64le-linux-gnu/bits/types/FILE.h"
.file 15 "/usr/include/stdio.h"
.file 16 "/usr/include/powerpc64le-linux-gnu/bits/sys_errlist.h"
.file 17 "/usr/include/signal.h"
.file 18 "/usr/include/asm-generic/int-l64.h"
.file 19 "/usr/include/errno.h"
.file 20 "/usr/include/linux/rseq.h"
.file 21 "/usr/include/string.h"
.file 22 "/usr/include/stdlib.h"
.file 23 "/usr/include/assert.h"
.file 24 "<built-in>"
.file 25 "/usr/include/sched.h"
.file 26 "/usr/include/pthread.h"
.section .debug_info,"",@progbits
.Ldebug_info0:
.4byte 0x196a
.2byte 0x4
.4byte .Ldebug_abbrev0
.byte 0x8
.uleb128 0x1
.4byte .LASF155
.byte 0xc
.4byte .LASF156
.4byte .LASF157
.4byte .Ldebug_ranges0+0x490
.8byte 0
.4byte .Ldebug_line0
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF0
.uleb128 0x2
.byte 0x2
.byte 0x7
.4byte .LASF1
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF2
.uleb128 0x2
.byte 0x8
.byte 0x7
.4byte .LASF3
.uleb128 0x2
.byte 0x1
.byte 0x6
.4byte .LASF4
.uleb128 0x2
.byte 0x2
.byte 0x5
.4byte .LASF5
.uleb128 0x3
.byte 0x4
.byte 0x5
.string "int"
.uleb128 0x4
.4byte 0x53
.uleb128 0x5
.4byte .LASF7
.byte 0x6
.byte 0x2a
.byte 0x16
.4byte 0x37
.uleb128 0x2
.byte 0x8
.byte 0x5
.4byte .LASF6
.uleb128 0x5
.4byte .LASF8
.byte 0x6
.byte 0x2d
.byte 0x1b
.4byte 0x3e
.uleb128 0x5
.4byte .LASF9
.byte 0x6
.byte 0x98
.byte 0x19
.4byte 0x6b
.uleb128 0x5
.4byte .LASF10
.byte 0x6
.byte 0x99
.byte 0x1b
.4byte 0x6b
.uleb128 0x6
.byte 0x8
.uleb128 0x7
.byte 0x8
.4byte 0x9e
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF11
.uleb128 0x4
.4byte 0x9e
.uleb128 0x5
.4byte .LASF12
.byte 0x7
.byte 0xd1
.byte 0x17
.4byte 0x3e
.uleb128 0x5
.4byte .LASF13
.byte 0x8
.byte 0x20
.byte 0x19
.4byte 0x3e
.uleb128 0x8
.byte 0x80
.byte 0x8
.byte 0x27
.byte 0x9
.4byte 0xd9
.uleb128 0x9
.4byte .LASF28
.byte 0x8
.byte 0x29
.byte 0xe
.4byte 0xd9
.byte 0
.byte 0
.uleb128 0xa
.4byte 0xb6
.4byte 0xe9
.uleb128 0xb
.4byte 0x3e
.byte 0xf
.byte 0
.uleb128 0x5
.4byte .LASF14
.byte 0x8
.byte 0x2a
.byte 0x3
.4byte 0xc2
.uleb128 0x7
.byte 0x8
.4byte 0xa5
.uleb128 0x4
.4byte 0xf5
.uleb128 0xc
.4byte 0xf5
.uleb128 0xa
.4byte 0x98
.4byte 0x115
.uleb128 0xb
.4byte 0x3e
.byte 0x1
.byte 0
.uleb128 0xd
.4byte .LASF15
.byte 0x9
.byte 0x9f
.byte 0xe
.4byte 0x105
.uleb128 0xd
.4byte .LASF16
.byte 0x9
.byte 0xa0
.byte 0xc
.4byte 0x53
.uleb128 0xd
.4byte .LASF17
.byte 0x9
.byte 0xa1
.byte 0x11
.4byte 0x6b
.uleb128 0xd
.4byte .LASF18
.byte 0x9
.byte 0xa6
.byte 0xe
.4byte 0x105
.uleb128 0xd
.4byte .LASF19
.byte 0x9
.byte 0xae
.byte 0xc
.4byte 0x53
.uleb128 0xd
.4byte .LASF20
.byte 0x9
.byte 0xaf
.byte 0x11
.4byte 0x6b
.uleb128 0xe
.4byte .LASF21
.byte 0x9
.2byte 0x112
.byte 0xc
.4byte 0x53
.uleb128 0x2
.byte 0x8
.byte 0x7
.4byte .LASF22
.uleb128 0x5
.4byte .LASF23
.byte 0xa
.byte 0x1b
.byte 0x1b
.4byte 0x3e
.uleb128 0x2
.byte 0x8
.byte 0x5
.4byte .LASF24
.uleb128 0x5
.4byte .LASF25
.byte 0xb
.byte 0x1a
.byte 0x14
.4byte 0x5f
.uleb128 0x5
.4byte .LASF26
.byte 0xb
.byte 0x1b
.byte 0x14
.4byte 0x72
.uleb128 0x5
.4byte .LASF27
.byte 0xc
.byte 0x57
.byte 0x13
.4byte 0x6b
.uleb128 0xf
.4byte .LASF93
.byte 0xd8
.byte 0xd
.byte 0x31
.byte 0x8
.4byte 0x32f
.uleb128 0x9
.4byte .LASF29
.byte 0xd
.byte 0x33
.byte 0x7
.4byte 0x53
.byte 0
.uleb128 0x9
.4byte .LASF30
.byte 0xd
.byte 0x36
.byte 0x9
.4byte 0x98
.byte 0x8
.uleb128 0x9
.4byte .LASF31
.byte 0xd
.byte 0x37
.byte 0x9
.4byte 0x98
.byte 0x10
.uleb128 0x9
.4byte .LASF32
.byte 0xd
.byte 0x38
.byte 0x9
.4byte 0x98
.byte 0x18
.uleb128 0x9
.4byte .LASF33
.byte 0xd
.byte 0x39
.byte 0x9
.4byte 0x98
.byte 0x20
.uleb128 0x9
.4byte .LASF34
.byte 0xd
.byte 0x3a
.byte 0x9
.4byte 0x98
.byte 0x28
.uleb128 0x9
.4byte .LASF35
.byte 0xd
.byte 0x3b
.byte 0x9
.4byte 0x98
.byte 0x30
.uleb128 0x9
.4byte .LASF36
.byte 0xd
.byte 0x3c
.byte 0x9
.4byte 0x98
.byte 0x38
.uleb128 0x9
.4byte .LASF37
.byte 0xd
.byte 0x3d
.byte 0x9
.4byte 0x98
.byte 0x40
.uleb128 0x9
.4byte .LASF38
.byte 0xd
.byte 0x40
.byte 0x9
.4byte 0x98
.byte 0x48
.uleb128 0x9
.4byte .LASF39
.byte 0xd
.byte 0x41
.byte 0x9
.4byte 0x98
.byte 0x50
.uleb128 0x9
.4byte .LASF40
.byte 0xd
.byte 0x42
.byte 0x9
.4byte 0x98
.byte 0x58
.uleb128 0x9
.4byte .LASF41
.byte 0xd
.byte 0x44
.byte 0x16
.4byte 0x348
.byte 0x60
.uleb128 0x9
.4byte .LASF42
.byte 0xd
.byte 0x46
.byte 0x14
.4byte 0x34e
.byte 0x68
.uleb128 0x9
.4byte .LASF43
.byte 0xd
.byte 0x48
.byte 0x7
.4byte 0x53
.byte 0x70
.uleb128 0x9
.4byte .LASF44
.byte 0xd
.byte 0x49
.byte 0x7
.4byte 0x53
.byte 0x74
.uleb128 0x9
.4byte .LASF45
.byte 0xd
.byte 0x4a
.byte 0xb
.4byte 0x7e
.byte 0x78
.uleb128 0x9
.4byte .LASF46
.byte 0xd
.byte 0x4d
.byte 0x12
.4byte 0x30
.byte 0x80
.uleb128 0x9
.4byte .LASF47
.byte 0xd
.byte 0x4e
.byte 0xf
.4byte 0x45
.byte 0x82
.uleb128 0x9
.4byte .LASF48
.byte 0xd
.byte 0x4f
.byte 0x8
.4byte 0x354
.byte 0x83
.uleb128 0x9
.4byte .LASF49
.byte 0xd
.byte 0x51
.byte 0xf
.4byte 0x364
.byte 0x88
.uleb128 0x9
.4byte .LASF50
.byte 0xd
.byte 0x59
.byte 0xd
.4byte 0x8a
.byte 0x90
.uleb128 0x9
.4byte .LASF51
.byte 0xd
.byte 0x5b
.byte 0x17
.4byte 0x36f
.byte 0x98
.uleb128 0x9
.4byte .LASF52
.byte 0xd
.byte 0x5c
.byte 0x19
.4byte 0x37a
.byte 0xa0
.uleb128 0x9
.4byte .LASF53
.byte 0xd
.byte 0x5d
.byte 0x14
.4byte 0x34e
.byte 0xa8
.uleb128 0x9
.4byte .LASF54
.byte 0xd
.byte 0x5e
.byte 0x9
.4byte 0x96
.byte 0xb0
.uleb128 0x9
.4byte .LASF55
.byte 0xd
.byte 0x5f
.byte 0xa
.4byte 0xaa
.byte 0xb8
.uleb128 0x9
.4byte .LASF56
.byte 0xd
.byte 0x60
.byte 0x7
.4byte 0x53
.byte 0xc0
.uleb128 0x9
.4byte .LASF57
.byte 0xd
.byte 0x62
.byte 0x8
.4byte 0x380
.byte 0xc4
.byte 0
.uleb128 0x5
.4byte .LASF58
.byte 0xe
.byte 0x7
.byte 0x19
.4byte 0x1a8
.uleb128 0x10
.4byte .LASF158
.byte 0xd
.byte 0x2b
.byte 0xe
.uleb128 0x11
.4byte .LASF59
.uleb128 0x7
.byte 0x8
.4byte 0x343
.uleb128 0x7
.byte 0x8
.4byte 0x1a8
.uleb128 0xa
.4byte 0x9e
.4byte 0x364
.uleb128 0xb
.4byte 0x3e
.byte 0
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x33b
.uleb128 0x11
.4byte .LASF60
.uleb128 0x7
.byte 0x8
.4byte 0x36a
.uleb128 0x11
.4byte .LASF61
.uleb128 0x7
.byte 0x8
.4byte 0x375
.uleb128 0xa
.4byte 0x9e
.4byte 0x390
.uleb128 0xb
.4byte 0x3e
.byte 0x13
.byte 0
.uleb128 0x5
.4byte .LASF62
.byte 0xf
.byte 0x3f
.byte 0x11
.4byte 0x7e
.uleb128 0xd
.4byte .LASF63
.byte 0xf
.byte 0x89
.byte 0xe
.4byte 0x3a8
.uleb128 0x7
.byte 0x8
.4byte 0x32f
.uleb128 0xc
.4byte 0x3a8
.uleb128 0xd
.4byte .LASF64
.byte 0xf
.byte 0x8a
.byte 0xe
.4byte 0x3a8
.uleb128 0xd
.4byte .LASF65
.byte 0xf
.byte 0x8b
.byte 0xe
.4byte 0x3a8
.uleb128 0xd
.4byte .LASF66
.byte 0x10
.byte 0x1a
.byte 0xc
.4byte 0x53
.uleb128 0xa
.4byte 0xfb
.4byte 0x3e2
.uleb128 0x12
.byte 0
.uleb128 0x4
.4byte 0x3d7
.uleb128 0xd
.4byte .LASF67
.byte 0x10
.byte 0x1b
.byte 0x1a
.4byte 0x3e2
.uleb128 0xd
.4byte .LASF68
.byte 0x10
.byte 0x1e
.byte 0xc
.4byte 0x53
.uleb128 0xd
.4byte .LASF69
.byte 0x10
.byte 0x1f
.byte 0x1a
.4byte 0x3e2
.uleb128 0x2
.byte 0x10
.byte 0x4
.4byte .LASF70
.uleb128 0xa
.4byte 0xfb
.4byte 0x422
.uleb128 0xb
.4byte 0x3e
.byte 0x40
.byte 0
.uleb128 0x4
.4byte 0x412
.uleb128 0xe
.4byte .LASF71
.byte 0x11
.2byte 0x11e
.byte 0x1a
.4byte 0x422
.uleb128 0xe
.4byte .LASF72
.byte 0x11
.2byte 0x11f
.byte 0x1a
.4byte 0x422
.uleb128 0x5
.4byte .LASF73
.byte 0x12
.byte 0x1b
.byte 0x16
.4byte 0x37
.uleb128 0x5
.4byte .LASF74
.byte 0x12
.byte 0x1e
.byte 0x17
.4byte 0x3e
.uleb128 0x2
.byte 0x8
.byte 0x4
.4byte .LASF75
.uleb128 0xd
.4byte .LASF76
.byte 0x13
.byte 0x2d
.byte 0xe
.4byte 0x98
.uleb128 0xd
.4byte .LASF77
.byte 0x13
.byte 0x2e
.byte 0xe
.4byte 0x98
.uleb128 0x13
.byte 0x8
.byte 0x14
.byte 0x6d
.byte 0x2
.4byte 0x49a
.uleb128 0x14
.4byte .LASF78
.byte 0x14
.byte 0x6e
.byte 0x9
.4byte 0x44d
.uleb128 0x15
.string "ptr"
.byte 0x14
.byte 0x70
.byte 0x9
.4byte 0x44d
.byte 0
.uleb128 0x16
.4byte .LASF85
.byte 0x20
.byte 0x20
.byte 0x14
.byte 0x3e
.byte 0x8
.4byte 0x4dd
.uleb128 0x9
.4byte .LASF79
.byte 0x14
.byte 0x4b
.byte 0x8
.4byte 0x441
.byte 0
.uleb128 0x9
.4byte .LASF80
.byte 0x14
.byte 0x5a
.byte 0x8
.4byte 0x441
.byte 0x4
.uleb128 0x9
.4byte .LASF81
.byte 0x14
.byte 0x7c
.byte 0x4
.4byte 0x478
.byte 0x8
.uleb128 0x9
.4byte .LASF82
.byte 0x14
.byte 0x90
.byte 0x8
.4byte 0x441
.byte 0x10
.byte 0
.uleb128 0xd
.4byte .LASF83
.byte 0x3
.byte 0x33
.byte 0x1d
.4byte 0x49a
.uleb128 0xd
.4byte .LASF84
.byte 0x3
.byte 0x34
.byte 0xc
.4byte 0x53
.uleb128 0x16
.4byte .LASF86
.byte 0x80
.byte 0x80
.byte 0x1
.byte 0x12
.byte 0x8
.4byte 0x50f
.uleb128 0x17
.string "v"
.byte 0x1
.byte 0x13
.byte 0xb
.4byte 0x19c
.byte 0
.byte 0
.uleb128 0x18
.4byte .LASF87
.4byte 0x20000
.byte 0x80
.byte 0x1
.byte 0x16
.byte 0x8
.4byte 0x52d
.uleb128 0x19
.string "c"
.byte 0x1
.byte 0x17
.byte 0x1b
.4byte 0x52d
.byte 0x80
.byte 0
.byte 0
.uleb128 0x1a
.4byte 0x4f5
.byte 0x80
.4byte 0x53f
.uleb128 0x1b
.4byte 0x3e
.2byte 0x3ff
.byte 0
.uleb128 0x16
.4byte .LASF88
.byte 0x80
.byte 0x80
.byte 0x1
.byte 0x1a
.byte 0x8
.4byte 0x55b
.uleb128 0x9
.4byte .LASF89
.byte 0x1
.byte 0x1b
.byte 0xb
.4byte 0x19c
.byte 0
.byte 0
.uleb128 0x18
.4byte .LASF90
.4byte 0x40080
.byte 0x80
.byte 0x1
.byte 0x1e
.byte 0x8
.4byte 0x59a
.uleb128 0x1c
.4byte .LASF91
.byte 0x1
.byte 0x1f
.byte 0x15
.4byte 0x50f
.byte 0x80
.byte 0
.uleb128 0x1d
.string "c"
.byte 0x1
.byte 0x20
.byte 0x19
.4byte 0x59a
.byte 0x80
.4byte 0x20000
.uleb128 0x1e
.4byte .LASF92
.byte 0x1
.byte 0x21
.byte 0x6
.4byte 0x53
.4byte 0x40000
.byte 0
.uleb128 0x1a
.4byte 0x53f
.byte 0x80
.4byte 0x5ac
.uleb128 0x1b
.4byte 0x3e
.2byte 0x3ff
.byte 0
.uleb128 0xf
.4byte .LASF94
.byte 0x10
.byte 0x1
.byte 0x24
.byte 0x8
.4byte 0x5d4
.uleb128 0x9
.4byte .LASF95
.byte 0x1
.byte 0x25
.byte 0xb
.4byte 0x19c
.byte 0
.uleb128 0x9
.4byte .LASF96
.byte 0x1
.byte 0x26
.byte 0x1b
.4byte 0x5d4
.byte 0x8
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x5ac
.uleb128 0x16
.4byte .LASF97
.byte 0x80
.byte 0x80
.byte 0x1
.byte 0x29
.byte 0x8
.4byte 0x5f6
.uleb128 0x9
.4byte .LASF98
.byte 0x1
.byte 0x2a
.byte 0x1b
.4byte 0x5d4
.byte 0
.byte 0
.uleb128 0x18
.4byte .LASF99
.4byte 0x20000
.byte 0x80
.byte 0x1
.byte 0x2d
.byte 0x8
.4byte 0x614
.uleb128 0x19
.string "c"
.byte 0x1
.byte 0x2e
.byte 0x1b
.4byte 0x614
.byte 0x80
.byte 0
.byte 0
.uleb128 0x1a
.4byte 0x5da
.byte 0x80
.4byte 0x626
.uleb128 0x1b
.4byte 0x3e
.2byte 0x3ff
.byte 0
.uleb128 0x1f
.4byte .LASF108
.byte 0x1
.2byte 0x126
.byte 0x5
.4byte 0x53
.8byte .LFB110
.8byte .LFE110-.LFB110
.uleb128 0x1
.byte 0x9c
.4byte 0x835
.uleb128 0x20
.4byte .LASF126
.byte 0x1
.2byte 0x138
.byte 0x1
.uleb128 0x21
.4byte 0x11b4
.8byte .LBI196
.byte .LVU375
.8byte .LBB196
.8byte .LBE196-.LBB196
.byte 0x1
.2byte 0x12d
.byte 0x2
.4byte 0x6a1
.uleb128 0x22
.4byte 0x11c5
.4byte .LLST69
.4byte .LVUS69
.uleb128 0x23
.8byte .LVL124
.4byte 0x189d
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC10
.byte 0
.byte 0
.uleb128 0x21
.4byte 0x11b4
.8byte .LBI198
.byte .LVU381
.8byte .LBB198
.8byte .LBE198-.LBB198
.byte 0x1
.2byte 0x12f
.byte 0x2
.4byte 0x6f0
.uleb128 0x22
.4byte 0x11c5
.4byte .LLST70
.4byte .LVUS70
.uleb128 0x23
.8byte .LVL126
.4byte 0x189d
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC11
.byte 0
.byte 0
.uleb128 0x25
.4byte 0x11d3
.8byte .LBI200
.byte .LVU393
.4byte .Ldebug_ranges0+0x430
.byte 0x1
.2byte 0x129
.byte 0x3
.4byte 0x753
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST71
.4byte .LVUS71
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST72
.4byte .LVUS72
.uleb128 0x23
.8byte .LVL131
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC3
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -24
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x25
.4byte 0x11d3
.8byte .LBI204
.byte .LVU406
.4byte .Ldebug_ranges0+0x460
.byte 0x1
.2byte 0x132
.byte 0x3
.4byte 0x7b6
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST73
.4byte .LVUS73
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST74
.4byte .LVUS74
.uleb128 0x23
.8byte .LVL134
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC4
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -24
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x26
.8byte .LVL122
.4byte 0x18c5
.uleb128 0x26
.8byte .LVL125
.4byte 0xec0
.uleb128 0x26
.8byte .LVL127
.4byte 0x835
.uleb128 0x26
.8byte .LVL128
.4byte 0x18d1
.uleb128 0x26
.8byte .LVL129
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL130
.4byte 0x18e9
.4byte 0x811
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -24
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL132
.4byte 0x18dd
.uleb128 0x23
.8byte .LVL133
.4byte 0x18e9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -24
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x28
.4byte .LASF115
.byte 0x1
.byte 0xef
.byte 0x6
.8byte .LFB109
.8byte .LFE109-.LFB109
.uleb128 0x1
.byte 0x9c
.4byte 0xb2b
.uleb128 0x29
.string "i"
.byte 0x1
.byte 0xf1
.byte 0x6
.4byte 0x53
.4byte .LLST56
.4byte .LVUS56
.uleb128 0x29
.string "j"
.byte 0x1
.byte 0xf1
.byte 0x9
.4byte 0x53
.4byte .LLST57
.4byte .LVUS57
.uleb128 0x29
.string "sum"
.byte 0x1
.byte 0xf2
.byte 0xb
.4byte 0x190
.4byte .LLST58
.4byte .LVUS58
.uleb128 0x2a
.4byte .LASF100
.byte 0x1
.byte 0xf2
.byte 0x14
.4byte 0x190
.4byte .LLST59
.4byte .LVUS59
.uleb128 0x2b
.4byte .LASF101
.byte 0x1
.byte 0xf3
.byte 0x15
.4byte 0x5f6
.uleb128 0x2
.byte 0x8a
.sleb128 0
.uleb128 0x2b
.4byte .LASF102
.byte 0x1
.byte 0xf4
.byte 0xc
.4byte 0xb2b
.uleb128 0x3
.byte 0x91
.sleb128 -1672
.uleb128 0x2b
.4byte .LASF103
.byte 0x1
.byte 0xf5
.byte 0xc
.4byte 0xe9
.uleb128 0x3
.byte 0x91
.sleb128 -1800
.uleb128 0x2c
.4byte .LASF120
.4byte 0xb4b
.uleb128 0x9
.byte 0x3
.8byte __PRETTY_FUNCTION__.6118
.uleb128 0x2d
.8byte .LBB183
.8byte .LBE183-.LBB183
.4byte 0x90b
.uleb128 0x2a
.4byte .LASF104
.byte 0x1
.byte 0xfc
.byte 0x8
.4byte 0xaa
.4byte .LLST63
.4byte .LVUS63
.byte 0
.uleb128 0x2e
.4byte .Ldebug_ranges0+0x3f0
.4byte 0x97e
.uleb128 0x2a
.4byte .LASF105
.byte 0x1
.byte 0xff
.byte 0x1d
.4byte 0x5d4
.4byte .LLST68
.4byte .LVUS68
.uleb128 0x27
.8byte .LVL112
.4byte 0x18f6
.4byte 0x93f
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x1
.byte 0x40
.byte 0
.uleb128 0x23
.8byte .LVL114
.4byte 0x1903
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC7
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x9
.byte 0x3
.8byte .LC0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x104
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0xb
.byte 0x3
.8byte .LANCHOR0
.byte 0x23
.uleb128 0x30
.byte 0
.byte 0
.uleb128 0x2e
.4byte .Ldebug_ranges0+0x380
.4byte 0xa15
.uleb128 0x2f
.4byte .LASF105
.byte 0x1
.2byte 0x113
.byte 0x1c
.4byte 0x5d4
.4byte .LLST64
.4byte .LVUS64
.uleb128 0x2d
.8byte .LBB185
.8byte .LBE185-.LBB185
.4byte 0x9c7
.uleb128 0x2f
.4byte .LASF104
.byte 0x1
.2byte 0x115
.byte 0x8
.4byte 0xaa
.4byte .LLST65
.4byte .LVUS65
.byte 0
.uleb128 0x25
.4byte 0xbe1
.8byte .LBI186
.byte .LVU360
.4byte .Ldebug_ranges0+0x3b0
.byte 0x1
.2byte 0x118
.byte 0x12
.4byte 0xa07
.uleb128 0x22
.4byte 0xbfe
.4byte .LLST66
.4byte .LVUS66
.uleb128 0x30
.4byte 0xbf2
.uleb128 0x31
.4byte .Ldebug_ranges0+0x3b0
.uleb128 0x32
.4byte 0xc0a
.4byte .LLST67
.4byte .LVUS67
.byte 0
.byte 0
.uleb128 0x26
.8byte .LVL117
.4byte 0x190f
.byte 0
.uleb128 0x33
.4byte 0x117e
.8byte .LBI179
.byte .LVU280
.4byte .Ldebug_ranges0+0x350
.byte 0x1
.byte 0xf7
.byte 0x2
.4byte 0xa76
.uleb128 0x22
.4byte 0x11a7
.4byte .LLST60
.4byte .LVUS60
.uleb128 0x22
.4byte 0x119b
.4byte .LLST61
.4byte .LVUS61
.uleb128 0x22
.4byte 0x118f
.4byte .LLST62
.4byte .LVUS62
.uleb128 0x23
.8byte .LVL90
.4byte 0x191c
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8a
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0
.byte 0
.uleb128 0x27
.8byte .LVL91
.4byte 0x1927
.4byte 0xa9b
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8
.byte 0x80
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x4
.byte 0x91
.sleb128 129272
.byte 0
.uleb128 0x27
.8byte .LVL98
.4byte 0x1933
.4byte 0xac4
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 -8
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8b
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8a
.sleb128 0
.byte 0
.uleb128 0x27
.8byte .LVL99
.4byte 0x193f
.4byte 0xadb
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x27
.8byte .LVL120
.4byte 0x1903
.4byte 0xb1d
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC8
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x9
.byte 0x3
.8byte .LC0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x123
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0xb
.byte 0x3
.8byte .LANCHOR0
.byte 0x23
.uleb128 0x30
.byte 0
.uleb128 0x26
.8byte .LVL121
.4byte 0x194b
.byte 0
.uleb128 0xa
.4byte 0x171
.4byte 0xb3b
.uleb128 0xb
.4byte 0x3e
.byte 0xc7
.byte 0
.uleb128 0xa
.4byte 0xa5
.4byte 0xb4b
.uleb128 0xb
.4byte 0x3e
.byte 0x10
.byte 0
.uleb128 0x4
.4byte 0xb3b
.uleb128 0x34
.4byte .LASF106
.byte 0x1
.byte 0xd1
.byte 0x7
.4byte 0x96
.byte 0x1
.4byte 0xbdb
.uleb128 0x35
.string "arg"
.byte 0x1
.byte 0xd1
.byte 0x25
.4byte 0x96
.uleb128 0x36
.string "i"
.byte 0x1
.byte 0xd3
.byte 0x6
.4byte 0x53
.uleb128 0x37
.4byte .LASF101
.byte 0x1
.byte 0xd4
.byte 0x16
.4byte 0xbdb
.uleb128 0x38
.uleb128 0x37
.4byte .LASF105
.byte 0x1
.byte 0xdd
.byte 0x1c
.4byte 0x5d4
.uleb128 0x27
.8byte .LVL67
.4byte 0xc17
.4byte 0xbad
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x26
.8byte .LVL69
.4byte 0x1954
.uleb128 0x23
.8byte .LVL70
.4byte 0xd8f
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x1
.byte 0x30
.byte 0
.byte 0
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x5f6
.uleb128 0x34
.4byte .LASF107
.byte 0x1
.byte 0xc6
.byte 0x1a
.4byte 0x5d4
.byte 0x1
.4byte 0xc17
.uleb128 0x39
.4byte .LASF101
.byte 0x1
.byte 0xc6
.byte 0x40
.4byte 0xbdb
.uleb128 0x35
.string "cpu"
.byte 0x1
.byte 0xc6
.byte 0x4a
.4byte 0x53
.uleb128 0x37
.4byte .LASF105
.byte 0x1
.byte 0xc8
.byte 0x1b
.4byte 0x5d4
.byte 0
.uleb128 0x3a
.4byte .LASF109
.byte 0x1
.byte 0xa7
.byte 0x1a
.4byte 0x5d4
.8byte .LFB106
.8byte .LFE106-.LFB106
.uleb128 0x1
.byte 0x9c
.4byte 0xd83
.uleb128 0x3b
.4byte .LASF101
.byte 0x1
.byte 0xa7
.byte 0x40
.4byte 0xbdb
.4byte .LLST34
.4byte .LVUS34
.uleb128 0x3b
.4byte .LASF110
.byte 0x1
.byte 0xa8
.byte 0xe
.4byte 0xd83
.4byte .LLST35
.4byte .LVUS35
.uleb128 0x2e
.4byte .Ldebug_ranges0+0x230
.4byte 0xd75
.uleb128 0x2b
.4byte .LASF98
.byte 0x1
.byte 0xab
.byte 0x1c
.4byte 0x5d4
.uleb128 0x3
.byte 0x91
.sleb128 -144
.uleb128 0x2a
.4byte .LASF111
.byte 0x1
.byte 0xac
.byte 0xd
.4byte 0xd89
.4byte .LLST36
.4byte .LVUS36
.uleb128 0x3c
.4byte .LASF112
.byte 0x1
.byte 0xac
.byte 0x18
.4byte 0x19c
.byte 0
.uleb128 0x2a
.4byte .LASF113
.byte 0x1
.byte 0xac
.byte 0x24
.4byte 0xd89
.4byte .LLST37
.4byte .LVUS37
.uleb128 0x3c
.4byte .LASF114
.byte 0x1
.byte 0xad
.byte 0x9
.4byte 0x390
.byte 0x8
.uleb128 0x29
.string "ret"
.byte 0x1
.byte 0xae
.byte 0x7
.4byte 0x53
.4byte .LLST38
.4byte .LVUS38
.uleb128 0x29
.string "cpu"
.byte 0x1
.byte 0xae
.byte 0xc
.4byte 0x53
.4byte .LLST39
.4byte .LVUS39
.uleb128 0x33
.4byte 0x10ca
.8byte .LBI145
.byte .LVU191
.4byte .Ldebug_ranges0+0x280
.byte 0x1
.byte 0xb5
.byte 0x9
.4byte 0xd5f
.uleb128 0x22
.4byte 0x110e
.4byte .LLST40
.4byte .LVUS40
.uleb128 0x22
.4byte 0x1101
.4byte .LLST41
.4byte .LVUS41
.uleb128 0x22
.4byte 0x10f4
.4byte .LLST42
.4byte .LVUS42
.uleb128 0x22
.4byte 0x10e7
.4byte .LLST43
.4byte .LVUS43
.uleb128 0x22
.4byte 0x10dc
.4byte .LLST44
.4byte .LVUS44
.uleb128 0x31
.4byte .Ldebug_ranges0+0x280
.uleb128 0x3d
.4byte 0x111b
.8byte .L53
.uleb128 0x3d
.4byte 0x1124
.8byte .L54
.byte 0
.byte 0
.uleb128 0x3e
.4byte 0x10bd
.8byte .LBI149
.byte .LVU182
.4byte .Ldebug_ranges0+0x2c0
.byte 0x1
.byte 0xb0
.byte 0x9
.byte 0
.uleb128 0x26
.8byte .LVL62
.4byte 0x194b
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x53
.uleb128 0x7
.byte 0x8
.4byte 0x19c
.uleb128 0x28
.4byte .LASF116
.byte 0x1
.byte 0x89
.byte 0x6
.8byte .LFB105
.8byte .LFE105-.LFB105
.uleb128 0x1
.byte 0x9c
.4byte 0xec0
.uleb128 0x3f
.4byte .LASF101
.byte 0x1
.byte 0x89
.byte 0x2d
.4byte 0xbdb
.uleb128 0x1
.byte 0x53
.uleb128 0x3f
.4byte .LASF105
.byte 0x1
.byte 0x8a
.byte 0x1d
.4byte 0x5d4
.uleb128 0x1
.byte 0x54
.uleb128 0x3f
.4byte .LASF110
.byte 0x1
.byte 0x8b
.byte 0x9
.4byte 0xd83
.uleb128 0x1
.byte 0x55
.uleb128 0x29
.string "cpu"
.byte 0x1
.byte 0x8d
.byte 0x6
.4byte 0x53
.4byte .LLST26
.4byte .LVUS26
.uleb128 0x31
.4byte .Ldebug_ranges0+0x1d0
.uleb128 0x2a
.4byte .LASF111
.byte 0x1
.byte 0x90
.byte 0xd
.4byte 0xd89
.4byte .LLST27
.4byte .LVUS27
.uleb128 0x2a
.4byte .LASF117
.byte 0x1
.byte 0x90
.byte 0x18
.4byte 0x19c
.4byte .LLST28
.4byte .LVUS28
.uleb128 0x2a
.4byte .LASF118
.byte 0x1
.byte 0x90
.byte 0x20
.4byte 0x19c
.4byte .LLST29
.4byte .LVUS29
.uleb128 0x40
.string "ret"
.byte 0x1
.byte 0x91
.byte 0x7
.4byte 0x53
.byte 0
.uleb128 0x3e
.4byte 0x10bd
.8byte .LBI137
.byte .LVU150
.4byte .Ldebug_ranges0+0x200
.byte 0x1
.byte 0x93
.byte 0x9
.uleb128 0x41
.4byte 0x112e
.8byte .LBI141
.byte .LVU161
.8byte .LBB141
.8byte .LBE141-.LBB141
.byte 0x1
.byte 0x99
.byte 0x9
.uleb128 0x22
.4byte 0x1161
.4byte .LLST30
.4byte .LVUS30
.uleb128 0x22
.4byte 0x1155
.4byte .LLST31
.4byte .LVUS31
.uleb128 0x22
.4byte 0x1149
.4byte .LLST32
.4byte .LVUS32
.uleb128 0x22
.4byte 0x113f
.4byte .LLST33
.4byte .LVUS33
.uleb128 0x3d
.4byte 0x116d
.8byte .L43
.uleb128 0x3d
.4byte 0x1175
.8byte .L44
.byte 0
.byte 0
.byte 0
.uleb128 0x42
.4byte .LASF122
.byte 0x1
.byte 0x70
.byte 0x6
.byte 0x1
.4byte 0xf1b
.uleb128 0x37
.4byte .LASF119
.byte 0x1
.byte 0x72
.byte 0xc
.4byte 0x5a
.uleb128 0x36
.string "i"
.byte 0x1
.byte 0x73
.byte 0x6
.4byte 0x53
.uleb128 0x36
.string "sum"
.byte 0x1
.byte 0x74
.byte 0xb
.4byte 0x190
.uleb128 0x37
.4byte .LASF102
.byte 0x1
.byte 0x75
.byte 0xc
.4byte 0xf1b
.uleb128 0x37
.4byte .LASF95
.byte 0x1
.byte 0x76
.byte 0x1c
.4byte 0x55b
.uleb128 0x2c
.4byte .LASF120
.4byte 0xf3d
.uleb128 0x9
.byte 0x3
.8byte __PRETTY_FUNCTION__.6065
.byte 0
.uleb128 0xa
.4byte 0x171
.4byte 0xf2d
.uleb128 0x43
.4byte 0x3e
.uleb128 0x2
.byte 0x8
.byte 0xc7
.byte 0
.uleb128 0xa
.4byte 0xa5
.4byte 0xf3d
.uleb128 0xb
.4byte 0x3e
.byte 0x14
.byte 0
.uleb128 0x4
.4byte 0xf2d
.uleb128 0x34
.4byte .LASF121
.byte 0x1
.byte 0x52
.byte 0x7
.4byte 0x96
.byte 0x1
.4byte 0xf82
.uleb128 0x35
.string "arg"
.byte 0x1
.byte 0x52
.byte 0x29
.4byte 0x96
.uleb128 0x37
.4byte .LASF95
.byte 0x1
.byte 0x54
.byte 0x1d
.4byte 0xf82
.uleb128 0x36
.string "i"
.byte 0x1
.byte 0x55
.byte 0x6
.4byte 0x53
.uleb128 0x36
.string "cpu"
.byte 0x1
.byte 0x55
.byte 0x9
.4byte 0x53
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x55b
.uleb128 0x42
.4byte .LASF123
.byte 0x1
.byte 0x48
.byte 0x6
.byte 0x1
.4byte 0xfc1
.uleb128 0x39
.4byte .LASF91
.byte 0x1
.byte 0x48
.byte 0x2d
.4byte 0xfc1
.uleb128 0x35
.string "cpu"
.byte 0x1
.byte 0x48
.byte 0x37
.4byte 0x53
.uleb128 0x2c
.4byte .LASF120
.4byte 0xfd7
.uleb128 0x9
.byte 0x3
.8byte __PRETTY_FUNCTION__.6038
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x50f
.uleb128 0xa
.4byte 0xa5
.4byte 0xfd7
.uleb128 0xb
.4byte 0x3e
.byte 0x12
.byte 0
.uleb128 0x4
.4byte 0xfc7
.uleb128 0x3a
.4byte .LASF124
.byte 0x1
.byte 0x32
.byte 0x5
.4byte 0x53
.8byte .LFB101
.8byte .LFE101-.LFB101
.uleb128 0x1
.byte 0x9c
.4byte 0x10bd
.uleb128 0x3b
.4byte .LASF91
.byte 0x1
.byte 0x32
.byte 0x2c
.4byte 0xfc1
.4byte .LLST2
.4byte .LVUS2
.uleb128 0x29
.string "cpu"
.byte 0x1
.byte 0x34
.byte 0x6
.4byte 0x53
.4byte .LLST3
.4byte .LVUS3
.uleb128 0x31
.4byte .Ldebug_ranges0+0
.uleb128 0x40
.string "ret"
.byte 0x1
.byte 0x37
.byte 0x7
.4byte 0x53
.byte 0
.uleb128 0x33
.4byte 0x112e
.8byte .LBI79
.byte .LVU15
.4byte .Ldebug_ranges0+0x30
.byte 0x1
.byte 0x3a
.byte 0x9
.4byte 0x10a6
.uleb128 0x22
.4byte 0x1161
.4byte .LLST4
.4byte .LVUS4
.uleb128 0x22
.4byte 0x1155
.4byte .LLST5
.4byte .LVUS5
.uleb128 0x22
.4byte 0x1149
.4byte .LLST6
.4byte .LVUS6
.uleb128 0x22
.4byte 0x113f
.4byte .LLST7
.4byte .LVUS7
.uleb128 0x31
.4byte .Ldebug_ranges0+0x30
.uleb128 0x3d
.4byte 0x116d
.8byte .L5
.uleb128 0x3d
.4byte 0x1175
.8byte .L6
.byte 0
.byte 0
.uleb128 0x3e
.4byte 0x10bd
.8byte .LBI82
.byte .LVU10
.4byte .Ldebug_ranges0+0x60
.byte 0x1
.byte 0x39
.byte 0x9
.byte 0
.byte 0
.uleb128 0x44
.4byte .LASF159
.byte 0x3
.byte 0x8c
.byte 0x18
.4byte 0x184
.byte 0x3
.uleb128 0x45
.4byte .LASF129
.byte 0x2
.2byte 0x10a
.byte 0x5
.4byte 0x53
.byte 0x3
.4byte 0x112e
.uleb128 0x46
.string "v"
.byte 0x2
.2byte 0x10a
.byte 0x2a
.4byte 0xd89
.uleb128 0x47
.4byte .LASF112
.byte 0x2
.2byte 0x10a
.byte 0x36
.4byte 0x19c
.uleb128 0x47
.4byte .LASF125
.byte 0x2
.2byte 0x10b
.byte 0x11
.4byte 0x390
.uleb128 0x47
.4byte .LASF113
.byte 0x2
.2byte 0x10b
.byte 0x22
.4byte 0xd89
.uleb128 0x46
.string "cpu"
.byte 0x2
.2byte 0x10b
.byte 0x2c
.4byte 0x53
.uleb128 0x20
.4byte .LASF127
.byte 0x2
.2byte 0x140
.byte 0x1
.uleb128 0x20
.4byte .LASF128
.byte 0x2
.2byte 0x143
.byte 0x1
.byte 0
.uleb128 0x48
.4byte .LASF130
.byte 0x2
.byte 0xcf
.byte 0x5
.4byte 0x53
.byte 0x3
.4byte 0x117e
.uleb128 0x35
.string "v"
.byte 0x2
.byte 0xcf
.byte 0x22
.4byte 0xd89
.uleb128 0x39
.4byte .LASF118
.byte 0x2
.byte 0xcf
.byte 0x2e
.4byte 0x19c
.uleb128 0x39
.4byte .LASF131
.byte 0x2
.byte 0xcf
.byte 0x3f
.4byte 0x19c
.uleb128 0x35
.string "cpu"
.byte 0x2
.byte 0xcf
.byte 0x49
.4byte 0x53
.uleb128 0x49
.4byte .LASF127
.byte 0x2
.byte 0xfc
.byte 0x1
.uleb128 0x49
.4byte .LASF128
.byte 0x2
.byte 0xff
.byte 0x1
.byte 0
.uleb128 0x4a
.4byte .LASF135
.byte 0x5
.byte 0x3b
.byte 0x1
.4byte 0x96
.byte 0x3
.4byte 0x11b4
.uleb128 0x39
.4byte .LASF132
.byte 0x5
.byte 0x3b
.byte 0x1
.4byte 0x96
.uleb128 0x39
.4byte .LASF133
.byte 0x5
.byte 0x3b
.byte 0x1
.4byte 0x53
.uleb128 0x39
.4byte .LASF134
.byte 0x5
.byte 0x3b
.byte 0x1
.4byte 0xaa
.byte 0
.uleb128 0x4a
.4byte .LASF136
.byte 0x4
.byte 0x69
.byte 0x1
.4byte 0x53
.byte 0x3
.4byte 0x11d3
.uleb128 0x39
.4byte .LASF137
.byte 0x4
.byte 0x69
.byte 0x20
.4byte 0x100
.uleb128 0x4b
.byte 0
.uleb128 0x4a
.4byte .LASF138
.byte 0x4
.byte 0x62
.byte 0x1
.4byte 0x53
.byte 0x3
.4byte 0x11fe
.uleb128 0x39
.4byte .LASF139
.byte 0x4
.byte 0x62
.byte 0x1b
.4byte 0x3ae
.uleb128 0x39
.4byte .LASF137
.byte 0x4
.byte 0x62
.byte 0x3c
.4byte 0x100
.uleb128 0x4b
.byte 0
.uleb128 0x4c
.4byte 0xf88
.8byte .LFB111
.8byte .LFE111-.LFB111
.uleb128 0x1
.byte 0x9c
.4byte 0x126f
.uleb128 0x22
.4byte 0xfa1
.4byte .LLST0
.4byte .LVUS0
.uleb128 0x22
.4byte 0xf95
.4byte .LLST1
.4byte .LVUS1
.uleb128 0x23
.8byte .LVL1
.4byte 0x1903
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC1
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x9
.byte 0x3
.8byte .LC0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x4a
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x9
.byte 0x3
.8byte .LANCHOR0
.byte 0
.byte 0
.uleb128 0x4c
.4byte 0xf42
.8byte .LFB103
.8byte .LFE103-.LFB103
.uleb128 0x1
.byte 0x9c
.4byte 0x1490
.uleb128 0x22
.4byte 0xf53
.4byte .LLST8
.4byte .LVUS8
.uleb128 0x32
.4byte 0xf5f
.4byte .LLST9
.4byte .LVUS9
.uleb128 0x4d
.4byte 0xf6b
.uleb128 0x4d
.4byte 0xf75
.uleb128 0x4e
.4byte 0xf42
.4byte .Ldebug_ranges0+0x90
.byte 0x1
.byte 0x52
.byte 0x7
.4byte 0x13ec
.uleb128 0x30
.4byte 0xf53
.uleb128 0x31
.4byte .Ldebug_ranges0+0x90
.uleb128 0x4d
.4byte 0xf5f
.uleb128 0x32
.4byte 0xf6b
.4byte .LLST10
.4byte .LVUS10
.uleb128 0x32
.4byte 0xf75
.4byte .LLST11
.4byte .LVUS11
.uleb128 0x33
.4byte 0xf88
.8byte .LBI100
.byte .LVU41
.4byte .Ldebug_ranges0+0xd0
.byte 0x1
.byte 0x5f
.byte 0x3
.4byte 0x132f
.uleb128 0x30
.4byte 0xfa1
.uleb128 0x22
.4byte 0xf95
.4byte .LLST12
.4byte .LVUS12
.uleb128 0x31
.4byte .Ldebug_ranges0+0xd0
.uleb128 0x23
.8byte .LVL20
.4byte 0x11fe
.uleb128 0x4f
.4byte 0xf95
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.byte 0
.uleb128 0x33
.4byte 0x11d3
.8byte .LBI108
.byte .LVU76
.4byte .Ldebug_ranges0+0x120
.byte 0x1
.byte 0x62
.byte 0x3
.4byte 0x1391
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST13
.4byte .LVUS13
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST14
.4byte .LVUS14
.uleb128 0x23
.8byte .LVL29
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC4
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x27
.8byte .LVL11
.4byte 0xfdc
.4byte 0x13a9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x26
.8byte .LVL17
.4byte 0x18d1
.uleb128 0x26
.8byte .LVL27
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL28
.4byte 0x18e9
.4byte 0x13dd
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL30
.4byte 0x1960
.byte 0
.byte 0
.uleb128 0x33
.4byte 0x11d3
.8byte .LBI115
.byte .LVU66
.4byte .Ldebug_ranges0+0x150
.byte 0x1
.byte 0x58
.byte 0x3
.4byte 0x144e
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST15
.4byte .LVUS15
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST16
.4byte .LVUS16
.uleb128 0x23
.8byte .LVL24
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC3
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x26
.8byte .LVL8
.4byte 0x18c5
.uleb128 0x26
.8byte .LVL22
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL23
.4byte 0x18e9
.4byte 0x1482
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL25
.4byte 0x1960
.byte 0
.uleb128 0x4c
.4byte 0xf88
.8byte .LFB102
.8byte .LFE102-.LFB102
.uleb128 0x1
.byte 0x9c
.4byte 0x14d3
.uleb128 0x22
.4byte 0xf95
.4byte .LLST17
.4byte .LVUS17
.uleb128 0x22
.4byte 0xfa1
.4byte .LLST18
.4byte .LVUS18
.uleb128 0x26
.8byte .LVL33
.4byte 0x11fe
.byte 0
.uleb128 0x4c
.4byte 0xec0
.8byte .LFB104
.8byte .LFE104-.LFB104
.uleb128 0x1
.byte 0x9c
.4byte 0x1658
.uleb128 0x50
.4byte 0xecd
.byte 0xc8
.uleb128 0x32
.4byte 0xed9
.4byte .LLST20
.4byte .LVUS20
.uleb128 0x32
.4byte 0xee3
.4byte .LLST21
.4byte .LVUS21
.uleb128 0x51
.4byte 0xeef
.4byte 0xf1b
.4byte .LLST22
.4byte .LVUS22
.uleb128 0x52
.4byte 0xefb
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x33
.4byte 0x117e
.8byte .LBI126
.byte .LVU111
.4byte .Ldebug_ranges0+0x180
.byte 0x1
.byte 0x78
.byte 0x2
.4byte 0x158a
.uleb128 0x22
.4byte 0x11a7
.4byte .LLST23
.4byte .LVUS23
.uleb128 0x22
.4byte 0x119b
.4byte .LLST24
.4byte .LVUS24
.uleb128 0x22
.4byte 0x118f
.4byte .LLST25
.4byte .LVUS25
.uleb128 0x23
.8byte .LVL35
.4byte 0x191c
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0xc
.4byte 0x40080
.byte 0
.byte 0
.uleb128 0x53
.4byte 0xec0
.8byte .LBI134
.byte .LVU138
.8byte .LBB134
.8byte .LBE134-.LBB134
.byte 0x1
.byte 0x70
.byte 0x6
.4byte 0x160a
.uleb128 0x4d
.4byte 0xecd
.uleb128 0x4d
.4byte 0xed9
.uleb128 0x4d
.4byte 0xee3
.uleb128 0x54
.4byte 0xeef
.4byte 0x1658
.uleb128 0x4d
.4byte 0xefb
.uleb128 0x23
.8byte .LVL46
.4byte 0x1903
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC5
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x9
.byte 0x3
.8byte .LC0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x86
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0xb
.byte 0x3
.8byte .LANCHOR0
.byte 0x23
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x27
.8byte .LVL38
.4byte 0x1933
.4byte 0x1633
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 -8
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x89
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8e
.sleb128 0
.byte 0
.uleb128 0x27
.8byte .LVL40
.4byte 0x193f
.4byte 0x164a
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x26
.8byte .LVL47
.4byte 0x194b
.byte 0
.uleb128 0xa
.4byte 0x171
.4byte 0x1667
.uleb128 0x55
.4byte 0x3e
.byte 0
.uleb128 0x4c
.4byte 0xb50
.8byte .LFB108
.8byte .LFE108-.LFB108
.uleb128 0x1
.byte 0x9c
.4byte 0x184c
.uleb128 0x22
.4byte 0xb61
.4byte .LLST45
.4byte .LVUS45
.uleb128 0x32
.4byte 0xb6d
.4byte .LLST46
.4byte .LVUS46
.uleb128 0x32
.4byte 0xb77
.4byte .LLST47
.4byte .LVUS47
.uleb128 0x56
.4byte 0xb83
.8byte .LBB168
.8byte .LBE168-.LBB168
.4byte 0x16d0
.uleb128 0x32
.4byte 0xb84
.4byte .LLST48
.4byte .LVUS48
.byte 0
.uleb128 0x33
.4byte 0x11d3
.8byte .LBI169
.byte .LVU241
.4byte .Ldebug_ranges0+0x2f0
.byte 0x1
.byte 0xd7
.byte 0x3
.4byte 0x1732
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST49
.4byte .LVUS49
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST50
.4byte .LVUS50
.uleb128 0x23
.8byte .LVL79
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC3
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x53
.4byte 0xb50
.8byte .LBI173
.byte .LVU248
.8byte .LBB173
.8byte .LBE173-.LBB173
.byte 0x1
.byte 0xd1
.byte 0x7
.4byte 0x17fd
.uleb128 0x30
.4byte 0xb61
.uleb128 0x4d
.4byte 0xb6d
.uleb128 0x4d
.4byte 0xb77
.uleb128 0x33
.4byte 0x11d3
.8byte .LBI175
.byte .LVU252
.4byte .Ldebug_ranges0+0x320
.byte 0x1
.byte 0xe6
.byte 0x3
.4byte 0x17c8
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST51
.4byte .LVUS51
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST52
.4byte .LVUS52
.uleb128 0x23
.8byte .LVL84
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC4
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x26
.8byte .LVL82
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL83
.4byte 0x18e9
.4byte 0x17ef
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL85
.4byte 0x1960
.byte 0
.uleb128 0x26
.8byte .LVL65
.4byte 0x18c5
.uleb128 0x26
.8byte .LVL72
.4byte 0x18d1
.uleb128 0x26
.8byte .LVL77
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL78
.4byte 0x18e9
.4byte 0x183e
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL80
.4byte 0x1960
.byte 0
.uleb128 0x4c
.4byte 0xbe1
.8byte .LFB107
.8byte .LFE107-.LFB107
.uleb128 0x1
.byte 0x9c
.4byte 0x188f
.uleb128 0x22
.4byte 0xbf2
.4byte .LLST53
.4byte .LVUS53
.uleb128 0x22
.4byte 0xbfe
.4byte .LLST54
.4byte .LVUS54
.uleb128 0x32
.4byte 0xc0a
.4byte .LLST55
.4byte .LVUS55
.byte 0
.uleb128 0x57
.uleb128 0xc
.byte 0x9e
.uleb128 0xa
.byte 0x73
.byte 0x70
.byte 0x69
.byte 0x6e
.byte 0x6c
.byte 0x6f
.byte 0x63
.byte 0x6b
.byte 0xa
.byte 0
.uleb128 0x58
.4byte .LASF148
.4byte .LASF149
.byte 0x18
.byte 0
.uleb128 0x57
.uleb128 0xf
.byte 0x9e
.uleb128 0xd
.byte 0x70
.byte 0x65
.byte 0x72
.byte 0x63
.byte 0x70
.byte 0x75
.byte 0x5f
.byte 0x6c
.byte 0x69
.byte 0x73
.byte 0x74
.byte 0xa
.byte 0
.uleb128 0x59
.4byte .LASF140
.4byte .LASF140
.byte 0x4
.byte 0x58
.byte 0xc
.uleb128 0x59
.4byte .LASF141
.4byte .LASF141
.byte 0x3
.byte 0x6a
.byte 0x5
.uleb128 0x59
.4byte .LASF142
.4byte .LASF142
.byte 0x3
.byte 0x6f
.byte 0x5
.uleb128 0x59
.4byte .LASF143
.4byte .LASF143
.byte 0x13
.byte 0x25
.byte 0xd
.uleb128 0x5a
.4byte .LASF144
.4byte .LASF144
.byte 0x15
.2byte 0x18d
.byte 0xe
.uleb128 0x5a
.4byte .LASF145
.4byte .LASF145
.byte 0x16
.2byte 0x21b
.byte 0xe
.uleb128 0x59
.4byte .LASF146
.4byte .LASF146
.byte 0x17
.byte 0x45
.byte 0xd
.uleb128 0x5a
.4byte .LASF147
.4byte .LASF147
.byte 0x16
.2byte 0x235
.byte 0xd
.uleb128 0x58
.4byte .LASF135
.4byte .LASF150
.byte 0x18
.byte 0
.uleb128 0x59
.4byte .LASF151
.4byte .LASF151
.byte 0x19
.byte 0x7d
.byte 0xc
.uleb128 0x59
.4byte .LASF152
.4byte .LASF152
.byte 0x1a
.byte 0xc6
.byte 0xc
.uleb128 0x59
.4byte .LASF153
.4byte .LASF153
.byte 0x1a
.byte 0xd7
.byte 0xc
.uleb128 0x5b
.4byte .LASF160
.4byte .LASF160
.uleb128 0x59
.4byte .LASF154
.4byte .LASF154
.byte 0x19
.byte 0x44
.byte 0xc
.uleb128 0x5a
.4byte .LASF127
.4byte .LASF127
.byte 0x16
.2byte 0x24f
.byte 0xd
.byte 0
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x25
.uleb128 0xe
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1b
.uleb128 0xe
.uleb128 0x55
.uleb128 0x17
.uleb128 0x11
.uleb128 0x1
.uleb128 0x10
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x3
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.byte 0
.byte 0
.uleb128 0x4
.uleb128 0x26
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x5
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x6
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x7
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x8
.uleb128 0x13
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x9
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xa
.uleb128 0x1
.byte 0x1
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xb
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xc
.uleb128 0x37
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xd
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0xe
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0xf
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x10
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x11
.uleb128 0x13
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0x12
.uleb128 0x21
.byte 0
.byte 0
.byte 0
.uleb128 0x13
.uleb128 0x17
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x14
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x15
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x16
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x88
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x17
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x18
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0x6
.uleb128 0x88
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x19
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x88
.uleb128 0xb
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1a
.uleb128 0x1
.byte 0x1
.uleb128 0x49
.uleb128 0x13
.uleb128 0x88
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1b
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x1c
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x88
.uleb128 0xb
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1d
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x88
.uleb128 0xb
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x1e
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x1f
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x20
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x21
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x22
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x23
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x24
.uleb128 0x410a
.byte 0
.uleb128 0x2
.uleb128 0x18
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x25
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x26
.uleb128 0x4109
.byte 0
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x27
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x28
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x29
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2a
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2b
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2c
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2d
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2e
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2f
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x30
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x31
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x32
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x33
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x34
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x35
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x36
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x37
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x38
.uleb128 0xb
.byte 0x1
.byte 0
.byte 0
.uleb128 0x39
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3a
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3b
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x3c
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x3d
.uleb128 0xa
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.byte 0
.byte 0
.uleb128 0x3e
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x3f
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x40
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x41
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x42
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x43
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x44
.uleb128 0x2e
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x45
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x46
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x47
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x48
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x49
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4a
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4b
.uleb128 0x18
.byte 0
.byte 0
.byte 0
.uleb128 0x4c
.uleb128 0x2e
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4d
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4e
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4f
.uleb128 0x410a
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x50
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x51
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x52
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x53
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x54
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x55
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x56
.uleb128 0xb
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x57
.uleb128 0x36
.byte 0
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x58
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x59
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x5a
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x5b
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.byte 0
.section .debug_loc,"",@progbits
.Ldebug_loc0:
.LVUS69:
.uleb128 .LVU375
.uleb128 .LVU378
.LLST69:
.8byte .LVL123
.8byte .LVL124
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+6287
.sleb128 0
.8byte 0
.8byte 0
.LVUS70:
.uleb128 .LVU381
.uleb128 .LVU384
.LLST70:
.8byte .LVL125
.8byte .LVL126
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+6312
.sleb128 0
.8byte 0
.8byte 0
.LVUS71:
.uleb128 .LVU393
.uleb128 .LVU398
.LLST71:
.8byte .LVL130
.8byte .LVL131
.2byte 0xa
.byte 0x3
.8byte .LC3
.byte 0x9f
.8byte 0
.8byte 0
.LVUS72:
.uleb128 .LVU393
.uleb128 .LVU398
.LLST72:
.8byte .LVL130
.8byte .LVL131
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS73:
.uleb128 .LVU406
.uleb128 .LVU411
.LLST73:
.8byte .LVL133
.8byte .LVL134
.2byte 0xa
.byte 0x3
.8byte .LC4
.byte 0x9f
.8byte 0
.8byte 0
.LVUS74:
.uleb128 .LVU406
.uleb128 .LVU411
.LLST74:
.8byte .LVL133
.8byte .LVL134
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS56:
.uleb128 .LVU286
.uleb128 .LVU289
.uleb128 .LVU289
.uleb128 .LVU290
.uleb128 .LVU290
.uleb128 .LVU291
.uleb128 .LVU293
.uleb128 .LVU298
.uleb128 .LVU298
.uleb128 .LVU299
.uleb128 .LVU311
.uleb128 .LVU312
.uleb128 .LVU312
.uleb128 .LVU313
.uleb128 .LVU315
.uleb128 .LVU321
.uleb128 .LVU321
.uleb128 .LVU322
.uleb128 .LVU328
.uleb128 .LVU349
.uleb128 .LVU349
.uleb128 .LVU367
.LLST56:
.8byte .LVL91
.8byte .LVL92
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL92
.8byte .LVL92
.2byte 0x1
.byte 0x6b
.8byte .LVL92
.8byte .LVL93
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.8byte .LVL94
.8byte .LVL95
.2byte 0x1
.byte 0x6b
.8byte .LVL95
.8byte .LVL96
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.8byte .LVL100
.8byte .LVL100
.2byte 0x1
.byte 0x6e
.8byte .LVL100
.8byte .LVL101
.2byte 0x3
.byte 0x8e
.sleb128 1
.byte 0x9f
.8byte .LVL102
.8byte .LVL103
.2byte 0x1
.byte 0x6e
.8byte .LVL103
.8byte .LVL104
.2byte 0x3
.byte 0x8e
.sleb128 1
.byte 0x9f
.8byte .LVL108
.8byte .LVL114
.2byte 0x1
.byte 0x6b
.8byte .LVL114
.8byte .LVL119
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS57:
.uleb128 .LVU328
.uleb128 .LVU331
.uleb128 .LVU339
.uleb128 .LVU349
.LLST57:
.8byte .LVL108
.8byte .LVL109
.2byte 0x1
.byte 0x6f
.8byte .LVL110
.8byte .LVL114
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS58:
.uleb128 .LVU276
.uleb128 .LVU311
.uleb128 .LVU311
.uleb128 .LVU327
.uleb128 .LVU328
.uleb128 .LVU349
.uleb128 .LVU349
.uleb128 0
.LLST58:
.8byte .LVL89
.8byte .LVL100
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL100
.8byte .LVL107
.2byte 0x1
.byte 0x6f
.8byte .LVL108
.8byte .LVL114
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL114
.8byte .LFE109
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS59:
.uleb128 .LVU276
.uleb128 .LVU289
.uleb128 .LVU289
.uleb128 .LVU326
.uleb128 .LVU328
.uleb128 0
.LLST59:
.8byte .LVL89
.8byte .LVL92
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL92
.8byte .LVL106
.2byte 0x1
.byte 0x6d
.8byte .LVL108
.8byte .LFE109
.2byte 0x1
.byte 0x6d
.8byte 0
.8byte 0
.LVUS63:
.uleb128 .LVU289
.uleb128 .LVU291
.uleb128 .LVU291
.uleb128 .LVU293
.uleb128 .LVU295
.uleb128 .LVU299
.uleb128 .LVU299
.uleb128 .LVU301
.uleb128 .LVU328
.uleb128 .LVU349
.LLST63:
.8byte .LVL92
.8byte .LVL93
.2byte 0x1
.byte 0x6b
.8byte .LVL93
.8byte .LVL94
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.8byte .LVL94
.8byte .LVL96
.2byte 0x1
.byte 0x6b
.8byte .LVL96
.8byte .LVL97
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.8byte .LVL108
.8byte .LVL114
.2byte 0x1
.byte 0x6b
.8byte 0
.8byte 0
.LVUS68:
.uleb128 .LVU289
.uleb128 .LVU293
.uleb128 .LVU328
.uleb128 .LVU339
.uleb128 .LVU345
.uleb128 .LVU348
.LLST68:
.8byte .LVL92
.8byte .LVL94
.2byte 0x1
.byte 0x53
.8byte .LVL108
.8byte .LVL110
.2byte 0x1
.byte 0x53
.8byte .LVL112
.8byte .LVL113
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.LVUS64:
.uleb128 .LVU355
.uleb128 .LVU359
.LLST64:
.8byte .LVL115
.8byte .LVL117-1
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.LVUS65:
.uleb128 .LVU311
.uleb128 .LVU313
.uleb128 .LVU313
.uleb128 .LVU315
.uleb128 .LVU318
.uleb128 .LVU322
.uleb128 .LVU322
.uleb128 .LVU324
.uleb128 .LVU349
.uleb128 .LVU367
.LLST65:
.8byte .LVL100
.8byte .LVL101
.2byte 0x1
.byte 0x6e
.8byte .LVL101
.8byte .LVL102
.2byte 0x3
.byte 0x8e
.sleb128 -1
.byte 0x9f
.8byte .LVL102
.8byte .LVL104
.2byte 0x1
.byte 0x6e
.8byte .LVL104
.8byte .LVL105
.2byte 0x3
.byte 0x8e
.sleb128 -1
.byte 0x9f
.8byte .LVL114
.8byte .LVL119
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS66:
.uleb128 .LVU349
.uleb128 .LVU355
.uleb128 .LVU360
.uleb128 .LVU367
.LLST66:
.8byte .LVL114
.8byte .LVL115
.2byte 0x1
.byte 0x6e
.8byte .LVL117
.8byte .LVL119
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS67:
.uleb128 .LVU349
.uleb128 .LVU355
.uleb128 .LVU364
.uleb128 .LVU367
.LLST67:
.8byte .LVL114
.8byte .LVL115
.2byte 0x1
.byte 0x53
.8byte .LVL118
.8byte .LVL119
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.LVUS60:
.uleb128 .LVU280
.uleb128 .LVU283
.LLST60:
.8byte .LVL89
.8byte .LVL90
.2byte 0x4
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0x9f
.8byte 0
.8byte 0
.LVUS61:
.uleb128 .LVU280
.uleb128 .LVU283
.LLST61:
.8byte .LVL89
.8byte .LVL90
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS62:
.uleb128 .LVU280
.uleb128 .LVU283
.uleb128 .LVU283
.uleb128 .LVU283
.LLST62:
.8byte .LVL89
.8byte .LVL90-1
.2byte 0x1
.byte 0x53
.8byte .LVL90-1
.8byte .LVL90
.2byte 0x1
.byte 0x6a
.8byte 0
.8byte 0
.LVUS34:
.uleb128 0
.uleb128 .LVU201
.uleb128 .LVU201
.uleb128 .LVU205
.uleb128 .LVU205
.uleb128 .LVU206
.uleb128 .LVU206
.uleb128 0
.LLST34:
.8byte .LVL53
.8byte .LVL56
.2byte 0x1
.byte 0x53
.8byte .LVL56
.8byte .LVL59
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0x1
.byte 0x53
.8byte .LVL60
.8byte .LFE106
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte 0
.8byte 0
.LVUS35:
.uleb128 0
.uleb128 .LVU209
.uleb128 .LVU209
.uleb128 0
.LLST35:
.8byte .LVL53
.8byte .LVL62-1
.2byte 0x1
.byte 0x54
.8byte .LVL62-1
.8byte .LFE106
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.8byte 0
.8byte 0
.LVUS36:
.uleb128 .LVU187
.uleb128 .LVU201
.uleb128 .LVU201
.uleb128 .LVU203
.uleb128 .LVU205
.uleb128 .LVU206
.uleb128 .LVU206
.uleb128 .LVU207
.LLST36:
.8byte .LVL54
.8byte .LVL56
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte .LVL56
.8byte .LVL57
.2byte 0xf
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte .LVL60
.8byte .LVL61
.2byte 0xf
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS37:
.uleb128 .LVU190
.uleb128 .LVU204
.uleb128 .LVU204
.uleb128 .LVU205
.uleb128 .LVU205
.uleb128 .LVU209
.uleb128 .LVU209
.uleb128 0
.LLST37:
.8byte .LVL54
.8byte .LVL58
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x90
.byte 0x1c
.byte 0x9f
.8byte .LVL58
.8byte .LVL59
.2byte 0x4
.byte 0x71
.sleb128 -144
.byte 0x9f
.8byte .LVL59
.8byte .LVL62-1
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x90
.byte 0x1c
.byte 0x9f
.8byte .LVL62-1
.8byte .LFE106
.2byte 0x4
.byte 0x91
.sleb128 -144
.byte 0x9f
.8byte 0
.8byte 0
.LVUS38:
.uleb128 .LVU193
.uleb128 .LVU201
.LLST38:
.8byte .LVL55
.8byte .LVL56
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS39:
.uleb128 .LVU186
.uleb128 .LVU203
.uleb128 .LVU205
.uleb128 .LVU207
.LLST39:
.8byte .LVL54
.8byte .LVL57
.2byte 0x1
.byte 0x5a
.8byte .LVL59
.8byte .LVL61
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS40:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST40:
.8byte .LVL54
.8byte .LVL55
.2byte 0x1
.byte 0x5a
.8byte .LVL59
.8byte .LVL60
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS41:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST41:
.8byte .LVL54
.8byte .LVL55
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x90
.byte 0x1c
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x90
.byte 0x1c
.byte 0x9f
.8byte 0
.8byte 0
.LVUS42:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST42:
.8byte .LVL54
.8byte .LVL55
.2byte 0x2
.byte 0x38
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0x2
.byte 0x38
.byte 0x9f
.8byte 0
.8byte 0
.LVUS43:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST43:
.8byte .LVL54
.8byte .LVL55
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS44:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST44:
.8byte .LVL54
.8byte .LVL55
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS26:
.uleb128 .LVU154
.uleb128 0
.LLST26:
.8byte .LVL49
.8byte .LFE105
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS27:
.uleb128 .LVU158
.uleb128 0
.LLST27:
.8byte .LVL50
.8byte .LFE105
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS28:
.uleb128 .LVU157
.uleb128 0
.LLST28:
.8byte .LVL50
.8byte .LFE105
.2byte 0x1
.byte 0x54
.8byte 0
.8byte 0
.LVUS29:
.uleb128 .LVU156
.uleb128 0
.LLST29:
.8byte .LVL50
.8byte .LFE105
.2byte 0x1
.byte 0x57
.8byte 0
.8byte 0
.LVUS30:
.uleb128 .LVU161
.uleb128 .LVU163
.LLST30:
.8byte .LVL51
.8byte .LVL52
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS31:
.uleb128 .LVU161
.uleb128 .LVU163
.LLST31:
.8byte .LVL51
.8byte .LVL52
.2byte 0x1
.byte 0x54
.8byte 0
.8byte 0
.LVUS32:
.uleb128 .LVU161
.uleb128 .LVU163
.LLST32:
.8byte .LVL51
.8byte .LVL52
.2byte 0x1
.byte 0x57
.8byte 0
.8byte 0
.LVUS33:
.uleb128 .LVU161
.uleb128 .LVU163
.LLST33:
.8byte .LVL51
.8byte .LVL52
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS2:
.uleb128 0
.uleb128 .LVU22
.uleb128 .LVU22
.uleb128 0
.LLST2:
.8byte .LVL2
.8byte .LVL5
.2byte 0x1
.byte 0x53
.8byte .LVL5
.8byte .LFE101
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte 0
.8byte 0
.LVUS3:
.uleb128 .LVU14
.uleb128 0
.LLST3:
.8byte .LVL3
.8byte .LFE101
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS4:
.uleb128 .LVU15
.uleb128 .LVU17
.LLST4:
.8byte .LVL3
.8byte .LVL4
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS5:
.uleb128 .LVU15
.uleb128 .LVU17
.LLST5:
.8byte .LVL3
.8byte .LVL4
.2byte 0x2
.byte 0x31
.byte 0x9f
.8byte 0
.8byte 0
.LVUS6:
.uleb128 .LVU15
.uleb128 .LVU17
.LLST6:
.8byte .LVL3
.8byte .LVL4
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS7:
.uleb128 .LVU15
.uleb128 .LVU17
.LLST7:
.8byte .LVL3
.8byte .LVL4
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS0:
.uleb128 .LVU1
.uleb128 0
.LLST0:
.8byte .LVL0
.8byte .LFE111
.2byte 0x6
.byte 0xfa
.4byte 0xfa1
.byte 0x9f
.8byte 0
.8byte 0
.LVUS1:
.uleb128 .LVU1
.uleb128 0
.LLST1:
.8byte .LVL0
.8byte .LFE111
.2byte 0x6
.byte 0xfa
.4byte 0xf95
.byte 0x9f
.8byte 0
.8byte 0
.LVUS8:
.uleb128 0
.uleb128 .LVU30
.uleb128 .LVU30
.uleb128 .LVU60
.uleb128 .LVU60
.uleb128 .LVU61
.uleb128 .LVU61
.uleb128 .LVU64
.uleb128 .LVU64
.uleb128 .LVU73
.uleb128 .LVU73
.uleb128 .LVU74
.uleb128 .LVU74
.uleb128 0
.LLST8:
.8byte .LVL6
.8byte .LVL8-1
.2byte 0x1
.byte 0x53
.8byte .LVL8-1
.8byte .LVL18
.2byte 0x1
.byte 0x6f
.8byte .LVL18
.8byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL19
.8byte .LVL21
.2byte 0x1
.byte 0x6f
.8byte .LVL21
.8byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL25
.8byte .LVL26
.2byte 0x1
.byte 0x6f
.8byte .LVL26
.8byte .LFE103
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.8byte 0
.8byte 0
.LVUS9:
.uleb128 .LVU27
.uleb128 .LVU30
.uleb128 .LVU30
.uleb128 .LVU60
.uleb128 .LVU60
.uleb128 .LVU61
.uleb128 .LVU61
.uleb128 .LVU64
.uleb128 .LVU64
.uleb128 .LVU73
.uleb128 .LVU73
.uleb128 .LVU74
.uleb128 .LVU74
.uleb128 0
.LLST9:
.8byte .LVL7
.8byte .LVL8-1
.2byte 0x1
.byte 0x53
.8byte .LVL8-1
.8byte .LVL18
.2byte 0x1
.byte 0x6f
.8byte .LVL18
.8byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL19
.8byte .LVL21
.2byte 0x1
.byte 0x6f
.8byte .LVL21
.8byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL25
.8byte .LVL26
.2byte 0x1
.byte 0x6f
.8byte .LVL26
.8byte .LFE103
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.8byte 0
.8byte 0
.LVUS10:
.uleb128 .LVU31
.uleb128 .LVU35
.uleb128 .LVU35
.uleb128 .LVU53
.uleb128 .LVU53
.uleb128 .LVU55
.uleb128 .LVU61
.uleb128 .LVU62
.LLST10:
.8byte .LVL9
.8byte .LVL10
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL10
.8byte .LVL15
.2byte 0x1
.byte 0x6e
.8byte .LVL15
.8byte .LVL16
.2byte 0x1
.byte 0x5a
.8byte .LVL19
.8byte .LVL20
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS11:
.uleb128 .LVU37
.uleb128 .LVU38
.LLST11:
.8byte .LVL11
.8byte .LVL12
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.LVUS12:
.uleb128 .LVU41
.uleb128 .LVU50
.uleb128 .LVU61
.uleb128 .LVU62
.LLST12:
.8byte .LVL13
.8byte .LVL14
.2byte 0x1
.byte 0x6f
.8byte .LVL19
.8byte .LVL20
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS13:
.uleb128 .LVU76
.uleb128 .LVU81
.LLST13:
.8byte .LVL28
.8byte .LVL29
.2byte 0xa
.byte 0x3
.8byte .LC4
.byte 0x9f
.8byte 0
.8byte 0
.LVUS14:
.uleb128 .LVU76
.uleb128 .LVU81
.LLST14:
.8byte .LVL28
.8byte .LVL29
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS15:
.uleb128 .LVU66
.uleb128 .LVU71
.LLST15:
.8byte .LVL23
.8byte .LVL24
.2byte 0xa
.byte 0x3
.8byte .LC3
.byte 0x9f
.8byte 0
.8byte 0
.LVUS16:
.uleb128 .LVU66
.uleb128 .LVU71
.LLST16:
.8byte .LVL23
.8byte .LVL24
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS17:
.uleb128 0
.uleb128 .LVU91
.uleb128 .LVU91
.uleb128 0
.LLST17:
.8byte .LVL31
.8byte .LVL33-1
.2byte 0x1
.byte 0x53
.8byte .LVL33-1
.8byte .LFE102
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte 0
.8byte 0
.LVUS18:
.uleb128 0
.uleb128 .LVU85
.uleb128 .LVU85
.uleb128 0
.LLST18:
.8byte .LVL31
.8byte .LVL32
.2byte 0x1
.byte 0x54
.8byte .LVL32
.8byte .LFE102
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.8byte 0
.8byte 0
.LVUS20:
.uleb128 .LVU117
.uleb128 .LVU118
.LLST20:
.8byte .LVL37
.8byte .LVL37
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS21:
.uleb128 .LVU127
.uleb128 .LVU136
.uleb128 .LVU138
.uleb128 .LVU140
.LLST21:
.8byte .LVL41
.8byte .LVL43
.2byte 0x1
.byte 0x59
.8byte .LVL45
.8byte .LVL46-1
.2byte 0x1
.byte 0x59
.8byte 0
.8byte 0
.LVUS22:
.uleb128 .LVU109
.uleb128 .LVU122
.uleb128 .LVU122
.uleb128 .LVU137
.uleb128 .LVU138
.uleb128 0
.LLST22:
.8byte .LVL36
.8byte .LVL39
.2byte 0x2
.byte 0x8c
.sleb128 0
.8byte .LVL39
.8byte .LVL44
.2byte 0x3
.byte 0x8c
.sleb128 -1592
.8byte .LVL45
.8byte .LFE104
.2byte 0x3
.byte 0x8c
.sleb128 -1592
.8byte 0
.8byte 0
.LVUS23:
.uleb128 .LVU111
.uleb128 .LVU113
.LLST23:
.8byte .LVL36
.8byte .LVL36
.2byte 0x6
.byte 0xc
.4byte 0x40080
.byte 0x9f
.8byte 0
.8byte 0
.LVUS24:
.uleb128 .LVU111
.uleb128 .LVU113
.LLST24:
.8byte .LVL36
.8byte .LVL36
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS25:
.uleb128 .LVU111
.uleb128 .LVU113
.LLST25:
.8byte .LVL36
.8byte .LVL36
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS45:
.uleb128 0
.uleb128 .LVU217
.uleb128 .LVU217
.uleb128 .LVU235
.uleb128 .LVU235
.uleb128 .LVU238
.uleb128 .LVU238
.uleb128 0
.LLST45:
.8byte .LVL63
.8byte .LVL65-1
.2byte 0x1
.byte 0x53
.8byte .LVL65-1
.8byte .LVL73
.2byte 0x1
.byte 0x6d
.8byte .LVL73
.8byte .LVL76
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL76
.8byte .LFE108
.2byte 0x1
.byte 0x6d
.8byte 0
.8byte 0
.LVUS46:
.uleb128 .LVU219
.uleb128 .LVU227
.uleb128 .LVU227
.uleb128 .LVU229
.uleb128 .LVU229
.uleb128 .LVU232
.uleb128 .LVU232
.uleb128 .LVU237
.uleb128 .LVU248
.uleb128 .LVU250
.LLST46:
.8byte .LVL66
.8byte .LVL70
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte .LVL70
.8byte .LVL71
.2byte 0x9
.byte 0xc
.4byte 0x186a1
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte .LVL71
.8byte .LVL72-1
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x79
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte .LVL72-1
.8byte .LVL75
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte .LVL80
.8byte .LVL81
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte 0
.8byte 0
.LVUS47:
.uleb128 .LVU215
.uleb128 .LVU217
.uleb128 .LVU217
.uleb128 .LVU235
.uleb128 .LVU235
.uleb128 .LVU238
.uleb128 .LVU238
.uleb128 0
.LLST47:
.8byte .LVL64
.8byte .LVL65-1
.2byte 0x1
.byte 0x53
.8byte .LVL65-1
.8byte .LVL73
.2byte 0x1
.byte 0x6d
.8byte .LVL73
.8byte .LVL76
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL76
.8byte .LFE108
.2byte 0x1
.byte 0x6d
.8byte 0
.8byte 0
.LVUS48:
.uleb128 .LVU222
.uleb128 .LVU223
.uleb128 .LVU223
.uleb128 .LVU236
.uleb128 .LVU248
.uleb128 0
.LLST48:
.8byte .LVL68
.8byte .LVL69-1
.2byte 0x1
.byte 0x53
.8byte .LVL69-1
.8byte .LVL74
.2byte 0x1
.byte 0x6e
.8byte .LVL80
.8byte .LFE108
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS49:
.uleb128 .LVU241
.uleb128 .LVU246
.LLST49:
.8byte .LVL78
.8byte .LVL79
.2byte 0xa
.byte 0x3
.8byte .LC3
.byte 0x9f
.8byte 0
.8byte 0
.LVUS50:
.uleb128 .LVU241
.uleb128 .LVU246
.LLST50:
.8byte .LVL78
.8byte .LVL79
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS51:
.uleb128 .LVU252
.uleb128 .LVU257
.LLST51:
.8byte .LVL83
.8byte .LVL84
.2byte 0xa
.byte 0x3
.8byte .LC4
.byte 0x9f
.8byte 0
.8byte 0
.LVUS52:
.uleb128 .LVU252
.uleb128 .LVU257
.LLST52:
.8byte .LVL83
.8byte .LVL84
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS53:
.uleb128 0
.uleb128 .LVU264
.uleb128 .LVU264
.uleb128 0
.LLST53:
.8byte .LVL86
.8byte .LVL88
.2byte 0x1
.byte 0x53
.8byte .LVL88
.8byte .LFE107
.2byte 0x1
.byte 0x59
.8byte 0
.8byte 0
.LVUS54:
.uleb128 0
.uleb128 .LVU262
.uleb128 .LVU262
.uleb128 0
.LLST54:
.8byte .LVL86
.8byte .LVL87
.2byte 0x1
.byte 0x54
.8byte .LVL87
.8byte .LFE107
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.8byte 0
.8byte 0
.LVUS55:
.uleb128 .LVU264
.uleb128 0
.LLST55:
.8byte .LVL88
.8byte .LFE107
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.section .debug_aranges,"",@progbits
.4byte 0x3c
.2byte 0x2
.4byte .Ldebug_info0
.byte 0x8
.byte 0
.2byte 0
.2byte 0
.8byte .Ltext0
.8byte .Letext0-.Ltext0
.8byte .LFB110
.8byte .LFE110-.LFB110
.8byte 0
.8byte 0
.section .debug_ranges,"",@progbits
.Ldebug_ranges0:
.8byte .LBB78
.8byte .LBE78
.8byte .LBB87
.8byte .LBE87
.8byte 0
.8byte 0
.8byte .LBB79
.8byte .LBE79
.8byte .LBB86
.8byte .LBE86
.8byte 0
.8byte 0
.8byte .LBB82
.8byte .LBE82
.8byte .LBB85
.8byte .LBE85
.8byte 0
.8byte 0
.8byte .LBB98
.8byte .LBE98
.8byte .LBB114
.8byte .LBE114
.8byte .LBB119
.8byte .LBE119
.8byte 0
.8byte 0
.8byte .LBB100
.8byte .LBE100
.8byte .LBB105
.8byte .LBE105
.8byte .LBB106
.8byte .LBE106
.8byte .LBB107
.8byte .LBE107
.8byte 0
.8byte 0
.8byte .LBB108
.8byte .LBE108
.8byte .LBB111
.8byte .LBE111
.8byte 0
.8byte 0
.8byte .LBB115
.8byte .LBE115
.8byte .LBB118
.8byte .LBE118
.8byte 0
.8byte 0
.8byte .LBB126
.8byte .LBE126
.8byte .LBB131
.8byte .LBE131
.8byte .LBB132
.8byte .LBE132
.8byte .LBB133
.8byte .LBE133
.8byte 0
.8byte 0
.8byte .LBB136
.8byte .LBE136
.8byte .LBB143
.8byte .LBE143
.8byte 0
.8byte 0
.8byte .LBB137
.8byte .LBE137
.8byte .LBB140
.8byte .LBE140
.8byte 0
.8byte 0
.8byte .LBB144
.8byte .LBE144
.8byte .LBB155
.8byte .LBE155
.8byte .LBB156
.8byte .LBE156
.8byte .LBB157
.8byte .LBE157
.8byte 0
.8byte 0
.8byte .LBB145
.8byte .LBE145
.8byte .LBB152
.8byte .LBE152
.8byte .LBB154
.8byte .LBE154
.8byte 0
.8byte 0
.8byte .LBB149
.8byte .LBE149
.8byte .LBB153
.8byte .LBE153
.8byte 0
.8byte 0
.8byte .LBB169
.8byte .LBE169
.8byte .LBB172
.8byte .LBE172
.8byte 0
.8byte 0
.8byte .LBB175
.8byte .LBE175
.8byte .LBB178
.8byte .LBE178
.8byte 0
.8byte 0
.8byte .LBB179
.8byte .LBE179
.8byte .LBB182
.8byte .LBE182
.8byte 0
.8byte 0
.8byte .LBB184
.8byte .LBE184
.8byte .LBB195
.8byte .LBE195
.8byte 0
.8byte 0
.8byte .LBB186
.8byte .LBE186
.8byte .LBB190
.8byte .LBE190
.8byte .LBB191
.8byte .LBE191
.8byte 0
.8byte 0
.8byte .LBB192
.8byte .LBE192
.8byte .LBB193
.8byte .LBE193
.8byte .LBB194
.8byte .LBE194
.8byte 0
.8byte 0
.8byte .LBB200
.8byte .LBE200
.8byte .LBB203
.8byte .LBE203
.8byte 0
.8byte 0
.8byte .LBB204
.8byte .LBE204
.8byte .LBB207
.8byte .LBE207
.8byte 0
.8byte 0
.8byte .Ltext0
.8byte .Letext0
.8byte .LFB110
.8byte .LFE110
.8byte 0
.8byte 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF136:
.string "printf"
.LASF9:
.string "__off_t"
.LASF89:
.string "count"
.LASF145:
.string "malloc"
.LASF42:
.string "_chain"
.LASF129:
.string "rseq_cmpnev_storeoffp_load"
.LASF12:
.string "size_t"
.LASF96:
.string "next"
.LASF141:
.string "rseq_register_current_thread"
.LASF48:
.string "_shortbuf"
.LASF103:
.string "allowed_cpus"
.LASF88:
.string "test_data_entry"
.LASF112:
.string "expectnot"
.LASF133:
.string "__ch"
.LASF36:
.string "_IO_buf_base"
.LASF110:
.string "_cpu"
.LASF150:
.string "__builtin_memset"
.LASF22:
.string "long long unsigned int"
.LASF95:
.string "data"
.LASF117:
.string "newval"
.LASF115:
.string "test_percpu_list"
.LASF147:
.string "free"
.LASF51:
.string "_codecvt"
.LASF17:
.string "__timezone"
.LASF24:
.string "long long int"
.LASF4:
.string "signed char"
.LASF153:
.string "pthread_join"
.LASF120:
.string "__PRETTY_FUNCTION__"
.LASF28:
.string "__bits"
.LASF43:
.string "_fileno"
.LASF102:
.string "test_threads"
.LASF31:
.string "_IO_read_end"
.LASF118:
.string "expect"
.LASF72:
.string "sys_siglist"
.LASF6:
.string "long int"
.LASF84:
.string "__rseq_handled"
.LASF29:
.string "_flags"
.LASF52:
.string "_wide_data"
.LASF149:
.string "__builtin_puts"
.LASF46:
.string "_cur_column"
.LASF77:
.string "program_invocation_short_name"
.LASF60:
.string "_IO_codecvt"
.LASF75:
.string "double"
.LASF76:
.string "program_invocation_name"
.LASF45:
.string "_old_offset"
.LASF50:
.string "_offset"
.LASF7:
.string "__uint32_t"
.LASF130:
.string "rseq_cmpeqv_storev"
.LASF20:
.string "timezone"
.LASF85:
.string "rseq"
.LASF154:
.string "sched_yield"
.LASF59:
.string "_IO_marker"
.LASF63:
.string "stdin"
.LASF2:
.string "unsigned int"
.LASF54:
.string "_freeres_buf"
.LASF138:
.string "fprintf"
.LASF139:
.string "__stream"
.LASF3:
.string "long unsigned int"
.LASF73:
.string "__u32"
.LASF34:
.string "_IO_write_ptr"
.LASF62:
.string "off_t"
.LASF19:
.string "daylight"
.LASF66:
.string "sys_nerr"
.LASF151:
.string "sched_getaffinity"
.LASF21:
.string "getdate_err"
.LASF1:
.string "short unsigned int"
.LASF100:
.string "expected_sum"
.LASF142:
.string "rseq_unregister_current_thread"
.LASF156:
.string "basic_percpu_ops_test.c"
.LASF38:
.string "_IO_save_base"
.LASF107:
.string "__percpu_list_pop"
.LASF124:
.string "rseq_this_cpu_lock"
.LASF27:
.string "intptr_t"
.LASF49:
.string "_lock"
.LASF79:
.string "cpu_id_start"
.LASF44:
.string "_flags2"
.LASF56:
.string "_mode"
.LASF64:
.string "stdout"
.LASF111:
.string "targetptr"
.LASF113:
.string "load"
.LASF148:
.string "puts"
.LASF70:
.string "long double"
.LASF86:
.string "percpu_lock_entry"
.LASF30:
.string "_IO_read_ptr"
.LASF26:
.string "uint64_t"
.LASF132:
.string "__dest"
.LASF10:
.string "__off64_t"
.LASF158:
.string "_IO_lock_t"
.LASF93:
.string "_IO_FILE"
.LASF16:
.string "__daylight"
.LASF8:
.string "__uint64_t"
.LASF94:
.string "percpu_list_node"
.LASF123:
.string "rseq_percpu_unlock"
.LASF126:
.string "error"
.LASF87:
.string "percpu_lock"
.LASF41:
.string "_markers"
.LASF146:
.string "__assert_fail"
.LASF81:
.string "rseq_cs"
.LASF23:
.string "pthread_t"
.LASF0:
.string "unsigned char"
.LASF105:
.string "node"
.LASF37:
.string "_IO_buf_end"
.LASF5:
.string "short int"
.LASF78:
.string "ptr64"
.LASF134:
.string "__len"
.LASF68:
.string "_sys_nerr"
.LASF106:
.string "test_percpu_list_thread"
.LASF18:
.string "tzname"
.LASF140:
.string "__fprintf_chk"
.LASF13:
.string "__cpu_mask"
.LASF90:
.string "spinlock_test_data"
.LASF98:
.string "head"
.LASF25:
.string "uint32_t"
.LASF121:
.string "test_percpu_spinlock_thread"
.LASF74:
.string "__u64"
.LASF91:
.string "lock"
.LASF11:
.string "char"
.LASF104:
.string "__cpu"
.LASF83:
.string "__rseq_abi"
.LASF160:
.string "__stack_chk_fail"
.LASF127:
.string "abort"
.LASF157:
.string "/home/michael/build/librseq/tests"
.LASF69:
.string "_sys_errlist"
.LASF143:
.string "__errno_location"
.LASF128:
.string "cmpfail"
.LASF99:
.string "percpu_list"
.LASF114:
.string "offset"
.LASF32:
.string "_IO_read_base"
.LASF159:
.string "rseq_cpu_start"
.LASF40:
.string "_IO_save_end"
.LASF71:
.string "_sys_siglist"
.LASF137:
.string "__fmt"
.LASF55:
.string "__pad5"
.LASF97:
.string "percpu_list_entry"
.LASF35:
.string "_IO_write_end"
.LASF57:
.string "_unused2"
.LASF65:
.string "stderr"
.LASF135:
.string "memset"
.LASF109:
.string "this_cpu_list_pop"
.LASF122:
.string "test_percpu_spinlock"
.LASF152:
.string "pthread_create"
.LASF80:
.string "cpu_id"
.LASF125:
.string "voffp"
.LASF39:
.string "_IO_backup_base"
.LASF116:
.string "this_cpu_list_push"
.LASF82:
.string "flags"
.LASF67:
.string "sys_errlist"
.LASF47:
.string "_vtable_offset"
.LASF92:
.string "reps"
.LASF14:
.string "cpu_set_t"
.LASF53:
.string "_freeres_list"
.LASF61:
.string "_IO_wide_data"
.LASF58:
.string "FILE"
.LASF155:
.string "GNU C17 9.3.0 -msecure-plt -mcpu=power8 -g -O2 -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection"
.LASF101:
.string "list"
.LASF144:
.string "strerror"
.LASF15:
.string "__tzname"
.LASF108:
.string "main"
.LASF33:
.string "_IO_write_base"
.LASF119:
.string "num_threads"
.LASF131:
.string "newv"
.ident "GCC: (Ubuntu 9.3.0-10ubuntu2) 9.3.0"
.section .note.GNU-stack,"",@progbits
^ permalink raw reply
* Re: [PATCH 2/2] KVM: PPC: Book3S HV: rework secure mem slot dropping
From: Laurent Dufour @ 2020-07-08 12:16 UTC (permalink / raw)
To: bharata
Cc: Ram Pai, linux-kernel, kvm-ppc, paulus, sathnaga, sukadev,
linuxppc-dev, bauerman
In-Reply-To: <20200708112531.GA7902@in.ibm.com>
Le 08/07/2020 à 13:25, Bharata B Rao a écrit :
> On Fri, Jul 03, 2020 at 05:59:14PM +0200, Laurent Dufour wrote:
>> When a secure memslot is dropped, all the pages backed in the secure device
>> (aka really backed by secure memory by the Ultravisor) should be paged out
>> to a normal page. Previously, this was achieved by triggering the page
>> fault mechanism which is calling kvmppc_svm_page_out() on each pages.
>>
>> This can't work when hot unplugging a memory slot because the memory slot
>> is flagged as invalid and gfn_to_pfn() is then not trying to access the
>> page, so the page fault mechanism is not triggered.
>>
>> Since the final goal is to make a call to kvmppc_svm_page_out() it seems
>> simpler to directly calling it instead of triggering such a mechanism. This
>> way kvmppc_uvmem_drop_pages() can be called even when hot unplugging a
>> memslot.
>
> Yes, this appears much simpler.
Thanks Bharata for reviewing this.
>
>>
>> Since kvmppc_uvmem_drop_pages() is already holding kvm->arch.uvmem_lock,
>> the call to __kvmppc_svm_page_out() is made.
>> As __kvmppc_svm_page_out needs the vma pointer to migrate the pages, the
>> VMA is fetched in a lazy way, to not trigger find_vma() all the time. In
>> addition, the mmap_sem is help in read mode during that time, not in write
>> mode since the virual memory layout is not impacted, and
>> kvm->arch.uvmem_lock prevents concurrent operation on the secure device.
>>
>> Cc: Ram Pai <linuxram@us.ibm.com>
>> Cc: Bharata B Rao <bharata@linux.ibm.com>
>> Cc: Paul Mackerras <paulus@ozlabs.org>
>> Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
>> ---
>> arch/powerpc/kvm/book3s_hv_uvmem.c | 54 ++++++++++++++++++++----------
>> 1 file changed, 37 insertions(+), 17 deletions(-)
>>
>> diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
>> index 852cc9ae6a0b..479ddf16d18c 100644
>> --- a/arch/powerpc/kvm/book3s_hv_uvmem.c
>> +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
>> @@ -533,35 +533,55 @@ static inline int kvmppc_svm_page_out(struct vm_area_struct *vma,
>> * fault on them, do fault time migration to replace the device PTEs in
>> * QEMU page table with normal PTEs from newly allocated pages.
>> */
>> -void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
>> +void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *slot,
>> struct kvm *kvm, bool skip_page_out)
>> {
>> int i;
>> struct kvmppc_uvmem_page_pvt *pvt;
>> - unsigned long pfn, uvmem_pfn;
>> - unsigned long gfn = free->base_gfn;
>> + struct page *uvmem_page;
>> + struct vm_area_struct *vma = NULL;
>> + unsigned long uvmem_pfn, gfn;
>> + unsigned long addr, end;
>> +
>> + down_read(&kvm->mm->mmap_sem);
>
> You should be using mmap_read_lock(kvm->mm) with recent kernels.
Absolutely, shame on me, I reviewed Michel's series about that!
Paul, Michael, could you fix that when pulling this patch or should I sent a
whole new series?
>
>> +
>> + addr = slot->userspace_addr;
>> + end = addr + (slot->npages * PAGE_SIZE);
>>
>> - for (i = free->npages; i; --i, ++gfn) {
>> - struct page *uvmem_page;
>> + gfn = slot->base_gfn;
>> + for (i = slot->npages; i; --i, ++gfn, addr += PAGE_SIZE) {
>> +
>> + /* Fetch the VMA if addr is not in the latest fetched one */
>> + if (!vma || (addr < vma->vm_start || addr >= vma->vm_end)) {
>> + vma = find_vma_intersection(kvm->mm, addr, end);
>> + if (!vma ||
>> + vma->vm_start > addr || vma->vm_end < end) {
>> + pr_err("Can't find VMA for gfn:0x%lx\n", gfn);
>> + break;
>> + }
>> + }
>
> The first find_vma_intersection() was called for the range spanning the
> entire memslot, but you have code to check if vma remains valid for the
> new addr in each iteration. Guess you wanted to get vma for one page at
> a time and use it for subsequent pages until it covers the range?
That's the goal, fetch the VMA once and no more until we reach its end boundary.
^ permalink raw reply
* Re: [PATCH v2 4/4] powerpc/mm/radix: Create separate mappings for hot-plugged memory
From: Michael Ellerman @ 2020-07-08 12:14 UTC (permalink / raw)
To: Aneesh Kumar K.V, linuxppc-dev; +Cc: Bharata B Rao
In-Reply-To: <aa2e029f-d6f3-60da-7840-0b377da0337a@linux.ibm.com>
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com> writes:
> On 7/8/20 10:14 AM, Michael Ellerman wrote:
>> "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com> writes:
>>> To enable memory unplug without splitting kernel page table
>>> mapping, we force the max mapping size to the LMB size. LMB
>>> size is the unit in which hypervisor will do memory add/remove
>>> operation.
>>>
>>> This implies on pseries system, we now end up mapping
>>
>> Please expand on why it "implies" that for pseries.
>>
>>> memory with 2M page size instead of 1G. To improve
>>> that we want hypervisor to hint the kernel about the hotplug
>>> memory range. This was added that as part of
>> That
>>>
>>> commit b6eca183e23e ("powerpc/kernel: Enables memory
>>> hot-remove after reboot on pseries guests")
>>>
>>> But we still don't do that on PowerVM. Once we get PowerVM
>>
>> I think you mean PowerVM doesn't provide that hint yet?
>>
>> Realistically it won't until P10. So this means we'll always use 2MB on
>> Power9 PowerVM doesn't it?
>>
>> What about KVM?
>>
>> Have you done any benchmarking on the impact of switching the linear
>> mapping to 2MB pages?
>>
>
> The TLB impact should be minimal because with a 256M LMB size partition
> scoped entries are still 2M and hence we end up with TLBs of 2M size.
>
>
>>> updated, we can then force the 2M mapping only to hot-pluggable
>>> memory region using memblock_is_hotpluggable(). Till then
>>> let's depend on LMB size for finding the mapping page size
>>> for linear range.
>>>
>
> updated
>
>
> powerpc/mm/radix: Create separate mappings for hot-plugged memory
>
> To enable memory unplug without splitting kernel page table
> mapping, we force the max mapping size to the LMB size. LMB
> size is the unit in which hypervisor will do memory add/remove
> operation.
>
> Pseries systems supports max LMB size of 256MB. Hence on pseries,
> we now end up mapping memory with 2M page size instead of 1G. To improve
> that we want hypervisor to hint the kernel about the hotplug
> memory range. That was added that as part of
>
> commit b6eca18 ("powerpc/kernel: Enables memory
> hot-remove after reboot on pseries guests")
>
> But PowerVM doesn't provide that hint yet. Once we get PowerVM
> updated, we can then force the 2M mapping only to hot-pluggable
> memory region using memblock_is_hotpluggable(). Till then
> let's depend on LMB size for finding the mapping page size
> for linear range.
>
> With this change KVM guest will also be doing linear mapping with
> 2M page size.
...
>>> @@ -494,17 +544,27 @@ void __init radix__early_init_devtree(void)
>>> * Try to find the available page sizes in the device-tree
>>> */
>>> rc = of_scan_flat_dt(radix_dt_scan_page_sizes, NULL);
>>> - if (rc != 0) /* Found */
>>> - goto found;
>>> + if (rc == 0) {
>>> + /*
>>> + * no page size details found in device tree
>>> + * let's assume we have page 4k and 64k support
>>
>> Capitals and punctuation please?
>>
>>> + */
>>> + mmu_psize_defs[MMU_PAGE_4K].shift = 12;
>>> + mmu_psize_defs[MMU_PAGE_4K].ap = 0x0;
>>> +
>>> + mmu_psize_defs[MMU_PAGE_64K].shift = 16;
>>> + mmu_psize_defs[MMU_PAGE_64K].ap = 0x5;
>>> + }
>>
>> Moving that seems like an unrelated change. It's a reasonable change but
>> I'd rather you did it in a standalone patch.
>>
>
> we needed that change so that we can call radix_memory_block_size() for
> both found and !found case.
But the found and !found cases converge at found:, which is where you
call it. So I don't understand.
But as I said below, it would be even simpler if you worked out the
memory block size first.
cheers
>>> /*
>>> - * let's assume we have page 4k and 64k support
>>> + * Max mapping size used when mapping pages. We don't use
>>> + * ppc_md.memory_block_size() here because this get called
>>> + * early and we don't have machine probe called yet. Also
>>> + * the pseries implementation only check for ibm,lmb-size.
>>> + * All hypervisor supporting radix do expose that device
>>> + * tree node.
>>> */
>>> - mmu_psize_defs[MMU_PAGE_4K].shift = 12;
>>> - mmu_psize_defs[MMU_PAGE_4K].ap = 0x0;
>>> -
>>> - mmu_psize_defs[MMU_PAGE_64K].shift = 16;
>>> - mmu_psize_defs[MMU_PAGE_64K].ap = 0x5;
>>> -found:
>>> + radix_mem_block_size = radix_memory_block_size();
>>
>> If you did that earlier in the function, before
>> radix_dt_scan_page_sizes(), the logic would be simpler.
>>
>>> return;
>>> }
^ permalink raw reply
* Re: [PATCH v2 09/10] tools/perf: Add perf tools support for extended register capability in powerpc
From: Michael Ellerman @ 2020-07-08 12:04 UTC (permalink / raw)
To: Athira Rajeev; +Cc: mikey, maddy, linuxppc-dev
In-Reply-To: <1593595262-1433-10-git-send-email-atrajeev@linux.vnet.ibm.com>
Athira Rajeev <atrajeev@linux.vnet.ibm.com> writes:
> From: Anju T Sudhakar <anju@linux.vnet.ibm.com>
>
> Add extended regs to sample_reg_mask in the tool side to use
> with `-I?` option. Perf tools side uses extended mask to display
> the platform supported register names (with -I? option) to the user
> and also send this mask to the kernel to capture the extended registers
> in each sample. Hence decide the mask value based on the processor
> version.
>
> Signed-off-by: Anju T Sudhakar <anju@linux.vnet.ibm.com>
> [Decide extended mask at run time based on platform]
> Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
> Reviewed-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Will need an ack from perf tools folks, who are not on Cc by the looks.
> diff --git a/tools/arch/powerpc/include/uapi/asm/perf_regs.h b/tools/arch/powerpc/include/uapi/asm/perf_regs.h
> index f599064..485b1d5 100644
> --- a/tools/arch/powerpc/include/uapi/asm/perf_regs.h
> +++ b/tools/arch/powerpc/include/uapi/asm/perf_regs.h
> @@ -48,6 +48,18 @@ enum perf_event_powerpc_regs {
> PERF_REG_POWERPC_DSISR,
> PERF_REG_POWERPC_SIER,
> PERF_REG_POWERPC_MMCRA,
> - PERF_REG_POWERPC_MAX,
> + /* Extended registers */
> + PERF_REG_POWERPC_MMCR0,
> + PERF_REG_POWERPC_MMCR1,
> + PERF_REG_POWERPC_MMCR2,
> + /* Max regs without the extended regs */
> + PERF_REG_POWERPC_MAX = PERF_REG_POWERPC_MMCRA + 1,
I don't really understand this idea of a max that's not the max.
> };
> +
> +#define PERF_REG_PMU_MASK ((1ULL << PERF_REG_POWERPC_MAX) - 1)
> +
> +/* PERF_REG_EXTENDED_MASK value for CPU_FTR_ARCH_300 */
> +#define PERF_REG_PMU_MASK_300 (((1ULL << (PERF_REG_POWERPC_MMCR2 + 1)) - 1) \
> + - PERF_REG_PMU_MASK)
> +
> #endif /* _UAPI_ASM_POWERPC_PERF_REGS_H */
> diff --git a/tools/perf/arch/powerpc/include/perf_regs.h b/tools/perf/arch/powerpc/include/perf_regs.h
> index e18a355..46ed00d 100644
> --- a/tools/perf/arch/powerpc/include/perf_regs.h
> +++ b/tools/perf/arch/powerpc/include/perf_regs.h
> @@ -64,7 +64,10 @@
> [PERF_REG_POWERPC_DAR] = "dar",
> [PERF_REG_POWERPC_DSISR] = "dsisr",
> [PERF_REG_POWERPC_SIER] = "sier",
> - [PERF_REG_POWERPC_MMCRA] = "mmcra"
> + [PERF_REG_POWERPC_MMCRA] = "mmcra",
> + [PERF_REG_POWERPC_MMCR0] = "mmcr0",
> + [PERF_REG_POWERPC_MMCR1] = "mmcr1",
> + [PERF_REG_POWERPC_MMCR2] = "mmcr2",
> };
>
> static inline const char *perf_reg_name(int id)
> diff --git a/tools/perf/arch/powerpc/util/perf_regs.c b/tools/perf/arch/powerpc/util/perf_regs.c
> index 0a52429..9179230 100644
> --- a/tools/perf/arch/powerpc/util/perf_regs.c
> +++ b/tools/perf/arch/powerpc/util/perf_regs.c
> @@ -6,9 +6,14 @@
>
> #include "../../../util/perf_regs.h"
> #include "../../../util/debug.h"
> +#include "../../../util/event.h"
> +#include "../../../util/header.h"
> +#include "../../../perf-sys.h"
>
> #include <linux/kernel.h>
>
> +#define PVR_POWER9 0x004E
> +
> const struct sample_reg sample_reg_masks[] = {
> SMPL_REG(r0, PERF_REG_POWERPC_R0),
> SMPL_REG(r1, PERF_REG_POWERPC_R1),
> @@ -55,6 +60,9 @@
> SMPL_REG(dsisr, PERF_REG_POWERPC_DSISR),
> SMPL_REG(sier, PERF_REG_POWERPC_SIER),
> SMPL_REG(mmcra, PERF_REG_POWERPC_MMCRA),
> + SMPL_REG(mmcr0, PERF_REG_POWERPC_MMCR0),
> + SMPL_REG(mmcr1, PERF_REG_POWERPC_MMCR1),
> + SMPL_REG(mmcr2, PERF_REG_POWERPC_MMCR2),
> SMPL_REG_END
> };
>
> @@ -163,3 +171,50 @@ int arch_sdt_arg_parse_op(char *old_op, char **new_op)
>
> return SDT_ARG_VALID;
> }
> +
> +uint64_t arch__intr_reg_mask(void)
> +{
> + struct perf_event_attr attr = {
> + .type = PERF_TYPE_HARDWARE,
> + .config = PERF_COUNT_HW_CPU_CYCLES,
> + .sample_type = PERF_SAMPLE_REGS_INTR,
> + .precise_ip = 1,
> + .disabled = 1,
> + .exclude_kernel = 1,
> + };
> + int fd, ret;
> + char buffer[64];
> + u32 version;
> + u64 extended_mask = 0;
> +
> + /* Get the PVR value to set the extended
> + * mask specific to platform
Comment format is wrong, and punctuation please.
> + */
> + get_cpuid(buffer, sizeof(buffer));
> + ret = sscanf(buffer, "%u,", &version);
This is powerpc specific code, why not just use mfspr(SPRN_PVR), rather
than redirecting via printf/sscanf.
> +
> + if (ret != 1) {
> + pr_debug("Failed to get the processor version, unable to output extended registers\n");
> + return PERF_REGS_MASK;
> + }
> +
> + if (version == PVR_POWER9)
> + extended_mask = PERF_REG_PMU_MASK_300;
> + else
> + return PERF_REGS_MASK;
> +
> + attr.sample_regs_intr = extended_mask;
> + attr.sample_period = 1;
> + event_attr_init(&attr);
> +
> + /*
> + * check if the pmu supports perf extended regs, before
> + * returning the register mask to sample.
> + */
> + fd = sys_perf_event_open(&attr, 0, -1, -1, 0);
> + if (fd != -1) {
> + close(fd);
> + return (extended_mask | PERF_REGS_MASK);
> + }
> + return PERF_REGS_MASK;
I think this would read a bit better like:
mask = PERF_REGS_MASK;
if (version == PVR_POWER9)
extended_mask = PERF_REG_PMU_MASK_300;
else
return mask;
attr.sample_regs_intr = extended_mask;
attr.sample_period = 1;
event_attr_init(&attr);
/*
* check if the pmu supports perf extended regs, before
* returning the register mask to sample.
*/
fd = sys_perf_event_open(&attr, 0, -1, -1, 0);
if (fd != -1) {
close(fd);
mask |= extended_mask;
}
return mask;
cheers
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox