* Re: [PATCH 3/3] First cut at PReP support for arch/powerpc
From: Segher Boessenkool @ 2007-08-06 19:43 UTC (permalink / raw)
To: Jon Loeliger; +Cc: linuxppc-dev@ozlabs.org, Paul Mackerras, David Gibson
In-Reply-To: <1186154678.9004.22.camel@ld0161-tx32>
>>>> + MPIC: interrupt-controller@d {
>>>> + device_type = "open-pic";
>>>>
>>>> device_type = "interrupt-controller".
>>
>> Not according to the binding in booting-without-of.txt
>
> My understanding here, though possibly flawed, is that the current
> implementation has "open-pic" but _should_ have "interrupt-controller"
> as that is the officially correct name.
>
> I _think_ this means we need a transitional period where we update
> the code to look for "interrupt-controller", and obsoletedly, looks
> for the "open-pic", while we transition to the new, correct name.
>
> I'm just betting that if I'm wrong Segher will tell me! :-)
You're wrong :-)
The kernel shouldn't look at device_type at all.
Segher
^ permalink raw reply
* [PATCH 6/6] ibmveth: Remove use of bitfields
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>
Removes the use of bitfields from the ibmveth driver. This results
in slightly smaller object code.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
linux-2.6-bjking1/drivers/net/ibmveth.c | 90 ++++++++++++++++----------------
linux-2.6-bjking1/drivers/net/ibmveth.h | 56 ++++++++-----------
2 files changed, 68 insertions(+), 78 deletions(-)
diff -puN drivers/net/ibmveth.h~ibmveth_nobitfields drivers/net/ibmveth.h
--- linux-2.6/drivers/net/ibmveth.h~ibmveth_nobitfields 2007-08-06 14:11:11.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.h 2007-08-06 14:11:11.000000000 -0500
@@ -39,6 +39,12 @@
#define IbmVethMcastRemoveFilter 0x2UL
#define IbmVethMcastClearFilterTable 0x3UL
+#define IBMVETH_ILLAN_PADDED_PKT_CSUM 0x0000000000002000ULL
+#define IBMVETH_ILLAN_TRUNK_PRI_MASK 0x0000000000000F00ULL
+#define IBMVETH_ILLAN_IPV6_TCP_CSUM 0x0000000000000004ULL
+#define IBMVETH_ILLAN_IPV4_TCP_CSUM 0x0000000000000002ULL
+#define IBMVETH_ILLAN_ACTIVE_TRUNK 0x0000000000000001ULL
+
/* hcall macros */
#define h_register_logical_lan(ua, buflst, rxq, fltlst, mac) \
plpar_hcall_norets(H_REGISTER_LOGICAL_LAN, ua, buflst, rxq, fltlst, mac)
@@ -150,13 +156,13 @@ struct ibmveth_adapter {
};
struct ibmveth_buf_desc_fields {
- u32 valid : 1;
- u32 toggle : 1;
- u32 reserved : 4;
- u32 no_csum : 1;
- u32 csum_good : 1;
- u32 length : 24;
- u32 address;
+ u32 flags_len;
+#define IBMVETH_BUF_VALID 0x80000000
+#define IBMVETH_BUF_TOGGLE 0x40000000
+#define IBMVETH_BUF_NO_CSUM 0x02000000
+#define IBMVETH_BUF_CSUM_GOOD 0x01000000
+#define IBMVETH_BUF_LEN_MASK 0x00FFFFFF
+ u32 address;
};
union ibmveth_buf_desc {
@@ -164,33 +170,17 @@ union ibmveth_buf_desc {
struct ibmveth_buf_desc_fields fields;
};
-struct ibmveth_illan_attributes_fields {
- u32 reserved;
- u32 reserved2 : 18;
- u32 csum_offload_padded_pkt_support : 1;
- u32 reserved3 : 1;
- u32 trunk_priority : 4;
- u32 reserved4 : 5;
- u32 tcp_csum_offload_ipv6 : 1;
- u32 tcp_csum_offload_ipv4 : 1;
- u32 active_trunk : 1;
-};
-
-union ibmveth_illan_attributes {
- u64 desc;
- struct ibmveth_illan_attributes_fields fields;
-};
-
struct ibmveth_rx_q_entry {
- u16 toggle : 1;
- u16 valid : 1;
- u16 reserved : 4;
- u16 no_csum : 1;
- u16 csum_good : 1;
- u16 reserved2 : 8;
- u16 offset;
- u32 length;
- u64 correlator;
+ u32 flags_off;
+#define IBMVETH_RXQ_TOGGLE 0x80000000
+#define IBMVETH_RXQ_TOGGLE_SHIFT 31
+#define IBMVETH_RXQ_VALID 0x40000000
+#define IBMVETH_RXQ_NO_CSUM 0x02000000
+#define IBMVETH_RXQ_CSUM_GOOD 0x01000000
+#define IBMVETH_RXQ_OFF_MASK 0x0000FFFF
+
+ u32 length;
+ u64 correlator;
};
#endif /* _IBMVETH_H */
diff -puN drivers/net/ibmveth.c~ibmveth_nobitfields drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_nobitfields 2007-08-06 14:11:11.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c 2007-08-06 14:11:11.000000000 -0500
@@ -131,19 +131,29 @@ struct ibmveth_stat ibmveth_stats[] = {
};
/* simple methods of getting data from the current rxq entry */
+static inline u32 ibmveth_rxq_flags(struct ibmveth_adapter *adapter)
+{
+ return adapter->rx_queue.queue_addr[adapter->rx_queue.index].flags_off;
+}
+
+static inline int ibmveth_rxq_toggle(struct ibmveth_adapter *adapter)
+{
+ return (ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_TOGGLE) >> IBMVETH_RXQ_TOGGLE_SHIFT;
+}
+
static inline int ibmveth_rxq_pending_buffer(struct ibmveth_adapter *adapter)
{
- return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].toggle == adapter->rx_queue.toggle);
+ return (ibmveth_rxq_toggle(adapter) == adapter->rx_queue.toggle);
}
static inline int ibmveth_rxq_buffer_valid(struct ibmveth_adapter *adapter)
{
- return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].valid);
+ return (ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_VALID);
}
static inline int ibmveth_rxq_frame_offset(struct ibmveth_adapter *adapter)
{
- return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].offset);
+ return (ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_OFF_MASK);
}
static inline int ibmveth_rxq_frame_length(struct ibmveth_adapter *adapter)
@@ -153,7 +163,7 @@ static inline int ibmveth_rxq_frame_leng
static inline int ibmveth_rxq_csum_good(struct ibmveth_adapter *adapter)
{
- return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].csum_good);
+ return (ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_CSUM_GOOD);
}
/* setup the initial settings for a buffer pool */
@@ -253,9 +263,7 @@ static void ibmveth_replenish_buffer_poo
correlator = ((u64)pool->index << 32) | index;
*(u64*)skb->data = correlator;
- desc.desc = 0;
- desc.fields.valid = 1;
- desc.fields.length = pool->buff_size;
+ desc.fields.flags_len = IBMVETH_BUF_VALID | pool->buff_size;
desc.fields.address = dma_addr;
lpar_rc = h_add_logical_lan_buffer(adapter->vdev->unit_address, desc.desc);
@@ -396,9 +404,8 @@ static void ibmveth_rxq_recycle_buffer(s
return;
}
- desc.desc = 0;
- desc.fields.valid = 1;
- desc.fields.length = adapter->rx_buff_pool[pool].buff_size;
+ desc.fields.flags_len = IBMVETH_BUF_VALID |
+ adapter->rx_buff_pool[pool].buff_size;
desc.fields.address = adapter->rx_buff_pool[pool].dma_addr[index];
lpar_rc = h_add_logical_lan_buffer(adapter->vdev->unit_address, desc.desc);
@@ -549,9 +556,7 @@ static int ibmveth_open(struct net_devic
memcpy(&mac_address, netdev->dev_addr, netdev->addr_len);
mac_address = mac_address >> 16;
- rxq_desc.desc = 0;
- rxq_desc.fields.valid = 1;
- rxq_desc.fields.length = adapter->rx_queue.queue_len;
+ rxq_desc.fields.flags_len = IBMVETH_BUF_VALID | adapter->rx_queue.queue_len;
rxq_desc.fields.address = adapter->rx_queue.queue_dma;
ibmveth_debug_printk("buffer list @ 0x%p\n", adapter->buffer_list_addr);
@@ -686,7 +691,7 @@ static int ibmveth_set_csum_offload(stru
void (*done) (struct net_device *, u32))
{
struct ibmveth_adapter *adapter = dev->priv;
- union ibmveth_illan_attributes set_attr, clr_attr, ret_attr;
+ u64 set_attr, clr_attr, ret_attr;
long ret;
int rc1 = 0, rc2 = 0;
int restart = 0;
@@ -698,21 +703,21 @@ static int ibmveth_set_csum_offload(stru
adapter->pool_config = 0;
}
- set_attr.desc = 0;
- clr_attr.desc = 0;
+ set_attr = 0;
+ clr_attr = 0;
if (data)
- set_attr.fields.tcp_csum_offload_ipv4 = 1;
+ set_attr = IBMVETH_ILLAN_IPV4_TCP_CSUM;
else
- clr_attr.fields.tcp_csum_offload_ipv4 = 1;
+ clr_attr = IBMVETH_ILLAN_IPV4_TCP_CSUM;
- ret = h_illan_attributes(adapter->vdev->unit_address, 0, 0, &ret_attr.desc);
+ ret = h_illan_attributes(adapter->vdev->unit_address, 0, 0, &ret_attr);
- if (ret == H_SUCCESS && !ret_attr.fields.active_trunk &&
- !ret_attr.fields.trunk_priority &&
- ret_attr.fields.csum_offload_padded_pkt_support) {
- ret = h_illan_attributes(adapter->vdev->unit_address, clr_attr.desc,
- set_attr.desc, &ret_attr.desc);
+ if (ret == H_SUCCESS && !(ret_attr & IBMVETH_ILLAN_ACTIVE_TRUNK) &&
+ !(ret_attr & IBMVETH_ILLAN_TRUNK_PRI_MASK) &&
+ (ret_attr & IBMVETH_ILLAN_PADDED_PKT_CSUM)) {
+ ret = h_illan_attributes(adapter->vdev->unit_address, clr_attr,
+ set_attr, &ret_attr);
if (ret != H_SUCCESS) {
rc1 = -EIO;
@@ -720,13 +725,13 @@ static int ibmveth_set_csum_offload(stru
" %d rc=%ld\n", data, ret);
ret = h_illan_attributes(adapter->vdev->unit_address,
- set_attr.desc, clr_attr.desc, &ret_attr.desc);
+ set_attr, clr_attr, &ret_attr);
} else
done(dev, data);
} else {
rc1 = -EIO;
ibmveth_error_printk("unable to change checksum offload settings."
- " %d rc=%ld ret_attr=%lx\n", data, ret, ret_attr.desc);
+ " %d rc=%ld ret_attr=%lx\n", data, ret, ret_attr);
}
if (restart)
@@ -832,11 +837,9 @@ static int ibmveth_start_xmit(struct sk_
unsigned int tx_send_failed = 0;
unsigned int tx_map_failed = 0;
- desc.desc = 0;
- desc.fields.length = skb->len;
+ desc.fields.flags_len = IBMVETH_BUF_VALID | skb->len;
desc.fields.address = dma_map_single(&adapter->vdev->dev, skb->data,
- desc.fields.length, DMA_TO_DEVICE);
- desc.fields.valid = 1;
+ skb->len, DMA_TO_DEVICE);
if (skb->ip_summed == CHECKSUM_PARTIAL &&
ip_hdr(skb)->protocol != IPPROTO_TCP && skb_checksum_help(skb)) {
@@ -848,8 +851,7 @@ static int ibmveth_start_xmit(struct sk_
if (skb->ip_summed == CHECKSUM_PARTIAL) {
unsigned char *buf = skb_transport_header(skb) + skb->csum_offset;
- desc.fields.no_csum = 1;
- desc.fields.csum_good = 1;
+ desc.fields.flags_len |= (IBMVETH_BUF_NO_CSUM | IBMVETH_BUF_CSUM_GOOD);
/* Need to zero out the checksum */
buf[0] = 0;
@@ -875,7 +877,8 @@ static int ibmveth_start_xmit(struct sk_
if(lpar_rc != H_SUCCESS && lpar_rc != H_DROPPED) {
ibmveth_error_printk("tx: h_send_logical_lan failed with rc=%ld\n", lpar_rc);
ibmveth_error_printk("tx: valid=%d, len=%d, address=0x%08x\n",
- desc.fields.valid, desc.fields.length, desc.fields.address);
+ (desc.fields.flags_len & IBMVETH_BUF_VALID) ? 1 : 0,
+ skb->len, desc.fields.address);
tx_send_failed++;
tx_dropped++;
} else {
@@ -885,7 +888,7 @@ static int ibmveth_start_xmit(struct sk_
}
dma_unmap_single(&adapter->vdev->dev, desc.fields.address,
- desc.fields.length, DMA_TO_DEVICE);
+ skb->len, DMA_TO_DEVICE);
out: spin_lock_irqsave(&adapter->stats_lock, flags);
adapter->stats.tx_dropped += tx_dropped;
@@ -1101,7 +1104,7 @@ static int __devinit ibmveth_probe(struc
long ret;
struct net_device *netdev;
struct ibmveth_adapter *adapter = NULL;
- union ibmveth_illan_attributes set_attr, ret_attr;
+ u64 set_attr, ret_attr;
unsigned char *mac_addr_p;
unsigned int *mcastFilterSize_p;
@@ -1196,23 +1199,20 @@ static int __devinit ibmveth_probe(struc
ibmveth_debug_printk("registering netdev...\n");
- ret = h_illan_attributes(dev->unit_address, 0, 0, &ret_attr.desc);
+ ret = h_illan_attributes(dev->unit_address, 0, 0, &ret_attr);
- if (ret == H_SUCCESS && !ret_attr.fields.active_trunk &&
- !ret_attr.fields.trunk_priority &&
- ret_attr.fields.csum_offload_padded_pkt_support) {
- set_attr.desc = 0;
- set_attr.fields.tcp_csum_offload_ipv4 = 1;
+ if (ret == H_SUCCESS && !(ret_attr & IBMVETH_ILLAN_ACTIVE_TRUNK) &&
+ !(ret_attr & IBMVETH_ILLAN_TRUNK_PRI_MASK) &&
+ (ret_attr & IBMVETH_ILLAN_PADDED_PKT_CSUM)) {
+ set_attr = IBMVETH_ILLAN_IPV4_TCP_CSUM;
- ret = h_illan_attributes(dev->unit_address, 0, set_attr.desc,
- &ret_attr.desc);
+ ret = h_illan_attributes(dev->unit_address, 0, set_attr, &ret_attr);
if (ret == H_SUCCESS) {
adapter->rx_csum = 1;
netdev->features |= NETIF_F_IP_CSUM;
} else
- ret = h_illan_attributes(dev->unit_address, set_attr.desc,
- 0, &ret_attr.desc);
+ ret = h_illan_attributes(dev->unit_address, set_attr, 0, &ret_attr);
}
rc = register_netdev(netdev);
_
^ permalink raw reply
* [PATCH 5/6] ibmveth: Remove dead frag processing code
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>
Removes dead frag processing code from ibmveth. Since NETIF_F_SG was
not set, this code was never executed. Also, since the ibmveth
interface can only handle 6 fragments, core networking code would need
to be modified in order to efficiently enable this support.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
linux-2.6-bjking1/drivers/net/ibmveth.c | 100 +++++---------------------------
linux-2.6-bjking1/drivers/net/ibmveth.h | 5 -
2 files changed, 17 insertions(+), 88 deletions(-)
diff -puN drivers/net/ibmveth.c~ibmveth_remove_frag drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_remove_frag 2007-08-06 14:11:08.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c 2007-08-06 14:11:39.000000000 -0500
@@ -28,7 +28,6 @@
/**************************************************************************/
/*
TODO:
- - remove frag processing code - no longer needed
- add support for sysfs
- possibly remove procfs support
*/
@@ -127,9 +126,6 @@ struct ibmveth_stat ibmveth_stats[] = {
{ "replenish_add_buff_success", IBMVETH_STAT_OFF(replenish_add_buff_success) },
{ "rx_invalid_buffer", IBMVETH_STAT_OFF(rx_invalid_buffer) },
{ "rx_no_buffer", IBMVETH_STAT_OFF(rx_no_buffer) },
- { "tx_multidesc_send", IBMVETH_STAT_OFF(tx_multidesc_send) },
- { "tx_linearized", IBMVETH_STAT_OFF(tx_linearized) },
- { "tx_linearize_failed", IBMVETH_STAT_OFF(tx_linearize_failed) },
{ "tx_map_failed", IBMVETH_STAT_OFF(tx_map_failed) },
{ "tx_send_failed", IBMVETH_STAT_OFF(tx_send_failed) }
};
@@ -825,9 +821,8 @@ static int ibmveth_ioctl(struct net_devi
static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev)
{
struct ibmveth_adapter *adapter = netdev->priv;
- union ibmveth_buf_desc desc[IbmVethMaxSendFrags];
+ union ibmveth_buf_desc desc;
unsigned long lpar_rc;
- int nfrags = 0, curfrag;
unsigned long correlator;
unsigned long flags;
unsigned int retry_count;
@@ -837,25 +832,11 @@ static int ibmveth_start_xmit(struct sk_
unsigned int tx_send_failed = 0;
unsigned int tx_map_failed = 0;
-
- if ((skb_shinfo(skb)->nr_frags + 1) > IbmVethMaxSendFrags) {
- tx_dropped++;
- goto out;
- }
-
- memset(&desc, 0, sizeof(desc));
-
- /* nfrags = number of frags after the initial fragment */
- nfrags = skb_shinfo(skb)->nr_frags;
-
- if(nfrags)
- adapter->tx_multidesc_send++;
-
- /* map the initial fragment */
- desc[0].fields.length = nfrags ? skb->len - skb->data_len : skb->len;
- desc[0].fields.address = dma_map_single(&adapter->vdev->dev, skb->data,
- desc[0].fields.length, DMA_TO_DEVICE);
- desc[0].fields.valid = 1;
+ desc.desc = 0;
+ desc.fields.length = skb->len;
+ desc.fields.address = dma_map_single(&adapter->vdev->dev, skb->data,
+ desc.fields.length, DMA_TO_DEVICE);
+ desc.fields.valid = 1;
if (skb->ip_summed == CHECKSUM_PARTIAL &&
ip_hdr(skb)->protocol != IPPROTO_TCP && skb_checksum_help(skb)) {
@@ -867,75 +848,34 @@ static int ibmveth_start_xmit(struct sk_
if (skb->ip_summed == CHECKSUM_PARTIAL) {
unsigned char *buf = skb_transport_header(skb) + skb->csum_offset;
- desc[0].fields.no_csum = 1;
- desc[0].fields.csum_good = 1;
+ desc.fields.no_csum = 1;
+ desc.fields.csum_good = 1;
/* Need to zero out the checksum */
buf[0] = 0;
buf[1] = 0;
}
- if(dma_mapping_error(desc[0].fields.address)) {
- ibmveth_error_printk("tx: unable to map initial fragment\n");
+ if (dma_mapping_error(desc.fields.address)) {
+ ibmveth_error_printk("tx: unable to map xmit buffer\n");
tx_map_failed++;
tx_dropped++;
goto out;
}
- curfrag = nfrags;
-
- /* map fragments past the initial portion if there are any */
- while(curfrag--) {
- skb_frag_t *frag = &skb_shinfo(skb)->frags[curfrag];
- desc[curfrag+1].fields.address
- = dma_map_single(&adapter->vdev->dev,
- page_address(frag->page) + frag->page_offset,
- frag->size, DMA_TO_DEVICE);
- desc[curfrag+1].fields.length = frag->size;
- desc[curfrag+1].fields.valid = 1;
- if (skb->ip_summed == CHECKSUM_PARTIAL) {
- desc[curfrag+1].fields.no_csum = 1;
- desc[curfrag+1].fields.csum_good = 1;
- }
-
- if(dma_mapping_error(desc[curfrag+1].fields.address)) {
- ibmveth_error_printk("tx: unable to map fragment %d\n", curfrag);
- tx_map_failed++;
- tx_dropped++;
- /* Free all the mappings we just created */
- while(curfrag < nfrags) {
- dma_unmap_single(&adapter->vdev->dev,
- desc[curfrag+1].fields.address,
- desc[curfrag+1].fields.length,
- DMA_TO_DEVICE);
- curfrag++;
- }
- goto out;
- }
- }
-
/* send the frame. Arbitrarily set retrycount to 1024 */
correlator = 0;
retry_count = 1024;
do {
lpar_rc = h_send_logical_lan(adapter->vdev->unit_address,
- desc[0].desc,
- desc[1].desc,
- desc[2].desc,
- desc[3].desc,
- desc[4].desc,
- desc[5].desc,
- correlator,
- &correlator);
+ desc.desc, 0, 0, 0, 0, 0,
+ correlator, &correlator);
} while ((lpar_rc == H_BUSY) && (retry_count--));
if(lpar_rc != H_SUCCESS && lpar_rc != H_DROPPED) {
- int i;
ibmveth_error_printk("tx: h_send_logical_lan failed with rc=%ld\n", lpar_rc);
- for(i = 0; i < 6; i++) {
- ibmveth_error_printk("tx: desc[%i] valid=%d, len=%d, address=0x%d\n", i,
- desc[i].fields.valid, desc[i].fields.length, desc[i].fields.address);
- }
+ ibmveth_error_printk("tx: valid=%d, len=%d, address=0x%08x\n",
+ desc.fields.valid, desc.fields.length, desc.fields.address);
tx_send_failed++;
tx_dropped++;
} else {
@@ -944,11 +884,8 @@ static int ibmveth_start_xmit(struct sk_
netdev->trans_start = jiffies;
}
- do {
- dma_unmap_single(&adapter->vdev->dev,
- desc[nfrags].fields.address,
- desc[nfrags].fields.length, DMA_TO_DEVICE);
- } while(--nfrags >= 0);
+ dma_unmap_single(&adapter->vdev->dev, desc.fields.address,
+ desc.fields.length, DMA_TO_DEVICE);
out: spin_lock_irqsave(&adapter->stats_lock, flags);
adapter->stats.tx_dropped += tx_dropped;
@@ -1360,10 +1297,7 @@ static int ibmveth_seq_show(struct seq_f
firmware_mac[3], firmware_mac[4], firmware_mac[5]);
seq_printf(seq, "\nAdapter Statistics:\n");
- seq_printf(seq, " TX: skbuffs linearized: %ld\n", adapter->tx_linearized);
- seq_printf(seq, " multi-descriptor sends: %ld\n", adapter->tx_multidesc_send);
- seq_printf(seq, " skb_linearize failures: %ld\n", adapter->tx_linearize_failed);
- seq_printf(seq, " vio_map_single failres: %ld\n", adapter->tx_map_failed);
+ seq_printf(seq, " TX: vio_map_single failres: %ld\n", adapter->tx_map_failed);
seq_printf(seq, " send failures: %ld\n", adapter->tx_send_failed);
seq_printf(seq, " RX: replenish task cycles: %ld\n", adapter->replenish_task_cycles);
seq_printf(seq, " alloc_skb_failures: %ld\n", adapter->replenish_no_mem);
diff -puN drivers/net/ibmveth.h~ibmveth_remove_frag drivers/net/ibmveth.h
--- linux-2.6/drivers/net/ibmveth.h~ibmveth_remove_frag 2007-08-06 14:11:08.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.h 2007-08-06 14:11:39.000000000 -0500
@@ -25,8 +25,6 @@
#ifndef _IBMVETH_H
#define _IBMVETH_H
-#define IbmVethMaxSendFrags 6
-
/* constants for H_MULTICAST_CTRL */
#define IbmVethMcastReceptionModifyBit 0x80000UL
#define IbmVethMcastReceptionEnableBit 0x20000UL
@@ -146,9 +144,6 @@ struct ibmveth_adapter {
u64 replenish_add_buff_success;
u64 rx_invalid_buffer;
u64 rx_no_buffer;
- u64 tx_multidesc_send;
- u64 tx_linearized;
- u64 tx_linearize_failed;
u64 tx_map_failed;
u64 tx_send_failed;
spinlock_t stats_lock;
_
^ permalink raw reply
* Re: [PATCH 3/3] First cut at PReP support for arch/powerpc
From: Segher Boessenkool @ 2007-08-06 19:42 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <20070803063532.GB14456@localhost.localdomain>
>>> + PIC8259: interrupt-controller {
>>> + device_type = "i8259";
>>>
>>> device_type = "interrupt-controller".
>
> Is that really right? The MPIC binding, at least, has device_type =
> "open-pic" rather than "interrupt-controller".
I got confused. "open-pic" as device_type is nonsense, because
it doesn't define anything an OF can work with itself. However,
since some older interrupt controller bindings (pre-imap) define
a device_type, the interrupt mapping recommended practice had to
work around this, so it specified an empty "interrupt-controller"
property for all interrupt controller nodes.
I don't know what the specified device_type for 8259s is; it
seems to me you don't need it in a flat device tree at all.
>>> + MPIC: interrupt-controller@d {
>>> + device_type = "open-pic";
>>>
>>> device_type = "interrupt-controller".
>
> Not according to the binding in booting-without-of.txt
Yeah, mea culpa. Again, you can just leave it out I think.
Segher
^ permalink raw reply
* [PATCH 4/6] ibmveth: Add ethtool driver stats hooks
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>
Add ethtool hooks to ibmveth to retrieve driver statistics.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
drivers/net/ibmveth.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 52 insertions(+), 1 deletion(-)
diff -puN drivers/net/ibmveth.c~ibmveth_ethtool_driver_stats drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_ethtool_driver_stats 2007-07-19 11:18:41.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c 2007-07-19 11:18:41.000000000 -0500
@@ -112,6 +112,28 @@ MODULE_DESCRIPTION("IBM i/pSeries Virtua
MODULE_LICENSE("GPL");
MODULE_VERSION(ibmveth_driver_version);
+struct ibmveth_stat {
+ char name[ETH_GSTRING_LEN];
+ int offset;
+};
+
+#define IBMVETH_STAT_OFF(stat) offsetof(struct ibmveth_adapter, stat)
+#define IBMVETH_GET_STAT(a, off) *((u64 *)(((unsigned long)(a)) + off))
+
+struct ibmveth_stat ibmveth_stats[] = {
+ { "replenish_task_cycles", IBMVETH_STAT_OFF(replenish_task_cycles) },
+ { "replenish_no_mem", IBMVETH_STAT_OFF(replenish_no_mem) },
+ { "replenish_add_buff_failure", IBMVETH_STAT_OFF(replenish_add_buff_failure) },
+ { "replenish_add_buff_success", IBMVETH_STAT_OFF(replenish_add_buff_success) },
+ { "rx_invalid_buffer", IBMVETH_STAT_OFF(rx_invalid_buffer) },
+ { "rx_no_buffer", IBMVETH_STAT_OFF(rx_no_buffer) },
+ { "tx_multidesc_send", IBMVETH_STAT_OFF(tx_multidesc_send) },
+ { "tx_linearized", IBMVETH_STAT_OFF(tx_linearized) },
+ { "tx_linearize_failed", IBMVETH_STAT_OFF(tx_linearize_failed) },
+ { "tx_map_failed", IBMVETH_STAT_OFF(tx_map_failed) },
+ { "tx_send_failed", IBMVETH_STAT_OFF(tx_send_failed) }
+};
+
/* simple methods of getting data from the current rxq entry */
static inline int ibmveth_rxq_pending_buffer(struct ibmveth_adapter *adapter)
{
@@ -751,6 +773,32 @@ static u32 ibmveth_get_rx_csum(struct ne
return adapter->rx_csum;
}
+static void ibmveth_get_strings(struct net_device *dev, u32 stringset, u8 *data)
+{
+ int i;
+
+ if (stringset != ETH_SS_STATS)
+ return;
+
+ for (i = 0; i < ARRAY_SIZE(ibmveth_stats); i++, data += ETH_GSTRING_LEN)
+ memcpy(data, ibmveth_stats[i].name, ETH_GSTRING_LEN);
+}
+
+static int ibmveth_get_stats_count(struct net_device *dev)
+{
+ return ARRAY_SIZE(ibmveth_stats);
+}
+
+static void ibmveth_get_ethtool_stats(struct net_device *dev,
+ struct ethtool_stats *stats, u64 *data)
+{
+ int i;
+ struct ibmveth_adapter *adapter = dev->priv;
+
+ for (i = 0; i < ARRAY_SIZE(ibmveth_stats); i++)
+ data[i] = IBMVETH_GET_STAT(adapter, ibmveth_stats[i].offset);
+}
+
static const struct ethtool_ops netdev_ethtool_ops = {
.get_drvinfo = netdev_get_drvinfo,
.get_settings = netdev_get_settings,
@@ -761,7 +809,10 @@ static const struct ethtool_ops netdev_e
.get_rx_csum = ibmveth_get_rx_csum,
.set_rx_csum = ibmveth_set_rx_csum,
.get_tso = ethtool_op_get_tso,
- .get_ufo = ethtool_op_get_ufo
+ .get_ufo = ethtool_op_get_ufo,
+ .get_strings = ibmveth_get_strings,
+ .get_stats_count = ibmveth_get_stats_count,
+ .get_ethtool_stats = ibmveth_get_ethtool_stats
};
static int ibmveth_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
diff -puN drivers/net/ibmveth.h~ibmveth_ethtool_driver_stats drivers/net/ibmveth.h
_
^ permalink raw reply
* [PATCH 3/6] ibmveth: Add ethtool TSO handlers
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>
Add handlers for get_tso and get_ufo to prevent errors being printed
by ethtool.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
drivers/net/ibmveth.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff -puN drivers/net/ibmveth.c~ibmveth_ethtool_get_tso drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_ethtool_get_tso 2007-07-19 11:18:38.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c 2007-07-19 11:18:38.000000000 -0500
@@ -759,7 +759,9 @@ static const struct ethtool_ops netdev_e
.get_tx_csum = ethtool_op_get_tx_csum,
.set_tx_csum = ibmveth_set_tx_csum,
.get_rx_csum = ibmveth_get_rx_csum,
- .set_rx_csum = ibmveth_set_rx_csum
+ .set_rx_csum = ibmveth_set_rx_csum,
+ .get_tso = ethtool_op_get_tso,
+ .get_ufo = ethtool_op_get_ufo
};
static int ibmveth_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
_
^ permalink raw reply
* [PATCH 2/6] ibmveth: Implement ethtool hooks to enable/disable checksum offload
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>
This patch adds the appropriate ethtool hooks to allow for enabling/disabling
of hypervisor assisted checksum offload for TCP.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
linux-2.6-bjking1/drivers/net/ibmveth.c | 118 +++++++++++++++++++++++++++++++-
linux-2.6-bjking1/drivers/net/ibmveth.h | 1
2 files changed, 117 insertions(+), 2 deletions(-)
diff -puN drivers/net/ibmveth.c~ibmveth_csum_offload_ethtool drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_csum_offload_ethtool 2007-08-01 14:55:14.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c 2007-08-01 14:55:14.000000000 -0500
@@ -641,12 +641,125 @@ static u32 netdev_get_link(struct net_de
return 1;
}
+static void ibmveth_set_rx_csum_flags(struct net_device *dev, u32 data)
+{
+ struct ibmveth_adapter *adapter = dev->priv;
+
+ if (data)
+ adapter->rx_csum = 1;
+ else {
+ adapter->rx_csum = 0;
+ dev->features &= ~NETIF_F_IP_CSUM;
+ }
+}
+
+static void ibmveth_set_tx_csum_flags(struct net_device *dev, u32 data)
+{
+ struct ibmveth_adapter *adapter = dev->priv;
+
+ if (data) {
+ dev->features |= NETIF_F_IP_CSUM;
+ adapter->rx_csum = 1;
+ } else
+ dev->features &= ~NETIF_F_IP_CSUM;
+}
+
+static int ibmveth_set_csum_offload(struct net_device *dev, u32 data,
+ void (*done) (struct net_device *, u32))
+{
+ struct ibmveth_adapter *adapter = dev->priv;
+ union ibmveth_illan_attributes set_attr, clr_attr, ret_attr;
+ long ret;
+ int rc1 = 0, rc2 = 0;
+ int restart = 0;
+
+ if (netif_running(dev)) {
+ restart = 1;
+ adapter->pool_config = 1;
+ ibmveth_close(dev);
+ adapter->pool_config = 0;
+ }
+
+ set_attr.desc = 0;
+ clr_attr.desc = 0;
+
+ if (data)
+ set_attr.fields.tcp_csum_offload_ipv4 = 1;
+ else
+ clr_attr.fields.tcp_csum_offload_ipv4 = 1;
+
+ ret = h_illan_attributes(adapter->vdev->unit_address, 0, 0, &ret_attr.desc);
+
+ if (ret == H_SUCCESS && !ret_attr.fields.active_trunk &&
+ !ret_attr.fields.trunk_priority &&
+ ret_attr.fields.csum_offload_padded_pkt_support) {
+ ret = h_illan_attributes(adapter->vdev->unit_address, clr_attr.desc,
+ set_attr.desc, &ret_attr.desc);
+
+ if (ret != H_SUCCESS) {
+ rc1 = -EIO;
+ ibmveth_error_printk("unable to change checksum offload settings."
+ " %d rc=%ld\n", data, ret);
+
+ ret = h_illan_attributes(adapter->vdev->unit_address,
+ set_attr.desc, clr_attr.desc, &ret_attr.desc);
+ } else
+ done(dev, data);
+ } else {
+ rc1 = -EIO;
+ ibmveth_error_printk("unable to change checksum offload settings."
+ " %d rc=%ld ret_attr=%lx\n", data, ret, ret_attr.desc);
+ }
+
+ if (restart)
+ rc2 = ibmveth_open(dev);
+
+ return rc1 ? rc1 : rc2;
+}
+
+static int ibmveth_set_rx_csum(struct net_device *dev, u32 data)
+{
+ struct ibmveth_adapter *adapter = dev->priv;
+
+ if ((data && adapter->rx_csum) || (!data && !adapter->rx_csum))
+ return 0;
+
+ return ibmveth_set_csum_offload(dev, data, ibmveth_set_rx_csum_flags);
+}
+
+static int ibmveth_set_tx_csum(struct net_device *dev, u32 data)
+{
+ struct ibmveth_adapter *adapter = dev->priv;
+ int rc = 0;
+
+ if (data && (dev->features & NETIF_F_IP_CSUM))
+ return 0;
+ if (!data && !(dev->features & NETIF_F_IP_CSUM))
+ return 0;
+
+ if (data && !adapter->rx_csum)
+ rc = ibmveth_set_csum_offload(dev, data, ibmveth_set_tx_csum_flags);
+ else
+ ibmveth_set_tx_csum_flags(dev, data);
+
+ return rc;
+}
+
+static u32 ibmveth_get_rx_csum(struct net_device *dev)
+{
+ struct ibmveth_adapter *adapter = dev->priv;
+ return adapter->rx_csum;
+}
+
static const struct ethtool_ops netdev_ethtool_ops = {
.get_drvinfo = netdev_get_drvinfo,
.get_settings = netdev_get_settings,
.get_link = netdev_get_link,
.get_sg = ethtool_op_get_sg,
.get_tx_csum = ethtool_op_get_tx_csum,
+ .set_tx_csum = ibmveth_set_tx_csum,
+ .get_rx_csum = ibmveth_get_rx_csum,
+ .set_rx_csum = ibmveth_set_rx_csum
};
static int ibmveth_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
@@ -1104,9 +1217,10 @@ static int __devinit ibmveth_probe(struc
ret = h_illan_attributes(dev->unit_address, 0, set_attr.desc,
&ret_attr.desc);
- if (ret == H_SUCCESS)
+ if (ret == H_SUCCESS) {
+ adapter->rx_csum = 1;
netdev->features |= NETIF_F_IP_CSUM;
- else
+ } else
ret = h_illan_attributes(dev->unit_address, set_attr.desc,
0, &ret_attr.desc);
}
diff -puN drivers/net/ibmveth.h~ibmveth_csum_offload_ethtool drivers/net/ibmveth.h
--- linux-2.6/drivers/net/ibmveth.h~ibmveth_csum_offload_ethtool 2007-08-01 14:55:14.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.h 2007-08-01 14:55:14.000000000 -0500
@@ -137,6 +137,7 @@ struct ibmveth_adapter {
struct ibmveth_buff_pool rx_buff_pool[IbmVethNumBufferPools];
struct ibmveth_rx_q rx_queue;
int pool_config;
+ int rx_csum;
/* adapter specific stats */
u64 replenish_task_cycles;
_
^ permalink raw reply
* [PATCH 1/6] ibmveth: Enable TCP checksum offload
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
This patchset enables TCP checksum offload support for IPV4
on ibmveth. This completely eliminates the generation and checking of
the checksum for packets that are completely virtual and never
touch a physical network. A simple TCP_STREAM netperf run on
a virtual network with maximum mtu set yielded a ~30% increase
in throughput. This feature is enabled by default on systems that
support it, but can be disabled with a module option.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
linux-2.6-bjking1/drivers/net/ibmveth.c | 53 ++++++++++++++++++++++++++++++++
linux-2.6-bjking1/drivers/net/ibmveth.h | 41 +++++++++++++++++++++++-
2 files changed, 92 insertions(+), 2 deletions(-)
diff -puN drivers/net/ibmveth.c~ibmveth_csum_offload drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_csum_offload 2007-08-01 14:55:11.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c 2007-08-01 14:55:11.000000000 -0500
@@ -47,6 +47,8 @@
#include <linux/mm.h>
#include <linux/ethtool.h>
#include <linux/proc_fs.h>
+#include <linux/in.h>
+#include <linux/ip.h>
#include <asm/semaphore.h>
#include <asm/hvcall.h>
#include <asm/atomic.h>
@@ -131,6 +133,11 @@ static inline int ibmveth_rxq_frame_leng
return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].length);
}
+static inline int ibmveth_rxq_csum_good(struct ibmveth_adapter *adapter)
+{
+ return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].csum_good);
+}
+
/* setup the initial settings for a buffer pool */
static void ibmveth_init_buffer_pool(struct ibmveth_buff_pool *pool, u32 pool_index, u32 pool_size, u32 buff_size, u32 pool_active)
{
@@ -684,6 +691,24 @@ static int ibmveth_start_xmit(struct sk_
desc[0].fields.length, DMA_TO_DEVICE);
desc[0].fields.valid = 1;
+ if (skb->ip_summed == CHECKSUM_PARTIAL &&
+ ip_hdr(skb)->protocol != IPPROTO_TCP && skb_checksum_help(skb)) {
+ ibmveth_error_printk("tx: failed to checksum packet\n");
+ tx_dropped++;
+ goto out;
+ }
+
+ if (skb->ip_summed == CHECKSUM_PARTIAL) {
+ unsigned char *buf = skb_transport_header(skb) + skb->csum_offset;
+
+ desc[0].fields.no_csum = 1;
+ desc[0].fields.csum_good = 1;
+
+ /* Need to zero out the checksum */
+ buf[0] = 0;
+ buf[1] = 0;
+ }
+
if(dma_mapping_error(desc[0].fields.address)) {
ibmveth_error_printk("tx: unable to map initial fragment\n");
tx_map_failed++;
@@ -702,6 +727,10 @@ static int ibmveth_start_xmit(struct sk_
frag->size, DMA_TO_DEVICE);
desc[curfrag+1].fields.length = frag->size;
desc[curfrag+1].fields.valid = 1;
+ if (skb->ip_summed == CHECKSUM_PARTIAL) {
+ desc[curfrag+1].fields.no_csum = 1;
+ desc[curfrag+1].fields.csum_good = 1;
+ }
if(dma_mapping_error(desc[curfrag+1].fields.address)) {
ibmveth_error_printk("tx: unable to map fragment %d\n", curfrag);
@@ -792,7 +821,11 @@ static int ibmveth_poll(struct net_devic
} else {
int length = ibmveth_rxq_frame_length(adapter);
int offset = ibmveth_rxq_frame_offset(adapter);
+ int csum_good = ibmveth_rxq_csum_good(adapter);
+
skb = ibmveth_rxq_get_buffer(adapter);
+ if (csum_good)
+ skb->ip_summed = CHECKSUM_UNNECESSARY;
ibmveth_rxq_harvest_buffer(adapter);
@@ -962,8 +995,10 @@ static void ibmveth_poll_controller(stru
static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_id *id)
{
int rc, i;
+ long ret;
struct net_device *netdev;
struct ibmveth_adapter *adapter = NULL;
+ union ibmveth_illan_attributes set_attr, ret_attr;
unsigned char *mac_addr_p;
unsigned int *mcastFilterSize_p;
@@ -1058,6 +1093,24 @@ static int __devinit ibmveth_probe(struc
ibmveth_debug_printk("registering netdev...\n");
+ ret = h_illan_attributes(dev->unit_address, 0, 0, &ret_attr.desc);
+
+ if (ret == H_SUCCESS && !ret_attr.fields.active_trunk &&
+ !ret_attr.fields.trunk_priority &&
+ ret_attr.fields.csum_offload_padded_pkt_support) {
+ set_attr.desc = 0;
+ set_attr.fields.tcp_csum_offload_ipv4 = 1;
+
+ ret = h_illan_attributes(dev->unit_address, 0, set_attr.desc,
+ &ret_attr.desc);
+
+ if (ret == H_SUCCESS)
+ netdev->features |= NETIF_F_IP_CSUM;
+ else
+ ret = h_illan_attributes(dev->unit_address, set_attr.desc,
+ 0, &ret_attr.desc);
+ }
+
rc = register_netdev(netdev);
if(rc) {
diff -puN drivers/net/ibmveth.h~ibmveth_csum_offload drivers/net/ibmveth.h
--- linux-2.6/drivers/net/ibmveth.h~ibmveth_csum_offload 2007-08-01 14:55:11.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.h 2007-08-01 14:55:11.000000000 -0500
@@ -67,6 +67,21 @@ static inline long h_send_logical_lan(un
return rc;
}
+static inline long h_illan_attributes(unsigned long unit_address,
+ unsigned long reset_mask, unsigned long set_mask,
+ unsigned long *ret_attributes)
+{
+ long rc;
+ unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
+
+ rc = plpar_hcall(H_ILLAN_ATTRIBUTES, retbuf, unit_address,
+ reset_mask, set_mask);
+
+ *ret_attributes = retbuf[0];
+
+ return rc;
+}
+
#define h_multicast_ctrl(ua, cmd, mac) \
plpar_hcall_norets(H_MULTICAST_CTRL, ua, cmd, mac)
@@ -141,7 +156,9 @@ struct ibmveth_adapter {
struct ibmveth_buf_desc_fields {
u32 valid : 1;
u32 toggle : 1;
- u32 reserved : 6;
+ u32 reserved : 4;
+ u32 no_csum : 1;
+ u32 csum_good : 1;
u32 length : 24;
u32 address;
};
@@ -151,10 +168,30 @@ union ibmveth_buf_desc {
struct ibmveth_buf_desc_fields fields;
};
+struct ibmveth_illan_attributes_fields {
+ u32 reserved;
+ u32 reserved2 : 18;
+ u32 csum_offload_padded_pkt_support : 1;
+ u32 reserved3 : 1;
+ u32 trunk_priority : 4;
+ u32 reserved4 : 5;
+ u32 tcp_csum_offload_ipv6 : 1;
+ u32 tcp_csum_offload_ipv4 : 1;
+ u32 active_trunk : 1;
+};
+
+union ibmveth_illan_attributes {
+ u64 desc;
+ struct ibmveth_illan_attributes_fields fields;
+};
+
struct ibmveth_rx_q_entry {
u16 toggle : 1;
u16 valid : 1;
- u16 reserved : 14;
+ u16 reserved : 4;
+ u16 no_csum : 1;
+ u16 csum_good : 1;
+ u16 reserved2 : 8;
u16 offset;
u32 length;
u64 correlator;
_
^ permalink raw reply
* Re: [PATCH 3/3] First cut at PReP support for arch/powerpc
From: Segher Boessenkool @ 2007-08-06 19:37 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <20070803064328.GC14456@localhost.localdomain>
>> It seems to me a flat device tree could leave out all those
>> properties that can be derived from the PVR (except for the
>> few that are really useful for bootloaders and such -- cache
>> line size, 64-bit-or-not, what kind of MMU). Linux doesn't
>> use it anyway. Existing DTSs already leave away most.
>
> I agree, ditched them from my dts.
It's good to have consensus :-)
Is this documented already?
>> If PReP requires a specific programming model for the PCI
>> host bridge, that would be fine. But then compatible =
>> "prep-pci-bridge" or such, not just "prep"; everything on
>> your board is "prep", it would make matching a bit hard ;-)
>
> Well... I'm rather unclear on how much PReP requires of the PCI
> bridge. I thought what I'd coded was based on what appeared to be
> hard assumptions in prep_pci.c, but now I'm hearing that this won't
> cover all PReP machines, so I'm really not sure.
Also, even if the current kernels assume certain hardware, that
doesn't mean you can do the same in the device tree.
Segher
^ permalink raw reply
* Re: 2.6.23-rc1-mm2
From: Mariusz Kozlowski @ 2007-08-06 19:34 UTC (permalink / raw)
To: Segher Boessenkool
Cc: linux-usb-devel, gregkh, linux-kernel, linuxppc-dev, paulus,
Andrew Morton
In-Reply-To: <76e360562cd5b50bcd991026e5bead55@kernel.crashing.org>
[-- Attachment #1: Type: text/plain, Size: 18416 bytes --]
> > Second issue as reported earilier allmodconfig fails to build on imac
> > g3.
> >
> > CC arch/powerpc/kernel/lparmap.s
> > AS arch/powerpc/kernel/head_64.o
> > lparmap.c: Assembler messages:
> > lparmap.c:84: Error: file number 1 already allocated
> > make[1]: *** [arch/powerpc/kernel/head_64.o] Blad 1
> > make: *** [arch/powerpc/kernel] Blad 2
>
> Please send me the full output of:
>
> gcc --version (or whatever your gcc is called)
> ld --version
> ld --help (I know no better way to get the supported binutils
> targets, and the default target)
>
> and the lparmap.s file. You might want to skip sending it
> to the lists, it will be a bit big (and off-topic on most
> of those lists, anyway).
Well ... its 66kB. Not that bad. Please find it attached.
Needed gcc and ld info below.
Regards,
Mariusz
$ gcc --version
gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ ld --version
GNU ld version 2.17 Debian GNU/Linux
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License. This program has absolutely no warranty.
$ ld --help
Usage: ld [options] file...
Options:
-a KEYWORD Shared library control for HP/UX compatibility
-A ARCH, --architecture ARCH
Set architecture
-b TARGET, --format TARGET Specify target for following input files
-c FILE, --mri-script FILE Read MRI format linker script
-d, -dc, -dp Force common symbols to be defined
-e ADDRESS, --entry ADDRESS Set start address
-E, --export-dynamic Export all dynamic symbols
-EB Link big-endian objects
-EL Link little-endian objects
-f SHLIB, --auxiliary SHLIB Auxiliary filter for shared object symbol table
-F SHLIB, --filter SHLIB Filter for shared object symbol table
-g Ignored
-G SIZE, --gpsize SIZE Small data size (if no size, same as --shared)
-h FILENAME, -soname FILENAME
Set internal name of shared library
-I PROGRAM, --dynamic-linker PROGRAM
Set PROGRAM as the dynamic linker to use
-l LIBNAME, --library LIBNAME
Search for library LIBNAME
-L DIRECTORY, --library-path DIRECTORY
Add DIRECTORY to library search path
--sysroot=<DIRECTORY> Override the default sysroot location
-m EMULATION Set emulation
-M, --print-map Print map file on standard output
-n, --nmagic Do not page align data
-N, --omagic Do not page align data, do not make text readonly
--no-omagic Page align data, make text readonly
-o FILE, --output FILE Set output file name
-O Optimize output file
-Qy Ignored for SVR4 compatibility
-q, --emit-relocs Generate relocations in final output
-r, -i, --relocatable Generate relocatable output
-R FILE, --just-symbols FILE
Just link symbols (if directory, same as --rpath)
-s, --strip-all Strip all symbols
-S, --strip-debug Strip debugging symbols
--strip-discarded Strip symbols in discarded sections
--no-strip-discarded Do not strip symbols in discarded sections
-t, --trace Trace file opens
-T FILE, --script FILE Read linker script
-u SYMBOL, --undefined SYMBOL
Start with undefined reference to SYMBOL
--unique [=SECTION] Don't merge input [SECTION | orphan] sections
-Ur Build global constructor/destructor tables
-v, --version Print version information
-V Print version and emulation information
-x, --discard-all Discard all local symbols
-X, --discard-locals Discard temporary local symbols (default)
--discard-none Don't discard any local symbols
-y SYMBOL, --trace-symbol SYMBOL
Trace mentions of SYMBOL
-Y PATH Default search path for Solaris compatibility
-(, --start-group Start a group
-), --end-group End a group
--accept-unknown-input-arch Accept input files whose architecture cannot be determined
--no-accept-unknown-input-arch
Reject input files whose architecture is unknown
--add-needed Set DT_NEEDED tags for DT_NEEDED entries in
following dynamic libs
--no-add-needed Do not set DT_NEEDED tags for DT_NEEDED entries
in following dynamic libs
--as-needed Only set DT_NEEDED for following dynamic libs if used
--no-as-needed Always set DT_NEEDED for following dynamic libs
-assert KEYWORD Ignored for SunOS compatibility
-Bdynamic, -dy, -call_shared
Link against shared libraries
-Bstatic, -dn, -non_shared, -static
Do not link against shared libraries
-Bsymbolic Bind global references locally
--check-sections Check section addresses for overlaps (default)
--no-check-sections Do not check section addresses for overlaps
--cref Output cross reference table
--defsym SYMBOL=EXPRESSION Define a symbol
--demangle [=STYLE] Demangle symbol names [using STYLE]
--embedded-relocs Generate embedded relocs
--fatal-warnings Treat warnings as errors
-fini SYMBOL Call SYMBOL at unload-time
--force-exe-suffix Force generation of file with .exe suffix
--gc-sections Remove unused sections (on some targets)
--no-gc-sections Don't remove unused sections (default)
--hash-size=<NUMBER> Set default hash table size close to <NUMBER>
--help Print option help
-init SYMBOL Call SYMBOL at load-time
-Map FILE Write a map file
--no-define-common Do not define Common storage
--no-demangle Do not demangle symbol names
--no-keep-memory Use less memory and more disk I/O
--no-undefined Do not allow unresolved references in object files
--allow-shlib-undefined Allow unresolved references in shared libaries
--no-allow-shlib-undefined Do not allow unresolved references in shared libs
--allow-multiple-definition Allow multiple definitions
--no-undefined-version Disallow undefined version
--default-symver Create default symbol version
--default-imported-symver Create default symbol version for imported symbols
--no-warn-mismatch Don't warn about mismatched input files
--no-whole-archive Turn off --whole-archive
--noinhibit-exec Create an output file even if errors occur
-nostdlib Only use library directories specified on
the command line
--oformat TARGET Specify target of output file
-qmagic Ignored for Linux compatibility
--reduce-memory-overheads Reduce memory overheads, possibly taking much longer
--relax Relax branches on certain targets
--retain-symbols-file FILE Keep only symbols listed in FILE
-rpath PATH Set runtime shared library search path
-rpath-link PATH Set link time shared library search path
-shared, -Bshareable Create a shared library
-pie, --pic-executable Create a position independent executable
--sort-common Sort common symbols by size
--sort-section name|alignment
Sort sections by name or maximum alignment
--spare-dynamic-tags COUNT How many tags to reserve in .dynamic section
--split-by-file [=SIZE] Split output sections every SIZE octets
--split-by-reloc [=COUNT] Split output sections every COUNT relocs
--stats Print memory usage statistics
--target-help Display target specific options
--task-link SYMBOL Do task level linking
--traditional-format Use same format as native linker
--section-start SECTION=ADDRESS
Set address of named section
-Tbss ADDRESS Set address of .bss section
-Tdata ADDRESS Set address of .data section
-Ttext ADDRESS Set address of .text section
--unresolved-symbols=<method>
How to handle unresolved symbols. <method> is:
ignore-all, report-all, ignore-in-object-files,
ignore-in-shared-libs
--verbose Output lots of information during link
--version-script FILE Read version information script
--version-exports-section SYMBOL
Take export symbols list from .exports, using
SYMBOL as the version.
--warn-common Warn about duplicate common symbols
--warn-constructors Warn if global constructors/destructors are seen
--warn-multiple-gp Warn if the multiple GP values are used
--warn-once Warn only once per undefined symbol
--warn-section-align Warn if start of section changes due to alignment
--warn-shared-textrel Warn if shared object has DT_TEXTREL
--warn-unresolved-symbols Report unresolved symbols as warnings
--error-unresolved-symbols Report unresolved symbols as errors
--whole-archive Include all objects from following archives
--wrap SYMBOL Use wrapper functions for SYMBOL
@FILE Read options from FILE
ld: supported targets: elf32-powerpc aixcoff-rs6000 elf32-powerpcle ppcboot elf32-little elf32-big elf64-powerpc elf64-powerpcle aixcoff64-rs6000 elf64-little elf64-big srec symbolsrec tekhex binary ihex
ld: supported emulations: elf32ppclinux elf32ppc elf32ppcsim elf64ppc
ld: emulation specific options:
elf32ppclinux:
-Bgroup Selects group name lookup rules for DSO
--disable-new-dtags Disable new dynamic tags
--enable-new-dtags Enable new dynamic tags
--eh-frame-hdr Create .eh_frame_hdr section
-z combreloc Merge dynamic relocs into one section and sort
-z defs Report unresolved symbols in object files.
-z execstack Mark executable as requiring executable stack
-z initfirst Mark DSO to be initialized first at runtime
-z interpose Mark object to interpose all DSOs but executable
-z loadfltr Mark object requiring immediate process
-z muldefs Allow multiple definitions
-z nocombreloc Don't merge dynamic relocs into one section
-z nocopyreloc Don't create copy relocs
-z nodefaultlib Mark object not to use default search paths
-z nodelete Mark DSO non-deletable at runtime
-z nodlopen Mark DSO not available to dlopen
-z nodump Mark DSO not available to dldump
-z noexecstack Mark executable as not requiring executable stack
-z norelro Don't create RELRO program header
-z now Mark object non-lazy runtime binding
-z origin Mark object requiring immediate $ORIGIN processing
at runtime
-z relro Create RELRO program header
-z KEYWORD Ignored for Solaris compatibility
--emit-stub-syms Label linker stubs with a symbol.
--no-tls-optimize Don't try to optimize TLS accesses.
--bss-plt Force old-style BSS PLT.
--sdata-got Force GOT location just before .sdata.
elf32ppc:
-Bgroup Selects group name lookup rules for DSO
--disable-new-dtags Disable new dynamic tags
--enable-new-dtags Enable new dynamic tags
--eh-frame-hdr Create .eh_frame_hdr section
-z combreloc Merge dynamic relocs into one section and sort
-z defs Report unresolved symbols in object files.
-z execstack Mark executable as requiring executable stack
-z initfirst Mark DSO to be initialized first at runtime
-z interpose Mark object to interpose all DSOs but executable
-z loadfltr Mark object requiring immediate process
-z muldefs Allow multiple definitions
-z nocombreloc Don't merge dynamic relocs into one section
-z nocopyreloc Don't create copy relocs
-z nodefaultlib Mark object not to use default search paths
-z nodelete Mark DSO non-deletable at runtime
-z nodlopen Mark DSO not available to dlopen
-z nodump Mark DSO not available to dldump
-z noexecstack Mark executable as not requiring executable stack
-z norelro Don't create RELRO program header
-z now Mark object non-lazy runtime binding
-z origin Mark object requiring immediate $ORIGIN processing
at runtime
-z relro Create RELRO program header
-z KEYWORD Ignored for Solaris compatibility
--emit-stub-syms Label linker stubs with a symbol.
--no-tls-optimize Don't try to optimize TLS accesses.
--bss-plt Force old-style BSS PLT.
--sdata-got Force GOT location just before .sdata.
elf32ppcsim:
-Bgroup Selects group name lookup rules for DSO
--disable-new-dtags Disable new dynamic tags
--enable-new-dtags Enable new dynamic tags
--eh-frame-hdr Create .eh_frame_hdr section
-z combreloc Merge dynamic relocs into one section and sort
-z defs Report unresolved symbols in object files.
-z execstack Mark executable as requiring executable stack
-z initfirst Mark DSO to be initialized first at runtime
-z interpose Mark object to interpose all DSOs but executable
-z loadfltr Mark object requiring immediate process
-z muldefs Allow multiple definitions
-z nocombreloc Don't merge dynamic relocs into one section
-z nocopyreloc Don't create copy relocs
-z nodefaultlib Mark object not to use default search paths
-z nodelete Mark DSO non-deletable at runtime
-z nodlopen Mark DSO not available to dlopen
-z nodump Mark DSO not available to dldump
-z noexecstack Mark executable as not requiring executable stack
-z norelro Don't create RELRO program header
-z now Mark object non-lazy runtime binding
-z origin Mark object requiring immediate $ORIGIN processing
at runtime
-z relro Create RELRO program header
-z KEYWORD Ignored for Solaris compatibility
--emit-stub-syms Label linker stubs with a symbol.
--no-tls-optimize Don't try to optimize TLS accesses.
--bss-plt Force old-style BSS PLT.
--sdata-got Force GOT location just before .sdata.
elf64ppc:
-Bgroup Selects group name lookup rules for DSO
--disable-new-dtags Disable new dynamic tags
--enable-new-dtags Enable new dynamic tags
--eh-frame-hdr Create .eh_frame_hdr section
-z combreloc Merge dynamic relocs into one section and sort
-z defs Report unresolved symbols in object files.
-z execstack Mark executable as requiring executable stack
-z initfirst Mark DSO to be initialized first at runtime
-z interpose Mark object to interpose all DSOs but executable
-z loadfltr Mark object requiring immediate process
-z muldefs Allow multiple definitions
-z nocombreloc Don't merge dynamic relocs into one section
-z nocopyreloc Don't create copy relocs
-z nodefaultlib Mark object not to use default search paths
-z nodelete Mark DSO non-deletable at runtime
-z nodlopen Mark DSO not available to dlopen
-z nodump Mark DSO not available to dldump
-z noexecstack Mark executable as not requiring executable stack
-z norelro Don't create RELRO program header
-z now Mark object non-lazy runtime binding
-z origin Mark object requiring immediate $ORIGIN processing
at runtime
-z relro Create RELRO program header
-z KEYWORD Ignored for Solaris compatibility
--stub-group-size=N Maximum size of a group of input sections that can be
handled by one stub section. A negative value
locates all stubs before their branches (with a
group size of -N), while a positive value allows
two groups of input sections, one before, and one
after each stub section. Values of +/-1 indicate
the linker should choose suitable defaults.
--emit-stub-syms Label linker stubs with a symbol.
--dotsyms For every version pattern "foo" in a version script,
add ".foo" so that function code symbols are
treated the same as function descriptor symbols.
Defaults to on.
--no-dotsyms Don't do anything special in version scripts.
--no-tls-optimize Don't try to optimize TLS accesses.
--no-opd-optimize Don't optimize the OPD section.
--no-toc-optimize Don't optimize the TOC section.
--no-multi-toc Disallow automatic multiple toc sections.
--non-overlapping-opd Canonicalize .opd, so that there are no overlapping
.opd entries.
Report bugs to <URL:http://www.sourceware.org/bugzilla/>
[-- Attachment #2: lparmap.s --]
[-- Type: text/plain, Size: 67771 bytes --]
.file "lparmap.c"
# rs6000/powerpc options: -mcpu=power4 -msdata=none
.section ".toc","aw"
.section ".text"
# GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) (powerpc-linux-gnu)
# compiled by GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).
# GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=32031
# options passed: -nostdinc -Iinclude -imultilib -D__unix__
# -D__gnu_linux__ -D__linux__ -Dunix -D__unix -Dlinux -D__linux
# -Asystem=linux -Asystem=unix -Asystem=posix -D__KERNEL__
# -DKBUILD_STR(s)=#s -DKBUILD_BASENAME=KBUILD_STR(lparmap)
# -DKBUILD_MODNAME=KBUILD_STR(lparmap) -isystem -include -MD -mbig -m64
# -msoft-float -mtraceback=none -mcall-aixdesc -mcpu=power4 -mno-altivec
# -mno-string -mno-minimal-toc -auxbase-strip -g -Os -Wall -Wundef
# -Wstrict-prototypes -Wno-trigraphs -Werror-implicit-function-declaration
# -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-aliasing
# -fno-common -funit-at-a-time -fomit-frame-pointer -fno-stack-protector
# -fverbose-asm
# options enabled: -falign-loops -fargument-alias -fbranch-count-reg
# -fcaller-saves -fcprop-registers -fcrossjumping -fcse-follow-jumps
# -fcse-skip-blocks -fdefer-pop -fdelete-null-pointer-checks
# -fearly-inlining -feliminate-unused-debug-types
# -fexpensive-optimizations -ffunction-cse -fgcse -fgcse-lm
# -fguess-branch-probability -fident -fif-conversion -fif-conversion2
# -finline-functions -finline-functions-called-once -fipa-pure-const
# -fipa-reference -fipa-type-escape -fivopts -fkeep-static-consts
# -fleading-underscore -floop-optimize -floop-optimize2 -fmath-errno
# -fmerge-constants -fomit-frame-pointer -foptimize-register-move
# -foptimize-sibling-calls -fpeephole -fpeephole2 -freg-struct-return
# -fregmove -freorder-functions -frerun-cse-after-loop -frerun-loop-opt
# -fsched-interblock -fsched-spec -fsched-stalled-insns-dep
# -fschedule-insns -fschedule-insns2 -fshow-column -fsplit-ivs-in-unroller
# -fstrength-reduce -fthread-jumps -ftrapping-math -ftree-ccp
# -ftree-copy-prop -ftree-copyrename -ftree-dce -ftree-dominator-opts
# -ftree-dse -ftree-fre -ftree-loop-im -ftree-loop-ivcanon
# -ftree-loop-optimize -ftree-lrs -ftree-salias -ftree-sink -ftree-sra
# -ftree-store-ccp -ftree-store-copy-prop -ftree-ter
# -ftree-vect-loop-version -ftree-vrp -funit-at-a-time -fvar-tracking
# -fverbose-asm -fzero-initialized-in-bss -m64 -maix-struct-return -mbig
# -mbig-endian -mbss-plt -mfp-in-toc -mfused-madd -mmfcrf -mmultiple
# -mnew-mnemonics -mpowerpc -mpowerpc-gfxopt -mpowerpc64 -msched-prolog
# -msoft-float -mupdate -mvrsave
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.section .debug_info,"",@progbits
.Ldebug_info0:
.section .debug_line,"",@progbits
.Ldebug_line0:
.section ".text"
.Ltext0:
# Compiler executable checksum: c7d476ce5349d99159bf3108448be7fe
.globl xLparMap
.section .text #,"a",@progbits
.align 3
.type xLparMap, @object
.size xLparMap, 120
xLparMap:
# xNumberEsids:
.quad 2
# xNumberRanges:
.quad 1
# xSegmentTableOffs:
.quad 6
# xEsids:
.zero 40
# xKernelEsid:
.quad 51539607552
# xKernelVsid:
.quad 17330416788
# xKernelEsid:
.quad 55834574848
# xKernelVsid:
.quad 64587602677
# xRanges:
# xPages:
.quad 8192
# xOffset:
.quad 0
# xVPN:
.quad 1135766194618368
.file 1 "include/asm/cache.h"
.file 2 "include/asm/types.h"
.file 3 "include/asm/mmu-hash64.h"
.file 4 "include/asm/cputable.h"
.file 5 "include/linux/kernel.h"
.file 6 "include/asm/paca.h"
.file 7 "include/asm/lppaca.h"
.file 8 "include/asm/system.h"
.file 9 "include/asm/ptrace.h"
.file 10 "include/linux/mmzone.h"
.file 11 "include/asm/mmzone.h"
.file 12 "include/linux/list.h"
.file 13 "include/linux/spinlock_types.h"
.file 14 "include/asm/spinlock_types.h"
.file 15 "include/linux/seqlock.h"
.file 16 "include/asm/atomic.h"
.file 17 "include/asm-generic/atomic.h"
.file 18 "include/linux/wait.h"
.file 19 "include/linux/cpumask.h"
.file 20 "include/linux/timex.h"
.file 21 "include/linux/jiffies.h"
.file 22 "include/linux/slub_def.h"
.file 23 "include/linux/slab.h"
.file 24 "include/linux/sysfs.h"
.file 25 "include/linux/kobject.h"
.file 26 "include/linux/kref.h"
.file 27 "include/linux/types.h"
.file 28 "include/asm/posix_types.h"
.file 29 "include/asm/tlbflush.h"
.file 30 "include/asm/page.h"
.file 31 "include/asm/page_64.h"
.file 32 "arch/powerpc/kernel/lparmap.c"
.file 33 "include/asm/iseries/lpar_map.h"
.section ".text"
.Letext0:
.section .debug_info
.4byte 0x1947
.2byte 0x2
.4byte .Ldebug_abbrev0
.byte 0x8
.uleb128 0x1
.4byte .Ldebug_line0
.8byte .Letext0
.8byte .Ltext0
.4byte .LASF345
.byte 0x1
.4byte .LASF346
.4byte .LASF347
.uleb128 0x2
.4byte .LASF0
.byte 0x4
.byte 0x7
.uleb128 0x2
.4byte .LASF1
.byte 0x1
.byte 0x6
.uleb128 0x2
.4byte .LASF2
.byte 0x1
.byte 0x8
.uleb128 0x2
.4byte .LASF3
.byte 0x2
.byte 0x5
.uleb128 0x2
.4byte .LASF4
.byte 0x2
.byte 0x7
.uleb128 0x3
.string "int"
.byte 0x4
.byte 0x5
.uleb128 0x2
.4byte .LASF5
.byte 0x8
.byte 0x5
.uleb128 0x2
.4byte .LASF6
.byte 0x8
.byte 0x7
.uleb128 0x2
.4byte .LASF6
.byte 0x8
.byte 0x7
.uleb128 0x4
.string "s8"
.byte 0x2
.byte 0x44
.4byte 0x34
.uleb128 0x4
.string "u8"
.byte 0x2
.byte 0x45
.4byte 0x3b
.uleb128 0x4
.string "s16"
.byte 0x2
.byte 0x47
.4byte 0x42
.uleb128 0x4
.string "u16"
.byte 0x2
.byte 0x48
.4byte 0x49
.uleb128 0x4
.string "u32"
.byte 0x2
.byte 0x4b
.4byte 0x2d
.uleb128 0x4
.string "u64"
.byte 0x2
.byte 0x4f
.4byte 0x5e
.uleb128 0x5
.4byte 0x129
.4byte .LASF20
.byte 0x20
.byte 0x1
.byte 0x17
.uleb128 0x6
.4byte .LASF7
.byte 0x1
.byte 0x18
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF8
.byte 0x1
.byte 0x19
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x4
.uleb128 0x6
.4byte .LASF9
.byte 0x1
.byte 0x1a
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF10
.byte 0x1
.byte 0x1b
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0xc
.uleb128 0x6
.4byte .LASF11
.byte 0x1
.byte 0x1c
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0x6
.4byte .LASF12
.byte 0x1
.byte 0x1d
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x14
.uleb128 0x6
.4byte .LASF13
.byte 0x1
.byte 0x1e
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF14
.byte 0x1
.byte 0x1f
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x1c
.byte 0x0
.uleb128 0x7
.4byte .LASF15
.byte 0x1f
.byte 0x26
.4byte 0x5e
.uleb128 0x8
.byte 0x8
.4byte 0x13a
.uleb128 0x9
.4byte 0x13f
.uleb128 0x2
.4byte .LASF16
.byte 0x1
.byte 0x8
.uleb128 0x8
.byte 0x8
.4byte 0x13f
.uleb128 0x7
.4byte .LASF17
.byte 0x1e
.byte 0x99
.4byte 0x129
.uleb128 0xa
.4byte 0x17c
.byte 0x10
.byte 0x1e
.byte 0x9e
.uleb128 0xb
.string "pte"
.byte 0x1e
.byte 0x9e
.4byte 0x14c
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF18
.byte 0x1e
.byte 0x9e
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x8
.byte 0x0
.uleb128 0x7
.4byte .LASF19
.byte 0x1e
.byte 0x9e
.4byte 0x157
.uleb128 0x5
.4byte 0x1da
.4byte .LASF21
.byte 0x20
.byte 0x3
.byte 0x80
.uleb128 0x6
.4byte .LASF22
.byte 0x3
.byte 0x81
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF23
.byte 0x3
.byte 0x82
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x4
.uleb128 0x6
.4byte .LASF24
.byte 0x3
.byte 0x83
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF25
.byte 0x3
.byte 0x84
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0x6
.4byte .LASF26
.byte 0x3
.byte 0x85
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x18
.byte 0x0
.uleb128 0xc
.4byte .LASF27
.byte 0x3
.2byte 0x16a
.4byte 0x5e
.uleb128 0xd
.4byte 0x23a
.byte 0x28
.byte 0x3
.2byte 0x16c
.uleb128 0xe
.string "id"
.byte 0x3
.2byte 0x16d
.4byte 0x1da
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0xf
.4byte .LASF28
.byte 0x3
.2byte 0x16e
.4byte 0x8b
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0xf
.4byte .LASF29
.byte 0x3
.2byte 0x171
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0xf
.4byte .LASF30
.byte 0x3
.2byte 0x172
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0xf
.4byte .LASF31
.byte 0x3
.2byte 0x176
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x20
.byte 0x0
.uleb128 0xc
.4byte .LASF32
.byte 0x3
.2byte 0x177
.4byte 0x1e6
.uleb128 0x7
.4byte .LASF33
.byte 0x4
.byte 0x29
.4byte 0x251
.uleb128 0x8
.byte 0x8
.4byte 0x257
.uleb128 0x10
.4byte 0x268
.byte 0x1
.uleb128 0x11
.4byte 0x5e
.uleb128 0x11
.4byte 0x268
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x26e
.uleb128 0x5
.4byte 0x369
.4byte .LASF34
.byte 0x70
.byte 0x4
.byte 0x27
.uleb128 0x6
.4byte .LASF35
.byte 0x4
.byte 0x3e
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF36
.byte 0x4
.byte 0x3f
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x4
.uleb128 0x6
.4byte .LASF37
.byte 0x4
.byte 0x41
.4byte 0x146
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF38
.byte 0x4
.byte 0x42
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0x6
.4byte .LASF39
.byte 0x4
.byte 0x43
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF40
.byte 0x4
.byte 0x46
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x1c
.uleb128 0x6
.4byte .LASF41
.byte 0x4
.byte 0x47
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x20
.uleb128 0x6
.4byte .LASF42
.byte 0x4
.byte 0x4a
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x24
.uleb128 0x6
.4byte .LASF43
.byte 0x4
.byte 0x4b
.4byte 0x3b3
.byte 0x2
.byte 0x23
.uleb128 0x28
.uleb128 0x6
.4byte .LASF44
.byte 0x4
.byte 0x50
.4byte 0x246
.byte 0x2
.byte 0x23
.uleb128 0x30
.uleb128 0x6
.4byte .LASF45
.byte 0x4
.byte 0x52
.4byte 0x369
.byte 0x2
.byte 0x23
.uleb128 0x38
.uleb128 0x6
.4byte .LASF46
.byte 0x4
.byte 0x55
.4byte 0x146
.byte 0x2
.byte 0x23
.uleb128 0x40
.uleb128 0x6
.4byte .LASF47
.byte 0x4
.byte 0x58
.4byte 0x37c
.byte 0x2
.byte 0x23
.uleb128 0x48
.uleb128 0x6
.4byte .LASF48
.byte 0x4
.byte 0x5b
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x50
.uleb128 0x6
.4byte .LASF49
.byte 0x4
.byte 0x5c
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x58
.uleb128 0x6
.4byte .LASF50
.byte 0x4
.byte 0x5f
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x60
.uleb128 0x6
.4byte .LASF51
.byte 0x4
.byte 0x62
.4byte 0x146
.byte 0x2
.byte 0x23
.uleb128 0x68
.byte 0x0
.uleb128 0x7
.4byte .LASF52
.byte 0x4
.byte 0x2a
.4byte 0x374
.uleb128 0x8
.byte 0x8
.4byte 0x37a
.uleb128 0x12
.byte 0x1
.uleb128 0x13
.4byte 0x3b3
.4byte .LASF60
.byte 0x4
.byte 0x4
.byte 0x2c
.uleb128 0x14
.4byte .LASF53
.sleb128 0
.uleb128 0x14
.4byte .LASF54
.sleb128 1
.uleb128 0x14
.4byte .LASF55
.sleb128 2
.uleb128 0x14
.4byte .LASF56
.sleb128 3
.uleb128 0x14
.4byte .LASF57
.sleb128 4
.uleb128 0x14
.4byte .LASF58
.sleb128 5
.uleb128 0x14
.4byte .LASF59
.sleb128 6
.byte 0x0
.uleb128 0x13
.4byte 0x3d2
.4byte .LASF61
.byte 0x4
.byte 0x4
.byte 0x36
.uleb128 0x14
.4byte .LASF62
.sleb128 0
.uleb128 0x14
.4byte .LASF63
.sleb128 1
.uleb128 0x14
.4byte .LASF64
.sleb128 2
.byte 0x0
.uleb128 0x15
.4byte 0x4a2
.4byte .LASF65
.2byte 0x160
.byte 0x9
.byte 0x1d
.uleb128 0xb
.string "gpr"
.byte 0x9
.byte 0x1e
.4byte 0x4a2
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0xb
.string "nip"
.byte 0x9
.byte 0x1f
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x100
.uleb128 0xb
.string "msr"
.byte 0x9
.byte 0x20
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x108
.uleb128 0x6
.4byte .LASF66
.byte 0x9
.byte 0x21
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x110
.uleb128 0xb
.string "ctr"
.byte 0x9
.byte 0x22
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x118
.uleb128 0x6
.4byte .LASF67
.byte 0x9
.byte 0x23
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x120
.uleb128 0xb
.string "xer"
.byte 0x9
.byte 0x24
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x128
.uleb128 0xb
.string "ccr"
.byte 0x9
.byte 0x25
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x130
.uleb128 0x6
.4byte .LASF68
.byte 0x9
.byte 0x27
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x138
.uleb128 0x6
.4byte .LASF69
.byte 0x9
.byte 0x2c
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x140
.uleb128 0xb
.string "dar"
.byte 0x9
.byte 0x2f
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x148
.uleb128 0x6
.4byte .LASF70
.byte 0x9
.byte 0x30
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x150
.uleb128 0x6
.4byte .LASF71
.byte 0x9
.byte 0x31
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x158
.byte 0x0
.uleb128 0x16
.4byte 0x4b2
.4byte 0x5e
.uleb128 0x17
.4byte 0x65
.byte 0x1f
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x3d2
.uleb128 0x2
.4byte .LASF72
.byte 0x8
.byte 0x4
.uleb128 0x7
.4byte .LASF73
.byte 0x1c
.byte 0xb
.4byte 0x2d
.uleb128 0x7
.4byte .LASF74
.byte 0x1c
.byte 0x22
.4byte 0x5e
.uleb128 0x7
.4byte .LASF75
.byte 0x1c
.byte 0x23
.4byte 0x57
.uleb128 0x2
.4byte .LASF76
.byte 0x8
.byte 0x5
.uleb128 0x7
.4byte .LASF77
.byte 0x1b
.byte 0x18
.4byte 0x4bf
.uleb128 0x2
.4byte .LASF78
.byte 0x1
.byte 0x2
.uleb128 0x7
.4byte .LASF79
.byte 0x1b
.byte 0x43
.4byte 0x4ca
.uleb128 0x7
.4byte .LASF80
.byte 0x1b
.byte 0x48
.4byte 0x4d5
.uleb128 0x16
.4byte 0x51f
.4byte 0x5e
.uleb128 0x17
.4byte 0x65
.byte 0x2
.byte 0x0
.uleb128 0x18
.4byte .LASF257
.byte 0x1
.uleb128 0x8
.byte 0x8
.4byte 0x51f
.uleb128 0xa
.4byte 0x596
.byte 0x8
.byte 0x7
.byte 0x45
.uleb128 0x6
.4byte .LASF81
.byte 0x7
.byte 0x46
.4byte 0x8b
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF82
.byte 0x7
.byte 0x47
.4byte 0x76
.byte 0x2
.byte 0x23
.uleb128 0x2
.uleb128 0x6
.4byte .LASF83
.byte 0x7
.byte 0x48
.4byte 0x76
.byte 0x2
.byte 0x23
.uleb128 0x3
.uleb128 0x6
.4byte .LASF84
.byte 0x7
.byte 0x49
.4byte 0x76
.byte 0x2
.byte 0x23
.uleb128 0x4
.uleb128 0x6
.4byte .LASF85
.byte 0x7
.byte 0x4a
.4byte 0x76
.byte 0x2
.byte 0x23
.uleb128 0x5
.uleb128 0x6
.4byte .LASF86
.byte 0x7
.byte 0x4b
.4byte 0x76
.byte 0x2
.byte 0x23
.uleb128 0x6
.uleb128 0x6
.4byte .LASF87
.byte 0x7
.byte 0x4c
.4byte 0x76
.byte 0x2
.byte 0x23
.uleb128 0x7
.byte 0x0
.uleb128 0x19
.4byte 0x5b5
.byte 0x8
.byte 0x7
.byte 0x43
.uleb128 0x1a
.4byte .LASF88
.byte 0x7
.byte 0x44
.4byte 0xa1
.uleb128 0x1a
.4byte .LASF89
.byte 0x7
.byte 0x4d
.4byte 0x52b
.byte 0x0
.uleb128 0x15
.4byte 0x851
.4byte .LASF90
.2byte 0x400
.byte 0x7
.byte 0x24
.uleb128 0x6
.4byte .LASF91
.byte 0x7
.byte 0x2b
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF92
.byte 0x7
.byte 0x2c
.4byte 0x8b
.byte 0x2
.byte 0x23
.uleb128 0x4
.uleb128 0x6
.4byte .LASF93
.byte 0x7
.byte 0x2d
.4byte 0x8b
.byte 0x2
.byte 0x23
.uleb128 0x6
.uleb128 0x1b
.4byte .LASF94
.byte 0x7
.byte 0x2e
.4byte 0x8b
.byte 0x2
.byte 0xe
.byte 0x0
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x1b
.4byte .LASF95
.byte 0x7
.byte 0x2f
.4byte 0x76
.byte 0x1
.byte 0x1
.byte 0x6
.byte 0x2
.byte 0x23
.uleb128 0x9
.uleb128 0x1b
.4byte .LASF96
.byte 0x7
.byte 0x30
.4byte 0x76
.byte 0x1
.byte 0x1
.byte 0x7
.byte 0x2
.byte 0x23
.uleb128 0x9
.uleb128 0x1b
.4byte .LASF97
.byte 0x7
.byte 0x31
.4byte 0x851
.byte 0x1
.byte 0x8
.byte 0x0
.byte 0x2
.byte 0x23
.uleb128 0xa
.uleb128 0x6
.4byte .LASF98
.byte 0x7
.byte 0x32
.4byte 0x76
.byte 0x2
.byte 0x23
.uleb128 0xb
.uleb128 0x6
.4byte .LASF99
.byte 0x7
.byte 0x33
.4byte 0x856
.byte 0x2
.byte 0x23
.uleb128 0xc
.uleb128 0x6
.4byte .LASF100
.byte 0x7
.byte 0x34
.4byte 0x856
.byte 0x2
.byte 0x23
.uleb128 0xe
.uleb128 0x6
.4byte .LASF101
.byte 0x7
.byte 0x35
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0x6
.4byte .LASF102
.byte 0x7
.byte 0x36
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x14
.uleb128 0x6
.4byte .LASF103
.byte 0x7
.byte 0x37
.4byte 0x85b
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF104
.byte 0x7
.byte 0x38
.4byte 0x85b
.byte 0x2
.byte 0x23
.uleb128 0x1c
.uleb128 0x6
.4byte .LASF105
.byte 0x7
.byte 0x39
.4byte 0x85b
.byte 0x2
.byte 0x23
.uleb128 0x20
.uleb128 0x6
.4byte .LASF106
.byte 0x7
.byte 0x3a
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x24
.uleb128 0x6
.4byte .LASF107
.byte 0x7
.byte 0x3b
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x28
.uleb128 0x6
.4byte .LASF108
.byte 0x7
.byte 0x3c
.4byte 0x860
.byte 0x2
.byte 0x23
.uleb128 0x30
.uleb128 0x6
.4byte .LASF109
.byte 0x7
.byte 0x4e
.4byte 0x596
.byte 0x3
.byte 0x23
.uleb128 0x80
.uleb128 0x6
.4byte .LASF110
.byte 0x7
.byte 0x58
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x88
.uleb128 0x6
.4byte .LASF111
.byte 0x7
.byte 0x5c
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x90
.uleb128 0x6
.4byte .LASF112
.byte 0x7
.byte 0x5d
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x98
.uleb128 0x6
.4byte .LASF113
.byte 0x7
.byte 0x60
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0xa0
.uleb128 0x6
.4byte .LASF114
.byte 0x7
.byte 0x61
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0xa8
.uleb128 0x6
.4byte .LASF115
.byte 0x7
.byte 0x62
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0xb0
.uleb128 0x6
.4byte .LASF116
.byte 0x7
.byte 0x64
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0xb8
.uleb128 0x6
.4byte .LASF117
.byte 0x7
.byte 0x65
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0xb9
.uleb128 0x6
.4byte .LASF118
.byte 0x7
.byte 0x66
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0xba
.uleb128 0x6
.4byte .LASF119
.byte 0x7
.byte 0x67
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0xbb
.uleb128 0x6
.4byte .LASF120
.byte 0x7
.byte 0x68
.4byte 0x85b
.byte 0x3
.byte 0x23
.uleb128 0xbc
.uleb128 0x6
.4byte .LASF121
.byte 0x7
.byte 0x69
.4byte 0x870
.byte 0x3
.byte 0x23
.uleb128 0xc0
.uleb128 0x6
.4byte .LASF122
.byte 0x7
.byte 0x6a
.4byte 0x870
.byte 0x3
.byte 0x23
.uleb128 0xc8
.uleb128 0x6
.4byte .LASF123
.byte 0x7
.byte 0x6b
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0xd0
.uleb128 0x6
.4byte .LASF124
.byte 0x7
.byte 0x6c
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0xd8
.uleb128 0x6
.4byte .LASF125
.byte 0x7
.byte 0x6d
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0xe0
.uleb128 0x6
.4byte .LASF126
.byte 0x7
.byte 0x6e
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0xe8
.uleb128 0x6
.4byte .LASF127
.byte 0x7
.byte 0x6f
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0xf0
.uleb128 0x6
.4byte .LASF128
.byte 0x7
.byte 0x70
.4byte 0x85b
.byte 0x3
.byte 0x23
.uleb128 0xf8
.uleb128 0x6
.4byte .LASF129
.byte 0x7
.byte 0x71
.4byte 0x8b
.byte 0x3
.byte 0x23
.uleb128 0xfc
.uleb128 0x6
.4byte .LASF130
.byte 0x7
.byte 0x72
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0xfe
.uleb128 0x6
.4byte .LASF131
.byte 0x7
.byte 0x73
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0xff
.uleb128 0x6
.4byte .LASF132
.byte 0x7
.byte 0x7f
.4byte 0x85b
.byte 0x3
.byte 0x23
.uleb128 0x100
.uleb128 0x6
.4byte .LASF133
.byte 0x7
.byte 0x80
.4byte 0x875
.byte 0x3
.byte 0x23
.uleb128 0x104
.uleb128 0x6
.4byte .LASF134
.byte 0x7
.byte 0x85
.4byte 0x885
.byte 0x3
.byte 0x23
.uleb128 0x180
.byte 0x0
.uleb128 0x1c
.4byte 0x76
.uleb128 0x1c
.4byte 0x8b
.uleb128 0x1c
.4byte 0x96
.uleb128 0x16
.4byte 0x870
.4byte 0x76
.uleb128 0x17
.4byte 0x65
.byte 0x4f
.byte 0x0
.uleb128 0x1c
.4byte 0xa1
.uleb128 0x16
.4byte 0x885
.4byte 0x76
.uleb128 0x17
.4byte 0x65
.byte 0x7b
.byte 0x0
.uleb128 0x16
.4byte 0x895
.4byte 0x76
.uleb128 0x17
.4byte 0x65
.byte 0xff
.byte 0x0
.uleb128 0xa
.4byte 0x8ba
.byte 0x10
.byte 0x7
.byte 0x93
.uleb128 0x6
.4byte .LASF135
.byte 0x7
.byte 0x94
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF136
.byte 0x7
.byte 0x95
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x8
.byte 0x0
.uleb128 0x5
.4byte 0x8ff
.4byte .LASF137
.byte 0x80
.byte 0x7
.byte 0x8f
.uleb128 0x6
.4byte .LASF138
.byte 0x7
.byte 0x90
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF139
.byte 0x7
.byte 0x91
.4byte 0x96
.byte 0x2
.byte 0x23
.uleb128 0x4
.uleb128 0x6
.4byte .LASF81
.byte 0x7
.byte 0x92
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF140
.byte 0x7
.byte 0x96
.4byte 0x8ff
.byte 0x2
.byte 0x23
.uleb128 0x10
.byte 0x0
.uleb128 0x16
.4byte 0x90f
.4byte 0x895
.uleb128 0x17
.4byte 0x65
.byte 0x2
.byte 0x0
.uleb128 0x15
.4byte 0xae2
.4byte .LASF141
.2byte 0x200
.byte 0x6
.byte 0x17
.uleb128 0x6
.4byte .LASF142
.byte 0x6
.byte 0x33
.4byte 0xae2
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF143
.byte 0x6
.byte 0x35
.4byte 0xae8
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF144
.byte 0x6
.byte 0x3e
.4byte 0x8b
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0x6
.4byte .LASF145
.byte 0x6
.byte 0x3f
.4byte 0x8b
.byte 0x2
.byte 0x23
.uleb128 0x12
.uleb128 0x6
.4byte .LASF146
.byte 0x6
.byte 0x41
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF147
.byte 0x6
.byte 0x42
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x20
.uleb128 0x6
.4byte .LASF148
.byte 0x6
.byte 0x43
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x28
.uleb128 0x6
.4byte .LASF149
.byte 0x6
.byte 0x44
.4byte 0xae8
.byte 0x2
.byte 0x23
.uleb128 0x30
.uleb128 0x6
.4byte .LASF150
.byte 0x6
.byte 0x45
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x38
.uleb128 0x6
.4byte .LASF151
.byte 0x6
.byte 0x46
.4byte 0x80
.byte 0x2
.byte 0x23
.uleb128 0x40
.uleb128 0x6
.4byte .LASF152
.byte 0x6
.byte 0x47
.4byte 0x76
.byte 0x2
.byte 0x23
.uleb128 0x42
.uleb128 0x6
.4byte .LASF153
.byte 0x6
.byte 0x49
.4byte 0xaea
.byte 0x2
.byte 0x23
.uleb128 0x48
.uleb128 0x6
.4byte .LASF154
.byte 0x6
.byte 0x4f
.4byte 0xaf0
.byte 0x3
.byte 0x23
.uleb128 0x80
.uleb128 0x6
.4byte .LASF155
.byte 0x6
.byte 0x50
.4byte 0xaf0
.byte 0x3
.byte 0x23
.uleb128 0xd0
.uleb128 0x6
.4byte .LASF156
.byte 0x6
.byte 0x51
.4byte 0xaf0
.byte 0x3
.byte 0x23
.uleb128 0x120
.uleb128 0x6
.4byte .LASF157
.byte 0x6
.byte 0x54
.4byte 0x23a
.byte 0x3
.byte 0x23
.uleb128 0x170
.uleb128 0x6
.4byte .LASF158
.byte 0x6
.byte 0x55
.4byte 0x8b
.byte 0x3
.byte 0x23
.uleb128 0x198
.uleb128 0x6
.4byte .LASF159
.byte 0x6
.byte 0x56
.4byte 0x8b
.byte 0x3
.byte 0x23
.uleb128 0x19a
.uleb128 0x6
.4byte .LASF160
.byte 0x6
.byte 0x57
.4byte 0xb00
.byte 0x3
.byte 0x23
.uleb128 0x19c
.uleb128 0x6
.4byte .LASF161
.byte 0x6
.byte 0x5c
.4byte 0x525
.byte 0x3
.byte 0x23
.uleb128 0x1b0
.uleb128 0x6
.4byte .LASF162
.byte 0x6
.byte 0x5d
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x1b8
.uleb128 0x6
.4byte .LASF163
.byte 0x6
.byte 0x5e
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x1c0
.uleb128 0x6
.4byte .LASF164
.byte 0x6
.byte 0x5f
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x1c8
.uleb128 0x6
.4byte .LASF165
.byte 0x6
.byte 0x60
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x1d0
.uleb128 0x6
.4byte .LASF166
.byte 0x6
.byte 0x61
.4byte 0x8b
.byte 0x3
.byte 0x23
.uleb128 0x1d8
.uleb128 0x6
.4byte .LASF167
.byte 0x6
.byte 0x62
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0x1da
.uleb128 0x6
.4byte .LASF168
.byte 0x6
.byte 0x63
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0x1db
.uleb128 0x6
.4byte .LASF169
.byte 0x6
.byte 0x64
.4byte 0x76
.byte 0x3
.byte 0x23
.uleb128 0x1dc
.uleb128 0x6
.4byte .LASF170
.byte 0x6
.byte 0x67
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x1e0
.uleb128 0x6
.4byte .LASF171
.byte 0x6
.byte 0x68
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x1e8
.uleb128 0x6
.4byte .LASF172
.byte 0x6
.byte 0x69
.4byte 0xa1
.byte 0x3
.byte 0x23
.uleb128 0x1f0
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x5b5
.uleb128 0x1d
.byte 0x8
.uleb128 0x8
.byte 0x8
.4byte 0x8ba
.uleb128 0x16
.4byte 0xb00
.4byte 0xa1
.uleb128 0x17
.4byte 0x65
.byte 0x9
.byte 0x0
.uleb128 0x16
.4byte 0xb10
.4byte 0x8b
.uleb128 0x17
.4byte 0x65
.byte 0x7
.byte 0x0
.uleb128 0x5
.4byte 0xb39
.4byte .LASF173
.byte 0x10
.byte 0xc
.byte 0x15
.uleb128 0x6
.4byte .LASF174
.byte 0xc
.byte 0x16
.4byte 0xb39
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF175
.byte 0xc
.byte 0x16
.4byte 0xb39
.byte 0x2
.byte 0x23
.uleb128 0x8
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0xb10
.uleb128 0xa
.4byte 0xb56
.byte 0x4
.byte 0xe
.byte 0x8
.uleb128 0x6
.4byte .LASF176
.byte 0xe
.byte 0x9
.4byte 0xb56
.byte 0x2
.byte 0x23
.uleb128 0x0
.byte 0x0
.uleb128 0x1c
.4byte 0x2d
.uleb128 0x7
.4byte .LASF177
.byte 0xe
.byte 0xa
.4byte 0xb3f
.uleb128 0x1c
.4byte 0x50
.uleb128 0xa
.4byte 0xbac
.byte 0x18
.byte 0xd
.byte 0x14
.uleb128 0x6
.4byte .LASF178
.byte 0xd
.byte 0x15
.4byte 0xb5b
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF179
.byte 0xd
.byte 0x1a
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x4
.uleb128 0x6
.4byte .LASF180
.byte 0xd
.byte 0x1a
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF181
.byte 0xd
.byte 0x1b
.4byte 0xae8
.byte 0x2
.byte 0x23
.uleb128 0x10
.byte 0x0
.uleb128 0x7
.4byte .LASF182
.byte 0xd
.byte 0x20
.4byte 0xb6b
.uleb128 0xa
.4byte 0xbce
.byte 0x4
.byte 0x10
.byte 0x8
.uleb128 0x6
.4byte .LASF183
.byte 0x10
.byte 0x8
.4byte 0xb66
.byte 0x2
.byte 0x23
.uleb128 0x0
.byte 0x0
.uleb128 0x7
.4byte .LASF184
.byte 0x10
.byte 0x8
.4byte 0xbb7
.uleb128 0xa
.4byte 0xbf0
.byte 0x8
.byte 0x10
.byte 0xf3
.uleb128 0x6
.4byte .LASF183
.byte 0x10
.byte 0xf3
.4byte 0xbf0
.byte 0x2
.byte 0x23
.uleb128 0x0
.byte 0x0
.uleb128 0x1c
.4byte 0x57
.uleb128 0x7
.4byte .LASF185
.byte 0x10
.byte 0xf3
.4byte 0xbd9
.uleb128 0x7
.4byte .LASF186
.byte 0x11
.byte 0x17
.4byte 0xbf5
.uleb128 0x5
.4byte 0xc34
.4byte .LASF187
.byte 0x28
.byte 0x12
.byte 0x32
.uleb128 0x6
.4byte .LASF188
.byte 0x12
.byte 0x33
.4byte 0xbac
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF189
.byte 0x12
.byte 0x34
.4byte 0xb10
.byte 0x2
.byte 0x23
.uleb128 0x18
.byte 0x0
.uleb128 0x7
.4byte .LASF190
.byte 0x12
.byte 0x36
.4byte 0xc0b
.uleb128 0xa
.4byte 0xc64
.byte 0x20
.byte 0xf
.byte 0x20
.uleb128 0x6
.4byte .LASF191
.byte 0xf
.byte 0x21
.4byte 0x2d
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF188
.byte 0xf
.byte 0x22
.4byte 0xbac
.byte 0x2
.byte 0x23
.uleb128 0x8
.byte 0x0
.uleb128 0x7
.4byte .LASF192
.byte 0xf
.byte 0x23
.4byte 0xc3f
.uleb128 0x16
.4byte 0xc7f
.4byte 0x5e
.uleb128 0x17
.4byte 0x65
.byte 0x0
.byte 0x0
.uleb128 0x5
.4byte 0xca8
.4byte .LASF193
.byte 0x58
.byte 0xa
.byte 0x3b
.uleb128 0x6
.4byte .LASF194
.byte 0xa
.byte 0x3c
.4byte 0xca8
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF195
.byte 0xa
.byte 0x3d
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x50
.byte 0x0
.uleb128 0x16
.4byte 0xcb8
.4byte 0xb10
.uleb128 0x17
.4byte 0x65
.byte 0x4
.byte 0x0
.uleb128 0x5
.4byte 0xcd1
.4byte .LASF196
.byte 0x0
.byte 0xa
.byte 0x49
.uleb128 0xb
.string "x"
.byte 0xa
.byte 0x4a
.4byte 0xcd1
.byte 0x2
.byte 0x23
.uleb128 0x0
.byte 0x0
.uleb128 0x16
.4byte 0xce0
.4byte 0x13f
.uleb128 0x1e
.4byte 0x65
.byte 0x0
.uleb128 0x5
.4byte 0xd25
.4byte .LASF197
.byte 0x20
.byte 0xa
.byte 0x6d
.uleb128 0x6
.4byte .LASF198
.byte 0xa
.byte 0x6e
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF199
.byte 0xa
.byte 0x6f
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x4
.uleb128 0x6
.4byte .LASF200
.byte 0xa
.byte 0x70
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF201
.byte 0xa
.byte 0x71
.4byte 0xb10
.byte 0x2
.byte 0x23
.uleb128 0x10
.byte 0x0
.uleb128 0x5
.4byte 0xd6a
.4byte .LASF202
.byte 0x80
.byte 0xa
.byte 0x74
.uleb128 0xb
.string "pcp"
.byte 0xa
.byte 0x75
.4byte 0xd6a
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF203
.byte 0xa
.byte 0x77
.4byte 0x6c
.byte 0x2
.byte 0x23
.uleb128 0x40
.uleb128 0x6
.4byte .LASF204
.byte 0xa
.byte 0x7a
.4byte 0x6c
.byte 0x2
.byte 0x23
.uleb128 0x41
.uleb128 0x6
.4byte .LASF205
.byte 0xa
.byte 0x7b
.4byte 0xd7a
.byte 0x2
.byte 0x23
.uleb128 0x42
.byte 0x0
.uleb128 0x16
.4byte 0xd7a
.4byte 0xce0
.uleb128 0x17
.4byte 0x65
.byte 0x1
.byte 0x0
.uleb128 0x16
.4byte 0xd8a
.4byte 0x6c
.uleb128 0x17
.4byte 0x65
.byte 0x13
.byte 0x0
.uleb128 0x15
.4byte 0xf75
.4byte .LASF206
.2byte 0x680
.byte 0xa
.byte 0xd7
.uleb128 0x6
.4byte .LASF207
.byte 0xa
.byte 0xd9
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF208
.byte 0xa
.byte 0xd9
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF209
.byte 0xa
.byte 0xd9
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0x6
.4byte .LASF210
.byte 0xa
.byte 0xe2
.4byte 0x50f
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF211
.byte 0xa
.byte 0xe5
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x30
.uleb128 0x6
.4byte .LASF212
.byte 0xa
.byte 0xe9
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x38
.uleb128 0x6
.4byte .LASF213
.byte 0xa
.byte 0xea
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x40
.uleb128 0x6
.4byte .LASF214
.byte 0xa
.byte 0xeb
.4byte 0xf75
.byte 0x2
.byte 0x23
.uleb128 0x48
.uleb128 0x6
.4byte .LASF188
.byte 0xa
.byte 0xf2
.4byte 0xbac
.byte 0x3
.byte 0x23
.uleb128 0x148
.uleb128 0x6
.4byte .LASF215
.byte 0xa
.byte 0xf5
.4byte 0xc64
.byte 0x3
.byte 0x23
.uleb128 0x160
.uleb128 0x6
.4byte .LASF193
.byte 0xa
.byte 0xf7
.4byte 0xf8b
.byte 0x3
.byte 0x23
.uleb128 0x180
.uleb128 0xf
.4byte .LASF216
.byte 0xa
.2byte 0x102
.4byte 0xcb8
.byte 0x3
.byte 0x23
.uleb128 0x500
.uleb128 0xf
.4byte .LASF217
.byte 0xa
.2byte 0x105
.4byte 0xbac
.byte 0x3
.byte 0x23
.uleb128 0x500
.uleb128 0xf
.4byte .LASF218
.byte 0xa
.2byte 0x106
.4byte 0xb10
.byte 0x3
.byte 0x23
.uleb128 0x518
.uleb128 0xf
.4byte .LASF219
.byte 0xa
.2byte 0x107
.4byte 0xb10
.byte 0x3
.byte 0x23
.uleb128 0x528
.uleb128 0xf
.4byte .LASF220
.byte 0xa
.2byte 0x108
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x538
.uleb128 0xf
.4byte .LASF221
.byte 0xa
.2byte 0x109
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x540
.uleb128 0xf
.4byte .LASF222
.byte 0xa
.2byte 0x10a
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x548
.uleb128 0xf
.4byte .LASF223
.byte 0xa
.2byte 0x10b
.4byte 0x50
.byte 0x3
.byte 0x23
.uleb128 0x550
.uleb128 0xf
.4byte .LASF224
.byte 0xa
.2byte 0x10e
.4byte 0xbce
.byte 0x3
.byte 0x23
.uleb128 0x554
.uleb128 0xf
.4byte .LASF225
.byte 0xa
.2byte 0x111
.4byte 0xf9b
.byte 0x3
.byte 0x23
.uleb128 0x558
.uleb128 0xf
.4byte .LASF226
.byte 0xa
.2byte 0x120
.4byte 0x50
.byte 0x3
.byte 0x23
.uleb128 0x5f8
.uleb128 0xf
.4byte .LASF227
.byte 0xa
.2byte 0x123
.4byte 0xcb8
.byte 0x3
.byte 0x23
.uleb128 0x600
.uleb128 0xf
.4byte .LASF228
.byte 0xa
.2byte 0x13e
.4byte 0xfab
.byte 0x3
.byte 0x23
.uleb128 0x600
.uleb128 0xf
.4byte .LASF229
.byte 0xa
.2byte 0x13f
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x608
.uleb128 0xf
.4byte .LASF230
.byte 0xa
.2byte 0x140
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x610
.uleb128 0xf
.4byte .LASF231
.byte 0xa
.2byte 0x145
.4byte 0x107e
.byte 0x3
.byte 0x23
.uleb128 0x618
.uleb128 0xf
.4byte .LASF232
.byte 0xa
.2byte 0x147
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x620
.uleb128 0xf
.4byte .LASF233
.byte 0xa
.2byte 0x153
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x628
.uleb128 0xf
.4byte .LASF234
.byte 0xa
.2byte 0x154
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x630
.uleb128 0xf
.4byte .LASF235
.byte 0xa
.2byte 0x159
.4byte 0x134
.byte 0x3
.byte 0x23
.uleb128 0x638
.byte 0x0
.uleb128 0x16
.4byte 0xf85
.4byte 0xf85
.uleb128 0x17
.4byte 0x65
.byte 0x1f
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0xd25
.uleb128 0x16
.4byte 0xf9b
.4byte 0xc7f
.uleb128 0x17
.4byte 0x65
.byte 0x8
.byte 0x0
.uleb128 0x16
.4byte 0xfab
.4byte 0xc00
.uleb128 0x17
.4byte 0x65
.byte 0x13
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0xc34
.uleb128 0x15
.4byte 0x107e
.4byte .LASF236
.2byte 0x1a00
.byte 0xa
.byte 0x40
.uleb128 0xf
.4byte .LASF237
.byte 0xa
.2byte 0x1d7
.4byte 0x1128
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0xf
.4byte .LASF238
.byte 0xa
.2byte 0x1d8
.4byte 0x1138
.byte 0x3
.byte 0x23
.uleb128 0x1380
.uleb128 0xf
.4byte .LASF239
.byte 0xa
.2byte 0x1d9
.4byte 0x50
.byte 0x3
.byte 0x23
.uleb128 0x1980
.uleb128 0xf
.4byte .LASF240
.byte 0xa
.2byte 0x1dd
.4byte 0x114e
.byte 0x3
.byte 0x23
.uleb128 0x1988
.uleb128 0xf
.4byte .LASF241
.byte 0xa
.2byte 0x1e6
.4byte 0xbac
.byte 0x3
.byte 0x23
.uleb128 0x1990
.uleb128 0xf
.4byte .LASF242
.byte 0xa
.2byte 0x1e8
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x19a8
.uleb128 0xf
.4byte .LASF243
.byte 0xa
.2byte 0x1e9
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x19b0
.uleb128 0xf
.4byte .LASF244
.byte 0xa
.2byte 0x1ea
.4byte 0x5e
.byte 0x3
.byte 0x23
.uleb128 0x19b8
.uleb128 0xf
.4byte .LASF245
.byte 0xa
.2byte 0x1ec
.4byte 0x50
.byte 0x3
.byte 0x23
.uleb128 0x19c0
.uleb128 0xf
.4byte .LASF246
.byte 0xa
.2byte 0x1ed
.4byte 0xc34
.byte 0x3
.byte 0x23
.uleb128 0x19c8
.uleb128 0xf
.4byte .LASF247
.byte 0xa
.2byte 0x1ee
.4byte 0x525
.byte 0x3
.byte 0x23
.uleb128 0x19f0
.uleb128 0xf
.4byte .LASF248
.byte 0xa
.2byte 0x1ef
.4byte 0x50
.byte 0x3
.byte 0x23
.uleb128 0x19f8
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0xfb1
.uleb128 0x1f
.4byte 0x10bf
.4byte .LASF249
.byte 0x70
.byte 0xa
.2byte 0x1a2
.uleb128 0xf
.4byte .LASF250
.byte 0xa
.2byte 0x1a3
.4byte 0x10bf
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0xf
.4byte .LASF251
.byte 0xa
.2byte 0x1a4
.4byte 0xc6f
.byte 0x2
.byte 0x23
.uleb128 0x60
.uleb128 0xf
.4byte .LASF252
.byte 0xa
.2byte 0x1a5
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x68
.byte 0x0
.uleb128 0x16
.4byte 0x10cf
.4byte 0x49
.uleb128 0x17
.4byte 0x65
.byte 0x2f
.byte 0x0
.uleb128 0x20
.4byte 0x110c
.4byte .LASF253
.2byte 0x200
.byte 0xa
.2byte 0x1b5
.uleb128 0xf
.4byte .LASF254
.byte 0xa
.2byte 0x1b6
.4byte 0x110c
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0xf
.4byte .LASF255
.byte 0xa
.2byte 0x1b7
.4byte 0x1112
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0xf
.4byte .LASF256
.byte 0xa
.2byte 0x1b9
.4byte 0x1084
.byte 0x3
.byte 0x23
.uleb128 0x190
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x1084
.uleb128 0x16
.4byte 0x1122
.4byte 0x1122
.uleb128 0x17
.4byte 0x65
.byte 0x30
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0xd8a
.uleb128 0x16
.4byte 0x1138
.4byte 0xd8a
.uleb128 0x17
.4byte 0x65
.byte 0x2
.byte 0x0
.uleb128 0x16
.4byte 0x1148
.4byte 0x10cf
.uleb128 0x17
.4byte 0x65
.byte 0x2
.byte 0x0
.uleb128 0x18
.4byte .LASF258
.byte 0x1
.uleb128 0x8
.byte 0x8
.4byte 0x1148
.uleb128 0xa
.4byte 0x116b
.byte 0x8
.byte 0x13
.byte 0x58
.uleb128 0x6
.4byte .LASF259
.byte 0x13
.byte 0x58
.4byte 0xc6f
.byte 0x2
.byte 0x23
.uleb128 0x0
.byte 0x0
.uleb128 0x7
.4byte .LASF260
.byte 0x13
.byte 0x58
.4byte 0x1154
.uleb128 0x1f
.4byte 0x11a2
.4byte .LASF261
.byte 0x10
.byte 0xa
.2byte 0x2de
.uleb128 0xf
.4byte .LASF262
.byte 0xa
.2byte 0x2eb
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0xf
.4byte .LASF263
.byte 0xa
.2byte 0x2ee
.4byte 0x11a2
.byte 0x2
.byte 0x23
.uleb128 0x8
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x5e
.uleb128 0x5
.4byte 0x11df
.4byte .LASF264
.byte 0x18
.byte 0x18
.byte 0x19
.uleb128 0x6
.4byte .LASF235
.byte 0x18
.byte 0x1a
.4byte 0x134
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF181
.byte 0x18
.byte 0x1b
.4byte 0x11e5
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF265
.byte 0x18
.byte 0x1c
.4byte 0x4e7
.byte 0x2
.byte 0x23
.uleb128 0x10
.byte 0x0
.uleb128 0x18
.4byte .LASF266
.byte 0x1
.uleb128 0x8
.byte 0x8
.4byte 0x11df
.uleb128 0x8
.byte 0x8
.4byte 0x11f1
.uleb128 0x8
.byte 0x8
.4byte 0x11a8
.uleb128 0x8
.byte 0x8
.4byte 0x11fd
.uleb128 0x5
.4byte 0x1287
.4byte .LASF267
.byte 0x78
.byte 0x18
.byte 0x12
.uleb128 0x6
.4byte .LASF268
.byte 0x19
.byte 0x3f
.4byte 0x134
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF235
.byte 0x19
.byte 0x40
.4byte 0x1310
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF269
.byte 0x19
.byte 0x41
.4byte 0x12f5
.byte 0x2
.byte 0x23
.uleb128 0x1c
.uleb128 0x6
.4byte .LASF270
.byte 0x19
.byte 0x42
.4byte 0xb10
.byte 0x2
.byte 0x23
.uleb128 0x20
.uleb128 0x6
.4byte .LASF271
.byte 0x19
.byte 0x43
.4byte 0x11f7
.byte 0x2
.byte 0x23
.uleb128 0x30
.uleb128 0x6
.4byte .LASF272
.byte 0x19
.byte 0x44
.4byte 0x1374
.byte 0x2
.byte 0x23
.uleb128 0x38
.uleb128 0x6
.4byte .LASF273
.byte 0x19
.byte 0x45
.4byte 0x13b1
.byte 0x2
.byte 0x23
.uleb128 0x40
.uleb128 0xb
.string "sd"
.byte 0x19
.byte 0x46
.4byte 0x13bd
.byte 0x2
.byte 0x23
.uleb128 0x48
.uleb128 0x6
.4byte .LASF274
.byte 0x19
.byte 0x47
.4byte 0xc34
.byte 0x2
.byte 0x23
.uleb128 0x50
.byte 0x0
.uleb128 0x5
.4byte 0x12b0
.4byte .LASF275
.byte 0x10
.byte 0x18
.byte 0x48
.uleb128 0x6
.4byte .LASF276
.byte 0x18
.byte 0x49
.4byte 0x12ca
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF277
.byte 0x18
.byte 0x4a
.4byte 0x12ef
.byte 0x2
.byte 0x23
.uleb128 0x8
.byte 0x0
.uleb128 0x21
.4byte 0x12ca
.byte 0x1
.4byte 0x504
.uleb128 0x11
.4byte 0x11f7
.uleb128 0x11
.4byte 0x11f1
.uleb128 0x11
.4byte 0x146
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x12b0
.uleb128 0x21
.4byte 0x12ef
.byte 0x1
.4byte 0x504
.uleb128 0x11
.4byte 0x11f7
.uleb128 0x11
.4byte 0x11f1
.uleb128 0x11
.4byte 0x134
.uleb128 0x11
.4byte 0x4f9
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x12d0
.uleb128 0x5
.4byte 0x1310
.4byte .LASF269
.byte 0x4
.byte 0x1a
.byte 0x17
.uleb128 0x6
.4byte .LASF278
.byte 0x1a
.byte 0x18
.4byte 0xbce
.byte 0x2
.byte 0x23
.uleb128 0x0
.byte 0x0
.uleb128 0x16
.4byte 0x1320
.4byte 0x13f
.uleb128 0x17
.4byte 0x65
.byte 0x13
.byte 0x0
.uleb128 0x5
.4byte 0x1374
.4byte .LASF272
.byte 0xb0
.byte 0x19
.byte 0x44
.uleb128 0x6
.4byte .LASF273
.byte 0x19
.byte 0x86
.4byte 0x13b1
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF201
.byte 0x19
.byte 0x87
.4byte 0xb10
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF279
.byte 0x19
.byte 0x88
.4byte 0xbac
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF280
.byte 0x19
.byte 0x89
.4byte 0x11fd
.byte 0x2
.byte 0x23
.uleb128 0x30
.uleb128 0x6
.4byte .LASF281
.byte 0x19
.byte 0x8a
.4byte 0x147d
.byte 0x3
.byte 0x23
.uleb128 0xa8
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x1320
.uleb128 0x5
.4byte 0x13b1
.4byte .LASF282
.byte 0x18
.byte 0x19
.byte 0x45
.uleb128 0x6
.4byte .LASF283
.byte 0x19
.byte 0x68
.4byte 0x13cf
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF275
.byte 0x19
.byte 0x69
.4byte 0x13d5
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF284
.byte 0x19
.byte 0x6a
.4byte 0x11eb
.byte 0x2
.byte 0x23
.uleb128 0x10
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x137a
.uleb128 0x18
.4byte .LASF285
.byte 0x1
.uleb128 0x8
.byte 0x8
.4byte 0x13b7
.uleb128 0x10
.4byte 0x13cf
.byte 0x1
.uleb128 0x11
.4byte 0x11f7
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x13c3
.uleb128 0x8
.byte 0x8
.4byte 0x1287
.uleb128 0x5
.4byte 0x1412
.4byte .LASF286
.byte 0x18
.byte 0x19
.byte 0x6d
.uleb128 0x6
.4byte .LASF287
.byte 0x19
.byte 0x6e
.4byte 0x1427
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF235
.byte 0x19
.byte 0x6f
.4byte 0x1442
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF288
.byte 0x19
.byte 0x71
.4byte 0x1477
.byte 0x2
.byte 0x23
.uleb128 0x10
.byte 0x0
.uleb128 0x21
.4byte 0x1427
.byte 0x1
.4byte 0x50
.uleb128 0x11
.4byte 0x1374
.uleb128 0x11
.4byte 0x11f7
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x1412
.uleb128 0x21
.4byte 0x1442
.byte 0x1
.4byte 0x134
.uleb128 0x11
.4byte 0x1374
.uleb128 0x11
.4byte 0x11f7
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x142d
.uleb128 0x21
.4byte 0x1471
.byte 0x1
.4byte 0x50
.uleb128 0x11
.4byte 0x1374
.uleb128 0x11
.4byte 0x11f7
.uleb128 0x11
.4byte 0x1471
.uleb128 0x11
.4byte 0x50
.uleb128 0x11
.4byte 0x146
.uleb128 0x11
.4byte 0x50
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x146
.uleb128 0x8
.byte 0x8
.4byte 0x1448
.uleb128 0x8
.byte 0x8
.4byte 0x13db
.uleb128 0x5
.4byte 0x14d6
.4byte .LASF289
.byte 0x48
.byte 0x16
.byte 0xe
.uleb128 0x6
.4byte .LASF279
.byte 0x16
.byte 0xf
.4byte 0xbac
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF290
.byte 0x16
.byte 0x10
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF291
.byte 0x16
.byte 0x11
.4byte 0xc00
.byte 0x2
.byte 0x23
.uleb128 0x20
.uleb128 0x6
.4byte .LASF292
.byte 0x16
.byte 0x12
.4byte 0xb10
.byte 0x2
.byte 0x23
.uleb128 0x28
.uleb128 0x6
.4byte .LASF293
.byte 0x16
.byte 0x14
.4byte 0xb10
.byte 0x2
.byte 0x23
.uleb128 0x38
.byte 0x0
.uleb128 0x15
.4byte 0x15d7
.4byte .LASF294
.2byte 0x290
.byte 0x17
.byte 0x36
.uleb128 0x6
.4byte .LASF295
.byte 0x16
.byte 0x1d
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF92
.byte 0x16
.byte 0x1e
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF296
.byte 0x16
.byte 0x1f
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0xc
.uleb128 0x6
.4byte .LASF297
.byte 0x16
.byte 0x20
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0x6
.4byte .LASF298
.byte 0x16
.byte 0x21
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x14
.uleb128 0x6
.4byte .LASF299
.byte 0x16
.byte 0x27
.4byte 0x1483
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF300
.byte 0x16
.byte 0x2a
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x60
.uleb128 0x6
.4byte .LASF278
.byte 0x16
.byte 0x2b
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x64
.uleb128 0x6
.4byte .LASF301
.byte 0x16
.byte 0x2c
.4byte 0x15f3
.byte 0x2
.byte 0x23
.uleb128 0x68
.uleb128 0x6
.4byte .LASF302
.byte 0x16
.byte 0x2d
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x70
.uleb128 0x6
.4byte .LASF303
.byte 0x16
.byte 0x2e
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x74
.uleb128 0x6
.4byte .LASF235
.byte 0x16
.byte 0x2f
.4byte 0x134
.byte 0x2
.byte 0x23
.uleb128 0x78
.uleb128 0x6
.4byte .LASF201
.byte 0x16
.byte 0x30
.4byte 0xb10
.byte 0x3
.byte 0x23
.uleb128 0x80
.uleb128 0x6
.4byte .LASF280
.byte 0x16
.byte 0x32
.4byte 0x11fd
.byte 0x3
.byte 0x23
.uleb128 0x90
.uleb128 0x6
.4byte .LASF304
.byte 0x16
.byte 0x36
.4byte 0x50
.byte 0x3
.byte 0x23
.uleb128 0x108
.uleb128 0x6
.4byte .LASF211
.byte 0x16
.byte 0x37
.4byte 0x15f9
.byte 0x3
.byte 0x23
.uleb128 0x110
.uleb128 0x6
.4byte .LASF305
.byte 0x16
.byte 0x39
.4byte 0x160f
.byte 0x3
.byte 0x23
.uleb128 0x190
.byte 0x0
.uleb128 0x10
.4byte 0x15ed
.byte 0x1
.uleb128 0x11
.4byte 0xae8
.uleb128 0x11
.4byte 0x15ed
.uleb128 0x11
.4byte 0x5e
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x14d6
.uleb128 0x8
.byte 0x8
.4byte 0x15d7
.uleb128 0x16
.4byte 0x1609
.4byte 0x1609
.uleb128 0x17
.4byte 0x65
.byte 0xf
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x1483
.uleb128 0x16
.4byte 0x161f
.4byte 0x1625
.uleb128 0x17
.4byte 0x65
.byte 0x1f
.byte 0x0
.uleb128 0x18
.4byte .LASF306
.byte 0x1
.uleb128 0x8
.byte 0x8
.4byte 0x161f
.uleb128 0x15
.4byte 0x168e
.4byte .LASF307
.2byte 0x1220
.byte 0x1d
.byte 0x5d
.uleb128 0x6
.4byte .LASF308
.byte 0x1d
.byte 0x5e
.4byte 0x50
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF309
.byte 0x1d
.byte 0x5f
.4byte 0x5e
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0xb
.string "mm"
.byte 0x1d
.byte 0x60
.4byte 0x1694
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0xb
.string "pte"
.byte 0x1d
.byte 0x61
.4byte 0x169a
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF310
.byte 0x1d
.byte 0x62
.4byte 0x16aa
.byte 0x3
.byte 0x23
.uleb128 0xc18
.uleb128 0x6
.4byte .LASF311
.byte 0x1d
.byte 0x63
.4byte 0x2d
.byte 0x3
.byte 0x23
.uleb128 0x1218
.byte 0x0
.uleb128 0x18
.4byte .LASF312
.byte 0x1
.uleb128 0x8
.byte 0x8
.4byte 0x168e
.uleb128 0x16
.4byte 0x16aa
.4byte 0x17c
.uleb128 0x17
.4byte 0x65
.byte 0xbf
.byte 0x0
.uleb128 0x16
.4byte 0x16ba
.4byte 0x5e
.uleb128 0x17
.4byte 0x65
.byte 0xbf
.byte 0x0
.uleb128 0xa
.4byte 0x16df
.byte 0x10
.byte 0x21
.byte 0x40
.uleb128 0x6
.4byte .LASF313
.byte 0x21
.byte 0x41
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF314
.byte 0x21
.byte 0x42
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x8
.byte 0x0
.uleb128 0xa
.4byte 0x1712
.byte 0x18
.byte 0x21
.byte 0x44
.uleb128 0x6
.4byte .LASF315
.byte 0x21
.byte 0x45
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF316
.byte 0x21
.byte 0x46
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF317
.byte 0x21
.byte 0x47
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x10
.byte 0x0
.uleb128 0x5
.4byte 0x1773
.4byte .LASF318
.byte 0x78
.byte 0x21
.byte 0x3b
.uleb128 0x6
.4byte .LASF319
.byte 0x21
.byte 0x3c
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x6
.4byte .LASF320
.byte 0x21
.byte 0x3d
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x8
.uleb128 0x6
.4byte .LASF321
.byte 0x21
.byte 0x3e
.4byte 0xa1
.byte 0x2
.byte 0x23
.uleb128 0x10
.uleb128 0x6
.4byte .LASF322
.byte 0x21
.byte 0x3f
.4byte 0x1773
.byte 0x2
.byte 0x23
.uleb128 0x18
.uleb128 0x6
.4byte .LASF323
.byte 0x21
.byte 0x43
.4byte 0x1783
.byte 0x2
.byte 0x23
.uleb128 0x40
.uleb128 0x6
.4byte .LASF324
.byte 0x21
.byte 0x48
.4byte 0x1793
.byte 0x2
.byte 0x23
.uleb128 0x60
.byte 0x0
.uleb128 0x16
.4byte 0x1783
.4byte 0xa1
.uleb128 0x17
.4byte 0x65
.byte 0x4
.byte 0x0
.uleb128 0x16
.4byte 0x1793
.4byte 0x16ba
.uleb128 0x17
.4byte 0x65
.byte 0x1
.byte 0x0
.uleb128 0x16
.4byte 0x17a3
.4byte 0x16df
.uleb128 0x17
.4byte 0x65
.byte 0x0
.byte 0x0
.uleb128 0x22
.4byte .LASF20
.byte 0x1
.byte 0x22
.4byte 0xac
.byte 0x1
.byte 0x1
.uleb128 0x16
.4byte 0x17c0
.4byte 0x187
.uleb128 0x17
.4byte 0x65
.byte 0x5
.byte 0x0
.uleb128 0x22
.4byte .LASF325
.byte 0x3
.byte 0xac
.4byte 0x17b0
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF326
.byte 0x4
.byte 0x65
.4byte 0x268
.byte 0x1
.byte 0x1
.uleb128 0x16
.4byte 0x17e5
.4byte 0x50
.uleb128 0x23
.byte 0x0
.uleb128 0x22
.4byte .LASF327
.byte 0x5
.byte 0x43
.4byte 0x17da
.byte 0x1
.byte 0x1
.uleb128 0x24
.4byte .LASF328
.byte 0x6
.byte 0x17
.4byte 0x1800
.byte 0x1
.byte 0x1
.byte 0x5d
.uleb128 0x8
.byte 0x8
.4byte 0x90f
.uleb128 0x21
.4byte 0x1816
.byte 0x1
.4byte 0x50
.uleb128 0x11
.4byte 0x4b2
.byte 0x0
.uleb128 0x22
.4byte .LASF329
.byte 0x8
.byte 0x45
.4byte 0x1823
.byte 0x1
.byte 0x1
.uleb128 0x8
.byte 0x8
.4byte 0x1806
.uleb128 0x22
.4byte .LASF330
.byte 0x8
.byte 0x46
.4byte 0x1823
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF331
.byte 0x8
.byte 0x47
.4byte 0x1823
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF332
.byte 0x8
.byte 0x48
.4byte 0x1823
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF333
.byte 0x8
.byte 0x49
.4byte 0x1823
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF334
.byte 0x8
.byte 0x4a
.4byte 0x1823
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF335
.byte 0x8
.byte 0x4b
.4byte 0x1823
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF336
.byte 0xa
.byte 0x31
.4byte 0x50
.byte 0x1
.byte 0x1
.uleb128 0x16
.4byte 0x188f
.4byte 0x107e
.uleb128 0x23
.byte 0x0
.uleb128 0x22
.4byte .LASF337
.byte 0xb
.byte 0x15
.4byte 0x1884
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF338
.byte 0xb
.byte 0x1f
.4byte 0x17da
.byte 0x1
.byte 0x1
.uleb128 0x16
.4byte 0x18b4
.4byte 0x116b
.uleb128 0x23
.byte 0x0
.uleb128 0x22
.4byte .LASF339
.byte 0xb
.byte 0x20
.4byte 0x18a9
.byte 0x1
.byte 0x1
.uleb128 0x16
.4byte 0x18d2
.4byte 0x18d2
.uleb128 0x25
.4byte 0x65
.2byte 0x7ff
.byte 0x0
.uleb128 0x8
.byte 0x8
.4byte 0x1176
.uleb128 0x26
.4byte .LASF261
.byte 0xa
.2byte 0x2fc
.4byte 0x18c1
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF340
.byte 0x14
.byte 0xc9
.4byte 0x50
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF341
.byte 0x15
.byte 0x52
.4byte 0x1900
.byte 0x1
.byte 0x1
.uleb128 0x1c
.4byte 0x5e
.uleb128 0x16
.4byte 0x1915
.4byte 0x14d6
.uleb128 0x17
.4byte 0x65
.byte 0x18
.byte 0x0
.uleb128 0x22
.4byte .LASF342
.byte 0x16
.byte 0x4b
.4byte 0x1905
.byte 0x1
.byte 0x1
.uleb128 0x22
.4byte .LASF343
.byte 0x1d
.byte 0x65
.4byte 0x162b
.byte 0x1
.byte 0x1
.uleb128 0x24
.4byte .LASF344
.byte 0x20
.byte 0xe
.4byte 0x1945
.byte 0x1
.byte 0x9
.byte 0x3
.8byte xLparMap
.uleb128 0x9
.4byte 0x1712
.byte 0x0
.section .debug_abbrev
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x10
.uleb128 0x6
.uleb128 0x12
.uleb128 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x25
.uleb128 0xe
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1b
.uleb128 0xe
.byte 0x0
.byte 0x0
.uleb128 0x2
.uleb128 0x24
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0x3
.uleb128 0x24
.byte 0x0
.uleb128 0x3
.uleb128 0x8
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0x4
.uleb128 0x16
.byte 0x0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x5
.uleb128 0x13
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0x6
.uleb128 0xd
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xa
.byte 0x0
.byte 0x0
.uleb128 0x7
.uleb128 0x16
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x8
.uleb128 0xf
.byte 0x0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x9
.uleb128 0x26
.byte 0x0
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0xa
.uleb128 0x13
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0xb
.uleb128 0xd
.byte 0x0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xa
.byte 0x0
.byte 0x0
.uleb128 0xc
.uleb128 0x16
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0xd
.uleb128 0x13
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0x0
.byte 0x0
.uleb128 0xe
.uleb128 0xd
.byte 0x0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xa
.byte 0x0
.byte 0x0
.uleb128 0xf
.uleb128 0xd
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xa
.byte 0x0
.byte 0x0
.uleb128 0x10
.uleb128 0x15
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0x27
.uleb128 0xc
.byte 0x0
.byte 0x0
.uleb128 0x11
.uleb128 0x5
.byte 0x0
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x12
.uleb128 0x15
.byte 0x0
.uleb128 0x27
.uleb128 0xc
.byte 0x0
.byte 0x0
.uleb128 0x13
.uleb128 0x4
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0x14
.uleb128 0x28
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1c
.uleb128 0xd
.byte 0x0
.byte 0x0
.uleb128 0x15
.uleb128 0x13
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0x5
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0x16
.uleb128 0x1
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x17
.uleb128 0x21
.byte 0x0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0x18
.uleb128 0x13
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3c
.uleb128 0xc
.byte 0x0
.byte 0x0
.uleb128 0x19
.uleb128 0x17
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0x1a
.uleb128 0xd
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x1b
.uleb128 0xd
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0xb
.uleb128 0xb
.uleb128 0xd
.uleb128 0xb
.uleb128 0xc
.uleb128 0xb
.uleb128 0x38
.uleb128 0xa
.byte 0x0
.byte 0x0
.uleb128 0x1c
.uleb128 0x35
.byte 0x0
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x1d
.uleb128 0xf
.byte 0x0
.uleb128 0xb
.uleb128 0xb
.byte 0x0
.byte 0x0
.uleb128 0x1e
.uleb128 0x21
.byte 0x0
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x1f
.uleb128 0x13
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0x0
.byte 0x0
.uleb128 0x20
.uleb128 0x13
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0x5
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0x0
.byte 0x0
.uleb128 0x21
.uleb128 0x15
.byte 0x1
.uleb128 0x1
.uleb128 0x13
.uleb128 0x27
.uleb128 0xc
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x22
.uleb128 0x34
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0xc
.uleb128 0x3c
.uleb128 0xc
.byte 0x0
.byte 0x0
.uleb128 0x23
.uleb128 0x21
.byte 0x0
.byte 0x0
.byte 0x0
.uleb128 0x24
.uleb128 0x34
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0xc
.uleb128 0x2
.uleb128 0xa
.byte 0x0
.byte 0x0
.uleb128 0x25
.uleb128 0x21
.byte 0x0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x5
.byte 0x0
.byte 0x0
.uleb128 0x26
.uleb128 0x34
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0xc
.uleb128 0x3c
.uleb128 0xc
.byte 0x0
.byte 0x0
.byte 0x0
.section .debug_pubnames,"",@progbits
.4byte 0x2a
.2byte 0x2
.4byte .Ldebug_info0
.4byte 0x194b
.4byte 0x17f2
.string "local_paca"
.4byte 0x192f
.string "xLparMap"
.4byte 0x0
.section .debug_str,"MS",@progbits,1
.LASF39:
.string "cpu_user_features"
.LASF50:
.string "oprofile_mmcra_clear"
.LASF29:
.string "low_slices_psize"
.LASF264:
.string "attribute"
.LASF79:
.string "size_t"
.LASF346:
.string "arch/powerpc/kernel/lparmap.c"
.LASF262:
.string "section_mem_map"
.LASF316:
.string "xOffset"
.LASF129:
.string "slb_count"
.LASF233:
.string "spanned_pages"
.LASF181:
.string "owner"
.LASF225:
.string "vm_stat"
.LASF197:
.string "per_cpu_pages"
.LASF107:
.string "sprg3"
.LASF215:
.string "span_seqlock"
.LASF148:
.string "stab_addr"
.LASF206:
.string "zone"
.LASF173:
.string "list_head"
.LASF20:
.string "ppc64_caches"
.LASF238:
.string "node_zonelists"
.LASF275:
.string "sysfs_ops"
.LASF138:
.string "persistent"
.LASF200:
.string "batch"
.LASF340:
.string "time_status"
.LASF111:
.string "saved_srr0"
.LASF112:
.string "saved_srr1"
.LASF258:
.string "bootmem_data"
.LASF338:
.string "numa_cpu_lookup_table"
.LASF14:
.string "ilines_per_page"
.LASF293:
.string "full"
.LASF190:
.string "wait_queue_head_t"
.LASF218:
.string "active_list"
.LASF37:
.string "cpu_name"
.LASF310:
.string "vaddr"
.LASF18:
.string "hidx"
.LASF60:
.string "powerpc_oprofile_type"
.LASF193:
.string "free_area"
.LASF80:
.string "ssize_t"
.LASF247:
.string "kswapd"
.LASF109:
.string "int_dword"
.LASF21:
.string "mmu_psize_def"
.LASF73:
.string "__kernel_mode_t"
.LASF62:
.string "PPC_PMC_DEFAULT"
.LASF187:
.string "__wait_queue_head"
.LASF71:
.string "result"
.LASF276:
.string "show"
.LASF126:
.string "pdc_saved_sprg1"
.LASF203:
.string "expire"
.LASF36:
.string "pvr_value"
.LASF301:
.string "ctor"
.LASF5:
.string "long int"
.LASF279:
.string "list_lock"
.LASF237:
.string "node_zones"
.LASF70:
.string "dsisr"
.LASF313:
.string "xKernelEsid"
.LASF10:
.string "dlines_per_page"
.LASF22:
.string "shift"
.LASF162:
.string "kstack"
.LASF342:
.string "kmalloc_caches"
.LASF64:
.string "PPC_PMC_PA6T"
.LASF199:
.string "high"
.LASF210:
.string "lowmem_reserve"
.LASF69:
.string "trap"
.LASF95:
.string "shared_proc"
.LASF212:
.string "min_unmapped_pages"
.LASF42:
.string "num_pmcs"
.LASF252:
.string "last_full_zap"
.LASF1:
.string "signed char"
.LASF139:
.string "buffer_length"
.LASF285:
.string "sysfs_dirent"
.LASF157:
.string "context"
.LASF319:
.string "xNumberEsids"
.LASF164:
.string "saved_r1"
.LASF246:
.string "kswapd_wait"
.LASF221:
.string "nr_scan_inactive"
.LASF2:
.string "unsigned char"
.LASF231:
.string "zone_pgdat"
.LASF90:
.string "lppaca"
.LASF241:
.string "node_size_lock"
.LASF253:
.string "zonelist"
.LASF52:
.string "cpu_restore_t"
.LASF78:
.string "_Bool"
.LASF163:
.string "stab_rr"
.LASF304:
.string "defrag_ratio"
.LASF86:
.string "quantum_int"
.LASF54:
.string "PPC_OPROFILE_RS64"
.LASF16:
.string "char"
.LASF302:
.string "inuse"
.LASF266:
.string "module"
.LASF332:
.string "__debugger_sstep"
.LASF235:
.string "name"
.LASF67:
.string "link"
.LASF132:
.string "yield_count"
.LASF188:
.string "lock"
.LASF84:
.string "decr_int"
.LASF83:
.string "ipi_cnt"
.LASF176:
.string "slock"
.LASF321:
.string "xSegmentTableOffs"
.LASF46:
.string "oprofile_cpu_type"
.LASF240:
.string "bdata"
.LASF295:
.string "flags"
.LASF230:
.string "wait_table_bits"
.LASF156:
.string "exslb"
.LASF40:
.string "icache_bsize"
.LASF27:
.string "mm_context_id_t"
.LASF87:
.string "old_plic_deferred_ext_int"
.LASF189:
.string "task_list"
.LASF278:
.string "refcount"
.LASF227:
.string "_pad2_"
.LASF216:
.string "_pad1_"
.LASF57:
.string "PPC_OPROFILE_BOOKE"
.LASF194:
.string "free_list"
.LASF211:
.string "node"
.LASF334:
.string "__debugger_dabr_match"
.LASF331:
.string "__debugger_bpt"
.LASF284:
.string "default_attrs"
.LASF17:
.string "pte_t"
.LASF260:
.string "cpumask_t"
.LASF186:
.string "atomic_long_t"
.LASF300:
.string "objects"
.LASF228:
.string "wait_table"
.LASF245:
.string "node_id"
.LASF287:
.string "filter"
.LASF98:
.string "secondary_thread_count"
.LASF261:
.string "mem_section"
.LASF290:
.string "nr_partial"
.LASF165:
.string "saved_msr"
.LASF308:
.string "active"
.LASF292:
.string "partial"
.LASF34:
.string "cpu_spec"
.LASF7:
.string "dsize"
.LASF25:
.string "avpnm"
.LASF110:
.string "plic_defer_ints_area"
.LASF347:
.string "/home/sp3fxc/linux/linux-2.6.23-rc1-mm2"
.LASF224:
.string "reclaim_in_progress"
.LASF65:
.string "pt_regs"
.LASF168:
.string "hard_enabled"
.LASF307:
.string "ppc64_tlb_batch"
.LASF309:
.string "index"
.LASF244:
.string "node_spanned_pages"
.LASF102:
.string "pmc_val"
.LASF100:
.string "dyn_hv_log_proc_index"
.LASF195:
.string "nr_free"
.LASF177:
.string "raw_spinlock_t"
.LASF120:
.string "saved_decr"
.LASF170:
.string "user_time"
.LASF6:
.string "long unsigned int"
.LASF30:
.string "high_slices_psize"
.LASF327:
.string "console_printk"
.LASF134:
.string "pmc_save_area"
.LASF323:
.string "xEsids"
.LASF97:
.string "dyn_proc_status"
.LASF24:
.string "tlbiel"
.LASF305:
.string "cpu_slab"
.LASF180:
.string "owner_cpu"
.LASF146:
.string "kernel_toc"
.LASF58:
.string "PPC_OPROFILE_CELL"
.LASF269:
.string "kref"
.LASF343:
.string "per_cpu__ppc64_tlb_batch"
.LASF152:
.string "cpu_start"
.LASF104:
.string "dyn_hw_proc_id"
.LASF41:
.string "dcache_bsize"
.LASF185:
.string "atomic64_t"
.LASF329:
.string "__debugger"
.LASF298:
.string "order"
.LASF158:
.string "vmalloc_sllp"
.LASF325:
.string "mmu_psize_defs"
.LASF59:
.string "PPC_OPROFILE_PA6T"
.LASF257:
.string "task_struct"
.LASF277:
.string "store"
.LASF76:
.string "long long int"
.LASF183:
.string "counter"
.LASF144:
.string "lock_token"
.LASF122:
.string "cur_plic_latency"
.LASF169:
.string "io_sync"
.LASF74:
.string "__kernel_size_t"
.LASF234:
.string "present_pages"
.LASF105:
.string "dyn_pir"
.LASF72:
.string "double"
.LASF28:
.string "user_psize"
.LASF161:
.string "__current"
.LASF220:
.string "nr_scan_active"
.LASF311:
.string "psize"
.LASF222:
.string "pages_scanned"
.LASF117:
.string "donate_dedicated_cpu"
.LASF167:
.string "soft_enabled"
.LASF271:
.string "parent"
.LASF303:
.string "align"
.LASF198:
.string "count"
.LASF119:
.string "pmcregs_in_use"
.LASF68:
.string "softe"
.LASF0:
.string "unsigned int"
.LASF204:
.string "stat_threshold"
.LASF209:
.string "pages_high"
.LASF38:
.string "cpu_features"
.LASF182:
.string "spinlock_t"
.LASF12:
.string "iline_size"
.LASF286:
.string "kset_uevent_ops"
.LASF268:
.string "k_name"
.LASF3:
.string "short int"
.LASF315:
.string "xPages"
.LASF226:
.string "prev_priority"
.LASF324:
.string "xRanges"
.LASF250:
.string "z_to_n"
.LASF259:
.string "bits"
.LASF265:
.string "mode"
.LASF255:
.string "zones"
.LASF48:
.string "oprofile_mmcra_sihv"
.LASF191:
.string "sequence"
.LASF113:
.string "saved_gpr3"
.LASF114:
.string "saved_gpr4"
.LASF115:
.string "saved_gpr5"
.LASF274:
.string "poll"
.LASF297:
.string "offset"
.LASF11:
.string "isize"
.LASF201:
.string "list"
.LASF270:
.string "entry"
.LASF306:
.string "page"
.LASF77:
.string "mode_t"
.LASF124:
.string "wait_state_cycles"
.LASF229:
.string "wait_table_hash_nr_entries"
.LASF53:
.string "PPC_OPROFILE_INVALID"
.LASF172:
.string "startpurr"
.LASF345:
.string "GNU C 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)"
.LASF213:
.string "min_slab_pages"
.LASF118:
.string "fpregs_in_use"
.LASF23:
.string "penc"
.LASF288:
.string "uevent"
.LASF214:
.string "pageset"
.LASF272:
.string "kset"
.LASF136:
.string "vsid"
.LASF32:
.string "mm_context_t"
.LASF154:
.string "exgen"
.LASF236:
.string "pglist_data"
.LASF223:
.string "all_unreclaimable"
.LASF88:
.string "any_int"
.LASF106:
.string "dsei_data"
.LASF61:
.string "powerpc_pmc_type"
.LASF89:
.string "fields"
.LASF344:
.string "xLparMap"
.LASF333:
.string "__debugger_iabr_match"
.LASF92:
.string "size"
.LASF140:
.string "save_area"
.LASF256:
.string "zlcache"
.LASF314:
.string "xKernelVsid"
.LASF85:
.string "pdc_int"
.LASF273:
.string "ktype"
.LASF96:
.string "secondary_thread"
.LASF141:
.string "paca_struct"
.LASF294:
.string "kmem_cache"
.LASF239:
.string "nr_zones"
.LASF82:
.string "xirr_int"
.LASF171:
.string "system_time"
.LASF281:
.string "uevent_ops"
.LASF299:
.string "local_node"
.LASF248:
.string "kswapd_max_order"
.LASF19:
.string "real_pte_t"
.LASF326:
.string "cur_cpu_spec"
.LASF217:
.string "lru_lock"
.LASF232:
.string "zone_start_pfn"
.LASF251:
.string "fullzones"
.LASF267:
.string "kobject"
.LASF101:
.string "decr_val"
.LASF330:
.string "__debugger_ipi"
.LASF202:
.string "per_cpu_pageset"
.LASF143:
.string "reg_save_ptr"
.LASF280:
.string "kobj"
.LASF135:
.string "esid"
.LASF91:
.string "desc"
.LASF75:
.string "__kernel_ssize_t"
.LASF242:
.string "node_start_pfn"
.LASF318:
.string "LparMap"
.LASF31:
.string "vdso_base"
.LASF159:
.string "slb_cache_ptr"
.LASF15:
.string "pte_basic_t"
.LASF208:
.string "pages_low"
.LASF149:
.string "emergency_sp"
.LASF219:
.string "inactive_list"
.LASF43:
.string "pmc_type"
.LASF341:
.string "jiffies"
.LASF160:
.string "slb_cache"
.LASF44:
.string "cpu_setup"
.LASF205:
.string "vm_stat_diff"
.LASF33:
.string "cpu_setup_t"
.LASF322:
.string "xRsvd"
.LASF145:
.string "paca_index"
.LASF296:
.string "objsize"
.LASF63:
.string "PPC_PMC_IBM"
.LASF45:
.string "cpu_restore"
.LASF35:
.string "pvr_mask"
.LASF339:
.string "numa_cpumask_lookup_table"
.LASF123:
.string "tot_plic_latency"
.LASF130:
.string "idle"
.LASF9:
.string "log_dline_size"
.LASF47:
.string "oprofile_type"
.LASF93:
.string "reserved1"
.LASF94:
.string "reserved2"
.LASF108:
.string "reserved3"
.LASF116:
.string "reserved4"
.LASF133:
.string "reserved6"
.LASF49:
.string "oprofile_mmcra_sipr"
.LASF56:
.string "PPC_OPROFILE_G4"
.LASF192:
.string "seqlock_t"
.LASF320:
.string "xNumberRanges"
.LASF128:
.string "virtual_decr"
.LASF121:
.string "emulated_time_base"
.LASF243:
.string "node_present_pages"
.LASF66:
.string "orig_gpr3"
.LASF291:
.string "nr_slabs"
.LASF131:
.string "vmxregs_in_use"
.LASF155:
.string "exmc"
.LASF153:
.string "slb_shadow_ptr"
.LASF254:
.string "zlcache_ptr"
.LASF337:
.string "node_data"
.LASF125:
.string "end_of_quantum"
.LASF289:
.string "kmem_cache_node"
.LASF55:
.string "PPC_OPROFILE_POWER4"
.LASF103:
.string "dyn_hw_node_id"
.LASF263:
.string "pageblock_flags"
.LASF336:
.string "page_group_by_mobility_disabled"
.LASF147:
.string "stab_real"
.LASF127:
.string "pdc_saved_srr0"
.LASF8:
.string "dline_size"
.LASF283:
.string "release"
.LASF81:
.string "reserved"
.LASF150:
.string "data_offset"
.LASF282:
.string "kobj_type"
.LASF51:
.string "platform"
.LASF4:
.string "short unsigned int"
.LASF179:
.string "magic"
.LASF178:
.string "raw_lock"
.LASF184:
.string "atomic_t"
.LASF249:
.string "zonelist_cache"
.LASF99:
.string "dyn_hv_phys_proc_index"
.LASF335:
.string "__debugger_fault_handler"
.LASF13:
.string "log_iline_size"
.LASF26:
.string "sllp"
.LASF196:
.string "zone_padding"
.LASF312:
.string "mm_struct"
.LASF151:
.string "hw_cpu_id"
.LASF142:
.string "lppaca_ptr"
.LASF328:
.string "local_paca"
.LASF207:
.string "pages_min"
.LASF166:
.string "trap_save"
.LASF174:
.string "next"
.LASF137:
.string "slb_shadow"
.LASF175:
.string "prev"
.LASF317:
.string "xVPN"
.ident "GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)"
^ permalink raw reply
* Re: DTC 1.0.0 Release Coming?
From: Segher Boessenkool @ 2007-08-06 19:33 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev, Jon Loeliger
In-Reply-To: <20070801011900.GA31391@localhost.localdomain>
>>> Ok, figured out why. When I push, then pop a quilt patch some of the
>>> files end up with their original contents, but changed timestamps.
>>> That altered stat information causes git-diff-index to give false
>>> indications of changed files, so setlocalversion adds the -dirty.
>>> Running git status, or gitool or various other things causes git to
>>> notice that the files aren't really changed, updates the index and
>>> then the version is generated correctly again.
>>>
>>> Not very robust though.
>>
>> Well you can't blame that on DTC's build system, nor on the
>> setlocalversion script, and not on Git either; it's a Quilt
>> problem...
>
> No, it's really not - touching the files on a pop is correct behaviour
> for quilt (that way it will correctly trigger a rebuild on make
> systems that aren't as flashy as Kbuild).
Yeah okay -- "it's a problem with how all these tools are used
together" :-)
> setlocalversion should be ensuring that the verison information is
> based on content, not stat info, which means it needs to do a git
> status or something that will remove the false positives before using
> git-diff-index to determine whether the tree is clean or not.
Yeah, that seems best. Please fix this for the kernel version of
setlocalversion as well :-)
Segher
^ permalink raw reply
* Re: 8250.c::autoconfig() fails loopback test on MPC824[15]
From: Segher Boessenkool @ 2007-08-06 19:29 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linuxppc-dev, Jon Loeliger, Guennadi Liakhovetski, linux-serial
In-Reply-To: <200708052357.32650.arnd@arndb.de>
> Maybe the best solution would be for 824[15] to not claim compatibility
> with 8250 at all then.
Or at least it should have a more specific entry for this
"special" 16x50 UART, and that one should be probed first.
> If the device tree contains an entry that matches
> what the generic driver looks for, it better be something that can
> be handled by that driver.
Pretty much; you can't make this rule too strict though,
if a device mostly works with the generic driver, you can
claim compatibility with it -- keep in mind that that can
come back to bite you though, like in this case. The
advantages do outweigh the disadvantages sometimes, it's
all a tradeoff; avoid it if possible.
Segher
^ permalink raw reply
* Re: Page faults blowing up ... [was Re: [PATCH] Fix special PTE code for secondary hash bucket
From: Linas Vepstas @ 2007-08-06 19:19 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, Paul Mackerras, benh
In-Reply-To: <1186194688.5733.6.camel@gruick>
On Sat, Aug 04, 2007 at 12:31:28PM +1000, Benjamin Herrenschmidt wrote:
>
> Paulus stuff is likely to be unrelated to your bug. Also, whatever blurb
> you pasted in this email is totally incomprehensible due to total lack
> of context.
Sorry. Mike Strosaker nailed it; its a nutty hypervisor bug.
--linas
^ permalink raw reply
* Re: 8250.c::autoconfig() fails loopback test on MPC824[15]
From: Segher Boessenkool @ 2007-08-06 19:15 UTC (permalink / raw)
To: Arnd Bergmann; +Cc: linuxppc-dev, Guennadi Liakhovetski, linux-serial
In-Reply-To: <200708051841.17471.arnd@arndb.de>
> Another option altogether would be to allow the device node to
> specify the linux specific serial port flags in a separate property,
> like "linux,uart-port-flags" that contains the same flags that
> setserial can set from user space. That would also be useful
> if you want to specify UPF_MAGIC_MULTIPLIER on certain high-speed
> ports, because it cannot be autoprobed.
Such high-speed ports should simply use a proper "compatible"
entry. Similarly with the problem at hand.
Segher
^ permalink raw reply
* Re: 2.6.23-rc1-mm2
From: Segher Boessenkool @ 2007-08-06 19:12 UTC (permalink / raw)
To: Kumar Gala
Cc: linux-usb-devel, gregkh, linux-kernel, linuxppc-dev,
Mariusz Kozlowski, Paul Mackerras, Andrew Morton
In-Reply-To: <1C929A99-BA1D-452C-AD54-66D42DBC8D23@kernel.crashing.org>
> Some how your defconfig is targeting a PPC64 box:
>
> CONFIG_PPC64=y
>
> shouldn't be set if you want to build a kernel for a G3 imac.
allyesconfig/allmodconfig select a 64-bit build always. Maybe
it shouldn't.
Segher
^ permalink raw reply
* Re: 2.6.23-rc1-mm2
From: Segher Boessenkool @ 2007-08-06 19:10 UTC (permalink / raw)
To: Mariusz Kozlowski
Cc: linux-usb-devel, gregkh, linux-kernel, linuxppc-dev,
Paul Mackerras, Andrew Morton
In-Reply-To: <200708021214.51705.m.kozlowski@tuxland.pl>
On 2 aug 2007, at 12:14, Mariusz Kozlowski wrote:
>>> Second issue as reported earilier allmodconfig fails to build on
>>> imac g3.
>>
>> Do you really mean g3? If so it's a 32-bit kernel and it shouldn't be
>> building lparmap.s.
It might be a bug nevertheless, there are more "issues" with
the interesting way lparmap.s is built and used.
Segher
^ permalink raw reply
* Re: 2.6.23-rc1-mm2
From: Segher Boessenkool @ 2007-08-06 19:08 UTC (permalink / raw)
To: Mariusz Kozlowski
Cc: linux-usb-devel, gregkh, linux-kernel, linuxppc-dev, paulus,
Andrew Morton
In-Reply-To: <200708011002.30962.m.kozlowski@tuxland.pl>
> Second issue as reported earilier allmodconfig fails to build on imac
> g3.
>
> CC arch/powerpc/kernel/lparmap.s
> AS arch/powerpc/kernel/head_64.o
> lparmap.c: Assembler messages:
> lparmap.c:84: Error: file number 1 already allocated
> make[1]: *** [arch/powerpc/kernel/head_64.o] Blad 1
> make: *** [arch/powerpc/kernel] Blad 2
Please send me the full output of:
gcc --version (or whatever your gcc is called)
ld --version
ld --help (I know no better way to get the supported binutils
targets, and the default target)
and the lparmap.s file. You might want to skip sending it
to the lists, it will be a bit big (and off-topic on most
of those lists, anyway).
Segher
^ permalink raw reply
* Re: [PATCH v2 1/2] [RFC][POWERPC] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Segher Boessenkool @ 2007-08-06 19:01 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev
In-Reply-To: <5C596943-5C01-4097-940C-29FF46E49BA7@kernel.crashing.org>
>> + mmc@0 {
>> + reg = <0>;
>> + pio-handle = <&mmc0pio>;
>> + };
>> };
>
> I'm still against this. Why don't we just do this in
> 83xx/mpc832x_rdb.c
Seconded.
Segher
^ permalink raw reply
* Re: [RFC][PATCH] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Scott Wood @ 2007-08-06 18:50 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linuxppc-dev
In-Reply-To: <44eb4173dacc69037ea9acfb7880818f@kernel.crashing.org>
Segher Boessenkool wrote:
>>p.s. mpc8272ads.dts is broken wrt spaces/tabs, very.
>
>
> Care to do a cleanup patch? Good for your karma ;-)
I've got one in my 82xx patchset (a respin of which should be coming soon).
There's a lot more broken in there than just spaces/tabs, BTW. :-)
-Scott
^ permalink raw reply
* Re: [PATCH] powerpc: Pegasos keyboard detection
From: Segher Boessenkool @ 2007-08-06 18:45 UTC (permalink / raw)
To: Alan Curry; +Cc: linux-kernel, linuxppc-dev
In-Reply-To: <200708020440.l724edCT290676@shell01.TheWorld.com>
>> You don't need to patch Linux at all. In fact for silly things like
>> this
>> I would recommend against it :)
>
> If the workaround doesn't go into the kernel, everybody with affected
> hardware has to individually find out about the bug (probably by
> experiencing
> an annoying keyboardless boot) and fix it himself.
That's one of the reasons why this should go into a bootwrapper.
Segher
^ permalink raw reply
* Re: ipv6 in yaboot
From: Segher Boessenkool @ 2007-08-06 18:42 UTC (permalink / raw)
To: Doug Maxey; +Cc: Linux PowerPC List, Paul Mackerras, Paul Nasrat, yaboot-devel
In-Reply-To: <14772.1186002066@falcon10.austin.ibm.com>
>> The network address is passed to OF as (part of) the device
>> argument for the network device; and colons aren't legal
>> characters in a device argument,
>
> yeah, pretty thoughtless of the IETF for not consulting the 1275WG. :)
Heh. That's not an issue; it just means that OF implementations
need to use a (slightly) different spelling for IPV6 addresses.
However, see below.
>> so any OF implementation that
>> would use colons in IPv6 addresses is terminally broken.
>
> Ok. What is your proposed resolution that does not violate the rfcs?
> Namely RFCs 3986, 4038, and especially 4291.
Quotes from those RFCs would have been helpful.
>> This
>> is completely analogous to the fact that filesystem paths cannot
>> use forward slashes. (The third disallowed character is the
>> at-sign, for completeness).
>
> Not really. I don't expect to the the "device path" contain any ipv6
> info. Just the parameters that follow on the end,
There can be parameters at *any* path component though, not just
the final component. It isn't too farfetched to imagine devices as
child devices under a network device IMHO. Not the common case, sure.
> There is no ppc64 OFW that supports this yet, but a version is
> expected soon.
There is an x86 OFW that supports it now. Some good news, too:
The requirement for device arguments to not contain colons or
at-signs has been deemed overly strict, since any defined use
for those arguments should follow the path resolution algorithm
that is spelled out in the specification itself; and that algorithm
can deal with it just fine. Therefore, it now is an (unpublished :-) )
recommended practice for OF implementations to allow it.
Forward slashes are right out, though :-)
> BTW, I don't really have any real input into how the OFW is designed,
> just try to adapt to what is implemented.
Yeah I understand :-)
Segher
^ permalink raw reply
* Re: [PATCH 2/6] PowerPC 440EPx: Sequoia DTS
From: Sergei Shtylyov @ 2007-08-06 18:37 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev
In-Reply-To: <20070806042109.GB6103@localhost.localdomain>
Hello.
David Gibson wrote:
>>>>>Index: working-2.6/Documentation/powerpc/booting-without-of.txt
>>>>>===================================================================
>>>>>--- working-2.6.orig/Documentation/powerpc/booting-without-of.txt 2007-07-30 17:07:14.000000000 +1000
>>>>>+++ working-2.6/Documentation/powerpc/booting-without-of.txt 2007-07-30 17:07:14.000000000 +1000
>>>>>@@ -1757,45 +1757,23 @@ platforms are moved over to use the flat
>>>>> };
>>>>> };
>>>>>
>>>>>- j) Flash chip nodes
>>>>>+ j) CFI or JEDEC memory-mapped NOR flash
>>>>>
>>>>> Flash chips (Memory Technology Devices) are often used for solid state
>>>>> file systems on embedded devices.
>>
>>>>>- Required properties:
>>>>>+ - compatible : should contain the specific model of flash chip(s) used
>>>>>+ followed by either "cfi-flash" or "jedec-flash"
>>>> This "compatible" prop (and the node in whole) doesn't say a
>>>>thing about how the flash is mapped into the CPU address space. I
>>>>strongly disagree that this node provides enough info to select a
>>>>driver. :-/
>>>To be honest, I'm not sure that describing the mapping is really the
>>>job of the compatible property. That the flash is mapped into the
>>>address space is kind of implicit in the way the reg interacts with
>>>the parents' ranges property.
>> Ah, I keep forgetting about implied 1:1 parent/child address
>>correspondence... :-<
>> But does it really imply how the (low) address bits of the *child* bus
>>("ebc" in this case) are connected to the chip? I don't think so...
>>>Can you describe some of the options for *not* direct mapped flash
>>>chips - I can't reasonably come up with a way of describing the
>>>distinction when I've never seen NOR flash other than direct mapped.
>> You're lucky to live in the single-endian world. Once you're in bi-endian
>>one, all kinds of strange mappings become possible. I've seen the MIPS
Well, not necessarily -- 16-bit only accesses are always possibly (no
dount this would be a strange mapping however)...
>>mapping driver which required swapping flash bytes in s/w in BE mode, i.e.
>>couldn't be served by physmap, yet that's not all... here's the code of its
>>map read*() methods:
> Aha! Ok, now I understand the sorts of situations you're talking
> about. By "not direct mapped", I thought you were talking about some
> kind of access via address/data registers on some indirect bus
> controller, rather than weird variations on endianness and
> bit-swizzling.
No, that would be just too ridiculous for a NOR flash -- I hope. :-)
> Hrm.. this is a property of how the flash is wired onto the bus,
> rather than of the flash chips themselves,
Indeed.
> so I'm not entirely sure where description of it belongs.
So, you're saying that the 1:1 address correspondence rule stops to apply
here?
> Simplest option seems to me to add a property "endianness" or
And we even have a precedent of "big-endian" prop in the MPIC nodes
(although I'm not sure why it's needed there).
> "bit-swizzling" or something which can be defined to describe some odd
> connections. If absent we'd default to direct mapping. Segher, is
> that idea going to cause you to scream?
Actually, checking for the presence of all possible perverted mapping
props doesn't seem a good idea -- it's simpler to check for the presence of
one prop (like "direct-mapped" I was thinking about, or maybe "simple-map").
>>>>>+ - reg : Address range of the flash chip
>>>>>+ - bank-width : Width (in bytes) of the flash bank. Equal to the device width
>>>>>+ times the number of interleaved chips.
>>>>>+ - device-width : (optional) Width of a single flash chip. If omitted,
>>>>>+ assumed to be equal to 'bank-width'.
>>>> Why then not just introduce the "interleave" prop and obsolete the
>>>>"bank-width"?
>>>Because they're equivalent information, and bank-width is what the
>>>code ends up actually caring about. I don't see any reason to prefer
>>>giving the interleave.
>> Well, "device-width" is not the thing that we care about either. ;-)
> Well, yes but we need to encode it somehow. Segher preferred
> device-width to interleave, because it's closer to a description of
> the actual hardware, rather than an abstration decribing its wiring.
> In other words I *still* don't see any reason to prefer giving the
> interleave.
I wasn't talking of "interleave" preference over "device-width", I was
talking about obsoleting "bank-width" with this pair.
>>>>>Index: working-2.6/drivers/mtd/maps/physmap_of.c
>>>>>===================================================================
>>>>>--- working-2.6.orig/drivers/mtd/maps/physmap_of.c 2007-07-30 17:07:11.000000000 +1000
>>>>>+++ working-2.6/drivers/mtd/maps/physmap_of.c 2007-07-30 17:07:14.000000000 +1000
>>[...]
>>>>>+ for (pp = dp->child, i = 0 ; pp; pp = pp->sibling, i++) {
>>>>>+ const u32 *reg;
>>>>>+ const char *name;
>>>>>+ const void *ro;
>>>> We hardly need the above 2 variables.
>>>They're all used...
>> I meant that there's no necessity in them.
> By which you mean....?
They're only written to once, and then read immediately which might be
easily collapsed into a single statement.
>>[...]
>>>>>@@ -221,6 +297,14 @@ err_out:
>>>>>
>>>>>static struct of_device_id of_physmap_match[] = {
>>>>> {
>>>>>+ .compatible = "cfi-flash",
>>>>>+ .data = (void *)"cfi_probe",
>>>>>+ },
>>>>>+ {
>>>>>+ .compatible = "jedec-flash",
>>>>>+ .data = (void *)"jedec_probe",
>>>>>+ },
>>>>>+ {
>>>> This would also trigger on non-linearly mapped CFI or JEDEC
>>>>flashes which is not a good idea -- however, as we're using the MTD
>>>>probing code anyway, it will just fail, so it's not luckily is not a
>>>>fatal design flaw.
>>>Well, if there's nothing else to distinguish them. Which there isn't
>>>yet, but will need to be: see above about incomplete - helpful
>>>suggestions about how to describe the mapping would be more useful
>>>than merely pointing out the lack.
>> I was thinking about adding "direct-mapped" prop... but maybe adding
>>"ranges" to the parent node (that's "ebc") would indeed ensure that the flash
>>is mapped 1:1 to the EBC's parent bus also.
> The ebc already has a ranges property. But that can't describe the
Not in the device tree that started that thread -- I haven't seen another.
> sorts of bit-swizzling you're talking about.
Let's hear what Segher says (if he's not yet tired of all this :-).
>>>>>Index: working-2.6/arch/powerpc/boot/dts/ebony.dts
>>>>>===================================================================
>>>>>--- working-2.6.orig/arch/powerpc/boot/dts/ebony.dts 2007-07-30 17:07:14.000000000 +1000
>>>>>+++ working-2.6/arch/powerpc/boot/dts/ebony.dts 2007-07-30 17:07:14.000000000 +1000
>>>>[...]
>>>>>@@ -158,14 +161,20 @@
>>>>> };
>>>>> large-flash@2,0 {
>>>> Hmm... what does @2,0 mean? :-O
>>>EBC chip select 2, offset 0.
>> Well, so this node is under some kind of local bus node -- that's good.
>>Didn't know that the spec allows commas after @...
> Well, now you do. I believe USB usually uses that format, too.
USB what, hosts or devices?
>>>>>- device_type = "rom";
>>>>>- compatible = "direct-mapped";
>>>>>- probe-type = "JEDEC";
>>>>>+ compatible = "jedec-flash";
>>>>> bank-width = <1>;
>>>>>- partitions = <0 380000
>>>>>- 380000 80000>;
>>>>>- partition-names = "fs", "firmware";
>>>>>+// partitions = <0 380000
>>>>>+// 380000 80000>;
>>>>>+// partition-names = "fs", "firmware";
>>>>> reg = <2 0 400000>;
>>>>>+ #address-cells = <1>;
>>>>>+ #size-cells = <1>;
>>>> Heh...
>>>Yeah, that bit's a bit ugly, I'll grant you.
>> Don't we need "ranges" here, at least from the formal PoV -- as the parent
>>and child address spaces differ? I know the physmap_of parser doesn't care but
>>still...
> That's one I've wondered about. To describe the partitions address
> space as lying (ultimately) in the physical address space, which in a
> sense it does, yes we'd need a ranges property here. But we also have
> a 'reg' at the top level which would overlap with that hypothetical
> ranges which would be weird. Or we could exclude the top-level reg,
> but then that's a pain if we do want to map the flash as a whole.
Hm, right... the option here would be to always have at least one
partition and no "reg" property in the MTD node itself... or have "reg" with
no partition and "ranges" if partitions are there... :-)
> So I left out ranges, on the grounds that there isn't actually
> anything at present which will attempt to access flash partitions
> "generically" as a device tree device.
> I'm not sold on this approach, but I haven't heard you give a better
> argument yet.
Well, that was mostly thoretic speculation...
WBR, Sergei
^ permalink raw reply
* Re: [RFC][PATCH] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Segher Boessenkool @ 2007-08-06 18:25 UTC (permalink / raw)
To: Kim Phillips; +Cc: linuxppc-dev
In-Reply-To: <20070801141614.ad6604bb.kim.phillips@freescale.com>
>>>>> + max-speed-hz = <bebc20>; /* 12500000 Hz */
>>
>> Just max-speed.
>
> Segher, how is this different from:
>
> http://ozlabs.org/pipermail/linuxppc-dev/2007-April/034557.html
Not sure what you mean. I'm just saying that "speed-hz" is a
terrible name, I'm not saying that "max-speed" is perfect at all.
Segher
^ permalink raw reply
* Re: [RFC][PATCH] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Segher Boessenkool @ 2007-08-06 18:24 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev
In-Reply-To: <46B0C624.2070000@freescale.com>
>> For some buses, there is a "slot-names" property; some (non-core)
>> bindings seem to define a "location" property.
>> For "random" human-readable labelling, i.e. not corresponding to
>> physical markings on the hardware, I recommend you look for a
>> matching entry in /aliases.
>
> Aliases could work, but are awkward to use for the purposes I'm
> thinking of (giving the OS a name to present to the user in
> association with a device).
Sure; it's just one thing a platform driver could use.
> Plus, you're then restricted to valid property names for the alias,
> whereas with a label property you could use any string, including
> spaces and such.
Spaces in a device name are a bad idea anyway ;-)
>> It won't ever be _exactly_ what you
>> want though, the Linux device namespace is separate from the
>> device tree.
>
> That's Linux's choice. Nothing stops it from showing device tree
> labels to the user in various situations -- what got me thinking
> about this was that apparently ALSA lets the driver pass an arbitrary
> string to identify the device, and it seemed that such a
> device-tree-derived label would be the most useful to the user.
Yeah. The platform code has the final responsibility for those
names, it can use whatever mechanism is appropriate for that
platform.
> To use aliases for that, it'd have to get the full path to the audio
> node, compare it to each alias, and hope it finds one and only one,
This would of course be split off into a nice prom.c utility
function, so it isn't much code, just a function call.
> and that that alias was intended to be a user label and not something
> else.
Hey at least they're all printable :-)
Segher
^ permalink raw reply
* Re: [RFC][PATCH] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Segher Boessenkool @ 2007-08-06 18:18 UTC (permalink / raw)
To: avorontsov; +Cc: linuxppc-dev
In-Reply-To: <20070801132948.GB20200@localhost.localdomain>
>>>>> spi@4c0 {
>>>>> device_type = "spi";
>>>>> + device-id = <1>;
>>>>
>>>> Can we just use the reg value for bus_num in the kernel.
>>>
>>> Sure, technically nothing prevents this. But, QE specs names
>>> SPIs by these ids.
>>
>> As a minimum the property name should start with "fsl," then.
>
> fsl,device-id = <1>;, correct?
Fine with me. Someone more familiar with the FSL SoCs might
have a different opinion about polluting their namespace though.
>>> Plus, from the kernel side spi name will be
>>> not pretty, it will be spi1216.1.
>>
>> What, the kernel cannot implement a counter itself?
>
> Just counter is especially meaningless and confusing. It will
> work in that particular case, though. But then SPI bus number will
> depend on definition order in the dts file. This isn't how SPI
> bus numbers should be assigned. SPI bus numbers taken from specs,
> this is how people know which SPI is which.
Right, so the kernel platform code should number the SPI busses
based on their position in the device tree, etc.; that doesn't
mean you should put a Linux-specific "device name" property in
there.
>>>>> + compatible = "mmc-spi";
>>
>> Needs to be more specific.
>
> Um.. for example? I can't imagine anything specific for this. ;-)
It should include a vendor name, a device name, and/or a board
name. Something that uniquely defines the hardware programming
model for the device.
>>>>> + pio-handle = <&mmc1pio>;
>>
>> What is this for?
>
> To set up output function of GPIO pin for MMC chip select.
>
> And well, I've just looked into par_io_of_config(), and I've found
> that pio-handle is mandatory (obviously), and thus let's back to:
>
>>>> we should do this in board code and not the device tree.
>>>
>>> Well, I've done this initially. But Vitaly hinted that this could
>>> be done in the DT instead, which made sense to me - mmc is the child
>>> device of SPI bus. Why do you think it shouldn't be in the DT? I'm
>>> not arguing, just want understand this.
>>
>> The hardware should be described in the device tree. This isn't
>> the same as simply copying all your Linux code into it ;-)
>
> Ugh. SD/MMC slot is the hardware, isn't it? It have wired SPI pins,
> and chip select pin. To set up this pin, I need mmc node, which means
> that I can't completely move mmc definitions to the board file, as
> suggested by Kumar Gala.
>
> Advices?
You need to declare in the SPI node which GPIOs it uses for
what. You shouldn't have the actual values to put into the
GPIO registers in the device tree; the kernel driver can
figure it out.
Hope this helps,
Segher
^ 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