Skip to content

Instantly share code, notes, and snippets.

@kblomqvist
Created July 28, 2012 20:05
Show Gist options
  • Save kblomqvist/3194586 to your computer and use it in GitHub Desktop.
Save kblomqvist/3194586 to your computer and use it in GitHub Desktop.
lufaery32.elf: file format elf32-avr32
Sections:
Idx Name Size VMA LMA File off Algn
0 .reset 00000008 80002000 80002000 00000400 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .rela.got 00000000 80002008 80002008 00000408 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .init 0000001c 80002008 80002008 00000408 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
3 .text 000029e4 80002024 80002024 00000424 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
4 .exception_handlers 00000200 80004c00 80004c00 00003000 2**9
CONTENTS, ALLOC, LOAD, READONLY, CODE
5 .fini 00000018 80004e00 80004e00 00003200 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
6 .rodata 00000068 80004e18 80004e18 00003218 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
7 .ctors 00000008 00000004 80004e80 00003404 2**2
CONTENTS, ALLOC, LOAD, DATA
8 .dtors 00000008 0000000c 80004e88 0000340c 2**2
CONTENTS, ALLOC, LOAD, DATA
9 .jcr 00000004 00000014 80004e90 00003414 2**2
CONTENTS, ALLOC, LOAD, DATA
10 .got 0000000c 00000018 80004e94 00003418 2**2
CONTENTS, ALLOC, LOAD, DATA
11 .data 00000548 00000024 80004ea0 00003424 2**2
CONTENTS, ALLOC, LOAD, DATA
12 .balign 00000004 0000056c 800053e8 0000396c 2**0
ALLOC
13 .bss 000000c8 00000570 800053e8 00003970 2**2
ALLOC
14 .comment 00000030 00000000 00000000 0000396c 2**0
CONTENTS, READONLY
15 .debug_aranges 000005c8 00000000 00000000 0000399c 2**0
CONTENTS, READONLY, DEBUGGING
16 .debug_pubnames 00000eb3 00000000 00000000 00003f64 2**0
CONTENTS, READONLY, DEBUGGING
17 .debug_info 0005f973 00000000 00000000 00004e17 2**0
CONTENTS, READONLY, DEBUGGING
18 .debug_abbrev 0000325d 00000000 00000000 0006478a 2**0
CONTENTS, READONLY, DEBUGGING
19 .debug_line 0000b854 00000000 00000000 000679e7 2**0
CONTENTS, READONLY, DEBUGGING
20 .debug_frame 00000edc 00000000 00000000 0007323c 2**2
CONTENTS, READONLY, DEBUGGING
21 .debug_str 000069bf 00000000 00000000 00074118 2**0
CONTENTS, READONLY, DEBUGGING
22 .debug_loc 00002860 00000000 00000000 0007aad7 2**0
CONTENTS, READONLY, DEBUGGING
23 .debug_macinfo 00bc2217 00000000 00000000 0007d337 2**0
CONTENTS, READONLY, DEBUGGING
24 .stack 00001000 00007000 00007000 00000400 2**0
ALLOC
25 .debug_ranges 00000e10 00000000 00000000 00c3f54e 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .reset:
80002000 <_start>:
80002000: 48 1f lddpc pc,80002004 <_start+0x4>
80002002: 00 00 add r0,r0
80002004: 80 00 ld.sh r0,r0[0x0]
80002006: 20 24 sub r4,2
Disassembly of section .init:
80002008 <_init>:
80002008: eb cd 40 40 pushm r6,lr
8000200c: 48 26 lddpc r6,80002014 <_init+0xc>
8000200e: 1e 26 rsub r6,pc
80002010: c0 48 rjmp 80002018 <_init+0x10>
80002012: 00 00 add r0,r0
80002014: 80 00 ld.sh r0,r0[0x0]
80002016: 1f f6 ld.ub r6,pc[0x7]
80002018: f0 16 00 01 mcall r6[4]
8000201c: f0 16 00 00 mcall r6[0]
80002020: e3 cd 80 40 ldm sp++,r6,pc
Disassembly of section .text:
80002024 <_stext>:
80002024: 30 07 mov r7,0
80002026: 49 5a lddpc r10,80002078 <_stext+0x54>
80002028: 5b fa cp.w r10,-1
8000202a: f4 0d 17 10 movne sp,r10
8000202e: 49 4b lddpc r11,8000207c <_stext+0x58>
80002030: 49 4c lddpc r12,80002080 <_stext+0x5c>
80002032: 18 3b cp.w r11,r12
80002034: c0 60 breq 80002040 <_stext+0x1c>
80002036: 49 4a lddpc r10,80002084 <_stext+0x60>
80002038: b7 09 ld.d r8,r11++
8000203a: b9 28 st.d r12++,r8
8000203c: 14 3c cp.w r12,r10
8000203e: cf d5 brlt 80002038 <_stext+0x14>
80002040: 49 2a lddpc r10,80002088 <_stext+0x64>
80002042: 49 1c lddpc r12,80002084 <_stext+0x60>
80002044: 30 08 mov r8,0
80002046: 30 09 mov r9,0
80002048: b9 28 st.d r12++,r8
8000204a: 14 3c cp.w r12,r10
8000204c: cf e5 brlt 80002048 <_stext+0x24>
8000204e: f0 1f 00 10 mcall 8000208c <_stext+0x68>
80002052: 49 0c lddpc r12,80002090 <_stext+0x6c>
80002054: f0 1f 00 10 mcall 80002094 <_stext+0x70>
80002058: f0 1f 00 10 mcall 80002098 <_stext+0x74>
8000205c: 1a 9c mov r12,sp
8000205e: 30 0b mov r11,0
80002060: f0 1f 00 0f mcall 8000209c <_stext+0x78>
80002064: 5b fc cp.w r12,-1
80002066: f9 bc 00 00 moveq r12,0
8000206a: f9 ba 00 00 moveq r10,0
8000206e: 14 1d sub sp,r10
80002070: f0 1f 00 0c mcall 800020a0 <_stext+0x7c>
80002074: f0 1f 00 0c mcall 800020a4 <_stext+0x80>
80002078: 00 00 add r0,r0
8000207a: 80 00 ld.sh r0,r0[0x0]
8000207c: 80 00 ld.sh r0,r0[0x0]
8000207e: 4e 80 lddpc r0,8000221c <_ZN4aeryL17gpio_set_pin_highEh+0x10>
80002080: 00 00 add r0,r0
80002082: 00 04 add r4,r0
80002084: 00 00 add r0,r0
80002086: 05 70 ld.ub r0,--r2
80002088: 00 00 add r0,r0
8000208a: 06 38 cp.w r8,r3
8000208c: 80 00 ld.sh r0,r0[0x0]
8000208e: 41 0a lddsp r10,sp[0x40]
80002090: 80 00 ld.sh r0,r0[0x0]
80002092: 4e 00 lddpc r0,80002210 <_ZN4aeryL17gpio_set_pin_highEh+0x4>
80002094: 80 00 ld.sh r0,r0[0x0]
80002096: 40 c0 lddsp r0,sp[0x30]
80002098: 80 00 ld.sh r0,r0[0x0]
8000209a: 20 08 sub r8,0
8000209c: 80 00 ld.sh r0,r0[0x0]
8000209e: 41 0c lddsp r12,sp[0x40]
800020a0: 80 00 ld.sh r0,r0[0x0]
800020a2: 22 88 sub r8,40
800020a4: 80 00 ld.sh r0,r0[0x0]
800020a6: 40 d4 lddsp r4,sp[0x34]
800020a8 <__do_global_dtors_aux>:
800020a8: d4 21 pushm r4-r7,lr
800020aa: 48 e4 lddpc r4,800020e0 <__do_global_dtors_aux+0x38>
800020ac: 30 08 mov r8,0
800020ae: 09 89 ld.ub r9,r4[0x0]
800020b0: f0 09 18 00 cp.b r9,r8
800020b4: c1 41 brne 800020dc <__do_global_dtors_aux+0x34>
800020b6: 48 c7 lddpc r7,800020e4 <__do_global_dtors_aux+0x3c>
800020b8: 48 c5 lddpc r5,800020e8 <__do_global_dtors_aux+0x40>
800020ba: 48 d6 lddpc r6,800020ec <__do_global_dtors_aux+0x44>
800020bc: 6e 08 ld.w r8,r7[0x0]
800020be: 0a 16 sub r6,r5
800020c0: a3 46 asr r6,0x2
800020c2: 20 16 sub r6,1
800020c4: 0c 38 cp.w r8,r6
800020c6: c0 92 brcc 800020d8 <__do_global_dtors_aux+0x30>
800020c8: 2f f8 sub r8,-1
800020ca: 8f 08 st.w r7[0x0],r8
800020cc: ea 08 03 28 ld.w r8,r5[r8<<0x2]
800020d0: 5d 18 icall r8
800020d2: 6e 08 ld.w r8,r7[0x0]
800020d4: 0c 38 cp.w r8,r6
800020d6: cf 93 brcs 800020c8 <__do_global_dtors_aux+0x20>
800020d8: 30 18 mov r8,1
800020da: a8 88 st.b r4[0x0],r8
800020dc: d8 22 popm r4-r7,pc
800020de: 00 00 add r0,r0
800020e0: 00 00 add r0,r0
800020e2: 05 70 ld.ub r0,--r2
800020e4: 00 00 add r0,r0
800020e6: 05 74 ld.ub r4,--r2
800020e8: 00 00 add r0,r0
800020ea: 00 0c add r12,r0
800020ec: 00 00 add r0,r0
800020ee: 00 10 sub r0,r0
800020f0 <frame_dummy>:
800020f0: d4 01 pushm lr
800020f2: 48 5c lddpc r12,80002104 <frame_dummy+0x14>
800020f4: 78 08 ld.w r8,r12[0x0]
800020f6: 58 08 cp.w r8,0
800020f8: c0 50 breq 80002102 <frame_dummy+0x12>
800020fa: 48 48 lddpc r8,80002108 <frame_dummy+0x18>
800020fc: 58 08 cp.w r8,0
800020fe: c0 20 breq 80002102 <frame_dummy+0x12>
80002100: 5d 18 icall r8
80002102: d8 02 popm pc
80002104: 00 00 add r0,r0
80002106: 00 14 sub r4,r0
80002108: 00 00 add r0,r0
...
8000210c <_Z10init_boardv>:
#include <aery32/gpio.h>
using namespace aery;
void init_board(void)
{
8000210c: eb cd 40 80 pushm r7,lr
80002110: 1a 97 mov r7,sp
gpio_init_pins(porta, 0xffffffff, GPIO_INPUT);
80002112: 4b 28 lddpc r8,800021d8 <_Z10init_boardv+0xcc>
80002114: 70 08 ld.w r8,r8[0x0]
80002116: 30 0a mov r10,0
80002118: 3f fb mov r11,-1
8000211a: 10 9c mov r12,r8
8000211c: f0 1f 00 30 mcall 800021dc <_Z10init_boardv+0xd0>
gpio_init_pins(portb, 0xffffffff, GPIO_INPUT);
80002120: 4b 08 lddpc r8,800021e0 <_Z10init_boardv+0xd4>
80002122: 70 08 ld.w r8,r8[0x0]
80002124: 30 0a mov r10,0
80002126: 3f fb mov r11,-1
80002128: 10 9c mov r12,r8
8000212a: f0 1f 00 2d mcall 800021dc <_Z10init_boardv+0xd0>
gpio_init_pins(portc, 0x0000003f, GPIO_INPUT);
8000212e: 4a e8 lddpc r8,800021e4 <_Z10init_boardv+0xd8>
80002130: 70 08 ld.w r8,r8[0x0]
80002132: 30 0a mov r10,0
80002134: 33 fb mov r11,63
80002136: 10 9c mov r12,r8
80002138: f0 1f 00 29 mcall 800021dc <_Z10init_boardv+0xd0>
pm_start_osc(0, OSC_MODE_GAIN3, OSC_STARTUP_36ms);
8000213c: 30 4a mov r10,4
8000213e: 30 7b mov r11,7
80002140: 30 0c mov r12,0
80002142: f0 1f 00 2a mcall 800021e8 <_Z10init_boardv+0xdc>
pm_wait_osc_to_stabilize(0);
80002146: 30 0c mov r12,0
80002148: f0 1f 00 29 mcall 800021ec <_Z10init_boardv+0xe0>
/* Initialize f_vco0 to 132 MHz. Then divide this by two to get 66 MHz. */
pm_init_pllvco(pll0, PLL_SOURCE_OSC0, 11, 1, false);
8000214c: 4a 98 lddpc r8,800021f0 <_Z10init_boardv+0xe4>
8000214e: 70 0c ld.w r12,r8[0x0]
80002150: 30 08 mov r8,0
80002152: 30 19 mov r9,1
80002154: 30 ba mov r10,11
80002156: 30 0b mov r11,0
80002158: f0 1f 00 27 mcall 800021f4 <_Z10init_boardv+0xe8>
pm_enable_pll(pll0, true);
8000215c: 4a 58 lddpc r8,800021f0 <_Z10init_boardv+0xe4>
8000215e: 70 08 ld.w r8,r8[0x0]
80002160: 30 1b mov r11,1
80002162: 10 9c mov r12,r8
80002164: f0 1f 00 25 mcall 800021f8 <_Z10init_boardv+0xec>
pm_wait_pll_to_lock(pll0);
80002168: 4a 28 lddpc r8,800021f0 <_Z10init_boardv+0xe4>
8000216a: 70 08 ld.w r8,r8[0x0]
8000216c: 10 9c mov r12,r8
8000216e: f0 1f 00 24 mcall 800021fc <_Z10init_boardv+0xf0>
/*
* Also initialize and enable PLL1; 96 MHz is a good choice as it can be
* used for USB when divided by two when initialized as a general clock.
*/
pm_init_pllvco(pll1, PLL_SOURCE_OSC0, 16, 1, true);
80002172: 4a 48 lddpc r8,80002200 <_Z10init_boardv+0xf4>
80002174: 70 0c ld.w r12,r8[0x0]
80002176: 30 18 mov r8,1
80002178: 30 19 mov r9,1
8000217a: 31 0a mov r10,16
8000217c: 30 0b mov r11,0
8000217e: f0 1f 00 1e mcall 800021f4 <_Z10init_boardv+0xe8>
pm_enable_pll(pll1, true);
80002182: 4a 08 lddpc r8,80002200 <_Z10init_boardv+0xf4>
80002184: 70 08 ld.w r8,r8[0x0]
80002186: 30 1b mov r11,1
80002188: 10 9c mov r12,r8
8000218a: f0 1f 00 1c mcall 800021f8 <_Z10init_boardv+0xec>
pm_wait_pll_to_lock(pll1);
8000218e: 49 d8 lddpc r8,80002200 <_Z10init_boardv+0xf4>
80002190: 70 08 ld.w r8,r8[0x0]
80002192: 10 9c mov r12,r8
80002194: f0 1f 00 1a mcall 800021fc <_Z10init_boardv+0xf0>
/* For CPU clock speed over 33 MHz, flash wait state has to be set 1 */
AVR32_FLASHC.FCR.fws = 1;
80002198: fe 69 14 00 mov r9,-125952
8000219c: 72 08 ld.w r8,r9[0x0]
8000219e: 30 1a mov r10,1
800021a0: f1 da d0 c1 bfins r8,r10,0x6,0x1
800021a4: 93 08 st.w r9[0x0],r8
/* Set main clock source to PLL0 (66 MHz) */
pm_select_mck(MCK_SOURCE_PLL0);
800021a6: 30 2c mov r12,2
800021a8: f0 1f 00 17 mcall 80002204 <_Z10init_boardv+0xf8>
/*
* Peripheral clock masking. By default all modules are enabled.
* You might be interested in to disable modules you are not using. */
pm->hsbmask = HSBMASK_DEFAULT;
800021ac: 49 78 lddpc r8,80002208 <_Z10init_boardv+0xfc>
800021ae: 70 08 ld.w r8,r8[0x0]
800021b0: 3f f9 mov r9,-1
800021b2: 91 39 st.w r8[0xc],r9
pm->pbamask = PBAMASK_DEFAULT;
800021b4: 49 58 lddpc r8,80002208 <_Z10init_boardv+0xfc>
800021b6: 70 08 ld.w r8,r8[0x0]
800021b8: 3f f9 mov r9,-1
800021ba: 91 49 st.w r8[0x10],r9
pm->pbbmask = PBBMASK_DEFAULT;
800021bc: 49 38 lddpc r8,80002208 <_Z10init_boardv+0xfc>
800021be: 70 08 ld.w r8,r8[0x0]
800021c0: 3f f9 mov r9,-1
800021c2: 91 59 st.w r8[0x14],r9
while (!(pm->isr & AVR32_PM_ISR_MSKRDY_MASK));
800021c4: 49 18 lddpc r8,80002208 <_Z10init_boardv+0xfc>
800021c6: 70 08 ld.w r8,r8[0x0]
800021c8: 71 38 ld.w r8,r8[0x4c]
800021ca: e2 18 00 40 andl r8,0x40,COH
800021ce: 5f 08 sreq r8
800021d0: 5c 58 castu.b r8
800021d2: cf 91 brne 800021c4 <_Z10init_boardv+0xb8>
/*
* Clocks are now masked according to (CPU/HSB/PBA/PBB)_MASK
* registers. */
}
800021d4: e3 cd 80 80 ldm sp++,r7,pc
800021d8: 00 00 add r0,r0
800021da: 00 44 or r4,r0
800021dc: 80 00 ld.sh r0,r0[0x0]
800021de: 24 a4 sub r4,74
800021e0: 00 00 add r0,r0
800021e2: 00 48 or r8,r0
800021e4: 00 00 add r0,r0
800021e6: 00 4c or r12,r0
800021e8: 80 00 ld.sh r0,r0[0x0]
800021ea: 26 e4 sub r4,110
800021ec: 80 00 ld.sh r0,r0[0x0]
800021ee: 2a a0 sub r0,-86
800021f0: 00 00 add r0,r0
800021f2: 00 60 and r0,r0
800021f4: 80 00 ld.sh r0,r0[0x0]
800021f6: 28 50 sub r0,-123
800021f8: 80 00 ld.sh r0,r0[0x0]
800021fa: 29 36 sub r6,-109
800021fc: 80 00 ld.sh r0,r0[0x0]
800021fe: 2a fa sub r10,-81
80002200: 00 00 add r0,r0
80002202: 00 64 and r4,r0
80002204: 80 00 ld.sh r0,r0[0x0]
80002206: 2b c8 sub r8,-68
80002208: 00 00 add r0,r0
8000220a: 00 5c eor r12,r0
8000220c <_ZN4aeryL17gpio_set_pin_highEh>:
* \param pinnum GPIO number, e.g. AVR32_PIN_PA05
*
* \note Does not work for local bus
*/
static inline void gpio_set_pin_high(uint8_t pinnum)
{
8000220c: eb cd 40 80 pushm r7,lr
80002210: 1a 97 mov r7,sp
80002212: 20 1d sub sp,4
80002214: 18 98 mov r8,r12
80002216: ef 68 ff fc st.b r7[-4],r8
AVR32_GPIO.port[GPIO_NUM2PORT(pinnum)].ovrs = 1UL << GPIO_NUM2PIN(pinnum);
8000221a: fe 7a 10 00 mov r10,-61440
8000221e: ef 38 ff fc ld.ub r8,r7[-4]
80002222: a5 58 asr r8,0x5
80002224: ef 39 ff fc ld.ub r9,r7[-4]
80002228: f3 d9 c0 05 bfextu r9,r9,0x0,0x5
8000222c: 30 1b mov r11,1
8000222e: f6 09 09 49 lsl r9,r11,r9
80002232: a9 68 lsl r8,0x8
80002234: f4 08 00 08 add r8,r10,r8
80002238: 2a c8 sub r8,-84
8000223a: 91 09 st.w r8[0x0],r9
}
8000223c: 2f fd sub sp,-4
8000223e: e3 cd 80 80 ldm sp++,r7,pc
80002242 <EVENT_USB_Device_Connect>:
}
};
/** Event handler for the library USB Connection event. */
void EVENT_USB_Device_Connect(void)
{
80002242: eb cd 40 80 pushm r7,lr
80002246: 1a 97 mov r7,sp
}
80002248: e3 cd 80 80 ldm sp++,r7,pc
8000224c <EVENT_USB_Device_Disconnect>:
/** Event handler for the library USB Disconnection event. */
void EVENT_USB_Device_Disconnect(void)
{
8000224c: eb cd 40 80 pushm r7,lr
80002250: 1a 97 mov r7,sp
}
80002252: e3 cd 80 80 ldm sp++,r7,pc
80002256 <EVENT_USB_Device_ControlRequest>:
/** Event handler for the library USB Control Request reception event. */
void EVENT_USB_Device_ControlRequest(void)
{
80002256: eb cd 40 80 pushm r7,lr
8000225a: 1a 97 mov r7,sp
CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
8000225c: 48 3c lddpc r12,80002268 <EVENT_USB_Device_ControlRequest+0x12>
8000225e: f0 1f 00 04 mcall 8000226c <EVENT_USB_Device_ControlRequest+0x16>
}
80002262: e3 cd 80 80 ldm sp++,r7,pc
80002266: 00 00 add r0,r0
80002268: 00 00 add r0,r0
8000226a: 00 24 rsub r4,r0
8000226c: 80 00 ld.sh r0,r0[0x0]
8000226e: 39 9c mov r12,-103
80002270 <EVENT_USB_Device_ConfigurationChanged>:
/** Event handler for the library USB Configuration Changed event. */
void EVENT_USB_Device_ConfigurationChanged(void)
{
80002270: eb cd 40 80 pushm r7,lr
80002274: 1a 97 mov r7,sp
CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
80002276: 48 3c lddpc r12,80002280 <EVENT_USB_Device_ConfigurationChanged+0x10>
80002278: f0 1f 00 03 mcall 80002284 <EVENT_USB_Device_ConfigurationChanged+0x14>
}
8000227c: e3 cd 80 80 ldm sp++,r7,pc
80002280: 00 00 add r0,r0
80002282: 00 24 rsub r4,r0
80002284: 80 00 ld.sh r0,r0[0x0]
80002286: 39 50 mov r0,-107
80002288 <main>:
int main(void)
{
80002288: eb cd 40 80 pushm r7,lr
8000228c: 1a 97 mov r7,sp
8000228e: 20 2d sub sp,8
init_board();
80002290: f0 1f 00 23 mcall 8000231c <main+0x94>
gpio_init_pin(LED, GPIO_OUTPUT|GPIO_HIGH);
80002294: 30 3b mov r11,3
80002296: 34 4c mov r12,68
80002298: f0 1f 00 22 mcall 80002320 <main+0x98>
/* Set up the USB generic clock. That's f_pll1 / 2 == 48MHz. */
pm_init_gclk(GCLK_USBB, GCLK_SOURCE_PLL1, 1);
8000229c: 30 1a mov r10,1
8000229e: 30 3b mov r11,3
800022a0: 30 4c mov r12,4
800022a2: f0 1f 00 21 mcall 80002324 <main+0x9c>
pm_enable_gclk(GCLK_USBB);
800022a6: 30 4c mov r12,4
800022a8: f0 1f 00 20 mcall 80002328 <main+0xa0>
/* Register USB isr handler, from LUFA library */
INTC_Init();
800022ac: f0 1f 00 20 mcall 8000232c <main+0xa4>
const InterruptHandlerPtr_t Handler) ATTR_ALWAYS_INLINE;
static inline void INTC_RegisterGroupHandler(const uint16_t GroupNumber,
const uint8_t InterruptLevel,
const InterruptHandlerPtr_t Handler)
{
InterruptHandlers[GroupNumber] = Handler;
800022b0: 31 19 mov r9,17
800022b2: 4a 08 lddpc r8,80002330 <main+0xa8>
800022b4: 4a 0a lddpc r10,80002334 <main+0xac>
800022b6: f0 09 09 2a st.w r8[r9<<0x2],r10
AVR32_INTC.ipr[GroupNumber] = Autovector_Table[InterruptLevel];
800022ba: fe 78 08 00 mov r8,-63488
800022be: 31 19 mov r9,17
800022c0: 30 1b mov r11,1
800022c2: 49 ea lddpc r10,80002338 <main+0xb0>
800022c4: f4 0b 03 2a ld.w r10,r10[r11<<0x2]
800022c8: f0 09 09 2a st.w r8[r9<<0x2],r10
GCC_MEMORY_BARRIER();
#if (ARCH == ARCH_AVR8)
sei();
#elif (ARCH == ARCH_UC3)
__builtin_csrf(AVR32_SR_GM_OFFSET);
800022cc: d5 03 csrf 0x10
INTC_RegisterGroupHandler(INTC_IRQ_GROUP(AVR32_USBB_IRQ), 1, &USB_GEN_vect);
GlobalInterruptEnable();
/* Initiliaze the USB, LUFA magic */
USB_Init();
800022ce: f0 1f 00 1c mcall 8000233c <main+0xb4>
/* All init done, turn the LED on */
gpio_set_pin_high(LED);
800022d2: 34 4c mov r12,68
800022d4: c9 cf rcall 8000220c <_ZN4aeryL17gpio_set_pin_highEh>
for(;;) {
CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'H');
800022d6: 34 8b mov r11,72
800022d8: 49 ac lddpc r12,80002340 <main+0xb8>
800022da: f0 1f 00 1b mcall 80002344 <main+0xbc>
CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'e');
800022de: 36 5b mov r11,101
800022e0: 49 8c lddpc r12,80002340 <main+0xb8>
800022e2: f0 1f 00 19 mcall 80002344 <main+0xbc>
CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'l');
800022e6: 36 cb mov r11,108
800022e8: 49 6c lddpc r12,80002340 <main+0xb8>
800022ea: f0 1f 00 17 mcall 80002344 <main+0xbc>
CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'l');
800022ee: 36 cb mov r11,108
800022f0: 49 4c lddpc r12,80002340 <main+0xb8>
800022f2: f0 1f 00 15 mcall 80002344 <main+0xbc>
CDC_Device_SendByte(&VirtualSerial_CDC_Interface, 'o');
800022f6: 36 fb mov r11,111
800022f8: 49 2c lddpc r12,80002340 <main+0xb8>
800022fa: f0 1f 00 13 mcall 80002344 <main+0xbc>
CDC_Device_SendByte(&VirtualSerial_CDC_Interface, '\n');
800022fe: 30 ab mov r11,10
80002300: 49 0c lddpc r12,80002340 <main+0xb8>
80002302: f0 1f 00 11 mcall 80002344 <main+0xbc>
CDC_Device_SendByte(&VirtualSerial_CDC_Interface, '\r');
80002306: 30 db mov r11,13
80002308: 48 ec lddpc r12,80002340 <main+0xb8>
8000230a: f0 1f 00 0f mcall 80002344 <main+0xbc>
CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
8000230e: 48 dc lddpc r12,80002340 <main+0xb8>
80002310: f0 1f 00 0e mcall 80002348 <main+0xc0>
USB_USBTask();
80002314: f0 1f 00 0e mcall 8000234c <main+0xc4>
USB_Init();
/* All init done, turn the LED on */
gpio_set_pin_high(LED);
for(;;) {
80002318: cd fb rjmp 800022d6 <main+0x4e>
8000231a: 00 00 add r0,r0
8000231c: 80 00 ld.sh r0,r0[0x0]
8000231e: 21 0c sub r12,16
80002320: 80 00 ld.sh r0,r0[0x0]
80002322: 26 9c sub r12,105
80002324: 80 00 ld.sh r0,r0[0x0]
80002326: 29 b0 sub r0,-101
80002328: 80 00 ld.sh r0,r0[0x0]
8000232a: 2b 4e sub lr,-76
8000232c: 80 00 ld.sh r0,r0[0x0]
8000232e: 3c c0 mov r0,-52
80002330: 00 00 add r0,r0
80002332: 05 c4 ld.ub r4,r2[0x4]
80002334: 80 00 ld.sh r0,r0[0x0]
80002336: 30 a0 mov r0,10
80002338: 80 00 ld.sh r0,r0[0x0]
8000233a: 4d 24 lddpc r4,80002480 <CALLBACK_USB_GetDescriptor+0xa8>
8000233c: 80 00 ld.sh r0,r0[0x0]
8000233e: 30 28 mov r8,2
80002340: 00 00 add r0,r0
80002342: 00 24 rsub r4,r0
80002344: 80 00 ld.sh r0,r0[0x0]
80002346: 38 b4 mov r4,-117
80002348: 80 00 ld.sh r0,r0[0x0]
8000234a: 38 88 mov r8,-120
8000234c: 80 00 ld.sh r0,r0[0x0]
8000234e: 37 74 mov r4,119
80002350 <DeviceDescriptor>:
80002350: 12 01 10 01 02 00 00 08 eb 03 44 20 01 00 01 02 ..........D ....
80002360: 00 01 ..
80002362 <ConfigurationDescriptor>:
80002362: 09 02 3e 00 02 01 00 c0 32 09 04 00 00 01 02 02 ..>.....2.......
80002372: 01 00 05 24 00 10 01 04 24 02 06 05 24 06 00 01 ...$....$...$...
80002382: 07 05 82 03 08 00 ff 09 04 01 00 02 0a 00 00 00 ................
80002392: 07 05 04 02 10 00 05 07 05 83 02 10 00 05 ..............
800023a0 <LanguageString>:
800023a0: 04 03 09 04 ....
800023a4 <ManufacturerString>:
800023a4: 18 03 44 00 65 00 61 00 6e 00 20 00 43 00 61 00 ..D.e.a.n. .C.a.
800023b4: 6d 00 65 00 72 00 61 00 m.e.r.a.
800023bc <ProductString>:
800023bc: 1c 03 4c 00 55 00 46 00 41 00 20 00 43 00 44 00 ..L.U.F.A. .C.D.
800023cc: 43 00 20 00 44 00 65 00 6d 00 6f 00 C. .D.e.m.o.
800023d8 <CALLBACK_USB_GetDescriptor>:
* USB host.
*/
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
const void** const DescriptorAddress)
{
800023d8: eb cd 40 80 pushm r7,lr
800023dc: 1a 97 mov r7,sp
800023de: 20 6d sub sp,24
800023e0: 18 99 mov r9,r12
800023e2: 16 98 mov r8,r11
800023e4: ef 4a ff e8 st.w r7[-24],r10
800023e8: ef 59 ff f0 st.h r7[-16],r9
800023ec: ef 68 ff ec st.b r7[-20],r8
const uint8_t DescriptorType = (wValue >> 8);
800023f0: ef 18 ff f0 ld.uh r8,r7[-16]
800023f4: a9 88 lsr r8,0x8
800023f6: 5c 88 casts.h r8
800023f8: ef 68 ff f6 st.b r7[-10],r8
const uint8_t DescriptorNumber = (wValue & 0xFF);
800023fc: ef 08 ff f0 ld.sh r8,r7[-16]
80002400: ef 68 ff f7 st.b r7[-9],r8
const void* Address = NULL;
80002404: 30 08 mov r8,0
80002406: ef 48 ff f8 st.w r7[-8],r8
uint16_t Size = NO_DESCRIPTOR;
8000240a: 30 08 mov r8,0
8000240c: ef 58 ff fe st.h r7[-2],r8
switch (DescriptorType)
80002410: ef 38 ff f6 ld.ub r8,r7[-10]
80002414: 58 28 cp.w r8,2
80002416: c0 c0 breq 8000242e <CALLBACK_USB_GetDescriptor+0x56>
80002418: 58 38 cp.w r8,3
8000241a: c1 10 breq 8000243c <CALLBACK_USB_GetDescriptor+0x64>
8000241c: 58 18 cp.w r8,1
8000241e: c2 e1 brne 8000247a <CALLBACK_USB_GetDescriptor+0xa2>
{
case DTYPE_Device:
Address = &DeviceDescriptor;
80002420: 49 c8 lddpc r8,80002490 <CALLBACK_USB_GetDescriptor+0xb8>
80002422: ef 48 ff f8 st.w r7[-8],r8
Size = sizeof(USB_Descriptor_Device_t);
80002426: 31 28 mov r8,18
80002428: ef 58 ff fe st.h r7[-2],r8
break;
8000242c: c2 78 rjmp 8000247a <CALLBACK_USB_GetDescriptor+0xa2>
case DTYPE_Configuration:
Address = &ConfigurationDescriptor;
8000242e: 49 a8 lddpc r8,80002494 <CALLBACK_USB_GetDescriptor+0xbc>
80002430: ef 48 ff f8 st.w r7[-8],r8
Size = sizeof(USB_Descriptor_Configuration_t);
80002434: 33 e8 mov r8,62
80002436: ef 58 ff fe st.h r7[-2],r8
break;
8000243a: c2 08 rjmp 8000247a <CALLBACK_USB_GetDescriptor+0xa2>
case DTYPE_String:
switch (DescriptorNumber)
8000243c: ef 38 ff f7 ld.ub r8,r7[-9]
80002440: 58 18 cp.w r8,1
80002442: c0 d0 breq 8000245c <CALLBACK_USB_GetDescriptor+0x84>
80002444: 58 28 cp.w r8,2
80002446: c1 30 breq 8000246c <CALLBACK_USB_GetDescriptor+0x94>
80002448: 58 08 cp.w r8,0
8000244a: c1 81 brne 8000247a <CALLBACK_USB_GetDescriptor+0xa2>
{
case 0x00:
Address = &LanguageString;
8000244c: 49 38 lddpc r8,80002498 <CALLBACK_USB_GetDescriptor+0xc0>
8000244e: ef 48 ff f8 st.w r7[-8],r8
Size = pgm_read_byte(&LanguageString.Header.Size);
80002452: 49 28 lddpc r8,80002498 <CALLBACK_USB_GetDescriptor+0xc0>
80002454: 11 88 ld.ub r8,r8[0x0]
80002456: ef 58 ff fe st.h r7[-2],r8
break;
8000245a: c1 08 rjmp 8000247a <CALLBACK_USB_GetDescriptor+0xa2>
case 0x01:
Address = &ManufacturerString;
8000245c: 49 08 lddpc r8,8000249c <CALLBACK_USB_GetDescriptor+0xc4>
8000245e: ef 48 ff f8 st.w r7[-8],r8
Size = pgm_read_byte(&ManufacturerString.Header.Size);
80002462: 48 f8 lddpc r8,8000249c <CALLBACK_USB_GetDescriptor+0xc4>
80002464: 11 88 ld.ub r8,r8[0x0]
80002466: ef 58 ff fe st.h r7[-2],r8
break;
8000246a: c0 88 rjmp 8000247a <CALLBACK_USB_GetDescriptor+0xa2>
case 0x02:
Address = &ProductString;
8000246c: 48 d8 lddpc r8,800024a0 <CALLBACK_USB_GetDescriptor+0xc8>
8000246e: ef 48 ff f8 st.w r7[-8],r8
Size = pgm_read_byte(&ProductString.Header.Size);
80002472: 48 c8 lddpc r8,800024a0 <CALLBACK_USB_GetDescriptor+0xc8>
80002474: 11 88 ld.ub r8,r8[0x0]
80002476: ef 58 ff fe st.h r7[-2],r8
}
break;
}
*DescriptorAddress = Address;
8000247a: ee f8 ff e8 ld.w r8,r7[-24]
8000247e: ee f9 ff f8 ld.w r9,r7[-8]
80002482: 91 09 st.w r8[0x0],r9
return Size;
80002484: ef 08 ff fe ld.sh r8,r7[-2]
80002488: 10 9c mov r12,r8
8000248a: 2f ad sub sp,-24
8000248c: e3 cd 80 80 ldm sp++,r7,pc
80002490: 80 00 ld.sh r0,r0[0x0]
80002492: 23 50 sub r0,53
80002494: 80 00 ld.sh r0,r0[0x0]
80002496: 23 62 sub r2,54
80002498: 80 00 ld.sh r0,r0[0x0]
8000249a: 23 a0 sub r0,58
8000249c: 80 00 ld.sh r0,r0[0x0]
8000249e: 23 a4 sub r4,58
800024a0: 80 00 ld.sh r0,r0[0x0]
800024a2: 23 bc sub r12,59
800024a4 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi>:
volatile avr32_gpio_local_port_t *aery::lportb = &AVR32_GPIO_LOCAL.port[1];
volatile avr32_gpio_local_port_t *aery::lportc = &AVR32_GPIO_LOCAL.port[2];
void aery::gpio_init_pins(volatile avr32_gpio_port_t *pport, uint32_t pinmask,
int options)
{
800024a4: eb cd 40 80 pushm r7,lr
800024a8: 1a 97 mov r7,sp
800024aa: 20 3d sub sp,12
800024ac: ef 4c ff fc st.w r7[-4],r12
800024b0: ef 4b ff f8 st.w r7[-8],r11
800024b4: ef 4a ff f4 st.w r7[-12],r10
/*
* By default define pin to be controlled by the GPIO with output
* drivers disabled.
*/
pport->gpers = pinmask;
800024b8: ee f8 ff fc ld.w r8,r7[-4]
800024bc: ee f9 ff f8 ld.w r9,r7[-8]
800024c0: 91 19 st.w r8[0x4],r9
pport->oderc = pinmask;
800024c2: ee f8 ff fc ld.w r8,r7[-4]
800024c6: ee f9 ff f8 ld.w r9,r7[-8]
800024ca: f1 49 00 48 st.w r8[72],r9
switch (options & 0007) {
800024ce: ee f8 ff f4 ld.w r8,r7[-12]
800024d2: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
800024d6: 58 48 cp.w r8,4
800024d8: c2 80 breq 80002528 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x84>
800024da: e0 89 00 07 brgt 800024e8 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x44>
800024de: 58 28 cp.w r8,2
800024e0: c0 a0 breq 800024f4 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x50>
800024e2: 58 38 cp.w r8,3
800024e4: c1 50 breq 8000250e <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x6a>
800024e6: c6 08 rjmp 800025a6 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x102>
800024e8: 58 68 cp.w r8,6
800024ea: c3 f0 breq 80002568 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0xc4>
800024ec: c2 e5 brlt 80002548 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0xa4>
800024ee: 58 78 cp.w r8,7
800024f0: c4 c0 breq 80002588 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0xe4>
800024f2: c5 a8 rjmp 800025a6 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x102>
case 0002: /* Output */
pport->oders = pinmask;
800024f4: ee f8 ff fc ld.w r8,r7[-4]
800024f8: ee f9 ff f8 ld.w r9,r7[-8]
800024fc: f1 49 00 44 st.w r8[68],r9
pport->ovrc = pinmask;
80002500: ee f8 ff fc ld.w r8,r7[-4]
80002504: ee f9 ff f8 ld.w r9,r7[-8]
80002508: f1 49 00 58 st.w r8[88],r9
break;
8000250c: c4 d8 rjmp 800025a6 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x102>
case 0003: /* Output high */
pport->oders = pinmask;
8000250e: ee f8 ff fc ld.w r8,r7[-4]
80002512: ee f9 ff f8 ld.w r9,r7[-8]
80002516: f1 49 00 44 st.w r8[68],r9
pport->ovrs = pinmask;
8000251a: ee f8 ff fc ld.w r8,r7[-4]
8000251e: ee f9 ff f8 ld.w r9,r7[-8]
80002522: f1 49 00 54 st.w r8[84],r9
break;
80002526: c4 08 rjmp 800025a6 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x102>
* be controlled by the GPIO with output drivers disabled, as has been
* done by default. The pin can then be assured to be tri-stated while
* changing the Peripheral Mux Registers.
*/
case 0004: /* Peripheral Function A */
pport->pmr1c = pinmask;
80002528: ee f8 ff fc ld.w r8,r7[-4]
8000252c: ee f9 ff f8 ld.w r9,r7[-8]
80002530: 91 a9 st.w r8[0x28],r9
pport->pmr0c = pinmask;
80002532: ee f8 ff fc ld.w r8,r7[-4]
80002536: ee f9 ff f8 ld.w r9,r7[-8]
8000253a: 91 69 st.w r8[0x18],r9
pport->gperc = pinmask;
8000253c: ee f8 ff fc ld.w r8,r7[-4]
80002540: ee f9 ff f8 ld.w r9,r7[-8]
80002544: 91 29 st.w r8[0x8],r9
break;
80002546: c3 08 rjmp 800025a6 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x102>
case 0005: /* Peripheral Function B */
pport->pmr1c = pinmask;
80002548: ee f8 ff fc ld.w r8,r7[-4]
8000254c: ee f9 ff f8 ld.w r9,r7[-8]
80002550: 91 a9 st.w r8[0x28],r9
pport->pmr0s = pinmask;
80002552: ee f8 ff fc ld.w r8,r7[-4]
80002556: ee f9 ff f8 ld.w r9,r7[-8]
8000255a: 91 59 st.w r8[0x14],r9
pport->gperc = pinmask;
8000255c: ee f8 ff fc ld.w r8,r7[-4]
80002560: ee f9 ff f8 ld.w r9,r7[-8]
80002564: 91 29 st.w r8[0x8],r9
break;
80002566: c2 08 rjmp 800025a6 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x102>
case 0006: /* Peripheral Function C */
pport->pmr1s = pinmask;
80002568: ee f8 ff fc ld.w r8,r7[-4]
8000256c: ee f9 ff f8 ld.w r9,r7[-8]
80002570: 91 99 st.w r8[0x24],r9
pport->pmr0c = pinmask;
80002572: ee f8 ff fc ld.w r8,r7[-4]
80002576: ee f9 ff f8 ld.w r9,r7[-8]
8000257a: 91 69 st.w r8[0x18],r9
pport->gperc = pinmask;
8000257c: ee f8 ff fc ld.w r8,r7[-4]
80002580: ee f9 ff f8 ld.w r9,r7[-8]
80002584: 91 29 st.w r8[0x8],r9
break;
80002586: c1 08 rjmp 800025a6 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x102>
case 0007: /* Peripheral Function D */
pport->pmr1s = pinmask;
80002588: ee f8 ff fc ld.w r8,r7[-4]
8000258c: ee f9 ff f8 ld.w r9,r7[-8]
80002590: 91 99 st.w r8[0x24],r9
pport->pmr0s = pinmask;
80002592: ee f8 ff fc ld.w r8,r7[-4]
80002596: ee f9 ff f8 ld.w r9,r7[-8]
8000259a: 91 59 st.w r8[0x14],r9
pport->gperc = pinmask;
8000259c: ee f8 ff fc ld.w r8,r7[-4]
800025a0: ee f9 ff f8 ld.w r9,r7[-8]
800025a4: 91 29 st.w r8[0x8],r9
break;
}
if (options & 0040) {
800025a6: ee f8 ff f4 ld.w r8,r7[-12]
800025aa: e2 18 00 20 andl r8,0x20,COH
800025ae: c3 80 breq 8000261e <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x17a>
/*
* Interrupt can be enabled on a pin, regardless of the
* configuration the I/O line, i.e. controlled by the GPIO
* or assigned to a peripheral function. [ds, p.173]
*/
switch (options & 0030) {
800025b0: ee f8 ff f4 ld.w r8,r7[-12]
800025b4: e2 18 00 18 andl r8,0x18,COH
800025b8: 58 88 cp.w r8,8
800025ba: c1 20 breq 800025de <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x13a>
800025bc: 59 08 cp.w r8,16
800025be: c1 d0 breq 800025f8 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x154>
800025c0: 58 08 cp.w r8,0
800025c2: c2 71 brne 80002610 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x16c>
case 0000:
pport->imr0c = pinmask;
800025c4: ee f8 ff fc ld.w r8,r7[-4]
800025c8: ee f9 ff f8 ld.w r9,r7[-8]
800025cc: f1 49 00 a8 st.w r8[168],r9
pport->imr1c = pinmask;
800025d0: ee f8 ff fc ld.w r8,r7[-4]
800025d4: ee f9 ff f8 ld.w r9,r7[-8]
800025d8: f1 49 00 b8 st.w r8[184],r9
break;
800025dc: c1 a8 rjmp 80002610 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x16c>
case 0010:
pport->imr0s = pinmask;
800025de: ee f8 ff fc ld.w r8,r7[-4]
800025e2: ee f9 ff f8 ld.w r9,r7[-8]
800025e6: f1 49 00 a4 st.w r8[164],r9
pport->imr1c = pinmask;
800025ea: ee f8 ff fc ld.w r8,r7[-4]
800025ee: ee f9 ff f8 ld.w r9,r7[-8]
800025f2: f1 49 00 b8 st.w r8[184],r9
break;
800025f6: c0 d8 rjmp 80002610 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x16c>
case 0020:
pport->imr0c = pinmask;
800025f8: ee f8 ff fc ld.w r8,r7[-4]
800025fc: ee f9 ff f8 ld.w r9,r7[-8]
80002600: f1 49 00 a8 st.w r8[168],r9
pport->imr1s = pinmask;
80002604: ee f8 ff fc ld.w r8,r7[-4]
80002608: ee f9 ff f8 ld.w r9,r7[-8]
8000260c: f1 49 00 b4 st.w r8[180],r9
break;
}
pport->iers = pinmask;
80002610: ee f8 ff fc ld.w r8,r7[-4]
80002614: ee f9 ff f8 ld.w r9,r7[-8]
80002618: f1 49 00 94 st.w r8[148],r9
8000261c: c0 78 rjmp 8000262a <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x186>
} else {
pport->ierc = pinmask;
8000261e: ee f8 ff fc ld.w r8,r7[-4]
80002622: ee f9 ff f8 ld.w r9,r7[-8]
80002626: f1 49 00 98 st.w r8[152],r9
}
if (options & 0100) {
8000262a: ee f8 ff f4 ld.w r8,r7[-12]
8000262e: e2 18 00 40 andl r8,0x40,COH
80002632: c0 80 breq 80002642 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x19e>
/*
* Control of the pull-up resistor is possible whether an I/O
* line is controlled by a peripheral or the GPIO.
*/
pport->puers = pinmask;
80002634: ee f8 ff fc ld.w r8,r7[-4]
80002638: ee f9 ff f8 ld.w r9,r7[-8]
8000263c: f1 49 00 74 st.w r8[116],r9
80002640: c0 78 rjmp 8000264e <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x1aa>
} else {
pport->puerc = pinmask;
80002642: ee f8 ff fc ld.w r8,r7[-4]
80002646: ee f9 ff f8 ld.w r9,r7[-8]
8000264a: f1 49 00 78 st.w r8[120],r9
}
if (options & 0200) {
8000264e: ee f8 ff f4 ld.w r8,r7[-12]
80002652: e2 18 00 80 andl r8,0x80,COH
80002656: c0 80 breq 80002666 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x1c2>
/*
* The open drain mode can be selected whether the I/O line is
* controlled by the GPIO or assigned to a peripheral function.
*/
pport->odmers = pinmask;
80002658: ee f8 ff fc ld.w r8,r7[-4]
8000265c: ee f9 ff f8 ld.w r9,r7[-8]
80002660: f1 49 00 84 st.w r8[132],r9
80002664: c0 78 rjmp 80002672 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x1ce>
} else {
pport->odmerc = pinmask;
80002666: ee f8 ff fc ld.w r8,r7[-4]
8000266a: ee f9 ff f8 ld.w r9,r7[-8]
8000266e: f1 49 00 88 st.w r8[136],r9
}
if (options & 0400)
80002672: ee f8 ff f4 ld.w r8,r7[-12]
80002676: e2 18 01 00 andl r8,0x100,COH
8000267a: c0 80 breq 8000268a <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x1e6>
pport->gfers = pinmask;
8000267c: ee f8 ff fc ld.w r8,r7[-4]
80002680: ee f9 ff f8 ld.w r9,r7[-8]
80002684: f1 49 00 c4 st.w r8[196],r9
80002688: c0 78 rjmp 80002696 <_ZN4aery14gpio_init_pinsEPV17avr32_gpio_port_tmi+0x1f2>
else
pport->gferc = pinmask;
8000268a: ee f8 ff fc ld.w r8,r7[-4]
8000268e: ee f9 ff f8 ld.w r9,r7[-8]
80002692: f1 49 00 c8 st.w r8[200],r9
}
80002696: 2f dd sub sp,-12
80002698: e3 cd 80 80 ldm sp++,r7,pc
8000269c <_ZN4aery13gpio_init_pinEhi>:
void aery::gpio_init_pin(uint8_t pinnum, int options)
{
8000269c: eb cd 40 80 pushm r7,lr
800026a0: 1a 97 mov r7,sp
800026a2: 20 2d sub sp,8
800026a4: 18 98 mov r8,r12
800026a6: ef 4b ff f8 st.w r7[-8],r11
800026aa: ef 68 ff fc st.b r7[-4],r8
aery::gpio_init_pins(&AVR32_GPIO.port[GPIO_NUM2PORT(pinnum)],
(1UL << GPIO_NUM2PIN(pinnum)), options);
800026ae: ef 38 ff fc ld.ub r8,r7[-4]
800026b2: f1 d8 c0 05 bfextu r8,r8,0x0,0x5
800026b6: 30 19 mov r9,1
800026b8: f2 08 09 49 lsl r9,r9,r8
pport->gferc = pinmask;
}
void aery::gpio_init_pin(uint8_t pinnum, int options)
{
aery::gpio_init_pins(&AVR32_GPIO.port[GPIO_NUM2PORT(pinnum)],
800026bc: fe 7a 10 00 mov r10,-61440
800026c0: ef 38 ff fc ld.ub r8,r7[-4]
800026c4: a5 58 asr r8,0x5
(1UL << GPIO_NUM2PIN(pinnum)), options);
800026c6: a9 68 lsl r8,0x8
800026c8: f4 08 00 08 add r8,r10,r8
800026cc: ee fa ff f8 ld.w r10,r7[-8]
800026d0: 12 9b mov r11,r9
800026d2: 10 9c mov r12,r8
800026d4: f0 1f 00 03 mcall 800026e0 <_ZN4aery13gpio_init_pinEhi+0x44>
}
800026d8: 2f ed sub sp,-8
800026da: e3 cd 80 80 ldm sp++,r7,pc
800026de: 00 00 add r0,r0
800026e0: 80 00 ld.sh r0,r0[0x0]
800026e2: 24 a4 sub r4,74
800026e4 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE>:
#define CKSEL_GETDIV(VAR, SEL) \
((VAR & AVR32_PM_CKSEL_##SEL##SEL_MASK) >> AVR32_PM_CKSEL_##SEL##SEL_OFFSET)
int aery::pm_start_osc(uint8_t oscnum, enum Pm_osc_mode mode,
enum Pm_osc_startup startup)
{
800026e4: eb cd 40 80 pushm r7,lr
800026e8: 1a 97 mov r7,sp
800026ea: 20 3d sub sp,12
800026ec: 18 98 mov r8,r12
800026ee: ef 4b ff f8 st.w r7[-8],r11
800026f2: ef 4a ff f4 st.w r7[-12],r10
800026f6: ef 68 ff fc st.b r7[-4],r8
switch (oscnum) {
800026fa: ef 38 ff fc ld.ub r8,r7[-4]
800026fe: 58 18 cp.w r8,1
80002700: c3 90 breq 80002772 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x8e>
80002702: e0 48 00 20 cp.w r8,32
80002706: c6 80 breq 800027d6 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0xf2>
80002708: 58 08 cp.w r8,0
8000270a: e0 81 00 9c brne 80002842 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x15e>
case 0:
if (AVR32_PM.MCCTRL.osc0en == 1)
8000270e: fe 78 0c 00 mov r8,-62464
80002712: 70 08 ld.w r8,r8[0x0]
80002714: e2 18 00 04 andl r8,0x4,COH
80002718: 5f 18 srne r8
8000271a: 5c 58 castu.b r8
8000271c: c0 30 breq 80002722 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x3e>
return -1;
8000271e: 3f f8 mov r8,-1
80002720: c9 48 rjmp 80002848 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x164>
if (mode == OSC_MODE_OSC32)
80002722: ee f8 ff f8 ld.w r8,r7[-8]
80002726: 58 18 cp.w r8,1
80002728: c0 31 brne 8000272e <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x4a>
return -1;
8000272a: 3f f8 mov r8,-1
8000272c: c8 e8 rjmp 80002848 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x164>
AVR32_PM.OSCCTRL0.mode = mode;
8000272e: fe 79 0c 00 mov r9,-62464
80002732: ee f8 ff f8 ld.w r8,r7[-8]
80002736: 5c 58 castu.b r8
80002738: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
8000273c: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
80002740: 72 a8 ld.w r8,r9[0x28]
80002742: f1 da d0 03 bfins r8,r10,0x0,0x3
80002746: 93 a8 st.w r9[0x28],r8
AVR32_PM.OSCCTRL0.startup = startup;
80002748: fe 79 0c 00 mov r9,-62464
8000274c: ee f8 ff f4 ld.w r8,r7[-12]
80002750: 5c 58 castu.b r8
80002752: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
80002756: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
8000275a: 72 a8 ld.w r8,r9[0x28]
8000275c: f1 da d1 03 bfins r8,r10,0x8,0x3
80002760: 93 a8 st.w r9[0x28],r8
AVR32_PM.MCCTRL.osc0en = 1;
80002762: fe 79 0c 00 mov r9,-62464
80002766: 72 08 ld.w r8,r9[0x0]
80002768: 30 1a mov r10,1
8000276a: f1 da d0 41 bfins r8,r10,0x2,0x1
8000276e: 93 08 st.w r9[0x0],r8
break;
80002770: c6 b8 rjmp 80002846 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x162>
case 1:
if (AVR32_PM.MCCTRL.osc1en == 1)
80002772: fe 78 0c 00 mov r8,-62464
80002776: 70 08 ld.w r8,r8[0x0]
80002778: e2 18 00 08 andl r8,0x8,COH
8000277c: 5f 18 srne r8
8000277e: 5c 58 castu.b r8
80002780: c0 30 breq 80002786 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0xa2>
return -1;
80002782: 3f f8 mov r8,-1
80002784: c6 28 rjmp 80002848 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x164>
if (mode == OSC_MODE_OSC32)
80002786: ee f8 ff f8 ld.w r8,r7[-8]
8000278a: 58 18 cp.w r8,1
8000278c: c0 31 brne 80002792 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0xae>
return -1;
8000278e: 3f f8 mov r8,-1
80002790: c5 c8 rjmp 80002848 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x164>
AVR32_PM.OSCCTRL1.mode = mode;
80002792: fe 79 0c 00 mov r9,-62464
80002796: ee f8 ff f8 ld.w r8,r7[-8]
8000279a: 5c 58 castu.b r8
8000279c: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
800027a0: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
800027a4: 72 b8 ld.w r8,r9[0x2c]
800027a6: f1 da d0 03 bfins r8,r10,0x0,0x3
800027aa: 93 b8 st.w r9[0x2c],r8
AVR32_PM.OSCCTRL1.startup = startup;
800027ac: fe 79 0c 00 mov r9,-62464
800027b0: ee f8 ff f4 ld.w r8,r7[-12]
800027b4: 5c 58 castu.b r8
800027b6: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
800027ba: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
800027be: 72 b8 ld.w r8,r9[0x2c]
800027c0: f1 da d1 03 bfins r8,r10,0x8,0x3
800027c4: 93 b8 st.w r9[0x2c],r8
AVR32_PM.MCCTRL.osc1en = 1;
800027c6: fe 79 0c 00 mov r9,-62464
800027ca: 72 08 ld.w r8,r9[0x0]
800027cc: 30 1a mov r10,1
800027ce: f1 da d0 61 bfins r8,r10,0x3,0x1
800027d2: 93 08 st.w r9[0x0],r8
break;
800027d4: c3 98 rjmp 80002846 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x162>
case 32:
if (AVR32_PM.OSCCTRL32.osc32en == 1)
800027d6: fe 78 0c 00 mov r8,-62464
800027da: 70 c8 ld.w r8,r8[0x30]
800027dc: f1 d8 c0 01 bfextu r8,r8,0x0,0x1
800027e0: 5f 18 srne r8
800027e2: 5c 58 castu.b r8
800027e4: c0 30 breq 800027ea <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x106>
return -1;
800027e6: 3f f8 mov r8,-1
800027e8: c3 08 rjmp 80002848 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x164>
if (mode != OSC_MODE_OSC32 || mode != OSC_MODE_EXTERNAL)
800027ea: ee f8 ff f8 ld.w r8,r7[-8]
800027ee: 58 18 cp.w r8,1
800027f0: c0 51 brne 800027fa <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x116>
800027f2: ee f8 ff f8 ld.w r8,r7[-8]
800027f6: 58 08 cp.w r8,0
800027f8: c0 30 breq 800027fe <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x11a>
return -1;
800027fa: 3f f8 mov r8,-1
800027fc: c2 68 rjmp 80002848 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x164>
AVR32_PM.OSCCTRL32.mode = mode;
800027fe: fe 79 0c 00 mov r9,-62464
80002802: ee f8 ff f8 ld.w r8,r7[-8]
80002806: 5c 58 castu.b r8
80002808: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
8000280c: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
80002810: 72 c8 ld.w r8,r9[0x30]
80002812: f1 da d1 03 bfins r8,r10,0x8,0x3
80002816: 93 c8 st.w r9[0x30],r8
AVR32_PM.OSCCTRL32.startup = startup;
80002818: fe 79 0c 00 mov r9,-62464
8000281c: ee f8 ff f4 ld.w r8,r7[-12]
80002820: 5c 58 castu.b r8
80002822: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
80002826: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
8000282a: 72 c8 ld.w r8,r9[0x30]
8000282c: f1 da d2 03 bfins r8,r10,0x10,0x3
80002830: 93 c8 st.w r9[0x30],r8
AVR32_PM.OSCCTRL32.osc32en = 1;
80002832: fe 79 0c 00 mov r9,-62464
80002836: 72 c8 ld.w r8,r9[0x30]
80002838: 30 1a mov r10,1
8000283a: f1 da d0 01 bfins r8,r10,0x0,0x1
8000283e: 93 c8 st.w r9[0x30],r8
break;
80002840: c0 38 rjmp 80002846 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x162>
default:
return -1;
80002842: 3f f8 mov r8,-1
80002844: c0 28 rjmp 80002848 <_ZN4aery12pm_start_oscEhNS_11Pm_osc_modeENS_14Pm_osc_startupE+0x164>
}
return 0;
80002846: 30 08 mov r8,0
}
80002848: 10 9c mov r12,r8
8000284a: 2f dd sub sp,-12
8000284c: e3 cd 80 80 ldm sp++,r7,pc
80002850 <_ZN4aery14pm_init_pllvcoEPV14avr32_pm_pll_tNS_13Pm_pll_sourceEhhb>:
int aery::pm_init_pllvco(volatile avr32_pm_pll_t *ppll, enum Pm_pll_source src,
uint8_t mul, uint8_t div, bool hifreq)
{
80002850: eb cd 40 80 pushm r7,lr
80002854: 1a 97 mov r7,sp
80002856: 20 5d sub sp,20
80002858: ef 4c ff fc st.w r7[-4],r12
8000285c: ef 4b ff f8 st.w r7[-8],r11
80002860: ef 6a ff f4 st.b r7[-12],r10
80002864: ef 69 ff f0 st.b r7[-16],r9
80002868: ef 68 ff ec st.b r7[-20],r8
/* mul < 3, is not a typo */
if (mul < 3 || mul > 16)
8000286c: ef 39 ff f4 ld.ub r9,r7[-12]
80002870: 30 28 mov r8,2
80002872: f0 09 18 00 cp.b r9,r8
80002876: e0 88 00 09 brls 80002888 <_ZN4aery14pm_init_pllvcoEPV14avr32_pm_pll_tNS_13Pm_pll_sourceEhhb+0x38>
8000287a: ef 39 ff f4 ld.ub r9,r7[-12]
8000287e: 31 08 mov r8,16
80002880: f0 09 18 00 cp.b r9,r8
80002884: e0 88 00 04 brls 8000288c <_ZN4aery14pm_init_pllvcoEPV14avr32_pm_pll_tNS_13Pm_pll_sourceEhhb+0x3c>
return -1;
80002888: 3f f8 mov r8,-1
8000288a: c5 28 rjmp 8000292e <_ZN4aery14pm_init_pllvcoEPV14avr32_pm_pll_tNS_13Pm_pll_sourceEhhb+0xde>
ppll->plltest = 0;
8000288c: ee f9 ff fc ld.w r9,r7[-4]
80002890: 72 08 ld.w r8,r9[0x0]
80002892: 30 0a mov r10,0
80002894: f1 da d3 e1 bfins r8,r10,0x1f,0x1
80002898: 93 08 st.w r9[0x0],r8
ppll->plliotesten = 0;
8000289a: ee f9 ff fc ld.w r9,r7[-4]
8000289e: 72 08 ld.w r8,r9[0x0]
800028a0: 30 0a mov r10,0
800028a2: f1 da d3 c1 bfins r8,r10,0x1e,0x1
800028a6: 93 08 st.w r9[0x0],r8
ppll->pllcount = 63;
800028a8: ee f9 ff fc ld.w r9,r7[-4]
800028ac: 72 08 ld.w r8,r9[0x0]
800028ae: 33 fa mov r10,63
800028b0: f1 da d3 06 bfins r8,r10,0x18,0x6
800028b4: 93 08 st.w r9[0x0],r8
ppll->pllmul = mul - 1;
800028b6: ef 38 ff f4 ld.ub r8,r7[-12]
800028ba: 20 18 sub r8,1
800028bc: 5c 58 castu.b r8
800028be: f1 d8 c0 04 bfextu r8,r8,0x0,0x4
800028c2: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
800028c6: ee f9 ff fc ld.w r9,r7[-4]
800028ca: 72 08 ld.w r8,r9[0x0]
800028cc: f1 da d2 04 bfins r8,r10,0x10,0x4
800028d0: 93 08 st.w r9[0x0],r8
ppll->plldiv = (div & ~(0xf0));
800028d2: ef 38 ff f0 ld.ub r8,r7[-16]
800028d6: f1 d8 c0 04 bfextu r8,r8,0x0,0x4
800028da: 5c 58 castu.b r8
800028dc: f1 d8 c0 04 bfextu r8,r8,0x0,0x4
800028e0: f1 d8 c0 04 bfextu r8,r8,0x0,0x4
800028e4: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
800028e8: ee f9 ff fc ld.w r9,r7[-4]
800028ec: 72 08 ld.w r8,r9[0x0]
800028ee: f1 da d1 04 bfins r8,r10,0x8,0x4
800028f2: 93 08 st.w r9[0x0],r8
ppll->pllopt = (hifreq == true) ? 0b001 : 0b101;
800028f4: ef 39 ff ec ld.ub r9,r7[-20]
800028f8: 30 08 mov r8,0
800028fa: f0 09 18 00 cp.b r9,r8
800028fe: c0 30 breq 80002904 <_ZN4aery14pm_init_pllvcoEPV14avr32_pm_pll_tNS_13Pm_pll_sourceEhhb+0xb4>
80002900: 30 1a mov r10,1
80002902: c0 28 rjmp 80002906 <_ZN4aery14pm_init_pllvcoEPV14avr32_pm_pll_tNS_13Pm_pll_sourceEhhb+0xb6>
80002904: 30 5a mov r10,5
80002906: ee f9 ff fc ld.w r9,r7[-4]
8000290a: 72 08 ld.w r8,r9[0x0]
8000290c: f1 da d0 43 bfins r8,r10,0x2,0x3
80002910: 93 08 st.w r9[0x0],r8
ppll->pllosc = src;
80002912: ee f8 ff f8 ld.w r8,r7[-8]
80002916: 5c 58 castu.b r8
80002918: f1 d8 c0 01 bfextu r8,r8,0x0,0x1
8000291c: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
80002920: ee f9 ff fc ld.w r9,r7[-4]
80002924: 72 08 ld.w r8,r9[0x0]
80002926: f1 da d0 21 bfins r8,r10,0x1,0x1
8000292a: 93 08 st.w r9[0x0],r8
return 0;
8000292c: 30 08 mov r8,0
}
8000292e: 10 9c mov r12,r8
80002930: 2f bd sub sp,-20
80002932: e3 cd 80 80 ldm sp++,r7,pc
80002936 <_ZN4aery13pm_enable_pllEPV14avr32_pm_pll_tb>:
void aery::pm_enable_pll(volatile avr32_pm_pll_t *ppll, bool divby2)
{
80002936: eb cd 40 80 pushm r7,lr
8000293a: 1a 97 mov r7,sp
8000293c: 20 2d sub sp,8
8000293e: ef 4c ff fc st.w r7[-4],r12
80002942: 16 98 mov r8,r11
80002944: ef 68 ff f8 st.b r7[-8],r8
switch (divby2) {
80002948: ef 38 ff f8 ld.ub r8,r7[-8]
8000294c: 58 18 cp.w r8,1
8000294e: c1 51 brne 80002978 <_ZN4aery13pm_enable_pllEPV14avr32_pm_pll_tb+0x42>
case true:
ppll->pllopt |= 2;
80002950: ee f8 ff fc ld.w r8,r7[-4]
80002954: 70 08 ld.w r8,r8[0x0]
80002956: f1 d8 c0 43 bfextu r8,r8,0x2,0x3
8000295a: 5c 58 castu.b r8
8000295c: a1 b8 sbr r8,0x1
8000295e: 5c 58 castu.b r8
80002960: 5c 58 castu.b r8
80002962: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
80002966: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
8000296a: ee f9 ff fc ld.w r9,r7[-4]
8000296e: 72 08 ld.w r8,r9[0x0]
80002970: f1 da d0 43 bfins r8,r10,0x2,0x3
80002974: 93 08 st.w r9[0x0],r8
break;
80002976: c1 38 rjmp 8000299c <_ZN4aery13pm_enable_pllEPV14avr32_pm_pll_tb+0x66>
case false:
ppll->pllopt &= ~2;
80002978: ee f8 ff fc ld.w r8,r7[-4]
8000297c: 70 08 ld.w r8,r8[0x0]
8000297e: f1 d8 c0 43 bfextu r8,r8,0x2,0x3
80002982: 5c 58 castu.b r8
80002984: e2 18 00 05 andl r8,0x5,COH
80002988: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
8000298c: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
80002990: ee f9 ff fc ld.w r9,r7[-4]
80002994: 72 08 ld.w r8,r9[0x0]
80002996: f1 da d0 43 bfins r8,r10,0x2,0x3
8000299a: 93 08 st.w r9[0x0],r8
break;
}
ppll->pllen = 1;
8000299c: ee f9 ff fc ld.w r9,r7[-4]
800029a0: 72 08 ld.w r8,r9[0x0]
800029a2: 30 1a mov r10,1
800029a4: f1 da d0 01 bfins r8,r10,0x0,0x1
800029a8: 93 08 st.w r9[0x0],r8
}
800029aa: 2f ed sub sp,-8
800029ac: e3 cd 80 80 ldm sp++,r7,pc
800029b0 <_ZN4aery12pm_init_gclkENS_7Pm_gclkENS_14Pm_gclk_sourceEt>:
int aery::pm_init_gclk(enum Pm_gclk clknum, enum Pm_gclk_source clksrc,
uint16_t clkdiv)
{
800029b0: eb cd 40 80 pushm r7,lr
800029b4: 1a 97 mov r7,sp
800029b6: 20 5d sub sp,20
800029b8: ef 4c ff f4 st.w r7[-12],r12
800029bc: ef 4b ff f0 st.w r7[-16],r11
800029c0: 14 98 mov r8,r10
800029c2: ef 58 ff ec st.h r7[-20],r8
volatile avr32_pm_gcctrl_t *gclock = &(AVR32_PM.GCCTRL[clknum]);
800029c6: fe 79 0c 00 mov r9,-62464
800029ca: ee f8 ff f4 ld.w r8,r7[-12]
800029ce: 2e 88 sub r8,-24
800029d0: a3 68 lsl r8,0x2
800029d2: f2 08 00 08 add r8,r9,r8
800029d6: ef 48 ff f8 st.w r7[-8],r8
bool was_enabled = (bool) gclock->cen;
800029da: ee f8 ff f8 ld.w r8,r7[-8]
800029de: 70 08 ld.w r8,r8[0x0]
800029e0: e2 18 00 04 andl r8,0x4,COH
800029e4: 5f 18 srne r8
800029e6: ef 68 ff ff st.b r7[-1],r8
if (clkdiv > 256)
800029ea: ef 09 ff ec ld.sh r9,r7[-20]
800029ee: e0 68 01 00 mov r8,256
800029f2: f0 09 19 00 cp.h r9,r8
800029f6: e0 88 00 04 brls 800029fe <_ZN4aery12pm_init_gclkENS_7Pm_gclkENS_14Pm_gclk_sourceEt+0x4e>
return -1;
800029fa: 3f f8 mov r8,-1
800029fc: c4 a8 rjmp 80002a90 <_ZN4aery12pm_init_gclkENS_7Pm_gclkENS_14Pm_gclk_sourceEt+0xe0>
/*
* Disable general clock before init to prevent glitches on the clock
* during the possible reinitialization.
*/
aery::pm_disable_gclk(clknum);
800029fe: ee fc ff f4 ld.w r12,r7[-12]
80002a02: f0 1f 00 26 mcall 80002a98 <_ZN4aery12pm_init_gclkENS_7Pm_gclkENS_14Pm_gclk_sourceEt+0xe8>
/* Select clock source */
gclock->oscsel = (bool) (clksrc & 1);
80002a06: ee f8 ff f0 ld.w r8,r7[-16]
80002a0a: f1 d8 c0 01 bfextu r8,r8,0x0,0x1
80002a0e: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
80002a12: ee f9 ff f8 ld.w r9,r7[-8]
80002a16: 72 08 ld.w r8,r9[0x0]
80002a18: f1 da d0 01 bfins r8,r10,0x0,0x1
80002a1c: 93 08 st.w r9[0x0],r8
gclock->pllsel = (bool) (clksrc & 2);
80002a1e: ee f8 ff f0 ld.w r8,r7[-16]
80002a22: e2 18 00 02 andl r8,0x2,COH
80002a26: 5f 18 srne r8
80002a28: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
80002a2c: ee f9 ff f8 ld.w r9,r7[-8]
80002a30: 72 08 ld.w r8,r9[0x0]
80002a32: f1 da d0 21 bfins r8,r10,0x1,0x1
80002a36: 93 08 st.w r9[0x0],r8
if (clkdiv > 0) {
80002a38: ef 09 ff ec ld.sh r9,r7[-20]
80002a3c: 30 08 mov r8,0
80002a3e: f0 09 19 00 cp.h r9,r8
80002a42: c1 50 breq 80002a6c <_ZN4aery12pm_init_gclkENS_7Pm_gclkENS_14Pm_gclk_sourceEt+0xbc>
gclock->diven = 1;
80002a44: ee f9 ff f8 ld.w r9,r7[-8]
80002a48: 72 08 ld.w r8,r9[0x0]
80002a4a: 30 1a mov r10,1
80002a4c: f1 da d0 81 bfins r8,r10,0x4,0x1
80002a50: 93 08 st.w r9[0x0],r8
gclock->div = clkdiv - 1;
80002a52: ef 08 ff ec ld.sh r8,r7[-20]
80002a56: 5c 58 castu.b r8
80002a58: 20 18 sub r8,1
80002a5a: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
80002a5e: ee f9 ff f8 ld.w r9,r7[-8]
80002a62: 72 08 ld.w r8,r9[0x0]
80002a64: f1 da d1 08 bfins r8,r10,0x8,0x8
80002a68: 93 08 st.w r9[0x0],r8
80002a6a: c0 88 rjmp 80002a7a <_ZN4aery12pm_init_gclkENS_7Pm_gclkENS_14Pm_gclk_sourceEt+0xca>
} else {
gclock->diven = 0;
80002a6c: ee f9 ff f8 ld.w r9,r7[-8]
80002a70: 72 08 ld.w r8,r9[0x0]
80002a72: 30 0a mov r10,0
80002a74: f1 da d0 81 bfins r8,r10,0x4,0x1
80002a78: 93 08 st.w r9[0x0],r8
}
if (was_enabled)
80002a7a: ef 39 ff ff ld.ub r9,r7[-1]
80002a7e: 30 08 mov r8,0
80002a80: f0 09 18 00 cp.b r9,r8
80002a84: c0 50 breq 80002a8e <_ZN4aery12pm_init_gclkENS_7Pm_gclkENS_14Pm_gclk_sourceEt+0xde>
aery::pm_enable_gclk(clknum);
80002a86: ee fc ff f4 ld.w r12,r7[-12]
80002a8a: f0 1f 00 05 mcall 80002a9c <_ZN4aery12pm_init_gclkENS_7Pm_gclkENS_14Pm_gclk_sourceEt+0xec>
return 0;
80002a8e: 30 08 mov r8,0
}
80002a90: 10 9c mov r12,r8
80002a92: 2f bd sub sp,-20
80002a94: e3 cd 80 80 ldm sp++,r7,pc
80002a98: 80 00 ld.sh r0,r0[0x0]
80002a9a: 2b 7a sub r10,-73
80002a9c: 80 00 ld.sh r0,r0[0x0]
80002a9e: 2b 4e sub lr,-76
80002aa0 <_ZN4aery24pm_wait_osc_to_stabilizeEh>:
void aery::pm_wait_osc_to_stabilize(uint8_t oscnum)
{
80002aa0: eb cd 40 80 pushm r7,lr
80002aa4: 1a 97 mov r7,sp
80002aa6: 20 1d sub sp,4
80002aa8: 18 98 mov r8,r12
80002aaa: ef 68 ff fc st.b r7[-4],r8
switch (oscnum) {
80002aae: ef 38 ff fc ld.ub r8,r7[-4]
80002ab2: 58 18 cp.w r8,1
80002ab4: c0 f0 breq 80002ad2 <_ZN4aery24pm_wait_osc_to_stabilizeEh+0x32>
80002ab6: e0 48 00 20 cp.w r8,32
80002aba: c1 50 breq 80002ae4 <_ZN4aery24pm_wait_osc_to_stabilizeEh+0x44>
80002abc: 58 08 cp.w r8,0
80002abe: c1 b1 brne 80002af4 <_ZN4aery24pm_wait_osc_to_stabilizeEh+0x54>
case 0:
while (!(AVR32_PM.isr & AVR32_PM_ISR_OSC0RDY_MASK));
80002ac0: fe 78 0c 00 mov r8,-62464
80002ac4: 71 38 ld.w r8,r8[0x4c]
80002ac6: e2 18 00 80 andl r8,0x80,COH
80002aca: 5f 08 sreq r8
80002acc: 5c 58 castu.b r8
80002ace: cf 91 brne 80002ac0 <_ZN4aery24pm_wait_osc_to_stabilizeEh+0x20>
break;
80002ad0: c1 28 rjmp 80002af4 <_ZN4aery24pm_wait_osc_to_stabilizeEh+0x54>
case 1:
while (!(AVR32_PM.isr & AVR32_PM_ISR_OSC1RDY_MASK));
80002ad2: fe 78 0c 00 mov r8,-62464
80002ad6: 71 38 ld.w r8,r8[0x4c]
80002ad8: e2 18 01 00 andl r8,0x100,COH
80002adc: 5f 08 sreq r8
80002ade: 5c 58 castu.b r8
80002ae0: cf 91 brne 80002ad2 <_ZN4aery24pm_wait_osc_to_stabilizeEh+0x32>
break;
80002ae2: c0 98 rjmp 80002af4 <_ZN4aery24pm_wait_osc_to_stabilizeEh+0x54>
case 32:
while (!(AVR32_PM.isr & AVR32_PM_ISR_OSC32RDY_MASK));
80002ae4: fe 78 0c 00 mov r8,-62464
80002ae8: 71 38 ld.w r8,r8[0x4c]
80002aea: e2 18 02 00 andl r8,0x200,COH
80002aee: 5f 08 sreq r8
80002af0: 5c 58 castu.b r8
80002af2: cf 91 brne 80002ae4 <_ZN4aery24pm_wait_osc_to_stabilizeEh+0x44>
break;
}
}
80002af4: 2f fd sub sp,-4
80002af6: e3 cd 80 80 ldm sp++,r7,pc
80002afa <_ZN4aery19pm_wait_pll_to_lockEPV14avr32_pm_pll_t>:
void aery::pm_wait_pll_to_lock(volatile avr32_pm_pll_t *ppll)
{
80002afa: eb cd 40 80 pushm r7,lr
80002afe: 1a 97 mov r7,sp
80002b00: 20 1d sub sp,4
80002b02: ef 4c ff fc st.w r7[-4],r12
if (ppll == &AVR32_PM.PLL[0]) {
80002b06: fe 78 0c 00 mov r8,-62464
80002b0a: 2e 08 sub r8,-32
80002b0c: ee f9 ff fc ld.w r9,r7[-4]
80002b10: 10 39 cp.w r9,r8
80002b12: c0 c1 brne 80002b2a <_ZN4aery19pm_wait_pll_to_lockEPV14avr32_pm_pll_t+0x30>
while (!(AVR32_PM.isr & AVR32_PM_ISR_LOCK0_MASK));
80002b14: fe 78 0c 00 mov r8,-62464
80002b18: 71 38 ld.w r8,r8[0x4c]
80002b1a: f1 d8 c0 01 bfextu r8,r8,0x0,0x1
80002b1e: 5c 58 castu.b r8
80002b20: ec 18 00 01 eorl r8,0x1
80002b24: 5c 58 castu.b r8
80002b26: cf 71 brne 80002b14 <_ZN4aery19pm_wait_pll_to_lockEPV14avr32_pm_pll_t+0x1a>
80002b28: c1 08 rjmp 80002b48 <_ZN4aery19pm_wait_pll_to_lockEPV14avr32_pm_pll_t+0x4e>
} else if (ppll == &AVR32_PM.PLL[1]) {
80002b2a: fe 78 0c 00 mov r8,-62464
80002b2e: 2d c8 sub r8,-36
80002b30: ee f9 ff fc ld.w r9,r7[-4]
80002b34: 10 39 cp.w r9,r8
80002b36: c0 91 brne 80002b48 <_ZN4aery19pm_wait_pll_to_lockEPV14avr32_pm_pll_t+0x4e>
while (!(AVR32_PM.isr & AVR32_PM_ISR_LOCK1_MASK));
80002b38: fe 78 0c 00 mov r8,-62464
80002b3c: 71 38 ld.w r8,r8[0x4c]
80002b3e: e2 18 00 02 andl r8,0x2,COH
80002b42: 5f 08 sreq r8
80002b44: 5c 58 castu.b r8
80002b46: cf 91 brne 80002b38 <_ZN4aery19pm_wait_pll_to_lockEPV14avr32_pm_pll_t+0x3e>
}
}
80002b48: 2f fd sub sp,-4
80002b4a: e3 cd 80 80 ldm sp++,r7,pc
80002b4e <_ZN4aery14pm_enable_gclkENS_7Pm_gclkE>:
void aery::pm_enable_gclk(enum Pm_gclk clknum)
{
80002b4e: eb cd 40 80 pushm r7,lr
80002b52: 1a 97 mov r7,sp
80002b54: 20 1d sub sp,4
80002b56: ef 4c ff fc st.w r7[-4],r12
AVR32_PM.GCCTRL[clknum].cen = 1;
80002b5a: fe 79 0c 00 mov r9,-62464
80002b5e: ee f8 ff fc ld.w r8,r7[-4]
80002b62: f0 ca ff e8 sub r10,r8,-24
80002b66: f2 0a 03 28 ld.w r8,r9[r10<<0x2]
80002b6a: 30 1b mov r11,1
80002b6c: f1 db d0 41 bfins r8,r11,0x2,0x1
80002b70: f2 0a 09 28 st.w r9[r10<<0x2],r8
}
80002b74: 2f fd sub sp,-4
80002b76: e3 cd 80 80 ldm sp++,r7,pc
80002b7a <_ZN4aery15pm_disable_gclkENS_7Pm_gclkE>:
void aery::pm_disable_gclk(enum Pm_gclk clknum)
{
80002b7a: eb cd 40 80 pushm r7,lr
80002b7e: 1a 97 mov r7,sp
80002b80: 20 1d sub sp,4
80002b82: ef 4c ff fc st.w r7[-4],r12
AVR32_PM.GCCTRL[clknum].cen = 0;
80002b86: fe 79 0c 00 mov r9,-62464
80002b8a: ee f8 ff fc ld.w r8,r7[-4]
80002b8e: f0 ca ff e8 sub r10,r8,-24
80002b92: f2 0a 03 28 ld.w r8,r9[r10<<0x2]
80002b96: 30 0b mov r11,0
80002b98: f1 db d0 41 bfins r8,r11,0x2,0x1
80002b9c: f2 0a 09 28 st.w r9[r10<<0x2],r8
/* We have to wait before cen reads zero. */
while (AVR32_PM.GCCTRL[clknum].cen);
80002ba0: fe 78 0c 00 mov r8,-62464
80002ba4: ee f9 ff fc ld.w r9,r7[-4]
80002ba8: 2e 89 sub r9,-24
80002baa: f0 09 03 28 ld.w r8,r8[r9<<0x2]
80002bae: f1 d8 c0 41 bfextu r8,r8,0x2,0x1
80002bb2: f3 d8 c0 08 bfextu r9,r8,0x0,0x8
80002bb6: 30 08 mov r8,0
80002bb8: f0 09 18 00 cp.b r9,r8
80002bbc: 5f 18 srne r8
80002bbe: 5c 58 castu.b r8
80002bc0: cf 01 brne 80002ba0 <_ZN4aery15pm_disable_gclkENS_7Pm_gclkE+0x26>
}
80002bc2: 2f fd sub sp,-4
80002bc4: e3 cd 80 80 ldm sp++,r7,pc
80002bc8 <_ZN4aery13pm_select_mckENS_13Pm_mck_sourceE>:
void aery::pm_select_mck(enum Pm_mck_source mcksrc)
{
80002bc8: eb cd 40 80 pushm r7,lr
80002bcc: 1a 97 mov r7,sp
80002bce: 20 1d sub sp,4
80002bd0: ef 4c ff fc st.w r7[-4],r12
AVR32_PM.MCCTRL.mcsel = mcksrc;
80002bd4: fe 79 0c 00 mov r9,-62464
80002bd8: ee f8 ff fc ld.w r8,r7[-4]
80002bdc: 5c 58 castu.b r8
80002bde: f1 d8 c0 02 bfextu r8,r8,0x0,0x2
80002be2: f5 d8 c0 08 bfextu r10,r8,0x0,0x8
80002be6: 72 08 ld.w r8,r9[0x0]
80002be8: f1 da d0 02 bfins r8,r10,0x0,0x2
80002bec: 93 08 st.w r9[0x0],r8
}
80002bee: 2f fd sub sp,-4
80002bf0: e3 cd 80 80 ldm sp++,r7,pc
80002bf4 <_ZN4aery11pm_get_fmckEv>:
uint32_t aery::pm_get_fmck(void)
{
80002bf4: eb cd 40 80 pushm r7,lr
80002bf8: 1a 97 mov r7,sp
80002bfa: 20 2d sub sp,8
uint32_t mck = 0;
80002bfc: 30 08 mov r8,0
80002bfe: ef 48 ff f8 st.w r7[-8],r8
volatile avr32_pm_pll_t *pll0 = &AVR32_PM.PLL[0];
80002c02: fe 78 0c 00 mov r8,-62464
80002c06: 2e 08 sub r8,-32
80002c08: ef 48 ff fc st.w r7[-4],r8
switch (AVR32_PM.MCCTRL.mcsel) {
80002c0c: fe 78 0c 00 mov r8,-62464
80002c10: 70 08 ld.w r8,r8[0x0]
80002c12: f1 d8 c0 02 bfextu r8,r8,0x0,0x2
80002c16: 5c 58 castu.b r8
80002c18: 58 18 cp.w r8,1
80002c1a: c0 a0 breq 80002c2e <_ZN4aery11pm_get_fmckEv+0x3a>
80002c1c: 58 28 cp.w r8,2
80002c1e: c0 f0 breq 80002c3c <_ZN4aery11pm_get_fmckEv+0x48>
80002c20: 58 08 cp.w r8,0
80002c22: c6 21 brne 80002ce6 <_ZN4aery11pm_get_fmckEv+0xf2>
case 0:
mck = F_SLOWCLK;
80002c24: e0 78 c1 38 mov r8,115000
80002c28: ef 48 ff f8 st.w r7[-8],r8
break;
80002c2c: c5 d8 rjmp 80002ce6 <_ZN4aery11pm_get_fmckEv+0xf2>
case 1:
mck = F_OSC0;
80002c2e: e0 68 1b 00 mov r8,6912
80002c32: ea 18 00 b7 orh r8,0xb7
80002c36: ef 48 ff f8 st.w r7[-8],r8
break;
80002c3a: c5 68 rjmp 80002ce6 <_ZN4aery11pm_get_fmckEv+0xf2>
case 2:
if (pll0->pllosc == 0)
80002c3c: ee f8 ff fc ld.w r8,r7[-4]
80002c40: 70 08 ld.w r8,r8[0x0]
80002c42: e2 18 00 02 andl r8,0x2,COH
80002c46: 5f 08 sreq r8
80002c48: 5c 58 castu.b r8
80002c4a: c0 80 breq 80002c5a <_ZN4aery11pm_get_fmckEv+0x66>
mck = F_OSC0;
80002c4c: e0 68 1b 00 mov r8,6912
80002c50: ea 18 00 b7 orh r8,0xb7
80002c54: ef 48 ff f8 st.w r7[-8],r8
80002c58: c0 78 rjmp 80002c66 <_ZN4aery11pm_get_fmckEv+0x72>
else
mck = F_OSC1;
80002c5a: e0 68 24 00 mov r8,9216
80002c5e: ea 18 00 f4 orh r8,0xf4
80002c62: ef 48 ff f8 st.w r7[-8],r8
if (pll0->plldiv > 0)
80002c66: ee f8 ff fc ld.w r8,r7[-4]
80002c6a: 70 08 ld.w r8,r8[0x0]
80002c6c: f1 d8 c1 04 bfextu r8,r8,0x8,0x4
80002c70: 5c 58 castu.b r8
80002c72: 58 08 cp.w r8,0
80002c74: 5f 98 srgt r8
80002c76: 5c 58 castu.b r8
80002c78: c1 80 breq 80002ca8 <_ZN4aery11pm_get_fmckEv+0xb4>
mck *= (pll0->pllmul + 1) / pll0->plldiv;
80002c7a: ee f8 ff fc ld.w r8,r7[-4]
80002c7e: 70 08 ld.w r8,r8[0x0]
80002c80: f1 d8 c2 04 bfextu r8,r8,0x10,0x4
80002c84: 5c 58 castu.b r8
80002c86: f0 c9 ff ff sub r9,r8,-1
80002c8a: ee f8 ff fc ld.w r8,r7[-4]
80002c8e: 70 08 ld.w r8,r8[0x0]
80002c90: f1 d8 c1 04 bfextu r8,r8,0x8,0x4
80002c94: 5c 58 castu.b r8
80002c96: f2 08 0c 08 divs r8,r9,r8
80002c9a: ee f9 ff f8 ld.w r9,r7[-8]
80002c9e: f2 08 02 48 mul r8,r9,r8
80002ca2: ef 48 ff f8 st.w r7[-8],r8
80002ca6: c1 08 rjmp 80002cc6 <_ZN4aery11pm_get_fmckEv+0xd2>
else
mck *= 2 * (pll0->pllmul + 1);
80002ca8: ee f8 ff fc ld.w r8,r7[-4]
80002cac: 70 08 ld.w r8,r8[0x0]
80002cae: f1 d8 c2 04 bfextu r8,r8,0x10,0x4
80002cb2: 5c 58 castu.b r8
80002cb4: 2f f8 sub r8,-1
80002cb6: 10 99 mov r9,r8
80002cb8: ee f8 ff f8 ld.w r8,r7[-8]
80002cbc: f2 08 02 48 mul r8,r9,r8
80002cc0: a1 78 lsl r8,0x1
80002cc2: ef 48 ff f8 st.w r7[-8],r8
if (pll0->pllopt & 2)
80002cc6: ee f8 ff fc ld.w r8,r7[-4]
80002cca: 70 08 ld.w r8,r8[0x0]
80002ccc: f1 d8 c0 43 bfextu r8,r8,0x2,0x3
80002cd0: 5c 58 castu.b r8
80002cd2: e2 18 00 02 andl r8,0x2,COH
80002cd6: 5f 18 srne r8
80002cd8: 5c 58 castu.b r8
80002cda: c0 60 breq 80002ce6 <_ZN4aery11pm_get_fmckEv+0xf2>
mck /= 2;
80002cdc: ee f8 ff f8 ld.w r8,r7[-8]
80002ce0: a1 98 lsr r8,0x1
80002ce2: ef 48 ff f8 st.w r7[-8],r8
break;
}
return mck;
80002ce6: ee f8 ff f8 ld.w r8,r7[-8]
}
80002cea: 10 9c mov r12,r8
80002cec: 2f ed sub sp,-8
80002cee: e3 cd 80 80 ldm sp++,r7,pc
80002cf2 <_ZN4aery18pm_setup_clkdomainEhh>:
int aery::pm_setup_clkdomain(uint8_t prescal, uint8_t domain)
{
80002cf2: eb cd 40 80 pushm r7,lr
80002cf6: 1a 97 mov r7,sp
80002cf8: 20 3d sub sp,12
80002cfa: 18 99 mov r9,r12
80002cfc: 16 98 mov r8,r11
80002cfe: ef 69 ff f8 st.b r7[-8],r9
80002d02: ef 68 ff f4 st.b r7[-12],r8
uint32_t cksel = AVR32_PM.cksel;
80002d06: fe 78 0c 00 mov r8,-62464
80002d0a: 70 18 ld.w r8,r8[0x4]
80002d0c: ef 48 ff fc st.w r7[-4],r8
if (prescal != 0 && prescal > 8)
80002d10: ef 39 ff f8 ld.ub r9,r7[-8]
80002d14: 30 08 mov r8,0
80002d16: f0 09 18 00 cp.b r9,r8
80002d1a: c0 a0 breq 80002d2e <_ZN4aery18pm_setup_clkdomainEhh+0x3c>
80002d1c: ef 39 ff f8 ld.ub r9,r7[-8]
80002d20: 30 88 mov r8,8
80002d22: f0 09 18 00 cp.b r9,r8
80002d26: e0 88 00 04 brls 80002d2e <_ZN4aery18pm_setup_clkdomainEhh+0x3c>
return -1;
80002d2a: 3f f8 mov r8,-1
80002d2c: c9 e8 rjmp 80002e68 <_ZN4aery18pm_setup_clkdomainEhh+0x176>
if (domain & CLKDOMAIN_CPU) {
80002d2e: ef 38 ff f4 ld.ub r8,r7[-12]
80002d32: f1 d8 c0 01 bfextu r8,r8,0x0,0x1
80002d36: 5c 58 castu.b r8
80002d38: c2 40 breq 80002d80 <_ZN4aery18pm_setup_clkdomainEhh+0x8e>
cksel &= CKSEL_RESET_MASK(CPU);
80002d3a: ee f8 ff fc ld.w r8,r7[-4]
80002d3e: e0 18 ff 78 andl r8,0xff78
80002d42: ef 48 ff fc st.w r7[-4],r8
if (prescal != 0) {
80002d46: ef 39 ff f8 ld.ub r9,r7[-8]
80002d4a: 30 08 mov r8,0
80002d4c: f0 09 18 00 cp.b r9,r8
80002d50: c1 80 breq 80002d80 <_ZN4aery18pm_setup_clkdomainEhh+0x8e>
cksel |= CKSEL_PRESCALER_MASK(prescal, CPU);
80002d52: ef 38 ff f8 ld.ub r8,r7[-8]
80002d56: 20 18 sub r8,1
80002d58: 10 99 mov r9,r8
80002d5a: ee f8 ff fc ld.w r8,r7[-4]
80002d5e: f3 e8 10 08 or r8,r9,r8
80002d62: a7 b8 sbr r8,0x7
80002d64: ef 48 ff fc st.w r7[-4],r8
cksel |= CKSEL_PRESCALER_MASK(prescal, HSB);
80002d68: ef 38 ff f8 ld.ub r8,r7[-8]
80002d6c: 20 18 sub r8,1
80002d6e: a9 68 lsl r8,0x8
80002d70: 10 99 mov r9,r8
80002d72: ee f8 ff fc ld.w r8,r7[-4]
80002d76: f3 e8 10 08 or r8,r9,r8
80002d7a: af b8 sbr r8,0xf
80002d7c: ef 48 ff fc st.w r7[-4],r8
}
}
if (domain & CLKDOMAIN_PBA) {
80002d80: ef 38 ff f4 ld.ub r8,r7[-12]
80002d84: e2 18 00 02 andl r8,0x2,COH
80002d88: c1 90 breq 80002dba <_ZN4aery18pm_setup_clkdomainEhh+0xc8>
cksel &= CKSEL_RESET_MASK(PBA);
80002d8a: ee f8 ff fc ld.w r8,r7[-4]
80002d8e: e4 18 ff 78 andh r8,0xff78
80002d92: ef 48 ff fc st.w r7[-4],r8
if (prescal != 0)
80002d96: ef 39 ff f8 ld.ub r9,r7[-8]
80002d9a: 30 08 mov r8,0
80002d9c: f0 09 18 00 cp.b r9,r8
80002da0: c0 d0 breq 80002dba <_ZN4aery18pm_setup_clkdomainEhh+0xc8>
cksel |= CKSEL_PRESCALER_MASK(prescal, PBA);
80002da2: ef 38 ff f8 ld.ub r8,r7[-8]
80002da6: 20 18 sub r8,1
80002da8: b1 68 lsl r8,0x10
80002daa: 10 99 mov r9,r8
80002dac: ee f8 ff fc ld.w r8,r7[-4]
80002db0: f3 e8 10 08 or r8,r9,r8
80002db4: b7 b8 sbr r8,0x17
80002db6: ef 48 ff fc st.w r7[-4],r8
}
if (domain & CLKDOMAIN_PBB) {
80002dba: ef 38 ff f4 ld.ub r8,r7[-12]
80002dbe: e2 18 00 04 andl r8,0x4,COH
80002dc2: c1 90 breq 80002df4 <_ZN4aery18pm_setup_clkdomainEhh+0x102>
cksel &= CKSEL_RESET_MASK(PBB);
80002dc4: ee f8 ff fc ld.w r8,r7[-4]
80002dc8: e4 18 78 ff andh r8,0x78ff
80002dcc: ef 48 ff fc st.w r7[-4],r8
if (prescal != 0)
80002dd0: ef 39 ff f8 ld.ub r9,r7[-8]
80002dd4: 30 08 mov r8,0
80002dd6: f0 09 18 00 cp.b r9,r8
80002dda: c0 d0 breq 80002df4 <_ZN4aery18pm_setup_clkdomainEhh+0x102>
cksel |= CKSEL_PRESCALER_MASK(prescal, PBB);
80002ddc: ef 38 ff f8 ld.ub r8,r7[-8]
80002de0: 20 18 sub r8,1
80002de2: b9 68 lsl r8,0x18
80002de4: 10 99 mov r9,r8
80002de6: ee f8 ff fc ld.w r8,r7[-4]
80002dea: f3 e8 10 08 or r8,r9,r8
80002dee: bf b8 sbr r8,0x1f
80002df0: ef 48 ff fc st.w r7[-4],r8
}
/* Check that PBA and PBB clocks are equal or smaller than CPU clock */
if (CKSEL_HASDIV(cksel, CPU)) {
80002df4: ee f8 ff fc ld.w r8,r7[-4]
80002df8: e2 18 00 80 andl r8,0x80,COH
80002dfc: c2 80 breq 80002e4c <_ZN4aery18pm_setup_clkdomainEhh+0x15a>
if (!CKSEL_HASDIV(cksel, PBA) || !CKSEL_HASDIV(cksel, PBB))
80002dfe: ee f8 ff fc ld.w r8,r7[-4]
80002e02: e6 18 00 80 andh r8,0x80,COH
80002e06: c0 50 breq 80002e10 <_ZN4aery18pm_setup_clkdomainEhh+0x11e>
80002e08: ee f8 ff fc ld.w r8,r7[-4]
80002e0c: 58 08 cp.w r8,0
80002e0e: c0 35 brlt 80002e14 <_ZN4aery18pm_setup_clkdomainEhh+0x122>
return -1;
80002e10: 3f f8 mov r8,-1
80002e12: c2 b8 rjmp 80002e68 <_ZN4aery18pm_setup_clkdomainEhh+0x176>
if (CKSEL_GETDIV(cksel, CPU) > CKSEL_GETDIV(cksel, PBA))
80002e14: ee f8 ff fc ld.w r8,r7[-4]
80002e18: f3 d8 c0 03 bfextu r9,r8,0x0,0x3
80002e1c: ee f8 ff fc ld.w r8,r7[-4]
80002e20: e6 18 00 07 andh r8,0x7,COH
80002e24: b1 88 lsr r8,0x10
80002e26: 10 39 cp.w r9,r8
80002e28: e0 88 00 04 brls 80002e30 <_ZN4aery18pm_setup_clkdomainEhh+0x13e>
return -1;
80002e2c: 3f f8 mov r8,-1
80002e2e: c1 d8 rjmp 80002e68 <_ZN4aery18pm_setup_clkdomainEhh+0x176>
if (CKSEL_GETDIV(cksel, CPU) > CKSEL_GETDIV(cksel, PBB))
80002e30: ee f8 ff fc ld.w r8,r7[-4]
80002e34: f3 d8 c0 03 bfextu r9,r8,0x0,0x3
80002e38: ee f8 ff fc ld.w r8,r7[-4]
80002e3c: e6 18 07 00 andh r8,0x700,COH
80002e40: b9 88 lsr r8,0x18
80002e42: 10 39 cp.w r9,r8
80002e44: e0 88 00 04 brls 80002e4c <_ZN4aery18pm_setup_clkdomainEhh+0x15a>
return -1;
80002e48: 3f f8 mov r8,-1
80002e4a: c0 f8 rjmp 80002e68 <_ZN4aery18pm_setup_clkdomainEhh+0x176>
}
/* The register must not be re-written until CKRDY goes high. */
while (!(AVR32_PM.isr & AVR32_PM_ISR_CKRDY_MASK));
80002e4c: fe 78 0c 00 mov r8,-62464
80002e50: 71 38 ld.w r8,r8[0x4c]
80002e52: e2 18 00 20 andl r8,0x20,COH
80002e56: 5f 08 sreq r8
80002e58: 5c 58 castu.b r8
80002e5a: cf 91 brne 80002e4c <_ZN4aery18pm_setup_clkdomainEhh+0x15a>
AVR32_PM.cksel = cksel;
80002e5c: fe 78 0c 00 mov r8,-62464
80002e60: ee f9 ff fc ld.w r9,r7[-4]
80002e64: 91 19 st.w r8[0x4],r9
return 0;
80002e66: 30 08 mov r8,0
}
80002e68: 10 9c mov r12,r8
80002e6a: 2f dd sub sp,-12
80002e6c: e3 cd 80 80 ldm sp++,r7,pc
80002e70 <_ZN4aery17pm_get_fclkdomainEh>:
uint32_t aery::pm_get_fclkdomain(uint8_t domain)
{
80002e70: eb cd 40 80 pushm r7,lr
80002e74: 1a 97 mov r7,sp
80002e76: 20 2d sub sp,8
80002e78: 18 98 mov r8,r12
80002e7a: ef 68 ff f8 st.b r7[-8],r8
uint32_t f = aery::pm_get_fmck();
80002e7e: f0 1f 00 2e mcall 80002f34 <_ZN4aery17pm_get_fclkdomainEh+0xc4>
80002e82: 18 98 mov r8,r12
80002e84: ef 48 ff fc st.w r7[-4],r8
switch (domain) {
80002e88: ef 38 ff f8 ld.ub r8,r7[-8]
80002e8c: 58 28 cp.w r8,2
80002e8e: c1 a0 breq 80002ec2 <_ZN4aery17pm_get_fclkdomainEh+0x52>
80002e90: 58 48 cp.w r8,4
80002e92: c2 e0 breq 80002eee <_ZN4aery17pm_get_fclkdomainEh+0x7e>
80002e94: 58 18 cp.w r8,1
80002e96: c4 01 brne 80002f16 <_ZN4aery17pm_get_fclkdomainEh+0xa6>
case CLKDOMAIN_CPU:
if (CKSEL_HASDIV(AVR32_PM.cksel, CPU))
80002e98: fe 78 0c 00 mov r8,-62464
80002e9c: 70 18 ld.w r8,r8[0x4]
80002e9e: e2 18 00 80 andl r8,0x80,COH
80002ea2: 5f 18 srne r8
80002ea4: 5c 58 castu.b r8
80002ea6: c3 c0 breq 80002f1e <_ZN4aery17pm_get_fclkdomainEh+0xae>
f = f >> (CKSEL_GETDIV(AVR32_PM.cksel, CPU) + 1);
80002ea8: fe 78 0c 00 mov r8,-62464
80002eac: 70 18 ld.w r8,r8[0x4]
80002eae: f1 d8 c0 03 bfextu r8,r8,0x0,0x3
80002eb2: 2f f8 sub r8,-1
80002eb4: ee f9 ff fc ld.w r9,r7[-4]
80002eb8: f2 08 0a 48 lsr r8,r9,r8
80002ebc: ef 48 ff fc st.w r7[-4],r8
break;
80002ec0: c3 48 rjmp 80002f28 <_ZN4aery17pm_get_fclkdomainEh+0xb8>
case CLKDOMAIN_PBA:
if (CKSEL_HASDIV(AVR32_PM.cksel, PBA))
80002ec2: fe 78 0c 00 mov r8,-62464
80002ec6: 70 18 ld.w r8,r8[0x4]
80002ec8: e6 18 00 80 andh r8,0x80,COH
80002ecc: 5f 18 srne r8
80002ece: 5c 58 castu.b r8
80002ed0: c2 90 breq 80002f22 <_ZN4aery17pm_get_fclkdomainEh+0xb2>
f = f >> (CKSEL_GETDIV(AVR32_PM.cksel, PBA) + 1);
80002ed2: fe 78 0c 00 mov r8,-62464
80002ed6: 70 18 ld.w r8,r8[0x4]
80002ed8: e6 18 00 07 andh r8,0x7,COH
80002edc: b1 88 lsr r8,0x10
80002ede: 2f f8 sub r8,-1
80002ee0: ee f9 ff fc ld.w r9,r7[-4]
80002ee4: f2 08 0a 48 lsr r8,r9,r8
80002ee8: ef 48 ff fc st.w r7[-4],r8
break;
80002eec: c1 e8 rjmp 80002f28 <_ZN4aery17pm_get_fclkdomainEh+0xb8>
case CLKDOMAIN_PBB:
if (CKSEL_HASDIV(AVR32_PM.cksel, PBB))
80002eee: fe 78 0c 00 mov r8,-62464
80002ef2: 70 18 ld.w r8,r8[0x4]
80002ef4: bf 98 lsr r8,0x1f
80002ef6: 5c 58 castu.b r8
80002ef8: c1 70 breq 80002f26 <_ZN4aery17pm_get_fclkdomainEh+0xb6>
f = f >> (CKSEL_GETDIV(AVR32_PM.cksel, PBB) + 1);
80002efa: fe 78 0c 00 mov r8,-62464
80002efe: 70 18 ld.w r8,r8[0x4]
80002f00: e6 18 07 00 andh r8,0x700,COH
80002f04: b9 88 lsr r8,0x18
80002f06: 2f f8 sub r8,-1
80002f08: ee f9 ff fc ld.w r9,r7[-4]
80002f0c: f2 08 0a 48 lsr r8,r9,r8
80002f10: ef 48 ff fc st.w r7[-4],r8
break;
80002f14: c0 a8 rjmp 80002f28 <_ZN4aery17pm_get_fclkdomainEh+0xb8>
default:
f = 0; /* error */
80002f16: 30 08 mov r8,0
80002f18: ef 48 ff fc st.w r7[-4],r8
80002f1c: c0 68 rjmp 80002f28 <_ZN4aery17pm_get_fclkdomainEh+0xb8>
switch (domain) {
case CLKDOMAIN_CPU:
if (CKSEL_HASDIV(AVR32_PM.cksel, CPU))
f = f >> (CKSEL_GETDIV(AVR32_PM.cksel, CPU) + 1);
break;
80002f1e: d7 03 nop
80002f20: c0 48 rjmp 80002f28 <_ZN4aery17pm_get_fclkdomainEh+0xb8>
case CLKDOMAIN_PBA:
if (CKSEL_HASDIV(AVR32_PM.cksel, PBA))
f = f >> (CKSEL_GETDIV(AVR32_PM.cksel, PBA) + 1);
break;
80002f22: d7 03 nop
80002f24: c0 28 rjmp 80002f28 <_ZN4aery17pm_get_fclkdomainEh+0xb8>
case CLKDOMAIN_PBB:
if (CKSEL_HASDIV(AVR32_PM.cksel, PBB))
f = f >> (CKSEL_GETDIV(AVR32_PM.cksel, PBB) + 1);
break;
80002f26: d7 03 nop
default:
f = 0; /* error */
}
return f;
80002f28: ee f8 ff fc ld.w r8,r7[-4]
}
80002f2c: 10 9c mov r12,r8
80002f2e: 2f ed sub sp,-8
80002f30: e3 cd 80 80 ldm sp++,r7,pc
80002f34: 80 00 ld.sh r0,r0[0x0]
80002f36: 2b f4 sub r4,-65
80002f38 <USB_ResetInterface>:
USB_IsInitialized = false;
}
void USB_ResetInterface(void)
{
80002f38: d4 21 pushm r4-r7,lr
#if defined(USB_CAN_BE_BOTH)
bool UIDModeSelectEnabled = AVR32_USBB.USBCON.uide;
#endif
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].pllsel = !(USB_Options & USB_OPT_GCLK_SRC_OSC);
80002f3a: fe 78 0c 00 mov r8,-62464
80002f3e: 30 16 mov r6,1
80002f40: 71 c9 ld.w r9,r8[0x70]
80002f42: f3 d6 d0 21 bfins r9,r6,0x1,0x1
80002f46: f1 49 00 70 st.w r8[112],r9
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].oscsel = !(USB_Options & USB_OPT_GCLK_CHANNEL_0);
80002f4a: 71 c9 ld.w r9,r8[0x70]
80002f4c: f3 d6 d0 01 bfins r9,r6,0x0,0x1
80002f50: f1 49 00 70 st.w r8[112],r9
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].diven = (F_USB != USB_CLOCK_REQUIRED_FREQ);
80002f54: 71 c9 ld.w r9,r8[0x70]
80002f56: f3 d6 d0 81 bfins r9,r6,0x4,0x1
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].div = (F_USB == USB_CLOCK_REQUIRED_FREQ) ? 0 : (uint32_t)((F_USB / USB_CLOCK_REQUIRED_FREQ / 2) - 1);
80002f5a: 30 05 mov r5,0
bool UIDModeSelectEnabled = AVR32_USBB.USBCON.uide;
#endif
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].pllsel = !(USB_Options & USB_OPT_GCLK_SRC_OSC);
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].oscsel = !(USB_Options & USB_OPT_GCLK_CHANNEL_0);
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].diven = (F_USB != USB_CLOCK_REQUIRED_FREQ);
80002f5c: f1 49 00 70 st.w r8[112],r9
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].div = (F_USB == USB_CLOCK_REQUIRED_FREQ) ? 0 : (uint32_t)((F_USB / USB_CLOCK_REQUIRED_FREQ / 2) - 1);
80002f60: 71 c9 ld.w r9,r8[0x70]
80002f62: f3 d5 d1 08 bfins r9,r5,0x8,0x8
80002f66: f1 49 00 70 st.w r8[112],r9
AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].cen = true;
80002f6a: 71 c9 ld.w r9,r8[0x70]
80002f6c: f3 d6 d0 41 bfins r9,r6,0x2,0x1
}
static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;
static inline void USB_Controller_Reset(void)
{
AVR32_USBB.USBCON.usbe = false;
80002f70: fe 67 00 00 mov r7,-131072
80002f74: f1 49 00 70 st.w r8[112],r9
USB_INT_DisableAllInterrupts();
80002f78: f0 1f 00 25 mcall 8000300c <USB_ResetInterface+0xd4>
USB_INT_ClearAllInterrupts();
80002f7c: f0 1f 00 25 mcall 80003010 <USB_ResetInterface+0xd8>
80002f80: ee f8 08 00 ld.w r8,r7[2048]
80002f84: f1 d5 d1 e1 bfins r8,r5,0xf,0x1
80002f88: ef 48 08 00 st.w r7[2048],r8
AVR32_USBB.USBCON.usbe = true;
80002f8c: ee f8 08 00 ld.w r8,r7[2048]
80002f90: f1 d6 d1 e1 bfins r8,r6,0xf,0x1
80002f94: ef 48 08 00 st.w r7[2048],r8
}
static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;
static inline void USB_CLK_Unfreeze(void)
{
AVR32_USBB.USBCON.frzclk = false;
80002f98: ee f8 08 00 ld.w r8,r7[2048]
80002f9c: f1 d5 d1 c1 bfins r8,r5,0xe,0x1
80002fa0: ef 48 08 00 st.w r7[2048],r8
USB_CLK_Unfreeze();
if (USB_CurrentMode == USB_MODE_Device)
{
#if defined(USB_CAN_BE_DEVICE)
AVR32_USBB.USBCON.uimod = true;
80002fa4: ee f8 08 00 ld.w r8,r7[2048]
80002fa8: f1 d6 d3 21 bfins r8,r6,0x19,0x1
80002fac: ef 48 08 00 st.w r7[2048],r8
}
#if defined(USB_CAN_BE_DEVICE)
static void USB_Init_Device(void)
{
USB_DeviceState = DEVICE_STATE_Unattached;
80002fb0: 49 98 lddpc r8,80003014 <USB_ResetInterface+0xdc>
80002fb2: b0 85 st.b r8[0x0],r5
}
static inline void USB_Device_SetFullSpeed(void) ATTR_ALWAYS_INLINE;
static inline void USB_Device_SetFullSpeed(void)
{
AVR32_USBB.UDCON.ls = false;
80002fb4: 6e 08 ld.w r8,r7[0x0]
80002fb6: f1 d5 d1 81 bfins r8,r5,0xc,0x1
80002fba: 8f 08 st.w r7[0x0],r8
USB_Device_ConfigurationNumber = 0;
80002fbc: 49 78 lddpc r8,80003018 <USB_ResetInterface+0xe0>
80002fbe: b0 85 st.b r8[0x0],r5
static inline void USB_INT_Enable(const uint8_t Interrupt)
{
switch (Interrupt)
{
case USB_INT_VBUSTI:
AVR32_USBB.USBCON.vbuste = true;
80002fc0: ee f8 08 00 ld.w r8,r7[2048]
80002fc4: f1 d6 d0 21 bfins r8,r6,0x1,0x1
80002fc8: ef 48 08 00 st.w r7[2048],r8
#if !defined(NO_DEVICE_REMOTE_WAKEUP)
USB_Device_RemoteWakeupEnabled = false;
80002fcc: 49 48 lddpc r8,8000301c <USB_ResetInterface+0xe4>
80002fce: b0 85 st.b r8[0x0],r5
#endif
#if !defined(NO_DEVICE_SELF_POWER)
USB_Device_CurrentlySelfPowered = false;
80002fd0: 49 48 lddpc r8,80003020 <USB_ResetInterface+0xe8>
uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
return false;
return Endpoint_ConfigureEndpoint_Prv(Number,
80002fd2: 30 3b mov r11,3
80002fd4: b0 85 st.b r8[0x0],r5
80002fd6: 0a 9c mov r12,r5
80002fd8: f0 1f 00 13 mcall 80003024 <USB_ResetInterface+0xec>
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTCLR.wakeupc = true;
(void)AVR32_USBB.UDINTCLR;
break;
case USB_INT_SUSPI:
AVR32_USBB.UDINTCLR.suspc = true;
80002fdc: 6e 28 ld.w r8,r7[0x8]
80002fde: f1 d6 d0 01 bfins r8,r6,0x0,0x1
80002fe2: 8f 28 st.w r7[0x8],r8
(void)AVR32_USBB.UDINTCLR;
80002fe4: 6e 28 ld.w r8,r7[0x8]
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTESET.wakeupes = true;
break;
case USB_INT_SUSPI:
AVR32_USBB.UDINTESET.suspes = true;
80002fe6: 6e 68 ld.w r8,r7[0x18]
80002fe8: f1 d6 d0 01 bfins r8,r6,0x0,0x1
80002fec: 8f 68 st.w r7[0x18],r8
break;
case USB_INT_EORSTI:
AVR32_USBB.UDINTESET.eorstes = true;
80002fee: 6e 68 ld.w r8,r7[0x18]
80002ff0: f1 d6 d0 61 bfins r8,r6,0x3,0x1
80002ff4: 8f 68 st.w r7[0x18],r8
* register and despite the datasheet making no mention of its requirement in host mode.
*/
static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;
static inline void USB_Attach(void)
{
AVR32_USBB.UDCON.detach = false;
80002ff6: 6e 08 ld.w r8,r7[0x0]
80002ff8: f1 d5 d1 01 bfins r8,r5,0x8,0x1
80002ffc: 8f 08 st.w r7[0x0],r8
/* Inline Functions: */
static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;
static inline void USB_OTGPAD_On(void)
{
AVR32_USBB.USBCON.otgpade = true;
80002ffe: ee f8 08 00 ld.w r8,r7[2048]
80003002: f1 d6 d1 81 bfins r8,r6,0xc,0x1
80003006: ef 48 08 00 st.w r7[2048],r8
USB_Init_Host();
#endif
}
USB_OTGPAD_On();
}
8000300a: d8 22 popm r4-r7,pc
8000300c: 80 00 ld.sh r0,r0[0x0]
8000300e: 30 50 mov r0,5
80003010: 80 00 ld.sh r0,r0[0x0]
80003012: 30 78 mov r8,7
80003014: 00 00 add r0,r0
80003016: 05 b8 ld.ub r8,r2[0x3]
80003018: 00 00 add r0,r0
8000301a: 05 b4 ld.ub r4,r2[0x3]
8000301c: 00 00 add r0,r0
8000301e: 05 b6 ld.ub r6,r2[0x3]
80003020: 00 00 add r0,r0
80003022: 05 b5 ld.ub r5,r2[0x3]
80003024: 80 00 ld.sh r0,r0[0x0]
80003026: 3c f4 mov r4,-49
80003028 <USB_Init>:
#if !defined(USE_STATIC_OPTIONS)
const uint8_t Options
#endif
)
{
80003028: d4 01 pushm lr
{
AVR32_USBB.USBCON.uide = false;
USB_CurrentMode = Mode;
}
#else
AVR32_USBB.USBCON.uide = false;
8000302a: fe 68 00 00 mov r8,-131072
8000302e: 30 0a mov r10,0
80003030: f0 f9 08 00 ld.w r9,r8[2048]
80003034: f3 da d3 01 bfins r9,r10,0x18,0x1
80003038: f1 49 08 00 st.w r8[2048],r9
#endif
USB_IsInitialized = true;
8000303c: 30 19 mov r9,1
8000303e: 48 38 lddpc r8,80003048 <USB_Init+0x20>
80003040: b0 89 st.b r8[0x0],r9
USB_ResetInterface();
80003042: f0 1f 00 03 mcall 8000304c <USB_Init+0x24>
}
80003046: d8 02 popm pc
80003048: 00 00 add r0,r0
8000304a: 05 b7 ld.ub r7,r2[0x3]
8000304c: 80 00 ld.sh r0,r0[0x0]
8000304e: 2f 38 sub r8,-13
80003050 <USB_INT_DisableAllInterrupts>:
#define __INCLUDE_FROM_USB_DRIVER
#include "../USBInterrupt.h"
void USB_INT_DisableAllInterrupts(void)
{
AVR32_USBB.USBCON.vbuste = false;
80003050: fe 68 00 00 mov r8,-131072
80003054: 30 0a mov r10,0
80003056: f0 f9 08 00 ld.w r9,r8[2048]
8000305a: f3 da d0 21 bfins r9,r10,0x1,0x1
8000305e: f1 49 08 00 st.w r8[2048],r9
AVR32_USBB.USBCON.idte = false;
80003062: f0 f9 08 00 ld.w r9,r8[2048]
80003066: f3 da d0 01 bfins r9,r10,0x0,0x1
8000306a: f1 49 08 00 st.w r8[2048],r9
AVR32_USBB.uhinteclr = -1;
8000306e: 3f f9 mov r9,-1
80003070: f1 49 04 14 st.w r8[1044],r9
AVR32_USBB.udinteclr = -1;
80003074: 91 59 st.w r8[0x14],r9
}
80003076: 5e fc retal r12
80003078 <USB_INT_ClearAllInterrupts>:
void USB_INT_ClearAllInterrupts(void)
{
AVR32_USBB.USBSTACLR.vbustic = true;
80003078: fe 68 00 00 mov r8,-131072
8000307c: 30 1a mov r10,1
8000307e: f0 f9 08 08 ld.w r9,r8[2056]
80003082: f3 da d0 21 bfins r9,r10,0x1,0x1
80003086: f1 49 08 08 st.w r8[2056],r9
AVR32_USBB.USBSTACLR.idtic = true;
8000308a: f0 f9 08 08 ld.w r9,r8[2056]
8000308e: f3 da d0 01 bfins r9,r10,0x0,0x1
80003092: f1 49 08 08 st.w r8[2056],r9
AVR32_USBB.uhintclr = -1;
80003096: 3f f9 mov r9,-1
80003098: f1 49 04 08 st.w r8[1032],r9
AVR32_USBB.udintclr = -1;
8000309c: 91 29 st.w r8[0x8],r9
}
8000309e: 5e fc retal r12
800030a0 <USB_GEN_vect>:
ISR(USB_GEN_vect)
{
800030a0: d4 01 pushm lr
case USB_INT_SUSPI:
return AVR32_USBB.UDINT.susp;
case USB_INT_EORSTI:
return AVR32_USBB.UDINT.eorst;
case USB_INT_SOFI:
return AVR32_USBB.UDINT.sof;
800030a2: fe 68 00 00 mov r8,-131072
800030a6: 70 19 ld.w r9,r8[0x4]
#if defined(USB_CAN_BE_DEVICE)
#if !defined(NO_SOF_EVENTS)
if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))
800030a8: ed b9 00 02 bld r9,0x2
800030ac: c0 d1 brne 800030c6 <USB_GEN_vect+0x26>
case USB_INT_SUSPI:
return AVR32_USBB.UDINTE.suspe;
case USB_INT_EORSTI:
return AVR32_USBB.UDINTE.eorste;
case USB_INT_SOFI:
return AVR32_USBB.UDINTE.sofe;
800030ae: 70 49 ld.w r9,r8[0x10]
800030b0: ed b9 00 02 bld r9,0x2
800030b4: c0 91 brne 800030c6 <USB_GEN_vect+0x26>
case USB_INT_EORSTI:
AVR32_USBB.UDINTCLR.eorstc = true;
(void)AVR32_USBB.UDINTCLR;
break;
case USB_INT_SOFI:
AVR32_USBB.UDINTCLR.sofc = true;
800030b6: 70 29 ld.w r9,r8[0x8]
800030b8: 30 1a mov r10,1
800030ba: f3 da d0 41 bfins r9,r10,0x2,0x1
800030be: 91 29 st.w r8[0x8],r9
(void)AVR32_USBB.UDINTCLR;
800030c0: 70 28 ld.w r8,r8[0x8]
{
USB_INT_Clear(USB_INT_SOFI);
EVENT_USB_Device_StartOfFrame();
800030c2: f0 1f 00 55 mcall 80003214 <USB_GEN_vect+0x174>
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt)
{
switch (Interrupt)
{
case USB_INT_VBUSTI:
return AVR32_USBB.USBSTA.vbusti;
800030c6: fe 68 00 00 mov r8,-131072
800030ca: f0 f9 08 04 ld.w r9,r8[2052]
}
#endif
if (USB_INT_HasOccurred(USB_INT_VBUSTI) && USB_INT_IsEnabled(USB_INT_VBUSTI))
800030ce: ed b9 00 01 bld r9,0x1
800030d2: c1 c1 brne 8000310a <USB_GEN_vect+0x6a>
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt)
{
switch (Interrupt)
{
case USB_INT_VBUSTI:
return AVR32_USBB.USBCON.vbuste;
800030d4: f0 f9 08 00 ld.w r9,r8[2048]
800030d8: ed b9 00 01 bld r9,0x1
800030dc: c1 71 brne 8000310a <USB_GEN_vect+0x6a>
static inline void USB_INT_Clear(const uint8_t Interrupt)
{
switch (Interrupt)
{
case USB_INT_VBUSTI:
AVR32_USBB.USBSTACLR.vbustic = true;
800030de: f0 f9 08 08 ld.w r9,r8[2056]
800030e2: 30 1a mov r10,1
800030e4: f3 da d0 21 bfins r9,r10,0x1,0x1
800030e8: f1 49 08 08 st.w r8[2056],r9
(void)AVR32_USBB.USBSTACLR;
800030ec: f0 f9 08 08 ld.w r9,r8[2056]
* \return Boolean \c true if the VBUS line is currently detecting power from a host, \c false otherwise.
*/
static inline bool USB_VBUS_GetStatus(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool USB_VBUS_GetStatus(void)
{
return AVR32_USBB.USBSTA.vbus;
800030f0: f0 f8 08 04 ld.w r8,r8[2052]
800030f4: 4c 99 lddpc r9,80003218 <USB_GEN_vect+0x178>
{
USB_INT_Clear(USB_INT_VBUSTI);
if (USB_VBUS_GetStatus())
800030f6: e2 18 08 00 andl r8,0x800,COH
800030fa: c0 50 breq 80003104 <USB_GEN_vect+0x64>
{
USB_DeviceState = DEVICE_STATE_Powered;
800030fc: b2 8a st.b r9[0x0],r10
EVENT_USB_Device_Connect();
800030fe: f0 1f 00 48 mcall 8000321c <USB_GEN_vect+0x17c>
80003102: c0 48 rjmp 8000310a <USB_GEN_vect+0x6a>
}
else
{
USB_DeviceState = DEVICE_STATE_Unattached;
80003104: b2 88 st.b r9[0x0],r8
EVENT_USB_Device_Disconnect();
80003106: f0 1f 00 47 mcall 80003220 <USB_GEN_vect+0x180>
#endif
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
return AVR32_USBB.UDINT.wakeup;
case USB_INT_SUSPI:
return AVR32_USBB.UDINT.susp;
8000310a: fe 68 00 00 mov r8,-131072
8000310e: 70 19 ld.w r9,r8[0x4]
}
}
if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI))
80003110: ed b9 00 00 bld r9,0x0
80003114: c1 91 brne 80003146 <USB_GEN_vect+0xa6>
#endif
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
return AVR32_USBB.UDINTE.wakeupe;
case USB_INT_SUSPI:
return AVR32_USBB.UDINTE.suspe;
80003116: 70 49 ld.w r9,r8[0x10]
80003118: ed b9 00 00 bld r9,0x0
8000311c: c1 51 brne 80003146 <USB_GEN_vect+0xa6>
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTECLR.wakeupec = true;
break;
case USB_INT_SUSPI:
AVR32_USBB.UDINTECLR.suspec = true;
8000311e: 70 5a ld.w r10,r8[0x14]
80003120: 30 19 mov r9,1
80003122: f5 d9 d0 01 bfins r10,r9,0x0,0x1
80003126: 91 5a st.w r8[0x14],r10
AVR32_USBB.USBCON.idte = true;
break;
#endif
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTESET.wakeupes = true;
80003128: 70 6a ld.w r10,r8[0x18]
8000312a: f5 d9 d0 81 bfins r10,r9,0x4,0x1
8000312e: 91 6a st.w r8[0x18],r10
}
static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE;
static inline void USB_CLK_Freeze(void)
{
AVR32_USBB.USBCON.frzclk = true;
80003130: f0 fa 08 00 ld.w r10,r8[2048]
80003134: f5 d9 d1 c1 bfins r10,r9,0xe,0x1
USB_INT_Disable(USB_INT_SUSPI);
USB_INT_Enable(USB_INT_WAKEUPI);
USB_CLK_Freeze();
USB_DeviceState = DEVICE_STATE_Suspended;
80003138: 30 59 mov r9,5
8000313a: f1 4a 08 00 st.w r8[2048],r10
8000313e: 4b 78 lddpc r8,80003218 <USB_GEN_vect+0x178>
80003140: b0 89 st.b r8[0x0],r9
EVENT_USB_Device_Suspend();
80003142: f0 1f 00 39 mcall 80003224 <USB_GEN_vect+0x184>
case USB_INT_IDTI:
return AVR32_USBB.USBSTA.idti;
#endif
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
return AVR32_USBB.UDINT.wakeup;
80003146: fe 68 00 00 mov r8,-131072
8000314a: 70 19 ld.w r9,r8[0x4]
}
if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI))
8000314c: ed b9 00 04 bld r9,0x4
80003150: c2 e1 brne 800031ac <USB_GEN_vect+0x10c>
case USB_INT_IDTI:
return AVR32_USBB.USBCON.idte;
#endif
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
return AVR32_USBB.UDINTE.wakeupe;
80003152: 70 49 ld.w r9,r8[0x10]
80003154: ed b9 00 04 bld r9,0x4
80003158: c2 a1 brne 800031ac <USB_GEN_vect+0x10c>
}
static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;
static inline void USB_CLK_Unfreeze(void)
{
AVR32_USBB.USBCON.frzclk = false;
8000315a: f0 f9 08 00 ld.w r9,r8[2048]
8000315e: 30 0a mov r10,0
80003160: f3 da d1 c1 bfins r9,r10,0xe,0x1
80003164: f1 49 08 00 st.w r8[2048],r9
(void)AVR32_USBB.USBSTACLR;
break;
#endif
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTCLR.wakeupc = true;
80003168: 30 19 mov r9,1
8000316a: 70 2b ld.w r11,r8[0x8]
8000316c: f7 d9 d0 81 bfins r11,r9,0x4,0x1
80003170: 91 2b st.w r8[0x8],r11
(void)AVR32_USBB.UDINTCLR;
80003172: 70 2b ld.w r11,r8[0x8]
AVR32_USBB.USBCON.idte = false;
break;
#endif
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTECLR.wakeupec = true;
80003174: 70 5b ld.w r11,r8[0x14]
80003176: f7 d9 d0 81 bfins r11,r9,0x4,0x1
8000317a: 91 5b st.w r8[0x14],r11
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTESET.wakeupes = true;
break;
case USB_INT_SUSPI:
AVR32_USBB.UDINTESET.suspes = true;
8000317c: 70 6b ld.w r11,r8[0x18]
8000317e: f7 d9 d0 01 bfins r11,r9,0x0,0x1
80003182: 91 6b st.w r8[0x18],r11
USB_INT_Clear(USB_INT_WAKEUPI);
USB_INT_Disable(USB_INT_WAKEUPI);
USB_INT_Enable(USB_INT_SUSPI);
if (USB_Device_ConfigurationNumber)
80003184: 4a 99 lddpc r9,80003228 <USB_GEN_vect+0x188>
80003186: 13 89 ld.ub r9,r9[0x0]
80003188: f4 09 18 00 cp.b r9,r10
8000318c: c0 50 breq 80003196 <USB_GEN_vect+0xf6>
USB_DeviceState = DEVICE_STATE_Configured;
8000318e: 30 49 mov r9,4
80003190: 4a 28 lddpc r8,80003218 <USB_GEN_vect+0x178>
80003192: b0 89 st.b r8[0x0],r9
80003194: c0 a8 rjmp 800031a8 <USB_GEN_vect+0x108>
}
static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline bool USB_Device_IsAddressSet(void)
{
return AVR32_USBB.UDCON.adden;
80003196: 70 08 ld.w r8,r8[0x0]
else
USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;
80003198: 4a 09 lddpc r9,80003218 <USB_GEN_vect+0x178>
8000319a: e2 18 00 80 andl r8,0x80,COH
8000319e: f9 b8 01 04 movne r8,4
800031a2: f9 b8 00 01 moveq r8,1
800031a6: b2 88 st.b r9[0x0],r8
EVENT_USB_Device_WakeUp();
800031a8: f0 1f 00 21 mcall 8000322c <USB_GEN_vect+0x18c>
case USB_INT_WAKEUPI:
return AVR32_USBB.UDINT.wakeup;
case USB_INT_SUSPI:
return AVR32_USBB.UDINT.susp;
case USB_INT_EORSTI:
return AVR32_USBB.UDINT.eorst;
800031ac: fe 68 00 00 mov r8,-131072
800031b0: 70 19 ld.w r9,r8[0x4]
}
if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI))
800031b2: ed b9 00 03 bld r9,0x3
800031b6: c2 c1 brne 8000320e <USB_GEN_vect+0x16e>
case USB_INT_WAKEUPI:
return AVR32_USBB.UDINTE.wakeupe;
case USB_INT_SUSPI:
return AVR32_USBB.UDINTE.suspe;
case USB_INT_EORSTI:
return AVR32_USBB.UDINTE.eorste;
800031b8: 70 49 ld.w r9,r8[0x10]
800031ba: ed b9 00 03 bld r9,0x3
800031be: c2 81 brne 8000320e <USB_GEN_vect+0x16e>
case USB_INT_SUSPI:
AVR32_USBB.UDINTCLR.suspc = true;
(void)AVR32_USBB.UDINTCLR;
break;
case USB_INT_EORSTI:
AVR32_USBB.UDINTCLR.eorstc = true;
800031c0: 70 2a ld.w r10,r8[0x8]
800031c2: 30 19 mov r9,1
800031c4: f5 d9 d0 61 bfins r10,r9,0x3,0x1
800031c8: 91 2a st.w r8[0x8],r10
(void)AVR32_USBB.UDINTCLR;
800031ca: 70 2a ld.w r10,r8[0x8]
{
USB_INT_Clear(USB_INT_EORSTI);
USB_DeviceState = DEVICE_STATE_Default;
800031cc: 49 3a lddpc r10,80003218 <USB_GEN_vect+0x178>
800031ce: 30 2b mov r11,2
800031d0: b4 8b st.b r10[0x0],r11
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTCLR.wakeupc = true;
(void)AVR32_USBB.UDINTCLR;
break;
case USB_INT_SUSPI:
AVR32_USBB.UDINTCLR.suspc = true;
800031d2: 70 2a ld.w r10,r8[0x8]
800031d4: f5 d9 d0 01 bfins r10,r9,0x0,0x1
800031d8: 91 2a st.w r8[0x8],r10
(void)AVR32_USBB.UDINTCLR;
800031da: 70 2a ld.w r10,r8[0x8]
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTECLR.wakeupec = true;
break;
case USB_INT_SUSPI:
AVR32_USBB.UDINTECLR.suspec = true;
800031dc: 70 5a ld.w r10,r8[0x14]
800031de: f5 d9 d0 01 bfins r10,r9,0x0,0x1
800031e2: 91 5a st.w r8[0x14],r10
AVR32_USBB.USBCON.idte = true;
break;
#endif
#if defined(USB_CAN_BE_DEVICE)
case USB_INT_WAKEUPI:
AVR32_USBB.UDINTESET.wakeupes = true;
800031e4: 70 6a ld.w r10,r8[0x18]
800031e6: f5 d9 d0 81 bfins r10,r9,0x4,0x1
800031ea: 91 6a st.w r8[0x18],r10
#endif
static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void USB_Device_SetDeviceAddress(const uint8_t Address)
{
AVR32_USBB.UDCON.uadd = Address;
800031ec: 30 09 mov r9,0
800031ee: 70 0a ld.w r10,r8[0x0]
800031f0: f5 d9 d0 07 bfins r10,r9,0x0,0x7
800031f4: 91 0a st.w r8[0x0],r10
AVR32_USBB.UDCON.adden = (Address ? true : false);
800031f6: 70 0a ld.w r10,r8[0x0]
800031f8: f5 d9 d0 e1 bfins r10,r9,0x7,0x1
800031fc: 91 0a st.w r8[0x0],r10
USB_Device_ConfigurationNumber = 0;
800031fe: 48 b8 lddpc r8,80003228 <USB_GEN_vect+0x188>
uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
return false;
return Endpoint_ConfigureEndpoint_Prv(Number,
80003200: 12 9c mov r12,r9
80003202: b0 89 st.b r8[0x0],r9
80003204: 30 3b mov r11,3
80003206: f0 1f 00 0b mcall 80003230 <USB_GEN_vect+0x190>
#if defined(INTERRUPT_CONTROL_ENDPOINT)
USB_INT_Enable(USB_INT_RXSTPI);
#endif
EVENT_USB_Device_Reset();
8000320a: f0 1f 00 0b mcall 80003234 <USB_GEN_vect+0x194>
USB_ResetInterface();
EVENT_USB_UIDChange();
}
#endif
}
8000320e: d4 02 popm lr
80003210: d6 03 rete
80003212: 00 00 add r0,r0
80003214: 80 00 ld.sh r0,r0[0x0]
80003216: 37 70 mov r0,119
80003218: 00 00 add r0,r0
8000321a: 05 b8 ld.ub r8,r2[0x3]
8000321c: 80 00 ld.sh r0,r0[0x0]
8000321e: 22 42 sub r2,36
80003220: 80 00 ld.sh r0,r0[0x0]
80003222: 22 4c sub r12,36
80003224: 80 00 ld.sh r0,r0[0x0]
80003226: 37 70 mov r0,119
80003228: 00 00 add r0,r0
8000322a: 05 b4 ld.ub r4,r2[0x3]
8000322c: 80 00 ld.sh r0,r0[0x0]
8000322e: 37 70 mov r0,119
80003230: 80 00 ld.sh r0,r0[0x0]
80003232: 3c f4 mov r4,-49
80003234: 80 00 ld.sh r0,r0[0x0]
80003236: 37 70 mov r0,119
80003238: 80 00 ld.sh r0,r0[0x0]
8000323a: 33 00 mov r0,48
8000323c: 80 00 ld.sh r0,r0[0x0]
8000323e: 33 ea mov r10,62
80003240: 80 00 ld.sh r0,r0[0x0]
80003242: 37 16 mov r6,113
80003244: 80 00 ld.sh r0,r0[0x0]
80003246: 33 ea mov r10,62
80003248: 80 00 ld.sh r0,r0[0x0]
8000324a: 37 16 mov r6,113
8000324c: 80 00 ld.sh r0,r0[0x0]
8000324e: 34 fc mov r12,79
80003250: 80 00 ld.sh r0,r0[0x0]
80003252: 35 94 mov r4,89
80003254: 80 00 ld.sh r0,r0[0x0]
80003256: 37 16 mov r6,113
80003258: 80 00 ld.sh r0,r0[0x0]
8000325a: 36 1a mov r10,97
8000325c: 80 00 ld.sh r0,r0[0x0]
8000325e: 36 8a mov r10,104
80003260 <USB_Device_ProcessControlRequest>:
#if !defined(NO_DEVICE_REMOTE_WAKEUP)
bool USB_Device_RemoteWakeupEnabled;
#endif
void USB_Device_ProcessControlRequest(void)
{
80003260: d4 21 pushm r4-r7,lr
80003262: 20 1d sub sp,4
* \return Next byte in the currently selected endpoint's FIFO buffer.
*/
static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint8_t Endpoint_Read_8(void)
{
return *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
80003264: 4b 78 lddpc r8,80003340 <USB_Device_ProcessControlRequest+0xe0>
80003266: 4b 86 lddpc r6,80003344 <USB_Device_ProcessControlRequest+0xe4>
80003268: 6c 0a ld.w r10,r6[0x0]
8000326a: f0 0a 03 29 ld.w r9,r8[r10<<0x2]
8000326e: 13 3b ld.ub r11,r9++
80003270: f0 0a 09 29 st.w r8[r10<<0x2],r9
#if defined(ARCH_BIG_ENDIAN)
USB_ControlRequest.bmRequestType = Endpoint_Read_8();
80003274: 4b 57 lddpc r7,80003348 <USB_Device_ProcessControlRequest+0xe8>
80003276: 6c 0a ld.w r10,r6[0x0]
80003278: ae 8b st.b r7[0x0],r11
8000327a: f0 0a 03 29 ld.w r9,r8[r10<<0x2]
8000327e: 13 3b ld.ub r11,r9++
80003280: f0 0a 09 29 st.w r8[r10<<0x2],r9
USB_ControlRequest.bRequest = Endpoint_Read_8();
80003284: ae 9b st.b r7[0x1],r11
* \return Next two bytes in the currently selected endpoint's FIFO buffer.
*/
static inline uint16_t Endpoint_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Endpoint_Read_16_LE(void)
{
uint16_t Byte0 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
80003286: 6c 0a ld.w r10,r6[0x0]
80003288: f0 0a 03 29 ld.w r9,r8[r10<<0x2]
8000328c: 13 3b ld.ub r11,r9++
8000328e: f0 0a 09 29 st.w r8[r10<<0x2],r9
uint16_t Byte1 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
80003292: 6c 0a ld.w r10,r6[0x0]
80003294: f0 0a 03 29 ld.w r9,r8[r10<<0x2]
80003298: 13 3c ld.ub r12,r9++
8000329a: f0 0a 09 29 st.w r8[r10<<0x2],r9
USB_ControlRequest.wValue = Endpoint_Read_16_LE();
8000329e: ae ac st.b r7[0x2],r12
800032a0: ae bb st.b r7[0x3],r11
* \return Next two bytes in the currently selected endpoint's FIFO buffer.
*/
static inline uint16_t Endpoint_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Endpoint_Read_16_LE(void)
{
uint16_t Byte0 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
800032a2: 6c 0a ld.w r10,r6[0x0]
800032a4: f0 0a 03 29 ld.w r9,r8[r10<<0x2]
800032a8: 13 3b ld.ub r11,r9++
800032aa: f0 0a 09 29 st.w r8[r10<<0x2],r9
uint16_t Byte1 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
800032ae: 6c 0a ld.w r10,r6[0x0]
800032b0: f0 0a 03 29 ld.w r9,r8[r10<<0x2]
800032b4: 13 3c ld.ub r12,r9++
800032b6: f0 0a 09 29 st.w r8[r10<<0x2],r9
USB_ControlRequest.wIndex = Endpoint_Read_16_LE();
800032ba: ae cc st.b r7[0x4],r12
800032bc: ae db st.b r7[0x5],r11
* \return Next two bytes in the currently selected endpoint's FIFO buffer.
*/
static inline uint16_t Endpoint_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Endpoint_Read_16_LE(void)
{
uint16_t Byte0 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
800032be: 6c 0a ld.w r10,r6[0x0]
800032c0: f0 0a 03 29 ld.w r9,r8[r10<<0x2]
800032c4: 13 3b ld.ub r11,r9++
800032c6: f0 0a 09 29 st.w r8[r10<<0x2],r9
uint16_t Byte1 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
800032ca: 6c 0a ld.w r10,r6[0x0]
800032cc: f0 0a 03 29 ld.w r9,r8[r10<<0x2]
800032d0: 13 3c ld.ub r12,r9++
800032d2: f0 0a 09 29 st.w r8[r10<<0x2],r9
USB_ControlRequest.wLength = Endpoint_Read_16_LE();
800032d6: ae ec st.b r7[0x6],r12
800032d8: ae fb st.b r7[0x7],r11
for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
*(RequestHeader++) = Endpoint_Read_8();
#endif
EVENT_USB_Device_ControlRequest();
800032da: f0 1f 00 1d mcall 8000334c <USB_Device_ProcessControlRequest+0xec>
* \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
*/
static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsSETUPReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxstpi;
800032de: 6c 08 ld.w r8,r6[0x0]
800032e0: a3 68 lsl r8,0x2
800032e2: e0 38 fe d0 sub r8,130768
800032e6: 70 08 ld.w r8,r8[0x0]
if (Endpoint_IsSETUPReceived())
800032e8: ed b8 00 02 bld r8,0x2
800032ec: e0 81 02 15 brne 80003716 <USB_Device_ProcessControlRequest+0x4b6>
{
uint8_t bmRequestType = USB_ControlRequest.bmRequestType;
switch (USB_ControlRequest.bRequest)
800032f0: 0f 9c ld.ub r12,r7[0x1]
EVENT_USB_Device_ControlRequest();
if (Endpoint_IsSETUPReceived())
{
uint8_t bmRequestType = USB_ControlRequest.bmRequestType;
800032f2: 0f 87 ld.ub r7,r7[0x0]
switch (USB_ControlRequest.bRequest)
800032f4: 58 9c cp.w r12,9
800032f6: e0 8b 02 10 brhi 80003716 <USB_Device_ProcessControlRequest+0x4b6>
800032fa: 49 68 lddpc r8,80003350 <USB_Device_ProcessControlRequest+0xf0>
800032fc: f0 0c 03 2f ld.w pc,r8[r12<<0x2]
{
case REQ_GetStatus:
if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||
80003300: 38 0a mov r10,-128
80003302: f4 07 18 00 cp.b r7,r10
80003306: 5f 08 sreq r8
80003308: 38 29 mov r9,-126
8000330a: f2 07 18 00 cp.b r7,r9
8000330e: 5f 0b sreq r11
80003310: 10 4b or r11,r8
80003312: 30 08 mov r8,0
80003314: f0 0b 18 00 cp.b r11,r8
80003318: e0 80 01 ff breq 80003716 <USB_Device_ProcessControlRequest+0x4b6>
static void USB_Device_GetStatus(void)
{
uint8_t CurrentStatus = 0;
switch (USB_ControlRequest.bmRequestType)
8000331c: f4 07 18 00 cp.b r7,r10
80003320: c0 60 breq 8000332c <USB_Device_ProcessControlRequest+0xcc>
80003322: f2 07 18 00 cp.b r7,r9
80003326: e0 81 01 f8 brne 80003716 <USB_Device_ProcessControlRequest+0x4b6>
8000332a: c1 98 rjmp 8000335c <USB_Device_ProcessControlRequest+0xfc>
8000332c: 48 a9 lddpc r9,80003354 <USB_Device_ProcessControlRequest+0xf4>
8000332e: 13 8a ld.ub r10,r9[0x0]
if (USB_Device_CurrentlySelfPowered)
CurrentStatus |= FEATURE_SELFPOWERED_ENABLED;
#endif
#if !defined(NO_DEVICE_REMOTE_WAKEUP)
if (USB_Device_RemoteWakeupEnabled)
80003330: 48 a9 lddpc r9,80003358 <USB_Device_ProcessControlRequest+0xf8>
80003332: 13 89 ld.ub r9,r9[0x0]
80003334: f0 09 18 00 cp.b r9,r8
80003338: c2 10 breq 8000337a <USB_Device_ProcessControlRequest+0x11a>
CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;
8000333a: a1 ba sbr r10,0x1
8000333c: c1 f8 rjmp 8000337a <USB_Device_ProcessControlRequest+0x11a>
8000333e: 00 00 add r0,r0
80003340: 00 00 add r0,r0
80003342: 06 14 sub r4,r3
80003344: 00 00 add r0,r0
80003346: 05 78 ld.ub r8,--r2
80003348: 00 00 add r0,r0
8000334a: 05 b9 ld.ub r9,r2[0x3]
8000334c: 80 00 ld.sh r0,r0[0x0]
8000334e: 22 56 sub r6,37
80003350: 80 00 ld.sh r0,r0[0x0]
80003352: 32 38 mov r8,35
80003354: 00 00 add r0,r0
80003356: 05 b5 ld.ub r5,r2[0x3]
80003358: 00 00 add r0,r0
8000335a: 05 b6 ld.ub r6,r2[0x3]
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
8000335c: 4c 69 lddpc r9,80003474 <USB_Device_ProcessControlRequest+0x214>
8000335e: 13 d9 ld.ub r9,r9[0x5]
80003360: f3 d9 c0 04 bfextu r9,r9,0x0,0x4
80003364: 4c 58 lddpc r8,80003478 <USB_Device_ProcessControlRequest+0x218>
80003366: 91 09 st.w r8[0x0],r9
* \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.
*/
static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsStalled(void)
{
return (&AVR32_USBB.UECON0)[USB_Endpoint_SelectedEndpoint].stallrq;
80003368: 70 09 ld.w r9,r8[0x0]
8000336a: a3 69 lsl r9,0x2
8000336c: e0 39 fe 40 sub r9,130624
80003370: 72 0a ld.w r10,r9[0x0]
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
80003372: 30 09 mov r9,0
break;
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
#if !defined(CONTROL_ONLY_DEVICE)
Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
CurrentStatus = Endpoint_IsStalled();
80003374: f5 da c2 61 bfextu r10,r10,0x13,0x1
80003378: 91 09 st.w r8[0x0],r9
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
8000337a: 4c 08 lddpc r8,80003478 <USB_Device_ProcessControlRequest+0x218>
8000337c: 30 1b mov r11,1
8000337e: 70 09 ld.w r9,r8[0x0]
80003380: a3 69 lsl r9,0x2
80003382: e0 39 fe a0 sub r9,130720
80003386: 72 0c ld.w r12,r9[0x0]
80003388: f9 db d0 41 bfins r12,r11,0x2,0x1
8000338c: 93 0c st.w r9[0x0],r12
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
8000338e: fc 17 e0 00 movh r7,0xe000
80003392: 70 0c ld.w r12,r8[0x0]
80003394: 4b a9 lddpc r9,8000347c <USB_Device_ProcessControlRequest+0x21c>
80003396: 70 06 ld.w r6,r8[0x0]
80003398: b1 66 lsl r6,0x10
8000339a: 0e 06 add r6,r7
8000339c: f2 0c 09 26 st.w r9[r12<<0x2],r6
* \param[in] Data Data to write to the currently selected endpoint's FIFO buffer.
*/
static inline void Endpoint_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;
static inline void Endpoint_Write_16_LE(const uint16_t Data)
{
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data & 0xFF);
800033a0: 70 06 ld.w r6,r8[0x0]
800033a2: f2 06 03 2c ld.w r12,r9[r6<<0x2]
800033a6: 18 ca st.b r12++,r10
800033a8: f2 06 09 2c st.w r9[r6<<0x2],r12
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data >> 8);
800033ac: 70 0c ld.w r12,r8[0x0]
800033ae: 30 06 mov r6,0
800033b0: f2 0c 03 2a ld.w r10,r9[r12<<0x2]
800033b4: 14 c6 st.b r10++,r6
800033b6: f2 0c 09 2a st.w r9[r12<<0x2],r10
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
800033ba: 70 0a ld.w r10,r8[0x0]
800033bc: a3 6a lsl r10,0x2
800033be: e0 3a fe a0 sub r10,130720
800033c2: 74 0c ld.w r12,r10[0x0]
800033c4: f9 db d0 01 bfins r12,r11,0x0,0x1
800033c8: 95 0c st.w r10[0x0],r12
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
800033ca: 70 0a ld.w r10,r8[0x0]
800033cc: a3 6a lsl r10,0x2
800033ce: e0 3a fd e0 sub r10,130528
800033d2: 74 0c ld.w r12,r10[0x0]
800033d4: f9 db d1 c1 bfins r12,r11,0xe,0x1
800033d8: 95 0c st.w r10[0x0],r12
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800033da: 70 0a ld.w r10,r8[0x0]
800033dc: 70 08 ld.w r8,r8[0x0]
800033de: b1 68 lsl r8,0x10
800033e0: f0 07 00 07 add r7,r8,r7
800033e4: f2 0a 09 27 st.w r9[r10<<0x2],r7
800033e8: c8 78 rjmp 800034f6 <USB_Device_ProcessControlRequest+0x296>
}
break;
case REQ_ClearFeature:
case REQ_SetFeature:
if ((bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) ||
800033ea: 30 28 mov r8,2
800033ec: f0 07 18 00 cp.b r7,r8
800033f0: 5f 0a sreq r10
800033f2: 30 08 mov r8,0
800033f4: f0 07 18 00 cp.b r7,r8
800033f8: 5f 09 sreq r9
800033fa: f5 e9 10 09 or r9,r10,r9
800033fe: f0 09 18 00 cp.b r9,r8
80003402: e0 80 01 8a breq 80003716 <USB_Device_ProcessControlRequest+0x4b6>
Endpoint_ClearStatusStage();
}
static void USB_Device_ClearSetFeature(void)
{
switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)
80003406: ef d7 c0 05 bfextu r7,r7,0x0,0x5
8000340a: c0 50 breq 80003414 <USB_Device_ProcessControlRequest+0x1b4>
8000340c: 58 27 cp.w r7,2
8000340e: e0 81 01 84 brne 80003716 <USB_Device_ProcessControlRequest+0x4b6>
80003412: c0 f8 rjmp 80003430 <USB_Device_ProcessControlRequest+0x1d0>
{
#if !defined(NO_DEVICE_REMOTE_WAKEUP)
case REQREC_DEVICE:
if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup)
80003414: 49 88 lddpc r8,80003474 <USB_Device_ProcessControlRequest+0x214>
80003416: 11 b9 ld.ub r9,r8[0x3]
80003418: 30 18 mov r8,1
8000341a: f0 09 18 00 cp.b r9,r8
8000341e: e0 81 01 7c brne 80003716 <USB_Device_ProcessControlRequest+0x4b6>
USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature);
80003422: 30 38 mov r8,3
80003424: f0 0c 18 00 cp.b r12,r8
80003428: 5f 09 sreq r9
8000342a: 49 68 lddpc r8,80003480 <USB_Device_ProcessControlRequest+0x220>
8000342c: b0 89 st.b r8[0x0],r9
8000342e: c4 f8 rjmp 800034cc <USB_Device_ProcessControlRequest+0x26c>
break;
#endif
#if !defined(CONTROL_ONLY_DEVICE)
case REQREC_ENDPOINT:
if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_EndpointHalt)
80003430: 49 19 lddpc r9,80003474 <USB_Device_ProcessControlRequest+0x214>
80003432: 13 ba ld.ub r10,r9[0x3]
80003434: f0 0a 18 00 cp.b r10,r8
80003438: c4 a1 brne 800034cc <USB_Device_ProcessControlRequest+0x26c>
{
uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
8000343a: 13 d9 ld.ub r9,r9[0x5]
8000343c: f3 d9 c0 04 bfextu r9,r9,0x0,0x4
if (EndpointIndex == ENDPOINT_CONTROLEP)
80003440: e0 80 01 6b breq 80003716 <USB_Device_ProcessControlRequest+0x4b6>
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
80003444: 48 d8 lddpc r8,80003478 <USB_Device_ProcessControlRequest+0x218>
* \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise.
*/
static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsEnabled(void)
{
return ((AVR32_USBB.uerst & (AVR32_USBB_EPEN0_MASK << USB_Endpoint_SelectedEndpoint)) ? true : false);
80003446: fe 6a 00 00 mov r10,-131072
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
8000344a: 91 09 st.w r8[0x0],r9
* \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise.
*/
static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsEnabled(void)
{
return ((AVR32_USBB.uerst & (AVR32_USBB_EPEN0_MASK << USB_Endpoint_SelectedEndpoint)) ? true : false);
8000344c: 74 76 ld.w r6,r10[0x1c]
8000344e: 70 07 ld.w r7,r8[0x0]
return;
Endpoint_SelectEndpoint(EndpointIndex);
if (Endpoint_IsEnabled())
80003450: 30 1b mov r11,1
80003452: f6 07 09 47 lsl r7,r11,r7
80003456: 0c 67 and r7,r6
80003458: c3 a0 breq 800034cc <USB_Device_ProcessControlRequest+0x26c>
{
if (USB_ControlRequest.bRequest == REQ_SetFeature)
8000345a: 30 37 mov r7,3
8000345c: ee 0c 18 00 cp.b r12,r7
80003460: c1 21 brne 80003484 <USB_Device_ProcessControlRequest+0x224>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_StallTransaction(void)
{
(&AVR32_USBB.UECON0SET)[USB_Endpoint_SelectedEndpoint].stallrqs = true;
80003462: 70 08 ld.w r8,r8[0x0]
80003464: a3 68 lsl r8,0x2
80003466: e0 38 fe 10 sub r8,130576
8000346a: 70 09 ld.w r9,r8[0x0]
8000346c: f3 db d2 61 bfins r9,r11,0x13,0x1
80003470: c2 d8 rjmp 800034ca <USB_Device_ProcessControlRequest+0x26a>
80003472: 00 00 add r0,r0
80003474: 00 00 add r0,r0
80003476: 05 b9 ld.ub r9,r2[0x3]
80003478: 00 00 add r0,r0
8000347a: 05 78 ld.ub r8,--r2
8000347c: 00 00 add r0,r0
8000347e: 06 14 sub r4,r3
80003480: 00 00 add r0,r0
80003482: 05 b6 ld.ub r6,r2[0x3]
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearStall(void)
{
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].stallrqc = true;
80003484: 70 0c ld.w r12,r8[0x0]
80003486: a3 6c lsl r12,0x2
80003488: e0 3c fd e0 sub r12,130528
8000348c: 78 07 ld.w r7,r12[0x0]
8000348e: ef db d2 61 bfins r7,r11,0x13,0x1
80003492: 99 07 st.w r12[0x0],r7
static inline void Endpoint_ResetEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ResetEndpoint(const uint8_t Address)
{
uint32_t EndpointNumber = (Address & ENDPOINT_EPNUM_MASK);
AVR32_USBB.uerst |= (AVR32_USBB_EPRST0_MASK << EndpointNumber);
80003494: e0 7c 00 00 mov r12,65536
80003498: 74 77 ld.w r7,r10[0x1c]
8000349a: f8 09 09 4c lsl r12,r12,r9
8000349e: f9 e7 10 07 or r7,r12,r7
800034a2: 95 77 st.w r10[0x1c],r7
AVR32_USBB.uerst &= ~(AVR32_USBB_EPRST0_MASK << EndpointNumber);
800034a4: 5c dc com r12
800034a6: 74 77 ld.w r7,r10[0x1c]
800034a8: 0e 6c and r12,r7
800034aa: 95 7c st.w r10[0x1c],r12
USB_Endpoint_FIFOPos[EndpointNumber] = &AVR32_USBB_SLAVE[EndpointNumber * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800034ac: fc 1a e0 00 movh r10,0xe000
800034b0: f2 0c 15 10 lsl r12,r9,0x10
/** Resets the data toggle of the currently selected endpoint. */
static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ResetDataToggle(void)
{
(&AVR32_USBB.UECON0SET)[USB_Endpoint_SelectedEndpoint].rstdts = true;
800034b4: 70 08 ld.w r8,r8[0x0]
{
uint32_t EndpointNumber = (Address & ENDPOINT_EPNUM_MASK);
AVR32_USBB.uerst |= (AVR32_USBB_EPRST0_MASK << EndpointNumber);
AVR32_USBB.uerst &= ~(AVR32_USBB_EPRST0_MASK << EndpointNumber);
USB_Endpoint_FIFOPos[EndpointNumber] = &AVR32_USBB_SLAVE[EndpointNumber * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800034b6: 14 0c add r12,r10
/** Resets the data toggle of the currently selected endpoint. */
static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ResetDataToggle(void)
{
(&AVR32_USBB.UECON0SET)[USB_Endpoint_SelectedEndpoint].rstdts = true;
800034b8: a3 68 lsl r8,0x2
{
uint32_t EndpointNumber = (Address & ENDPOINT_EPNUM_MASK);
AVR32_USBB.uerst |= (AVR32_USBB_EPRST0_MASK << EndpointNumber);
AVR32_USBB.uerst &= ~(AVR32_USBB_EPRST0_MASK << EndpointNumber);
USB_Endpoint_FIFOPos[EndpointNumber] = &AVR32_USBB_SLAVE[EndpointNumber * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800034ba: 4b 2a lddpc r10,80003580 <USB_Device_ProcessControlRequest+0x320>
/** Resets the data toggle of the currently selected endpoint. */
static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ResetDataToggle(void)
{
(&AVR32_USBB.UECON0SET)[USB_Endpoint_SelectedEndpoint].rstdts = true;
800034bc: e0 38 fe 10 sub r8,130576
{
uint32_t EndpointNumber = (Address & ENDPOINT_EPNUM_MASK);
AVR32_USBB.uerst |= (AVR32_USBB_EPRST0_MASK << EndpointNumber);
AVR32_USBB.uerst &= ~(AVR32_USBB_EPRST0_MASK << EndpointNumber);
USB_Endpoint_FIFOPos[EndpointNumber] = &AVR32_USBB_SLAVE[EndpointNumber * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800034c0: f4 09 09 2c st.w r10[r9<<0x2],r12
/** Resets the data toggle of the currently selected endpoint. */
static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ResetDataToggle(void)
{
(&AVR32_USBB.UECON0SET)[USB_Endpoint_SelectedEndpoint].rstdts = true;
800034c4: 70 09 ld.w r9,r8[0x0]
800034c6: f3 db d2 41 bfins r9,r11,0x12,0x1
800034ca: 91 09 st.w r8[0x0],r9
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
800034cc: 30 09 mov r9,0
800034ce: 4a e8 lddpc r8,80003584 <USB_Device_ProcessControlRequest+0x324>
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
800034d0: 30 1b mov r11,1
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
800034d2: 91 09 st.w r8[0x0],r9
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
800034d4: 70 09 ld.w r9,r8[0x0]
800034d6: a3 69 lsl r9,0x2
800034d8: e0 39 fe a0 sub r9,130720
800034dc: 72 0a ld.w r10,r9[0x0]
800034de: f5 db d0 41 bfins r10,r11,0x2,0x1
800034e2: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800034e4: 70 09 ld.w r9,r8[0x0]
800034e6: 70 0a ld.w r10,r8[0x0]
800034e8: fc 18 e0 00 movh r8,0xe000
800034ec: b1 6a lsl r10,0x10
800034ee: 10 0a add r10,r8
800034f0: 4a 48 lddpc r8,80003580 <USB_Device_ProcessControlRequest+0x320>
800034f2: f0 09 09 2a st.w r8[r9<<0x2],r10
Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
Endpoint_ClearSETUP();
Endpoint_ClearStatusStage();
800034f6: f0 1f 00 25 mcall 80003588 <USB_Device_ProcessControlRequest+0x328>
800034fa: c0 e9 rjmp 80003716 <USB_Device_ProcessControlRequest+0x4b6>
USB_Device_ClearSetFeature();
}
break;
case REQ_SetAddress:
if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
800034fc: 58 07 cp.w r7,0
800034fe: e0 81 01 0c brne 80003716 <USB_Device_ProcessControlRequest+0x4b6>
}
}
static void USB_Device_SetAddress(void)
{
uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F);
80003502: 4a 38 lddpc r8,8000358c <USB_Device_ProcessControlRequest+0x32c>
80003504: 11 b6 ld.ub r6,r8[0x3]
80003506: ed d6 c0 07 bfextu r6,r6,0x0,0x7
GCC_MEMORY_BARRIER();
#if (ARCH == ARCH_AVR8)
return SREG;
#elif (ARCH == ARCH_UC3)
return __builtin_mfsr(AVR32_SR);
8000350a: e1 b5 00 00 mfsr r5,0x0
GCC_MEMORY_BARRIER();
#if (ARCH == ARCH_AVR8)
cli();
#elif (ARCH == ARCH_UC3)
__builtin_ssrf(AVR32_SR_GM_OFFSET);
8000350e: d3 03 ssrf 0x10
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
80003510: 49 d7 lddpc r7,80003584 <USB_Device_ProcessControlRequest+0x324>
80003512: 6e 08 ld.w r8,r7[0x0]
80003514: a3 68 lsl r8,0x2
80003516: e0 38 fe a0 sub r8,130720
8000351a: 30 1a mov r10,1
8000351c: 70 09 ld.w r9,r8[0x0]
8000351e: f3 da d0 41 bfins r9,r10,0x2,0x1
80003522: 91 09 st.w r8[0x0],r9
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003524: fc 18 e0 00 movh r8,0xe000
80003528: 6e 09 ld.w r9,r7[0x0]
8000352a: 6e 0a ld.w r10,r7[0x0]
8000352c: b1 6a lsl r10,0x10
8000352e: 10 0a add r10,r8
80003530: 49 48 lddpc r8,80003580 <USB_Device_ProcessControlRequest+0x320>
80003532: f0 09 09 2a st.w r8[r9<<0x2],r10
uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
GlobalInterruptDisable();
Endpoint_ClearSETUP();
Endpoint_ClearStatusStage();
80003536: f0 1f 00 15 mcall 80003588 <USB_Device_ProcessControlRequest+0x328>
* \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
*/
static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsINReady(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].txini;
8000353a: 6e 08 ld.w r8,r7[0x0]
8000353c: a3 68 lsl r8,0x2
8000353e: e0 38 fe d0 sub r8,130768
80003542: 70 08 ld.w r8,r8[0x0]
while (!(Endpoint_IsINReady()));
80003544: ed b8 00 00 bld r8,0x0
80003548: cf 91 brne 8000353a <USB_Device_ProcessControlRequest+0x2da>
#endif
static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void USB_Device_SetDeviceAddress(const uint8_t Address)
{
AVR32_USBB.UDCON.uadd = Address;
8000354a: fe 68 00 00 mov r8,-131072
8000354e: 70 09 ld.w r9,r8[0x0]
80003550: f3 d6 d0 07 bfins r9,r6,0x0,0x7
80003554: 91 09 st.w r8[0x0],r9
AVR32_USBB.UDCON.adden = (Address ? true : false);
80003556: 58 06 cp.w r6,0
80003558: 5f 19 srne r9
8000355a: 70 0a ld.w r10,r8[0x0]
8000355c: f5 d9 d0 e1 bfins r10,r9,0x7,0x1
80003560: 91 0a st.w r8[0x0],r10
USB_Device_SetDeviceAddress(DeviceAddress);
USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
80003562: 58 09 cp.w r9,0
80003564: f9 b9 01 03 movne r9,3
80003568: f9 b9 00 02 moveq r9,2
8000356c: 48 98 lddpc r8,80003590 <USB_Device_ProcessControlRequest+0x330>
8000356e: b0 89 st.b r8[0x0],r9
GCC_MEMORY_BARRIER();
#if (ARCH == ARCH_AVR8)
SREG = GlobalIntState;
#elif (ARCH == ARCH_UC3)
if (GlobalIntState & AVR32_SR_GM)
80003570: e2 15 00 10 andl r5,0x10,COH
80003574: c0 30 breq 8000357a <USB_Device_ProcessControlRequest+0x31a>
__builtin_ssrf(AVR32_SR_GM_OFFSET);
80003576: d3 03 ssrf 0x10
80003578: c0 28 rjmp 8000357c <USB_Device_ProcessControlRequest+0x31c>
else
__builtin_csrf(AVR32_SR_GM_OFFSET);
8000357a: d5 03 csrf 0x10
#elif (ARCH == ARCH_XMEGA)
SREG = GlobalIntState;
#endif
GCC_MEMORY_BARRIER();
8000357c: cc d8 rjmp 80003716 <USB_Device_ProcessControlRequest+0x4b6>
8000357e: 00 00 add r0,r0
80003580: 00 00 add r0,r0
80003582: 06 14 sub r4,r3
80003584: 00 00 add r0,r0
80003586: 05 78 ld.ub r8,--r2
80003588: 80 00 ld.sh r0,r0[0x0]
8000358a: 3e 10 mov r0,-31
8000358c: 00 00 add r0,r0
8000358e: 05 b9 ld.ub r9,r2[0x3]
80003590: 00 00 add r0,r0
80003592: 05 b8 ld.ub r8,r2[0x3]
if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
USB_Device_SetAddress();
break;
case REQ_GetDescriptor:
if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||
80003594: ee c7 00 80 sub r7,r7,128
80003598: 30 18 mov r8,1
8000359a: f0 07 18 00 cp.b r7,r8
8000359e: e0 8b 00 bc brhi 80003716 <USB_Device_ProcessControlRequest+0x4b6>
USB_Device_GetInternalSerialDescriptor();
return;
}
#endif
if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex,
800035a2: 4c f8 lddpc r8,800036dc <USB_Device_ProcessControlRequest+0x47c>
800035a4: 11 db ld.ub r11,r8[0x5]
800035a6: 11 ac ld.ub r12,r8[0x2]
800035a8: 11 b8 ld.ub r8,r8[0x3]
800035aa: 1a 9a mov r10,sp
800035ac: f1 ec 10 8c or r12,r8,r12<<0x8
800035b0: f0 1f 00 4c mcall 800036e0 <USB_Device_ProcessControlRequest+0x480>
800035b4: f7 dc b0 10 bfexts r11,r12,0x0,0x10
800035b8: e0 80 00 af breq 80003716 <USB_Device_ProcessControlRequest+0x4b6>
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
800035bc: 4c a7 lddpc r7,800036e4 <USB_Device_ProcessControlRequest+0x484>
800035be: 30 16 mov r6,1
800035c0: 6e 08 ld.w r8,r7[0x0]
800035c2: a3 68 lsl r8,0x2
800035c4: e0 38 fe a0 sub r8,130720
800035c8: 70 09 ld.w r9,r8[0x0]
800035ca: f3 d6 d0 41 bfins r9,r6,0x2,0x1
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800035ce: fc 14 e0 00 movh r4,0xe000
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
800035d2: 91 09 st.w r8[0x0],r9
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800035d4: 6e 08 ld.w r8,r7[0x0]
800035d6: 6e 09 ld.w r9,r7[0x0]
800035d8: b1 69 lsl r9,0x10
800035da: 08 09 add r9,r4
800035dc: 4c 35 lddpc r5,800036e8 <USB_Device_ProcessControlRequest+0x488>
}
Endpoint_ClearSETUP();
#if defined(USE_RAM_DESCRIPTORS) || !defined(ARCH_HAS_MULTI_ADDRESS_SPACE)
Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize);
800035de: 5c 7b castu.h r11
800035e0: ea 08 09 29 st.w r5[r8<<0x2],r9
800035e4: 40 0c lddsp r12,sp[0x0]
800035e6: f0 1f 00 42 mcall 800036ec <USB_Device_ProcessControlRequest+0x48c>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearOUT(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxoutic = true;
800035ea: 6e 08 ld.w r8,r7[0x0]
800035ec: a3 68 lsl r8,0x2
800035ee: e0 38 fe a0 sub r8,130720
800035f2: 70 09 ld.w r9,r8[0x0]
800035f4: f3 d6 d0 21 bfins r9,r6,0x1,0x1
800035f8: 91 09 st.w r8[0x0],r9
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
800035fa: 6e 08 ld.w r8,r7[0x0]
800035fc: a3 68 lsl r8,0x2
800035fe: e0 38 fd e0 sub r8,130528
80003602: 70 09 ld.w r9,r8[0x0]
80003604: f3 d6 d1 c1 bfins r9,r6,0xe,0x1
80003608: 91 09 st.w r8[0x0],r9
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
8000360a: 6e 08 ld.w r8,r7[0x0]
8000360c: 6e 09 ld.w r9,r7[0x0]
8000360e: b1 69 lsl r9,0x10
80003610: f2 04 00 04 add r4,r9,r4
80003614: ea 08 09 24 st.w r5[r8<<0x2],r4
80003618: c7 f8 rjmp 80003716 <USB_Device_ProcessControlRequest+0x4b6>
USB_Device_GetDescriptor();
}
break;
case REQ_GetConfiguration:
if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))
8000361a: 38 08 mov r8,-128
8000361c: f0 07 18 00 cp.b r7,r8
80003620: e0 81 00 7b brne 80003716 <USB_Device_ProcessControlRequest+0x4b6>
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
80003624: 4b 08 lddpc r8,800036e4 <USB_Device_ProcessControlRequest+0x484>
80003626: 30 1b mov r11,1
80003628: 70 09 ld.w r9,r8[0x0]
8000362a: a3 69 lsl r9,0x2
8000362c: e0 39 fe a0 sub r9,130720
80003630: 72 0a ld.w r10,r9[0x0]
80003632: f5 db d0 41 bfins r10,r11,0x2,0x1
80003636: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003638: 70 0a ld.w r10,r8[0x0]
8000363a: 4a c9 lddpc r9,800036e8 <USB_Device_ProcessControlRequest+0x488>
8000363c: 70 07 ld.w r7,r8[0x0]
8000363e: fc 1c e0 00 movh r12,0xe000
80003642: b1 67 lsl r7,0x10
80003644: 18 07 add r7,r12
80003646: f2 0a 09 27 st.w r9[r10<<0x2],r7
static void USB_Device_GetConfiguration(void)
{
Endpoint_ClearSETUP();
Endpoint_Write_8(USB_Device_ConfigurationNumber);
8000364a: 4a aa lddpc r10,800036f0 <USB_Device_ProcessControlRequest+0x490>
* \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer.
*/
static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
static inline void Endpoint_Write_8(const uint8_t Data)
{
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = Data;
8000364c: 70 07 ld.w r7,r8[0x0]
8000364e: 15 86 ld.ub r6,r10[0x0]
80003650: f2 07 03 2a ld.w r10,r9[r7<<0x2]
80003654: 14 c6 st.b r10++,r6
80003656: f2 07 09 2a st.w r9[r7<<0x2],r10
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
8000365a: 70 0a ld.w r10,r8[0x0]
8000365c: a3 6a lsl r10,0x2
8000365e: e0 3a fe a0 sub r10,130720
80003662: 74 07 ld.w r7,r10[0x0]
80003664: ef db d0 01 bfins r7,r11,0x0,0x1
80003668: 95 07 st.w r10[0x0],r7
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
8000366a: 70 0a ld.w r10,r8[0x0]
8000366c: a3 6a lsl r10,0x2
8000366e: e0 3a fd e0 sub r10,130528
80003672: 74 07 ld.w r7,r10[0x0]
80003674: ef db d1 c1 bfins r7,r11,0xe,0x1
80003678: 95 07 st.w r10[0x0],r7
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
8000367a: 70 0a ld.w r10,r8[0x0]
8000367c: 70 08 ld.w r8,r8[0x0]
8000367e: b1 68 lsl r8,0x10
80003680: f0 0c 00 0c add r12,r8,r12
80003684: f2 0a 09 2c st.w r9[r10<<0x2],r12
80003688: c3 7b rjmp 800034f6 <USB_Device_ProcessControlRequest+0x296>
if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))
USB_Device_GetConfiguration();
break;
case REQ_SetConfiguration:
if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
8000368a: 58 07 cp.w r7,0
8000368c: c4 51 brne 80003716 <USB_Device_ProcessControlRequest+0x4b6>
}
static void USB_Device_SetConfiguration(void)
{
#if defined(FIXED_NUM_CONFIGURATIONS)
if ((uint8_t)USB_ControlRequest.wValue > FIXED_NUM_CONFIGURATIONS)
8000368e: 49 4a lddpc r10,800036dc <USB_Device_ProcessControlRequest+0x47c>
80003690: 30 18 mov r8,1
80003692: 15 b9 ld.ub r9,r10[0x3]
80003694: f0 09 18 00 cp.b r9,r8
80003698: e0 8b 00 3f brhi 80003716 <USB_Device_ProcessControlRequest+0x4b6>
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
8000369c: 49 29 lddpc r9,800036e4 <USB_Device_ProcessControlRequest+0x484>
8000369e: 72 08 ld.w r8,r9[0x0]
800036a0: a3 68 lsl r8,0x2
800036a2: e0 38 fe a0 sub r8,130720
800036a6: 30 1c mov r12,1
800036a8: 70 0b ld.w r11,r8[0x0]
800036aa: f7 dc d0 41 bfins r11,r12,0x2,0x1
800036ae: 91 0b st.w r8[0x0],r11
#endif
#endif
Endpoint_ClearSETUP();
USB_Device_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;
800036b0: 15 b8 ld.ub r8,r10[0x3]
800036b2: 49 06 lddpc r6,800036f0 <USB_Device_ProcessControlRequest+0x490>
800036b4: ac 88 st.b r6[0x0],r8
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
800036b6: fc 18 e0 00 movh r8,0xe000
800036ba: 72 0a ld.w r10,r9[0x0]
800036bc: 72 09 ld.w r9,r9[0x0]
800036be: b1 69 lsl r9,0x10
800036c0: 10 09 add r9,r8
800036c2: 48 a8 lddpc r8,800036e8 <USB_Device_ProcessControlRequest+0x488>
800036c4: f0 0a 09 29 st.w r8[r10<<0x2],r9
Endpoint_ClearStatusStage();
800036c8: f0 1f 00 0b mcall 800036f4 <USB_Device_ProcessControlRequest+0x494>
if (USB_Device_ConfigurationNumber)
800036cc: 0d 88 ld.ub r8,r6[0x0]
800036ce: ee 08 18 00 cp.b r8,r7
800036d2: c1 50 breq 800036fc <USB_Device_ProcessControlRequest+0x49c>
USB_DeviceState = DEVICE_STATE_Configured;
800036d4: 30 49 mov r9,4
800036d6: 48 98 lddpc r8,800036f8 <USB_Device_ProcessControlRequest+0x498>
800036d8: b0 89 st.b r8[0x0],r9
800036da: c1 c8 rjmp 80003712 <USB_Device_ProcessControlRequest+0x4b2>
800036dc: 00 00 add r0,r0
800036de: 05 b9 ld.ub r9,r2[0x3]
800036e0: 80 00 ld.sh r0,r0[0x0]
800036e2: 23 d8 sub r8,61
800036e4: 00 00 add r0,r0
800036e6: 05 78 ld.ub r8,--r2
800036e8: 00 00 add r0,r0
800036ea: 06 14 sub r4,r3
800036ec: 80 00 ld.sh r0,r0[0x0]
800036ee: 3f 4c mov r12,-12
800036f0: 00 00 add r0,r0
800036f2: 05 b4 ld.ub r4,r2[0x3]
800036f4: 80 00 ld.sh r0,r0[0x0]
800036f6: 3e 10 mov r0,-31
800036f8: 00 00 add r0,r0
800036fa: 05 b8 ld.ub r8,r2[0x3]
}
static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline bool USB_Device_IsAddressSet(void)
{
return AVR32_USBB.UDCON.adden;
800036fc: fe 68 00 00 mov r8,-131072
else
USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;
80003700: 49 89 lddpc r9,80003760 <USB_Device_ProcessControlRequest+0x500>
80003702: 70 08 ld.w r8,r8[0x0]
80003704: e2 18 00 80 andl r8,0x80,COH
80003708: f9 b8 01 04 movne r8,4
8000370c: f9 b8 00 01 moveq r8,1
80003710: b2 88 st.b r9[0x0],r8
EVENT_USB_Device_ConfigurationChanged();
80003712: f0 1f 00 15 mcall 80003764 <USB_Device_ProcessControlRequest+0x504>
* \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
*/
static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsSETUPReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxstpi;
80003716: 49 58 lddpc r8,80003768 <USB_Device_ProcessControlRequest+0x508>
80003718: 70 09 ld.w r9,r8[0x0]
8000371a: a3 69 lsl r9,0x2
8000371c: e0 39 fe d0 sub r9,130768
80003720: 72 09 ld.w r9,r9[0x0]
break;
}
}
if (Endpoint_IsSETUPReceived())
80003722: ed b9 00 02 bld r9,0x2
80003726: c1 b1 brne 8000375c <USB_Device_ProcessControlRequest+0x4fc>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_StallTransaction(void)
{
(&AVR32_USBB.UECON0SET)[USB_Endpoint_SelectedEndpoint].stallrqs = true;
80003728: 70 09 ld.w r9,r8[0x0]
8000372a: 30 1b mov r11,1
8000372c: a3 69 lsl r9,0x2
8000372e: e0 39 fe 10 sub r9,130576
80003732: 72 0a ld.w r10,r9[0x0]
80003734: f5 db d2 61 bfins r10,r11,0x13,0x1
80003738: 93 0a st.w r9[0x0],r10
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
8000373a: 70 09 ld.w r9,r8[0x0]
8000373c: a3 69 lsl r9,0x2
8000373e: e0 39 fe a0 sub r9,130720
80003742: 72 0a ld.w r10,r9[0x0]
80003744: f5 db d0 41 bfins r10,r11,0x2,0x1
80003748: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
8000374a: 70 09 ld.w r9,r8[0x0]
8000374c: 70 0a ld.w r10,r8[0x0]
8000374e: fc 18 e0 00 movh r8,0xe000
80003752: b1 6a lsl r10,0x10
80003754: 10 0a add r10,r8
80003756: 48 68 lddpc r8,8000376c <USB_Device_ProcessControlRequest+0x50c>
80003758: f0 09 09 2a st.w r8[r9<<0x2],r10
{
Endpoint_StallTransaction();
Endpoint_ClearSETUP();
}
}
8000375c: 2f fd sub sp,-4
8000375e: d8 22 popm r4-r7,pc
80003760: 00 00 add r0,r0
80003762: 05 b8 ld.ub r8,r2[0x3]
80003764: 80 00 ld.sh r0,r0[0x0]
80003766: 22 70 sub r0,39
80003768: 00 00 add r0,r0
8000376a: 05 78 ld.ub r8,--r2
8000376c: 00 00 add r0,r0
8000376e: 06 14 sub r4,r3
80003770 <USB_Event_Stub>:
// cppcheck-suppress unusedFunction
void USB_Event_Stub(void)
{
}
80003770: 5e fc retal r12
80003772: d7 03 nop
80003774 <USB_USBTask>:
#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR)
volatile uint8_t USB_DeviceState;
#endif
void USB_USBTask(void)
{
80003774: d4 21 pushm r4-r7,lr
}
#if defined(USB_CAN_BE_DEVICE)
static void USB_DeviceTask(void)
{
if (USB_DeviceState != DEVICE_STATE_Unattached)
80003776: 48 f8 lddpc r8,800037b0 <USB_USBTask+0x3c>
80003778: 11 88 ld.ub r8,r8[0x0]
8000377a: 58 08 cp.w r8,0
8000377c: c1 80 breq 800037ac <USB_USBTask+0x38>
* \return Index of the currently selected endpoint.
*/
static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint8_t Endpoint_GetCurrentEndpoint(void)
{
return (USB_Endpoint_SelectedEndpoint | Endpoint_GetEndpointDirection());
8000377e: 48 e8 lddpc r8,800037b4 <USB_USBTask+0x40>
80003780: 70 07 ld.w r7,r8[0x0]
* \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
*/
static inline uint32_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint32_t Endpoint_GetEndpointDirection(void)
{
return ((&AVR32_USBB.UECFG0)[USB_Endpoint_SelectedEndpoint].epdir ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT);
80003782: 70 09 ld.w r9,r8[0x0]
80003784: a3 69 lsl r9,0x2
80003786: e0 39 ff 00 sub r9,130816
8000378a: 72 09 ld.w r9,r9[0x0]
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
8000378c: 30 09 mov r9,0
8000378e: 91 09 st.w r8[0x0],r9
* \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
*/
static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsSETUPReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxstpi;
80003790: 70 08 ld.w r8,r8[0x0]
80003792: a3 68 lsl r8,0x2
80003794: e0 38 fe d0 sub r8,130768
80003798: 70 08 ld.w r8,r8[0x0]
{
uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();
Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
if (Endpoint_IsSETUPReceived())
8000379a: ed b8 00 02 bld r8,0x2
8000379e: c0 31 brne 800037a4 <USB_USBTask+0x30>
USB_Device_ProcessControlRequest();
800037a0: f0 1f 00 06 mcall 800037b8 <USB_USBTask+0x44>
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
800037a4: ef d7 c0 04 bfextu r7,r7,0x0,0x4
800037a8: 48 38 lddpc r8,800037b4 <USB_USBTask+0x40>
800037aa: 91 07 st.w r8[0x0],r7
800037ac: d8 22 popm r4-r7,pc
800037ae: 00 00 add r0,r0
800037b0: 00 00 add r0,r0
800037b2: 05 b8 ld.ub r8,r2[0x3]
800037b4: 00 00 add r0,r0
800037b6: 05 78 ld.ub r8,--r2
800037b8: 80 00 ld.sh r0,r0[0x0]
800037ba: 32 60 mov r0,38
800037bc <CDC_Device_Event_Stub>:
// cppcheck-suppress unusedFunction
void CDC_Device_Event_Stub(void)
{
}
800037bc: 5e fc retal r12
800037be: d7 03 nop
800037c0 <CDC_Device_Flush>:
Endpoint_Write_8(Data);
return ENDPOINT_READYWAIT_NoError;
}
uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
{
800037c0: d4 21 pushm r4-r7,lr
if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
800037c2: 4a e8 lddpc r8,80003878 <CDC_Device_Flush+0xb8>
800037c4: 30 49 mov r9,4
800037c6: 11 88 ld.ub r8,r8[0x0]
800037c8: f2 08 18 00 cp.b r8,r9
800037cc: c5 21 brne 80003870 <CDC_Device_Flush+0xb0>
800037ce: f9 19 00 18 ld.uh r9,r12[24]
800037d2: f9 18 00 1a ld.uh r8,r12[26]
800037d6: f1 e9 11 08 or r8,r8,r9<<0x10
800037da: c4 b0 breq 80003870 <CDC_Device_Flush+0xb0>
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
800037dc: 19 a8 ld.ub r8,r12[0x2]
800037de: f1 d8 c0 04 bfextu r8,r8,0x0,0x4
800037e2: 4a 77 lddpc r7,8000387c <CDC_Device_Flush+0xbc>
800037e4: 8f 08 st.w r7[0x0],r8
* \return Total number of bytes in the currently selected Endpoint's FIFO buffer.
*/
static inline uint16_t Endpoint_BytesInEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Endpoint_BytesInEndpoint(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].byct;
800037e6: 6e 08 ld.w r8,r7[0x0]
800037e8: a3 68 lsl r8,0x2
800037ea: e0 38 fe d0 sub r8,130768
800037ee: 70 08 ld.w r8,r8[0x0]
800037f0: f1 d8 c2 8b bfextu r8,r8,0x14,0xb
uint8_t ErrorCode;
Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
if (!(Endpoint_BytesInEndpoint()))
800037f4: c4 00 breq 80003874 <CDC_Device_Flush+0xb4>
* on its direction.
*/
static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsReadWriteAllowed(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rwall;
800037f6: 6e 08 ld.w r8,r7[0x0]
800037f8: a3 68 lsl r8,0x2
800037fa: e0 38 fe d0 sub r8,130768
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
800037fe: 30 16 mov r6,1
* on its direction.
*/
static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsReadWriteAllowed(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rwall;
80003800: 70 09 ld.w r9,r8[0x0]
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
80003802: 6e 08 ld.w r8,r7[0x0]
80003804: a3 68 lsl r8,0x2
80003806: e0 38 fe a0 sub r8,130720
8000380a: 70 0a ld.w r10,r8[0x0]
8000380c: f5 d6 d0 01 bfins r10,r6,0x0,0x1
80003810: 91 0a st.w r8[0x0],r10
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
80003812: 6e 08 ld.w r8,r7[0x0]
80003814: a3 68 lsl r8,0x2
80003816: e0 38 fd e0 sub r8,130528
8000381a: 70 0a ld.w r10,r8[0x0]
8000381c: f5 d6 d1 c1 bfins r10,r6,0xe,0x1
80003820: 91 0a st.w r8[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003822: 49 85 lddpc r5,80003880 <CDC_Device_Flush+0xc0>
80003824: 6e 08 ld.w r8,r7[0x0]
80003826: fc 14 e0 00 movh r4,0xe000
8000382a: 6e 0a ld.w r10,r7[0x0]
8000382c: b1 6a lsl r10,0x10
8000382e: 08 0a add r10,r4
80003830: ea 08 09 2a st.w r5[r8<<0x2],r10
bool BankFull = !(Endpoint_IsReadWriteAllowed());
Endpoint_ClearIN();
if (BankFull)
80003834: ed b9 00 10 bld r9,0x10
80003838: c1 e0 breq 80003874 <CDC_Device_Flush+0xb4>
{
if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
8000383a: f0 1f 00 13 mcall 80003884 <CDC_Device_Flush+0xc4>
8000383e: c1 c1 brne 80003876 <CDC_Device_Flush+0xb6>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
80003840: 6e 08 ld.w r8,r7[0x0]
80003842: a3 68 lsl r8,0x2
80003844: e0 38 fe a0 sub r8,130720
80003848: 70 09 ld.w r9,r8[0x0]
8000384a: f3 d6 d0 01 bfins r9,r6,0x0,0x1
8000384e: 91 09 st.w r8[0x0],r9
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
80003850: 6e 08 ld.w r8,r7[0x0]
80003852: a3 68 lsl r8,0x2
80003854: e0 38 fd e0 sub r8,130528
80003858: 70 09 ld.w r9,r8[0x0]
8000385a: f3 d6 d1 c1 bfins r9,r6,0xe,0x1
8000385e: 91 09 st.w r8[0x0],r9
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003860: 6e 08 ld.w r8,r7[0x0]
80003862: 6e 09 ld.w r9,r7[0x0]
80003864: b1 69 lsl r9,0x10
80003866: f2 04 00 04 add r4,r9,r4
8000386a: ea 08 09 24 st.w r5[r8<<0x2],r4
8000386e: d8 22 popm r4-r7,pc
80003870: 30 2c mov r12,2
80003872: d8 22 popm r4-r7,pc
80003874: 30 0c mov r12,0
Endpoint_ClearIN();
}
return ENDPOINT_READYWAIT_NoError;
}
80003876: d8 22 popm r4-r7,pc
80003878: 00 00 add r0,r0
8000387a: 05 b8 ld.ub r8,r2[0x3]
8000387c: 00 00 add r0,r0
8000387e: 05 78 ld.ub r8,--r2
80003880: 00 00 add r0,r0
80003882: 06 14 sub r4,r3
80003884: 80 00 ld.sh r0,r0[0x0]
80003886: 3e b4 mov r4,-21
80003888 <CDC_Device_USBTask>:
return true;
}
void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
{
80003888: d4 01 pushm lr
if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
8000388a: 48 98 lddpc r8,800038ac <CDC_Device_USBTask+0x24>
8000388c: 30 49 mov r9,4
8000388e: 11 8a ld.ub r10,r8[0x0]
80003890: f2 0a 18 00 cp.b r10,r9
80003894: c0 a1 brne 800038a8 <CDC_Device_USBTask+0x20>
80003896: f9 19 00 1a ld.uh r9,r12[26]
8000389a: f9 18 00 18 ld.uh r8,r12[24]
8000389e: f3 e8 11 08 or r8,r9,r8<<0x10
800038a2: c0 30 breq 800038a8 <CDC_Device_USBTask+0x20>
return;
#if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
CDC_Device_Flush(CDCInterfaceInfo);
800038a4: f0 1f 00 03 mcall 800038b0 <CDC_Device_USBTask+0x28>
800038a8: d8 02 popm pc
800038aa: 00 00 add r0,r0
800038ac: 00 00 add r0,r0
800038ae: 05 b8 ld.ub r8,r2[0x3]
800038b0: 80 00 ld.sh r0,r0[0x0]
800038b2: 37 c0 mov r0,124
800038b4 <CDC_Device_SendByte>:
return Endpoint_Write_Stream_LE(Buffer, Length, NULL);
}
uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
const uint8_t Data)
{
800038b4: d4 21 pushm r4-r7,lr
if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
800038b6: 4a 38 lddpc r8,80003940 <CDC_Device_SendByte+0x8c>
return Endpoint_Write_Stream_LE(Buffer, Length, NULL);
}
uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
const uint8_t Data)
{
800038b8: 16 97 mov r7,r11
if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
800038ba: 11 88 ld.ub r8,r8[0x0]
800038bc: 30 49 mov r9,4
800038be: f2 08 18 00 cp.b r8,r9
800038c2: c3 c1 brne 8000393a <CDC_Device_SendByte+0x86>
800038c4: f9 19 00 18 ld.uh r9,r12[24]
800038c8: f9 18 00 1a ld.uh r8,r12[26]
800038cc: f1 e9 11 08 or r8,r8,r9<<0x10
800038d0: c3 50 breq 8000393a <CDC_Device_SendByte+0x86>
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
800038d2: 19 a9 ld.ub r9,r12[0x2]
800038d4: f3 d9 c0 04 bfextu r9,r9,0x0,0x4
800038d8: 49 b8 lddpc r8,80003944 <CDC_Device_SendByte+0x90>
800038da: 91 09 st.w r8[0x0],r9
* on its direction.
*/
static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsReadWriteAllowed(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rwall;
800038dc: 70 09 ld.w r9,r8[0x0]
800038de: a3 69 lsl r9,0x2
800038e0: e0 39 fe d0 sub r9,130768
800038e4: 72 09 ld.w r9,r9[0x0]
return ENDPOINT_RWSTREAM_DeviceDisconnected;
Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
if (!(Endpoint_IsReadWriteAllowed()))
800038e6: ed b9 00 10 bld r9,0x10
800038ea: c1 e0 breq 80003926 <CDC_Device_SendByte+0x72>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
800038ec: 70 09 ld.w r9,r8[0x0]
800038ee: 30 1b mov r11,1
800038f0: a3 69 lsl r9,0x2
800038f2: e0 39 fe a0 sub r9,130720
800038f6: 72 0a ld.w r10,r9[0x0]
800038f8: f5 db d0 01 bfins r10,r11,0x0,0x1
800038fc: 93 0a st.w r9[0x0],r10
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
800038fe: 70 09 ld.w r9,r8[0x0]
80003900: a3 69 lsl r9,0x2
80003902: e0 39 fd e0 sub r9,130528
80003906: 72 0a ld.w r10,r9[0x0]
80003908: f5 db d1 c1 bfins r10,r11,0xe,0x1
8000390c: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
8000390e: 70 09 ld.w r9,r8[0x0]
80003910: 70 0a ld.w r10,r8[0x0]
80003912: fc 18 e0 00 movh r8,0xe000
80003916: b1 6a lsl r10,0x10
80003918: 10 0a add r10,r8
8000391a: 48 c8 lddpc r8,80003948 <CDC_Device_SendByte+0x94>
8000391c: f0 09 09 2a st.w r8[r9<<0x2],r10
{
Endpoint_ClearIN();
uint8_t ErrorCode;
if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
80003920: f0 1f 00 0b mcall 8000394c <CDC_Device_SendByte+0x98>
80003924: c0 c1 brne 8000393c <CDC_Device_SendByte+0x88>
* \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer.
*/
static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
static inline void Endpoint_Write_8(const uint8_t Data)
{
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = Data;
80003926: 48 88 lddpc r8,80003944 <CDC_Device_SendByte+0x90>
80003928: 48 89 lddpc r9,80003948 <CDC_Device_SendByte+0x94>
8000392a: 70 0a ld.w r10,r8[0x0]
8000392c: 30 0c mov r12,0
8000392e: f2 0a 03 28 ld.w r8,r9[r10<<0x2]
80003932: 10 c7 st.b r8++,r7
80003934: f2 0a 09 28 st.w r9[r10<<0x2],r8
return ErrorCode;
}
Endpoint_Write_8(Data);
return ENDPOINT_READYWAIT_NoError;
80003938: d8 22 popm r4-r7,pc
8000393a: 30 2c mov r12,2
}
8000393c: d8 22 popm r4-r7,pc
8000393e: 00 00 add r0,r0
80003940: 00 00 add r0,r0
80003942: 05 b8 ld.ub r8,r2[0x3]
80003944: 00 00 add r0,r0
80003946: 05 78 ld.ub r8,--r2
80003948: 00 00 add r0,r0
8000394a: 06 14 sub r4,r3
8000394c: 80 00 ld.sh r0,r0[0x0]
8000394e: 3e b4 mov r4,-21
80003950 <CDC_Device_ConfigureEndpoints>:
break;
}
}
bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
{
80003950: d4 21 pushm r4-r7,lr
memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State));
80003952: 30 0b mov r11,0
break;
}
}
bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
{
80003954: 18 97 mov r7,r12
memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State));
80003956: 30 ca mov r10,12
80003958: 2e cc sub r12,-20
8000395a: f0 1f 00 0f mcall 80003994 <CDC_Device_ConfigureEndpoints+0x44>
CDCInterfaceInfo->Config.DataINEndpoint.Type = EP_TYPE_BULK;
8000395e: 30 28 mov r8,2
CDCInterfaceInfo->Config.DataOUTEndpoint.Type = EP_TYPE_BULK;
80003960: ef 68 00 0c st.b r7[12],r8
bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
{
memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State));
CDCInterfaceInfo->Config.DataINEndpoint.Type = EP_TYPE_BULK;
80003964: ae e8 st.b r7[0x6],r8
CDCInterfaceInfo->Config.DataOUTEndpoint.Type = EP_TYPE_BULK;
CDCInterfaceInfo->Config.NotificationEndpoint.Type = EP_TYPE_INTERRUPT;
80003966: 30 38 mov r8,3
if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1)))
80003968: 30 1b mov r11,1
{
memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State));
CDCInterfaceInfo->Config.DataINEndpoint.Type = EP_TYPE_BULK;
CDCInterfaceInfo->Config.DataOUTEndpoint.Type = EP_TYPE_BULK;
CDCInterfaceInfo->Config.NotificationEndpoint.Type = EP_TYPE_INTERRUPT;
8000396a: ef 68 00 12 st.b r7[18],r8
if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1)))
8000396e: ee cc ff fe sub r12,r7,-2
80003972: f0 1f 00 0a mcall 80003998 <CDC_Device_ConfigureEndpoints+0x48>
80003976: c0 d0 breq 80003990 <CDC_Device_ConfigureEndpoints+0x40>
return false;
if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataOUTEndpoint, 1)))
80003978: 30 1b mov r11,1
8000397a: ee cc ff f8 sub r12,r7,-8
8000397e: f0 1f 00 07 mcall 80003998 <CDC_Device_ConfigureEndpoints+0x48>
80003982: c0 70 breq 80003990 <CDC_Device_ConfigureEndpoints+0x40>
return false;
if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.NotificationEndpoint, 1)))
80003984: ee cc ff f2 sub r12,r7,-14
80003988: 30 1b mov r11,1
8000398a: f0 1f 00 04 mcall 80003998 <CDC_Device_ConfigureEndpoints+0x48>
8000398e: d8 22 popm r4-r7,pc
80003990: d8 2a popm r4-r7,pc,r12=0
80003992: 00 00 add r0,r0
80003994: 80 00 ld.sh r0,r0[0x0]
80003996: 40 fc lddsp r12,sp[0x3c]
80003998: 80 00 ld.sh r0,r0[0x0]
8000399a: 3d 98 mov r8,-39
8000399c <CDC_Device_ProcessControlRequest>:
#define __INCLUDE_FROM_CDC_DRIVER
#define __INCLUDE_FROM_CDC_DEVICE_C
#include "CDCClassDevice.h"
void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
{
8000399c: d4 21 pushm r4-r7,lr
* \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
*/
static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsSETUPReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxstpi;
8000399e: 4d 58 lddpc r8,80003af0 <CDC_Device_ProcessControlRequest+0x154>
800039a0: 70 09 ld.w r9,r8[0x0]
800039a2: 18 97 mov r7,r12
800039a4: a3 69 lsl r9,0x2
800039a6: e0 39 fe d0 sub r9,130768
800039aa: 72 09 ld.w r9,r9[0x0]
if (!(Endpoint_IsSETUPReceived()))
800039ac: ed b9 00 02 bld r9,0x2
800039b0: e0 81 01 69 brne 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
return;
if (USB_ControlRequest.wIndex != CDCInterfaceInfo->Config.ControlInterfaceNumber)
800039b4: 4d 06 lddpc r6,80003af4 <CDC_Device_ProcessControlRequest+0x158>
800039b6: 19 8a ld.ub r10,r12[0x0]
800039b8: 0d cb ld.ub r11,r6[0x4]
800039ba: 0d d9 ld.ub r9,r6[0x5]
800039bc: f3 eb 10 89 or r9,r9,r11<<0x8
800039c0: f2 0a 19 00 cp.h r10,r9
800039c4: e0 81 01 5f brne 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
return;
switch (USB_ControlRequest.bRequest)
800039c8: 0d 9a ld.ub r10,r6[0x1]
800039ca: 32 19 mov r9,33
800039cc: f2 0a 18 00 cp.b r10,r9
800039d0: c1 40 breq 800039f8 <CDC_Device_ProcessControlRequest+0x5c>
800039d2: e0 8b 00 08 brhi 800039e2 <CDC_Device_ProcessControlRequest+0x46>
800039d6: 32 0b mov r11,32
800039d8: f6 0a 18 00 cp.b r10,r11
800039dc: e0 81 01 53 brne 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
800039e0: c9 08 rjmp 80003b00 <CDC_Device_ProcessControlRequest+0x164>
800039e2: 32 2b mov r11,34
800039e4: f6 0a 18 00 cp.b r10,r11
800039e8: e0 80 01 0f breq 80003c06 <CDC_Device_ProcessControlRequest+0x26a>
800039ec: 32 3b mov r11,35
800039ee: f6 0a 18 00 cp.b r10,r11
800039f2: e0 81 01 48 brne 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
800039f6: c2 a9 rjmp 80003c4a <CDC_Device_ProcessControlRequest+0x2ae>
{
case CDC_REQ_GetLineEncoding:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
800039f8: 0d 8a ld.ub r10,r6[0x0]
800039fa: 3a 19 mov r9,-95
800039fc: f2 0a 18 00 cp.b r10,r9
80003a00: e0 81 01 41 brne 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
80003a04: 70 09 ld.w r9,r8[0x0]
80003a06: 30 1b mov r11,1
80003a08: a3 69 lsl r9,0x2
80003a0a: e0 39 fe a0 sub r9,130720
80003a0e: 72 0a ld.w r10,r9[0x0]
80003a10: f5 db d0 41 bfins r10,r11,0x2,0x1
* \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
*/
static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsINReady(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].txini;
80003a14: 10 9b mov r11,r8
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
80003a16: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003a18: 70 09 ld.w r9,r8[0x0]
80003a1a: 70 0a ld.w r10,r8[0x0]
80003a1c: fc 18 e0 00 movh r8,0xe000
80003a20: b1 6a lsl r10,0x10
80003a22: 10 0a add r10,r8
80003a24: 4b 58 lddpc r8,80003af8 <CDC_Device_ProcessControlRequest+0x15c>
80003a26: f0 09 09 2a st.w r8[r9<<0x2],r10
* \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
*/
static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsINReady(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].txini;
80003a2a: 76 08 ld.w r8,r11[0x0]
80003a2c: a3 68 lsl r8,0x2
80003a2e: e0 38 fe d0 sub r8,130768
80003a32: 70 08 ld.w r8,r8[0x0]
80003a34: 4a f9 lddpc r9,80003af0 <CDC_Device_ProcessControlRequest+0x154>
{
Endpoint_ClearSETUP();
while (!(Endpoint_IsINReady()));
80003a36: f1 d8 c0 01 bfextu r8,r8,0x0,0x1
80003a3a: cf 80 breq 80003a2a <CDC_Device_ProcessControlRequest+0x8e>
Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
80003a3c: ef 18 00 1a ld.uh r8,r7[26]
* \param[in] Data Data to write to the currently selected endpoint's FIFO buffer.
*/
static inline void Endpoint_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE;
static inline void Endpoint_Write_32_LE(const uint32_t Data)
{
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data & 0xFF);
80003a40: 72 0c ld.w r12,r9[0x0]
80003a42: ef 1a 00 18 ld.uh r10,r7[24]
80003a46: f1 ea 11 0a or r10,r8,r10<<0x10
80003a4a: 4a c8 lddpc r8,80003af8 <CDC_Device_ProcessControlRequest+0x15c>
80003a4c: f0 0c 03 2b ld.w r11,r8[r12<<0x2]
80003a50: fd da c0 08 bfextu lr,r10,0x0,0x8
80003a54: 16 ce st.b r11++,lr
80003a56: f0 0c 09 2b st.w r8[r12<<0x2],r11
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data >> 8);
80003a5a: 72 0c ld.w r12,r9[0x0]
80003a5c: f0 0c 03 2b ld.w r11,r8[r12<<0x2]
80003a60: fd da c1 08 bfextu lr,r10,0x8,0x8
80003a64: 16 ce st.b r11++,lr
80003a66: f0 0c 09 2b st.w r8[r12<<0x2],r11
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data >> 16);
80003a6a: 72 0c ld.w r12,r9[0x0]
80003a6c: f0 0c 03 2b ld.w r11,r8[r12<<0x2]
80003a70: fd da c2 08 bfextu lr,r10,0x10,0x8
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data >> 24);
80003a74: b9 8a lsr r10,0x18
static inline void Endpoint_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE;
static inline void Endpoint_Write_32_LE(const uint32_t Data)
{
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data & 0xFF);
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data >> 8);
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data >> 16);
80003a76: 16 ce st.b r11++,lr
80003a78: f0 0c 09 2b st.w r8[r12<<0x2],r11
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = (Data >> 24);
80003a7c: 72 0c ld.w r12,r9[0x0]
80003a7e: f0 0c 03 2b ld.w r11,r8[r12<<0x2]
80003a82: 16 ca st.b r11++,r10
80003a84: f0 0c 09 2b st.w r8[r12<<0x2],r11
* \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer.
*/
static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
static inline void Endpoint_Write_8(const uint8_t Data)
{
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = Data;
80003a88: 72 0b ld.w r11,r9[0x0]
Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat);
80003a8a: ef 3c 00 1c ld.ub r12,r7[28]
80003a8e: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003a92: 14 cc st.b r10++,r12
80003a94: f0 0b 09 2a st.w r8[r11<<0x2],r10
80003a98: 72 0b ld.w r11,r9[0x0]
Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType);
80003a9a: ef 3c 00 1d ld.ub r12,r7[29]
80003a9e: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003aa2: 14 cc st.b r10++,r12
80003aa4: f0 0b 09 2a st.w r8[r11<<0x2],r10
80003aa8: 72 0b ld.w r11,r9[0x0]
Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits);
80003aaa: ef 3c 00 1e ld.ub r12,r7[30]
80003aae: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003ab2: 14 cc st.b r10++,r12
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
80003ab4: 30 1c mov r12,1
* \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer.
*/
static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
static inline void Endpoint_Write_8(const uint8_t Data)
{
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = Data;
80003ab6: f0 0b 09 2a st.w r8[r11<<0x2],r10
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
80003aba: 72 0a ld.w r10,r9[0x0]
80003abc: a3 6a lsl r10,0x2
80003abe: e0 3a fe a0 sub r10,130720
80003ac2: 74 0b ld.w r11,r10[0x0]
80003ac4: f7 dc d0 01 bfins r11,r12,0x0,0x1
80003ac8: 95 0b st.w r10[0x0],r11
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
80003aca: 72 0a ld.w r10,r9[0x0]
80003acc: a3 6a lsl r10,0x2
80003ace: e0 3a fd e0 sub r10,130528
80003ad2: 74 0b ld.w r11,r10[0x0]
80003ad4: f7 dc d1 c1 bfins r11,r12,0xe,0x1
80003ad8: 95 0b st.w r10[0x0],r11
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003ada: fc 1b e0 00 movh r11,0xe000
80003ade: 72 0a ld.w r10,r9[0x0]
80003ae0: 72 09 ld.w r9,r9[0x0]
80003ae2: b1 69 lsl r9,0x10
80003ae4: 16 09 add r9,r11
80003ae6: f0 0a 09 29 st.w r8[r10<<0x2],r9
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
80003aea: f0 1f 00 05 mcall 80003afc <CDC_Device_ProcessControlRequest+0x160>
80003aee: d8 22 popm r4-r7,pc
80003af0: 00 00 add r0,r0
80003af2: 05 78 ld.ub r8,--r2
80003af4: 00 00 add r0,r0
80003af6: 05 b9 ld.ub r9,r2[0x3]
80003af8: 00 00 add r0,r0
80003afa: 06 14 sub r4,r3
80003afc: 80 00 ld.sh r0,r0[0x0]
80003afe: 3e 10 mov r0,-31
}
break;
case CDC_REQ_SetLineEncoding:
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
80003b00: 0d 8a ld.ub r10,r6[0x0]
80003b02: f2 0a 18 00 cp.b r10,r9
80003b06: e0 81 00 be brne 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
80003b0a: 70 09 ld.w r9,r8[0x0]
80003b0c: 30 1b mov r11,1
80003b0e: a3 69 lsl r9,0x2
80003b10: e0 39 fe a0 sub r9,130720
80003b14: 72 0a ld.w r10,r9[0x0]
80003b16: f5 db d0 41 bfins r10,r11,0x2,0x1
* \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
*/
static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsOUTReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxouti;
80003b1a: 10 9b mov r11,r8
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
80003b1c: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003b1e: 70 09 ld.w r9,r8[0x0]
80003b20: 70 0a ld.w r10,r8[0x0]
80003b22: fc 18 e0 00 movh r8,0xe000
80003b26: b1 6a lsl r10,0x10
80003b28: 10 0a add r10,r8
80003b2a: 4d 78 lddpc r8,80003c84 <CDC_Device_ProcessControlRequest+0x2e8>
80003b2c: f0 09 09 2a st.w r8[r9<<0x2],r10
{
Endpoint_ClearSETUP();
while (!(Endpoint_IsOUTReceived()))
{
if (USB_DeviceState == DEVICE_STATE_Unattached)
80003b30: 4d 6a lddpc r10,80003c88 <CDC_Device_ProcessControlRequest+0x2ec>
case CDC_REQ_SetLineEncoding:
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
Endpoint_ClearSETUP();
while (!(Endpoint_IsOUTReceived()))
80003b32: c0 58 rjmp 80003b3c <CDC_Device_ProcessControlRequest+0x1a0>
{
if (USB_DeviceState == DEVICE_STATE_Unattached)
80003b34: 15 88 ld.ub r8,r10[0x0]
80003b36: 58 08 cp.w r8,0
80003b38: e0 80 00 a5 breq 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
* \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
*/
static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsOUTReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxouti;
80003b3c: 76 08 ld.w r8,r11[0x0]
80003b3e: a3 68 lsl r8,0x2
80003b40: e0 38 fe d0 sub r8,130768
80003b44: 70 08 ld.w r8,r8[0x0]
80003b46: 4d 29 lddpc r9,80003c8c <CDC_Device_ProcessControlRequest+0x2f0>
case CDC_REQ_SetLineEncoding:
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
Endpoint_ClearSETUP();
while (!(Endpoint_IsOUTReceived()))
80003b48: e2 18 00 02 andl r8,0x2,COH
80003b4c: cf 40 breq 80003b34 <CDC_Device_ProcessControlRequest+0x198>
* \return Next four bytes in the currently selected endpoint's FIFO buffer.
*/
static inline uint32_t Endpoint_Read_32_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint32_t Endpoint_Read_32_LE(void)
{
uint32_t Byte0 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
80003b4e: 72 0b ld.w r11,r9[0x0]
80003b50: 4c d8 lddpc r8,80003c84 <CDC_Device_ProcessControlRequest+0x2e8>
80003b52: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003b56: 15 36 ld.ub r6,r10++
80003b58: f0 0b 09 2a st.w r8[r11<<0x2],r10
uint32_t Byte1 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
80003b5c: 72 0b ld.w r11,r9[0x0]
80003b5e: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003b62: 15 3c ld.ub r12,r10++
80003b64: f0 0b 09 2a st.w r8[r11<<0x2],r10
uint32_t Byte2 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
80003b68: 72 0b ld.w r11,r9[0x0]
80003b6a: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003b6e: 15 35 ld.ub r5,r10++
80003b70: f0 0b 09 2a st.w r8[r11<<0x2],r10
uint32_t Byte3 = *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
80003b74: 72 0b ld.w r11,r9[0x0]
80003b76: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003b7a: 15 3e ld.ub lr,r10++
80003b7c: f0 0b 09 2a st.w r8[r11<<0x2],r10
{
if (USB_DeviceState == DEVICE_STATE_Unattached)
return;
}
CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE();
80003b80: ea 0a 15 10 lsl r10,r5,0x10
80003b84: f5 ee 11 8a or r10,r10,lr<<0x18
80003b88: 0c 4a or r10,r6
80003b8a: f5 ec 10 8a or r10,r10,r12<<0x8
80003b8e: ef 5a 00 1a st.h r7[26],r10
80003b92: b1 8a lsr r10,0x10
80003b94: ef 5a 00 18 st.h r7[24],r10
* \return Next byte in the currently selected endpoint's FIFO buffer.
*/
static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint8_t Endpoint_Read_8(void)
{
return *(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++);
80003b98: 72 0b ld.w r11,r9[0x0]
80003b9a: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003b9e: 15 3c ld.ub r12,r10++
80003ba0: f0 0b 09 2a st.w r8[r11<<0x2],r10
CDCInterfaceInfo->State.LineEncoding.CharFormat = Endpoint_Read_8();
80003ba4: ef 6c 00 1c st.b r7[28],r12
80003ba8: 72 0b ld.w r11,r9[0x0]
80003baa: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003bae: 15 3c ld.ub r12,r10++
80003bb0: f0 0b 09 2a st.w r8[r11<<0x2],r10
CDCInterfaceInfo->State.LineEncoding.ParityType = Endpoint_Read_8();
80003bb4: ef 6c 00 1d st.b r7[29],r12
80003bb8: 72 0b ld.w r11,r9[0x0]
80003bba: f0 0b 03 2a ld.w r10,r8[r11<<0x2]
80003bbe: 15 3c ld.ub r12,r10++
80003bc0: f0 0b 09 2a st.w r8[r11<<0x2],r10
CDCInterfaceInfo->State.LineEncoding.DataBits = Endpoint_Read_8();
80003bc4: ef 6c 00 1e st.b r7[30],r12
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearOUT(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxoutic = true;
80003bc8: 30 1c mov r12,1
80003bca: 72 0a ld.w r10,r9[0x0]
80003bcc: a3 6a lsl r10,0x2
80003bce: e0 3a fe a0 sub r10,130720
80003bd2: 74 0b ld.w r11,r10[0x0]
80003bd4: f7 dc d0 21 bfins r11,r12,0x1,0x1
80003bd8: 95 0b st.w r10[0x0],r11
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
80003bda: 72 0a ld.w r10,r9[0x0]
80003bdc: a3 6a lsl r10,0x2
80003bde: e0 3a fd e0 sub r10,130528
80003be2: 74 0b ld.w r11,r10[0x0]
80003be4: f7 dc d1 c1 bfins r11,r12,0xe,0x1
80003be8: 95 0b st.w r10[0x0],r11
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003bea: fc 1b e0 00 movh r11,0xe000
80003bee: 72 0a ld.w r10,r9[0x0]
80003bf0: 72 09 ld.w r9,r9[0x0]
80003bf2: b1 69 lsl r9,0x10
80003bf4: 16 09 add r9,r11
80003bf6: f0 0a 09 29 st.w r8[r10<<0x2],r9
Endpoint_ClearOUT();
Endpoint_ClearStatusStage();
80003bfa: f0 1f 00 26 mcall 80003c90 <CDC_Device_ProcessControlRequest+0x2f4>
EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
80003bfe: 0e 9c mov r12,r7
80003c00: f0 1f 00 25 mcall 80003c94 <CDC_Device_ProcessControlRequest+0x2f8>
80003c04: d8 22 popm r4-r7,pc
}
break;
case CDC_REQ_SetControlLineState:
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
80003c06: 0d 8a ld.ub r10,r6[0x0]
80003c08: f2 0a 18 00 cp.b r10,r9
80003c0c: c3 b1 brne 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
80003c0e: 70 09 ld.w r9,r8[0x0]
80003c10: 30 1b mov r11,1
80003c12: a3 69 lsl r9,0x2
80003c14: e0 39 fe a0 sub r9,130720
80003c18: 72 0a ld.w r10,r9[0x0]
80003c1a: f5 db d0 41 bfins r10,r11,0x2,0x1
80003c1e: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003c20: 70 09 ld.w r9,r8[0x0]
80003c22: 70 0a ld.w r10,r8[0x0]
80003c24: fc 18 e0 00 movh r8,0xe000
80003c28: b1 6a lsl r10,0x10
80003c2a: 10 0a add r10,r8
80003c2c: 49 68 lddpc r8,80003c84 <CDC_Device_ProcessControlRequest+0x2e8>
80003c2e: f0 09 09 2a st.w r8[r9<<0x2],r10
{
Endpoint_ClearSETUP();
Endpoint_ClearStatusStage();
80003c32: f0 1f 00 18 mcall 80003c90 <CDC_Device_ProcessControlRequest+0x2f4>
CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;
80003c36: 0d b8 ld.ub r8,r6[0x3]
80003c38: 0d a9 ld.ub r9,r6[0x2]
80003c3a: f1 e9 10 88 or r8,r8,r9<<0x8
EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);
80003c3e: 0e 9c mov r12,r7
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
Endpoint_ClearSETUP();
Endpoint_ClearStatusStage();
CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;
80003c40: ef 58 00 14 st.h r7[20],r8
EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);
80003c44: f0 1f 00 15 mcall 80003c98 <CDC_Device_ProcessControlRequest+0x2fc>
80003c48: d8 22 popm r4-r7,pc
}
break;
case CDC_REQ_SendBreak:
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
80003c4a: 0d 8a ld.ub r10,r6[0x0]
80003c4c: f2 0a 18 00 cp.b r10,r9
80003c50: c1 91 brne 80003c82 <CDC_Device_ProcessControlRequest+0x2e6>
* \note This is not applicable for non CONTROL type endpoints.
*/
static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearSETUP(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxstpic = true;
80003c52: 70 09 ld.w r9,r8[0x0]
80003c54: 30 1b mov r11,1
80003c56: a3 69 lsl r9,0x2
80003c58: e0 39 fe a0 sub r9,130720
80003c5c: 72 0a ld.w r10,r9[0x0]
80003c5e: f5 db d0 41 bfins r10,r11,0x2,0x1
80003c62: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003c64: 70 09 ld.w r9,r8[0x0]
80003c66: 70 0a ld.w r10,r8[0x0]
80003c68: fc 18 e0 00 movh r8,0xe000
80003c6c: b1 6a lsl r10,0x10
80003c6e: 10 0a add r10,r8
80003c70: 48 58 lddpc r8,80003c84 <CDC_Device_ProcessControlRequest+0x2e8>
80003c72: f0 09 09 2a st.w r8[r9<<0x2],r10
{
Endpoint_ClearSETUP();
Endpoint_ClearStatusStage();
80003c76: f0 1f 00 07 mcall 80003c90 <CDC_Device_ProcessControlRequest+0x2f4>
EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
80003c7a: 0d bb ld.ub r11,r6[0x3]
80003c7c: 0e 9c mov r12,r7
80003c7e: f0 1f 00 08 mcall 80003c9c <CDC_Device_ProcessControlRequest+0x300>
80003c82: d8 22 popm r4-r7,pc
80003c84: 00 00 add r0,r0
80003c86: 06 14 sub r4,r3
80003c88: 00 00 add r0,r0
80003c8a: 05 b8 ld.ub r8,r2[0x3]
80003c8c: 00 00 add r0,r0
80003c8e: 05 78 ld.ub r8,--r2
80003c90: 80 00 ld.sh r0,r0[0x0]
80003c92: 3e 10 mov r0,-31
80003c94: 80 00 ld.sh r0,r0[0x0]
80003c96: 37 bc mov r12,123
80003c98: 80 00 ld.sh r0,r0[0x0]
80003c9a: 37 bc mov r12,123
80003c9c: 80 00 ld.sh r0,r0[0x0]
80003c9e: 37 bc mov r12,123
80003ca0 <Unhandled_Interrupt>:
/** Interrupt vector table, containing the ISR to call for each interrupt group */
InterruptHandlerPtr_t InterruptHandlers[AVR32_INTC_NUM_INT_GRPS];
/** ISR for unhandled interrupt groups */
ISR(Unhandled_Interrupt)
{
80003ca0: c0 08 rjmp 80003ca0 <Unhandled_Interrupt>
80003ca2: d7 03 nop
80003ca4 <INTC_GetInterruptHandler>:
/** Retrieves the associated interrupt handler for the interrupt group currently being fired. This
* is called directly from the exception handler routine before dispatching to the ISR.
*/
InterruptHandlerPtr_t INTC_GetInterruptHandler(const uint_reg_t InterruptLevel)
{
return InterruptHandlers[AVR32_INTC.icr[AVR32_INTC_INT3 - InterruptLevel]];
80003ca4: e0 68 00 83 mov r8,131
80003ca8: f0 0c 01 0c sub r12,r8,r12
80003cac: fe 78 08 00 mov r8,-63488
80003cb0: f0 0c 03 29 ld.w r9,r8[r12<<0x2]
80003cb4: 48 28 lddpc r8,80003cbc <INTC_GetInterruptHandler+0x18>
}
80003cb6: f0 09 03 2c ld.w r12,r8[r9<<0x2]
80003cba: 5e fc retal r12
80003cbc: 00 00 add r0,r0
80003cbe: 05 c4 ld.ub r4,r2[0x4]
80003cc0 <INTC_Init>:
void INTC_Init(void)
{
for (uint8_t InterruptGroup = 0; InterruptGroup < AVR32_INTC_NUM_INT_GRPS; InterruptGroup++)
{
InterruptHandlers[InterruptGroup] = Unhandled_Interrupt;
AVR32_INTC.ipr[InterruptGroup] = Autovector_Table[AVR32_INTC_INT0];
80003cc0: 48 98 lddpc r8,80003ce4 <INTC_Init+0x24>
80003cc2: 48 a9 lddpc r9,80003ce8 <INTC_Init+0x28>
80003cc4: 70 0c ld.w r12,r8[0x0]
*/
void INTC_Init(void)
{
for (uint8_t InterruptGroup = 0; InterruptGroup < AVR32_INTC_NUM_INT_GRPS; InterruptGroup++)
{
InterruptHandlers[InterruptGroup] = Unhandled_Interrupt;
80003cc6: 48 ab lddpc r11,80003cec <INTC_Init+0x2c>
AVR32_INTC.ipr[InterruptGroup] = Autovector_Table[AVR32_INTC_INT0];
80003cc8: 30 08 mov r8,0
80003cca: fe 7a 08 00 mov r10,-63488
*/
void INTC_Init(void)
{
for (uint8_t InterruptGroup = 0; InterruptGroup < AVR32_INTC_NUM_INT_GRPS; InterruptGroup++)
{
InterruptHandlers[InterruptGroup] = Unhandled_Interrupt;
80003cce: 12 ab st.w r9++,r11
AVR32_INTC.ipr[InterruptGroup] = Autovector_Table[AVR32_INTC_INT0];
80003cd0: f4 08 09 2c st.w r10[r8<<0x2],r12
80003cd4: 2f f8 sub r8,-1
/** Initializes the interrupt controller ready to handle interrupts. This must be called at the
* start of the user program before any interrupts are registered or enabled.
*/
void INTC_Init(void)
{
for (uint8_t InterruptGroup = 0; InterruptGroup < AVR32_INTC_NUM_INT_GRPS; InterruptGroup++)
80003cd6: 59 48 cp.w r8,20
80003cd8: cf b1 brne 80003cce <INTC_Init+0xe>
{
InterruptHandlers[InterruptGroup] = Unhandled_Interrupt;
AVR32_INTC.ipr[InterruptGroup] = Autovector_Table[AVR32_INTC_INT0];
}
__builtin_mtsr(AVR32_EVBA, (uintptr_t)&EVBA_Table);
80003cda: 48 68 lddpc r8,80003cf0 <INTC_Init+0x30>
80003cdc: e3 b8 00 01 mtsr 0x4,r8
}
80003ce0: 5e fc retal r12
80003ce2: 00 00 add r0,r0
80003ce4: 80 00 ld.sh r0,r0[0x0]
80003ce6: 4d 24 lddpc r4,80003e2c <Endpoint_ClearStatusStage+0x1c>
80003ce8: 00 00 add r0,r0
80003cea: 05 c4 ld.ub r4,r2[0x4]
80003cec: 80 00 ld.sh r0,r0[0x0]
80003cee: 3c a0 mov r0,-54
80003cf0: 80 00 ld.sh r0,r0[0x0]
80003cf2: 4c 00 lddpc r0,80003df0 <Endpoint_ConfigureEndpointTable+0x58>
80003cf4 <Endpoint_ConfigureEndpoint_Prv>:
return true;
}
bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
const uint32_t UECFG0Data)
{
80003cf4: d4 31 pushm r0-r7,lr
USB_Endpoint_FIFOPos[Number] = &AVR32_USBB_SLAVE[Number * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003cf6: fc 18 e0 00 movh r8,0xe000
80003cfa: f8 09 15 10 lsl r9,r12,0x10
80003cfe: 10 09 add r9,r8
80003d00: 4a 48 lddpc r8,80003d90 <Endpoint_ConfigureEndpoint_Prv+0x9c>
(&AVR32_USBB.uecfg0)[Number] = 0;
(&AVR32_USBB.uecfg0)[Number] = UECFG0Data;
return Endpoint_IsConfigured();
#else
for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
80003d02: 30 64 mov r4,6
}
bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
const uint32_t UECFG0Data)
{
USB_Endpoint_FIFOPos[Number] = &AVR32_USBB_SLAVE[Number * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003d04: f0 0c 09 29 st.w r8[r12<<0x2],r9
80003d08: 4a 3e lddpc lr,80003d94 <Endpoint_ConfigureEndpoint_Prv+0xa0>
80003d0a: 18 98 mov r8,r12
* to and from a host.
*/
static inline void Endpoint_DisableEndpoint(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_DisableEndpoint(void)
{
AVR32_USBB.uerst &= ~(AVR32_USBB_EPEN0_MASK << USB_Endpoint_SelectedEndpoint);
80003d0c: fe 6a 00 00 mov r10,-131072
80003d10: 30 15 mov r5,1
(&AVR32_USBB.uecfg0)[Number] = 0;
(&AVR32_USBB.uecfg0)[Number] = UECFG0Data;
return Endpoint_IsConfigured();
#else
for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
80003d12: c3 38 rjmp 80003d78 <Endpoint_ConfigureEndpoint_Prv+0x84>
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
80003d14: 9d 09 st.w lr[0x0],r9
{
UECFG0Temp = UECFG0Data;
}
else
{
UECFG0Temp = (&AVR32_USBB.uecfg0)[EPNum];
80003d16: f0 09 15 02 lsl r9,r8,0x2
{
uint32_t UECFG0Temp;
Endpoint_SelectEndpoint(EPNum);
if (EPNum == Number)
80003d1a: f8 08 18 00 cp.b r8,r12
80003d1e: f6 07 17 00 moveq r7,r11
{
UECFG0Temp = UECFG0Data;
}
else
{
UECFG0Temp = (&AVR32_USBB.uecfg0)[EPNum];
80003d22: fe 67 01 00 mov r7,-130816
80003d26: f3 d7 e1 09 addne r9,r9,r7
80003d2a: f3 f7 10 00 ld.wne r7,r9[0x0]
if (!(UECFG0Temp & AVR32_USBB_ALLOC_MASK))
continue;
Endpoint_DisableEndpoint();
(&AVR32_USBB.uecfg0)[EPNum] &= ~AVR32_USBB_ALLOC_MASK;
80003d2e: f0 09 15 02 lsl r9,r8,0x2
else
{
UECFG0Temp = (&AVR32_USBB.uecfg0)[EPNum];
}
if (!(UECFG0Temp & AVR32_USBB_ALLOC_MASK))
80003d32: 0e 96 mov r6,r7
(&AVR32_USBB.uecfg0)[Number] = 0;
(&AVR32_USBB.uecfg0)[Number] = UECFG0Data;
return Endpoint_IsConfigured();
#else
for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
80003d34: 2f f8 sub r8,-1
if (!(UECFG0Temp & AVR32_USBB_ALLOC_MASK))
continue;
Endpoint_DisableEndpoint();
(&AVR32_USBB.uecfg0)[EPNum] &= ~AVR32_USBB_ALLOC_MASK;
80003d36: e0 39 ff 00 sub r9,130816
(&AVR32_USBB.uecfg0)[Number] = 0;
(&AVR32_USBB.uecfg0)[Number] = UECFG0Data;
return Endpoint_IsConfigured();
#else
for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
80003d3a: 5c 58 castu.b r8
else
{
UECFG0Temp = (&AVR32_USBB.uecfg0)[EPNum];
}
if (!(UECFG0Temp & AVR32_USBB_ALLOC_MASK))
80003d3c: e2 16 00 02 andl r6,0x2,COH
80003d40: c1 c0 breq 80003d78 <Endpoint_ConfigureEndpoint_Prv+0x84>
* to and from a host.
*/
static inline void Endpoint_DisableEndpoint(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_DisableEndpoint(void)
{
AVR32_USBB.uerst &= ~(AVR32_USBB_EPEN0_MASK << USB_Endpoint_SelectedEndpoint);
80003d42: 74 73 ld.w r3,r10[0x1c]
80003d44: 7c 06 ld.w r6,lr[0x0]
80003d46: ea 06 09 46 lsl r6,r5,r6
80003d4a: 5c d6 com r6
80003d4c: 06 66 and r6,r3
80003d4e: 95 76 st.w r10[0x1c],r6
continue;
Endpoint_DisableEndpoint();
(&AVR32_USBB.uecfg0)[EPNum] &= ~AVR32_USBB_ALLOC_MASK;
80003d50: 72 06 ld.w r6,r9[0x0]
80003d52: a1 d6 cbr r6,0x1
80003d54: 93 06 st.w r9[0x0],r6
* \note Endpoints must first be configured properly via \ref Endpoint_ConfigureEndpoint().
*/
static inline void Endpoint_EnableEndpoint(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_EnableEndpoint(void)
{
AVR32_USBB.uerst |= (AVR32_USBB_EPEN0_MASK << USB_Endpoint_SelectedEndpoint);
80003d56: 74 73 ld.w r3,r10[0x1c]
80003d58: 7c 06 ld.w r6,lr[0x0]
80003d5a: ea 06 09 46 lsl r6,r5,r6
80003d5e: 06 46 or r6,r3
80003d60: 95 76 st.w r10[0x1c],r6
Endpoint_EnableEndpoint();
(&AVR32_USBB.uecfg0)[EPNum] = UECFG0Temp;
80003d62: 93 07 st.w r9[0x0],r7
* \return Boolean \c true if the currently selected endpoint has been configured, \c false otherwise.
*/
static inline bool Endpoint_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsConfigured(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].cfgok;
80003d64: 7c 09 ld.w r9,lr[0x0]
80003d66: a3 69 lsl r9,0x2
80003d68: e0 39 fe d0 sub r9,130768
80003d6c: 72 09 ld.w r9,r9[0x0]
if (!(Endpoint_IsConfigured()))
80003d6e: e6 19 00 04 andh r9,0x4,COH
80003d72: c0 31 brne 80003d78 <Endpoint_ConfigureEndpoint_Prv+0x84>
80003d74: 12 9c mov r12,r9
80003d76: d8 32 popm r0-r7,pc
* \param[in] Address Endpoint address to select.
*/
static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SelectEndpoint(const uint8_t Address)
{
USB_Endpoint_SelectedEndpoint = (Address & ENDPOINT_EPNUM_MASK);
80003d78: f3 d8 c0 04 bfextu r9,r8,0x0,0x4
(&AVR32_USBB.uecfg0)[Number] = 0;
(&AVR32_USBB.uecfg0)[Number] = UECFG0Data;
return Endpoint_IsConfigured();
#else
for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
80003d7c: e8 08 18 00 cp.b r8,r4
80003d80: fe 98 ff ca brls 80003d14 <Endpoint_ConfigureEndpoint_Prv+0x20>
80003d84: f9 dc c0 04 bfextu r12,r12,0x0,0x4
80003d88: 48 38 lddpc r8,80003d94 <Endpoint_ConfigureEndpoint_Prv+0xa0>
80003d8a: 91 0c st.w r8[0x0],r12
80003d8c: da 3a popm r0-r7,pc,r12=1
80003d8e: 00 00 add r0,r0
80003d90: 00 00 add r0,r0
80003d92: 06 14 sub r4,r3
80003d94: 00 00 add r0,r0
80003d96: 05 78 ld.ub r8,--r2
80003d98 <Endpoint_ConfigureEndpointTable>:
volatile uint32_t USB_Endpoint_SelectedEndpoint = ENDPOINT_CONTROLEP;
volatile uint8_t* USB_Endpoint_FIFOPos[ENDPOINT_TOTAL_ENDPOINTS];
bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table,
const uint8_t Entries)
{
80003d98: d4 31 pushm r0-r7,lr
80003d9a: 30 06 mov r6,0
80003d9c: 16 92 mov r2,r11
80003d9e: 18 97 mov r7,r12
const uint16_t Size,
const uint8_t Banks)
{
uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
80003da0: 30 63 mov r3,6
return false;
return Endpoint_ConfigureEndpoint_Prv(Number,
80003da2: 0c 94 mov r4,r6
80003da4: e0 60 01 00 mov r0,256
80003da8: 30 15 mov r5,1
for (uint8_t i = 0; i < Entries; i++)
80003daa: c2 c8 rjmp 80003e02 <Endpoint_ConfigureEndpointTable+0x6a>
{
if (!(Table[i].Address))
80003dac: 0f 89 ld.ub r9,r7[0x0]
80003dae: 58 09 cp.w r9,0
80003db0: c2 60 breq 80003dfc <Endpoint_ConfigureEndpointTable+0x64>
continue;
if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
80003db2: 0f de ld.ub lr,r7[0x5]
80003db4: 8e 11 ld.sh r1,r7[0x2]
80003db6: 0f ca ld.ub r10,r7[0x4]
static inline bool Endpoint_ConfigureEndpoint(const uint8_t Address,
const uint8_t Type,
const uint16_t Size,
const uint8_t Banks)
{
uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
80003db8: f9 d9 c0 04 bfextu r12,r9,0x0,0x4
if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
80003dbc: e6 0c 18 00 cp.b r12,r3
80003dc0: e0 8b 00 25 brhi 80003e0a <Endpoint_ConfigureEndpointTable+0x72>
return false;
return Endpoint_ConfigureEndpoint_Prv(Number,
80003dc4: f2 04 18 00 cp.b r4,r9
80003dc8: e0 09 17 90 movgt r9,r0
80003dcc: f9 b9 0a 00 movle r9,0
80003dd0: 30 8b mov r11,8
80003dd2: 30 08 mov r8,0
80003dd4: c0 58 rjmp 80003dde <Endpoint_ConfigureEndpointTable+0x46>
uint8_t MaskVal = 0;
uint16_t CheckBytes = 8;
while (CheckBytes < Bytes)
{
MaskVal++;
80003dd6: 2f f8 sub r8,-1
CheckBytes <<= 1;
80003dd8: a1 7b lsl r11,0x1
uint8_t MaskVal = 0;
uint16_t CheckBytes = 8;
while (CheckBytes < Bytes)
{
MaskVal++;
80003dda: 5c 58 castu.b r8
CheckBytes <<= 1;
80003ddc: 5c 8b casts.h r11
static inline uint32_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
{
uint8_t MaskVal = 0;
uint16_t CheckBytes = 8;
while (CheckBytes < Bytes)
80003dde: e2 0b 19 00 cp.h r11,r1
80003de2: cf a3 brcs 80003dd6 <Endpoint_ConfigureEndpointTable+0x3e>
uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
return false;
return Endpoint_ConfigureEndpoint_Prv(Number,
80003de4: ea 0e 18 00 cp.b lr,r5
80003de8: 5f 8b srls r11
80003dea: a1 bb sbr r11,0x1
80003dec: f7 ea 10 bb or r11,r11,r10<<0xb
80003df0: 12 4b or r11,r9
80003df2: f7 e8 10 4b or r11,r11,r8<<0x4
80003df6: f0 1f 00 06 mcall 80003e0c <Endpoint_ConfigureEndpointTable+0x74>
80003dfa: c0 80 breq 80003e0a <Endpoint_ConfigureEndpointTable+0x72>
volatile uint8_t* USB_Endpoint_FIFOPos[ENDPOINT_TOTAL_ENDPOINTS];
bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table,
const uint8_t Entries)
{
for (uint8_t i = 0; i < Entries; i++)
80003dfc: 2f f6 sub r6,-1
80003dfe: 2f a7 sub r7,-6
80003e00: 5c 56 castu.b r6
80003e02: e4 06 18 00 cp.b r6,r2
80003e06: cd 33 brcs 80003dac <Endpoint_ConfigureEndpointTable+0x14>
80003e08: da 3a popm r0-r7,pc,r12=1
80003e0a: d8 3a popm r0-r7,pc,r12=0
80003e0c: 80 00 ld.sh r0,r0[0x0]
80003e0e: 3c f4 mov r4,-49
80003e10 <Endpoint_ClearStatusStage>:
}
}
void Endpoint_ClearStatusStage(void)
{
if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)
80003e10: 4a 58 lddpc r8,80003ea4 <Endpoint_ClearStatusStage+0x94>
80003e12: 11 89 ld.ub r9,r8[0x0]
80003e14: 30 08 mov r8,0
80003e16: f0 09 18 00 cp.b r9,r8
80003e1a: c1 e4 brge 80003e56 <Endpoint_ClearStatusStage+0x46>
80003e1c: c0 58 rjmp 80003e26 <Endpoint_ClearStatusStage+0x16>
{
while (!(Endpoint_IsOUTReceived()))
{
if (USB_DeviceState == DEVICE_STATE_Unattached)
80003e1e: 15 88 ld.ub r8,r10[0x0]
80003e20: 58 08 cp.w r8,0
80003e22: c0 41 brne 80003e2a <Endpoint_ClearStatusStage+0x1a>
80003e24: 5e fc retal r12
* \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
*/
static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsOUTReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxouti;
80003e26: 4a 1b lddpc r11,80003ea8 <Endpoint_ClearStatusStage+0x98>
80003e28: 4a 1a lddpc r10,80003eac <Endpoint_ClearStatusStage+0x9c>
80003e2a: 76 08 ld.w r8,r11[0x0]
80003e2c: a3 68 lsl r8,0x2
80003e2e: e0 38 fe d0 sub r8,130768
80003e32: 70 09 ld.w r9,r8[0x0]
80003e34: 49 d8 lddpc r8,80003ea8 <Endpoint_ClearStatusStage+0x98>
void Endpoint_ClearStatusStage(void)
{
if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)
{
while (!(Endpoint_IsOUTReceived()))
80003e36: e2 19 00 02 andl r9,0x2,COH
80003e3a: cf 20 breq 80003e1e <Endpoint_ClearStatusStage+0xe>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearOUT(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].rxoutic = true;
80003e3c: 70 09 ld.w r9,r8[0x0]
80003e3e: 30 1b mov r11,1
80003e40: a3 69 lsl r9,0x2
80003e42: e0 39 fe a0 sub r9,130720
80003e46: 72 0a ld.w r10,r9[0x0]
80003e48: f5 db d0 21 bfins r10,r11,0x1,0x1
80003e4c: c1 88 rjmp 80003e7c <Endpoint_ClearStatusStage+0x6c>
}
else
{
while (!(Endpoint_IsINReady()))
{
if (USB_DeviceState == DEVICE_STATE_Unattached)
80003e4e: 13 88 ld.ub r8,r9[0x0]
80003e50: 58 08 cp.w r8,0
80003e52: c0 41 brne 80003e5a <Endpoint_ClearStatusStage+0x4a>
80003e54: 5e fc retal r12
* \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
*/
static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsINReady(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].txini;
80003e56: 49 5a lddpc r10,80003ea8 <Endpoint_ClearStatusStage+0x98>
80003e58: 49 59 lddpc r9,80003eac <Endpoint_ClearStatusStage+0x9c>
80003e5a: 74 08 ld.w r8,r10[0x0]
80003e5c: a3 68 lsl r8,0x2
80003e5e: e0 38 fe d0 sub r8,130768
80003e62: 70 0b ld.w r11,r8[0x0]
80003e64: 49 18 lddpc r8,80003ea8 <Endpoint_ClearStatusStage+0x98>
Endpoint_ClearOUT();
}
else
{
while (!(Endpoint_IsINReady()))
80003e66: f7 db c0 01 bfextu r11,r11,0x0,0x1
80003e6a: cf 20 breq 80003e4e <Endpoint_ClearStatusStage+0x3e>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
80003e6c: 70 09 ld.w r9,r8[0x0]
80003e6e: 30 1b mov r11,1
80003e70: a3 69 lsl r9,0x2
80003e72: e0 39 fe a0 sub r9,130720
80003e76: 72 0a ld.w r10,r9[0x0]
80003e78: f5 db d0 01 bfins r10,r11,0x0,0x1
80003e7c: 93 0a st.w r9[0x0],r10
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
80003e7e: 70 09 ld.w r9,r8[0x0]
80003e80: a3 69 lsl r9,0x2
80003e82: e0 39 fd e0 sub r9,130528
80003e86: 72 0a ld.w r10,r9[0x0]
80003e88: f5 db d1 c1 bfins r10,r11,0xe,0x1
80003e8c: 93 0a st.w r9[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003e8e: 70 09 ld.w r9,r8[0x0]
80003e90: 70 0a ld.w r10,r8[0x0]
80003e92: fc 18 e0 00 movh r8,0xe000
80003e96: b1 6a lsl r10,0x10
80003e98: 10 0a add r10,r8
80003e9a: 48 68 lddpc r8,80003eb0 <Endpoint_ClearStatusStage+0xa0>
80003e9c: f0 09 09 2a st.w r8[r9<<0x2],r10
80003ea0: 5e fc retal r12
80003ea2: 00 00 add r0,r0
80003ea4: 00 00 add r0,r0
80003ea6: 05 b9 ld.ub r9,r2[0x3]
80003ea8: 00 00 add r0,r0
80003eaa: 05 78 ld.ub r8,--r2
80003eac: 00 00 add r0,r0
80003eae: 05 b8 ld.ub r8,r2[0x3]
80003eb0: 00 00 add r0,r0
80003eb2: 06 14 sub r4,r3
80003eb4 <Endpoint_WaitUntilReady>:
}
}
#if !defined(CONTROL_ONLY_DEVICE)
uint8_t Endpoint_WaitUntilReady(void)
{
80003eb4: d4 21 pushm r4-r7,lr
* \return Current USB frame number from the USB controller.
*/
static inline uint16_t USB_Device_GetFrameNumber(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline uint16_t USB_Device_GetFrameNumber(void)
{
return AVR32_USBB.UDFNUM.fnum;
80003eb6: fe 68 00 00 mov r8,-131072
80003eba: 36 49 mov r9,100
80003ebc: 70 8b ld.w r11,r8[0x20]
80003ebe: 10 9e mov lr,r8
80003ec0: f7 db c0 6b bfextu r11,r11,0x3,0xb
* \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
*/
static inline uint32_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint32_t Endpoint_GetEndpointDirection(void)
{
return ((&AVR32_USBB.UECFG0)[USB_Endpoint_SelectedEndpoint].epdir ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT);
80003ec4: 4a 08 lddpc r8,80003f44 <Endpoint_WaitUntilReady+0x90>
{
if (Endpoint_IsOUTReceived())
return ENDPOINT_READYWAIT_NoError;
}
uint8_t USB_DeviceState_LCL = USB_DeviceState;
80003ec6: 4a 17 lddpc r7,80003f48 <Endpoint_WaitUntilReady+0x94>
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
return ENDPOINT_READYWAIT_DeviceDisconnected;
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
80003ec8: 30 5c mov r12,5
80003eca: 70 0a ld.w r10,r8[0x0]
80003ecc: a3 6a lsl r10,0x2
80003ece: e0 3a ff 00 sub r10,130816
80003ed2: 74 0a ld.w r10,r10[0x0]
80003ed4: ed ba 00 08 bld r10,0x8
80003ed8: c2 d1 brne 80003f32 <Endpoint_WaitUntilReady+0x7e>
* \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
*/
static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsINReady(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].txini;
80003eda: 70 0a ld.w r10,r8[0x0]
80003edc: a3 6a lsl r10,0x2
80003ede: e0 3a fe d0 sub r10,130768
80003ee2: 74 0a ld.w r10,r10[0x0]
for (;;)
{
if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)
{
if (Endpoint_IsINReady())
80003ee4: f5 da c0 01 bfextu r10,r10,0x0,0x1
80003ee8: 58 0a cp.w r10,0
80003eea: c2 31 brne 80003f30 <Endpoint_WaitUntilReady+0x7c>
{
if (Endpoint_IsOUTReceived())
return ENDPOINT_READYWAIT_NoError;
}
uint8_t USB_DeviceState_LCL = USB_DeviceState;
80003eec: 0f 8a ld.ub r10,r7[0x0]
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
80003eee: 58 0a cp.w r10,0
80003ef0: c0 31 brne 80003ef6 <Endpoint_WaitUntilReady+0x42>
80003ef2: 30 2c mov r12,2
80003ef4: d8 22 popm r4-r7,pc
return ENDPOINT_READYWAIT_DeviceDisconnected;
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
80003ef6: f8 0a 18 00 cp.b r10,r12
80003efa: c0 31 brne 80003f00 <Endpoint_WaitUntilReady+0x4c>
80003efc: 30 3c mov r12,3
80003efe: d8 22 popm r4-r7,pc
* \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.
*/
static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsStalled(void)
{
return (&AVR32_USBB.UECON0)[USB_Endpoint_SelectedEndpoint].stallrq;
80003f00: 70 0a ld.w r10,r8[0x0]
80003f02: a3 6a lsl r10,0x2
80003f04: e0 3a fe 40 sub r10,130624
80003f08: 74 0a ld.w r10,r10[0x0]
return ENDPOINT_READYWAIT_BusSuspended;
else if (Endpoint_IsStalled())
80003f0a: ed ba 00 13 bld r10,0x13
80003f0e: c0 21 brne 80003f12 <Endpoint_WaitUntilReady+0x5e>
80003f10: da 2a popm r4-r7,pc,r12=1
80003f12: 7c 8a ld.w r10,lr[0x20]
80003f14: f5 da c0 6b bfextu r10,r10,0x3,0xb
return ENDPOINT_READYWAIT_EndpointStalled;
uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber();
if (CurrentFrameNumber != PreviousFrameNumber)
80003f18: f6 0a 19 00 cp.h r10,r11
80003f1c: cd 70 breq 80003eca <Endpoint_WaitUntilReady+0x16>
{
PreviousFrameNumber = CurrentFrameNumber;
if (!(TimeoutMSRem--))
80003f1e: 58 09 cp.w r9,0
80003f20: c0 31 brne 80003f26 <Endpoint_WaitUntilReady+0x72>
80003f22: 30 4c mov r12,4
80003f24: d8 22 popm r4-r7,pc
80003f26: 20 19 sub r9,1
80003f28: f7 da b0 10 bfexts r11,r10,0x0,0x10
80003f2c: 5c 59 castu.b r9
80003f2e: cc eb rjmp 80003eca <Endpoint_WaitUntilReady+0x16>
80003f30: d8 2a popm r4-r7,pc,r12=0
* \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
*/
static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsOUTReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxouti;
80003f32: 70 0a ld.w r10,r8[0x0]
80003f34: a3 6a lsl r10,0x2
80003f36: e0 3a fe d0 sub r10,130768
80003f3a: 74 0a ld.w r10,r10[0x0]
if (Endpoint_IsINReady())
return ENDPOINT_READYWAIT_NoError;
}
else
{
if (Endpoint_IsOUTReceived())
80003f3c: e2 1a 00 02 andl r10,0x2,COH
80003f40: cd 4b rjmp 80003ee8 <Endpoint_WaitUntilReady+0x34>
80003f42: 00 00 add r0,r0
80003f44: 00 00 add r0,r0
80003f46: 05 78 ld.ub r8,--r2
80003f48: 00 00 add r0,r0
80003f4a: 05 b8 ld.ub r8,r2[0x3]
80003f4c <Endpoint_Write_Control_Stream_LE>:
#if defined(TEMPLATE_FUNC_NAME)
// cppcheck-suppress unusedFunction
uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
uint16_t Length)
{
80003f4c: d4 31 pushm r0-r7,lr
uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
bool LastPacketFull = false;
if (Length > USB_ControlRequest.wLength)
80003f4e: 4c f9 lddpc r9,80004088 <Endpoint_Write_Control_Stream_LE+0x13c>
80003f50: 13 f8 ld.ub r8,r9[0x7]
80003f52: 13 e9 ld.ub r9,r9[0x6]
80003f54: f1 e9 10 88 or r8,r8,r9<<0x8
80003f58: 5c 88 casts.h r8
80003f5a: f0 0b 19 00 cp.h r11,r8
80003f5e: e0 88 00 0b brls 80003f74 <Endpoint_Write_Control_Stream_LE+0x28>
// cppcheck-suppress unusedFunction
uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
uint16_t Length)
{
uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
80003f62: 30 0b mov r11,0
* \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
*/
static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsSETUPReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxstpi;
80003f64: 4c a9 lddpc r9,8000408c <Endpoint_Write_Control_Stream_LE+0x140>
80003f66: 4c b7 lddpc r7,80004090 <Endpoint_Write_Control_Stream_LE+0x144>
if (Endpoint_IsINReady())
{
uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
80003f68: 16 96 mov r6,r11
80003f6a: 30 73 mov r3,7
80003f6c: 16 94 mov r4,r11
80003f6e: 12 9a mov r10,r9
80003f70: 0e 95 mov r5,r7
80003f72: c7 f8 rjmp 80004070 <Endpoint_Write_Control_Stream_LE+0x124>
uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
bool LastPacketFull = false;
if (Length > USB_ControlRequest.wLength)
Length = USB_ControlRequest.wLength;
else if (!(Length))
80003f74: 58 0b cp.w r11,0
80003f76: c0 40 breq 80003f7e <Endpoint_Write_Control_Stream_LE+0x32>
80003f78: f1 db b0 10 bfexts r8,r11,0x0,0x10
80003f7c: cf 3b rjmp 80003f62 <Endpoint_Write_Control_Stream_LE+0x16>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
80003f7e: 4c 49 lddpc r9,8000408c <Endpoint_Write_Control_Stream_LE+0x140>
80003f80: 30 1e mov lr,1
80003f82: 72 08 ld.w r8,r9[0x0]
80003f84: a3 68 lsl r8,0x2
80003f86: e0 38 fe a0 sub r8,130720
80003f8a: 70 0a ld.w r10,r8[0x0]
80003f8c: f5 de d0 01 bfins r10,lr,0x0,0x1
80003f90: 91 0a st.w r8[0x0],r10
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
80003f92: 72 08 ld.w r8,r9[0x0]
80003f94: a3 68 lsl r8,0x2
80003f96: e0 38 fd e0 sub r8,130528
80003f9a: 70 0a ld.w r10,r8[0x0]
80003f9c: f5 de d1 c1 bfins r10,lr,0xe,0x1
80003fa0: 91 0a st.w r8[0x0],r10
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
80003fa2: 16 98 mov r8,r11
80003fa4: 72 0a ld.w r10,r9[0x0]
80003fa6: 72 0b ld.w r11,r9[0x0]
80003fa8: fc 19 e0 00 movh r9,0xe000
80003fac: b1 6b lsl r11,0x10
80003fae: 12 0b add r11,r9
80003fb0: 4b 89 lddpc r9,80004090 <Endpoint_Write_Control_Stream_LE+0x144>
80003fb2: f2 0a 09 2b st.w r9[r10<<0x2],r11
80003fb6: cd 6b rjmp 80003f62 <Endpoint_Write_Control_Stream_LE+0x16>
Endpoint_ClearIN();
while (Length || LastPacketFull)
{
uint8_t USB_DeviceState_LCL = USB_DeviceState;
80003fb8: 4b 7e lddpc lr,80004094 <Endpoint_Write_Control_Stream_LE+0x148>
80003fba: 1d 8e ld.ub lr,lr[0x0]
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
80003fbc: 58 0e cp.w lr,0
80003fbe: c7 90 breq 800040b0 <Endpoint_Write_Control_Stream_LE+0x164>
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
80003fc0: 30 52 mov r2,5
80003fc2: e4 0e 18 00 cp.b lr,r2
80003fc6: c7 70 breq 800040b4 <Endpoint_Write_Control_Stream_LE+0x168>
* \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
*/
static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsSETUPReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxstpi;
80003fc8: 72 0e ld.w lr,r9[0x0]
80003fca: a3 6e lsl lr,0x2
80003fcc: e0 3e fe d0 sub lr,130768
80003fd0: 7c 0e ld.w lr,lr[0x0]
return ENDPOINT_RWCSTREAM_BusSuspended;
else if (Endpoint_IsSETUPReceived())
80003fd2: e2 1e 00 04 andl lr,0x4,COH
80003fd6: c0 20 breq 80003fda <Endpoint_Write_Control_Stream_LE+0x8e>
80003fd8: da 3a popm r0-r7,pc,r12=1
* \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
*/
static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsOUTReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxouti;
80003fda: 72 0e ld.w lr,r9[0x0]
80003fdc: a3 6e lsl lr,0x2
80003fde: e0 3e fe d0 sub lr,130768
80003fe2: 7c 0e ld.w lr,lr[0x0]
return ENDPOINT_RWCSTREAM_HostAborted;
else if (Endpoint_IsOUTReceived())
80003fe4: e2 1e 00 02 andl lr,0x2,COH
80003fe8: c5 81 brne 80004098 <Endpoint_Write_Control_Stream_LE+0x14c>
* \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
*/
static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsINReady(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].txini;
80003fea: 72 0e ld.w lr,r9[0x0]
80003fec: a3 6e lsl lr,0x2
80003fee: e0 3e fe d0 sub lr,130768
80003ff2: 7c 0e ld.w lr,lr[0x0]
break;
if (Endpoint_IsINReady())
80003ff4: fd de c0 01 bfextu lr,lr,0x0,0x1
80003ff8: c3 c0 breq 80004070 <Endpoint_Write_Control_Stream_LE+0x124>
* \return Total number of bytes in the currently selected Endpoint's FIFO buffer.
*/
static inline uint16_t Endpoint_BytesInEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Endpoint_BytesInEndpoint(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].byct;
80003ffa: 72 0b ld.w r11,r9[0x0]
80003ffc: a3 6b lsl r11,0x2
80003ffe: e0 3b fe d0 sub r11,130768
80004002: 76 0b ld.w r11,r11[0x0]
80004004: f7 db c2 8b bfextu r11,r11,0x14,0xb
{
uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
80004008: c0 c8 rjmp 80004020 <Endpoint_Write_Control_Stream_LE+0xd4>
* \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer.
*/
static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
static inline void Endpoint_Write_8(const uint8_t Data)
{
*(USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint]++) = Data;
8000400a: 72 02 ld.w r2,r9[0x0]
{
TEMPLATE_TRANSFER_BYTE(DataStream);
8000400c: 19 31 ld.ub r1,r12++
8000400e: ee 02 03 2e ld.w lr,r7[r2<<0x2]
TEMPLATE_BUFFER_MOVE(DataStream, 1);
Length--;
80004012: 20 18 sub r8,1
BytesInEndpoint++;
80004014: 2f fb sub r11,-1
80004016: 1c c1 st.b lr++,r1
while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
{
TEMPLATE_TRANSFER_BYTE(DataStream);
TEMPLATE_BUFFER_MOVE(DataStream, 1);
Length--;
80004018: 5c 88 casts.h r8
BytesInEndpoint++;
8000401a: 5c 8b casts.h r11
8000401c: ee 02 09 2e st.w r7[r2<<0x2],lr
if (Endpoint_IsINReady())
{
uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
80004020: e6 0b 19 00 cp.h r11,r3
80004024: 5f 82 srls r2
80004026: ec 08 19 00 cp.h r8,r6
8000402a: 5f 1e srne lr
8000402c: e5 ee 00 0e and lr,r2,lr
80004030: e8 0e 18 00 cp.b lr,r4
80004034: ce b1 brne 8000400a <Endpoint_Write_Control_Stream_LE+0xbe>
* \ingroup Group_EndpointPacketManagement_UC3
*/
static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
static inline void Endpoint_ClearIN(void)
{
(&AVR32_USBB.UESTA0CLR)[USB_Endpoint_SelectedEndpoint].txinic = true;
80004036: 74 0e ld.w lr,r10[0x0]
80004038: a3 6e lsl lr,0x2
8000403a: e0 3e fe a0 sub lr,130720
8000403e: 30 11 mov r1,1
80004040: 7c 02 ld.w r2,lr[0x0]
80004042: e5 d1 d0 01 bfins r2,r1,0x0,0x1
80004046: 9d 02 st.w lr[0x0],r2
(&AVR32_USBB.UECON0CLR)[USB_Endpoint_SelectedEndpoint].fifoconc = true;
80004048: 74 0e ld.w lr,r10[0x0]
8000404a: a3 6e lsl lr,0x2
8000404c: e0 3e fd e0 sub lr,130528
80004050: 7c 02 ld.w r2,lr[0x0]
80004052: e5 d1 d1 c1 bfins r2,r1,0xe,0x1
80004056: 9d 02 st.w lr[0x0],r2
TEMPLATE_BUFFER_MOVE(DataStream, 1);
Length--;
BytesInEndpoint++;
}
LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
80004058: 30 8e mov lr,8
USB_Endpoint_FIFOPos[USB_Endpoint_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_Endpoint_SelectedEndpoint * ENDPOINT_HSB_ADDRESS_SPACE_SIZE];
8000405a: fc 11 e0 00 movh r1,0xe000
8000405e: fc 0b 19 00 cp.h r11,lr
80004062: 5f 0b sreq r11
80004064: 74 0e ld.w lr,r10[0x0]
80004066: 74 02 ld.w r2,r10[0x0]
80004068: b1 62 lsl r2,0x10
8000406a: 02 02 add r2,r1
8000406c: ea 0e 09 22 st.w r5[lr<<0x2],r2
if (Length > USB_ControlRequest.wLength)
Length = USB_ControlRequest.wLength;
else if (!(Length))
Endpoint_ClearIN();
while (Length || LastPacketFull)
80004070: 58 08 cp.w r8,0
80004072: ca 31 brne 80003fb8 <Endpoint_Write_Control_Stream_LE+0x6c>
80004074: 58 0b cp.w r11,0
80004076: ca 11 brne 80003fb8 <Endpoint_Write_Control_Stream_LE+0x6c>
80004078: c1 08 rjmp 80004098 <Endpoint_Write_Control_Stream_LE+0x14c>
}
}
while (!(Endpoint_IsOUTReceived()))
{
uint8_t USB_DeviceState_LCL = USB_DeviceState;
8000407a: 15 88 ld.ub r8,r10[0x0]
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
8000407c: 58 08 cp.w r8,0
8000407e: c1 90 breq 800040b0 <Endpoint_Write_Control_Stream_LE+0x164>
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
80004080: f2 08 18 00 cp.b r8,r9
80004084: c0 d1 brne 8000409e <Endpoint_Write_Control_Stream_LE+0x152>
80004086: c1 78 rjmp 800040b4 <Endpoint_Write_Control_Stream_LE+0x168>
80004088: 00 00 add r0,r0
8000408a: 05 b9 ld.ub r9,r2[0x3]
8000408c: 00 00 add r0,r0
8000408e: 05 78 ld.ub r8,--r2
80004090: 00 00 add r0,r0
80004092: 06 14 sub r4,r3
80004094: 00 00 add r0,r0
80004096: 05 b8 ld.ub r8,r2[0x3]
* \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
*/
static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline bool Endpoint_IsOUTReceived(void)
{
return (&AVR32_USBB.UESTA0)[USB_Endpoint_SelectedEndpoint].rxouti;
80004098: 48 8b lddpc r11,800040b8 <Endpoint_Write_Control_Stream_LE+0x16c>
}
}
while (!(Endpoint_IsOUTReceived()))
{
uint8_t USB_DeviceState_LCL = USB_DeviceState;
8000409a: 48 9a lddpc r10,800040bc <Endpoint_Write_Control_Stream_LE+0x170>
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
8000409c: 30 59 mov r9,5
8000409e: 76 08 ld.w r8,r11[0x0]
800040a0: a3 68 lsl r8,0x2
800040a2: e0 38 fe d0 sub r8,130768
800040a6: 70 08 ld.w r8,r8[0x0]
LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
Endpoint_ClearIN();
}
}
while (!(Endpoint_IsOUTReceived()))
800040a8: ed b8 00 01 bld r8,0x1
800040ac: ce 71 brne 8000407a <Endpoint_Write_Control_Stream_LE+0x12e>
800040ae: d8 3a popm r0-r7,pc,r12=0
800040b0: 30 2c mov r12,2
800040b2: d8 32 popm r0-r7,pc
800040b4: 30 3c mov r12,3
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
return ENDPOINT_RWCSTREAM_BusSuspended;
}
return ENDPOINT_RWCSTREAM_NoError;
}
800040b6: d8 32 popm r0-r7,pc
800040b8: 00 00 add r0,r0
800040ba: 05 78 ld.ub r8,--r2
800040bc: 00 00 add r0,r0
800040be: 05 b8 ld.ub r8,r2[0x3]
800040c0 <atexit>:
800040c0: d4 01 pushm lr
800040c2: 30 09 mov r9,0
800040c4: 18 9b mov r11,r12
800040c6: 12 9a mov r10,r9
800040c8: 12 9c mov r12,r9
800040ca: f0 1f 00 02 mcall 800040d0 <atexit+0x10>
800040ce: d8 02 popm pc
800040d0: 80 00 ld.sh r0,r0[0x0]
800040d2: 41 60 lddsp r0,sp[0x58]
800040d4 <exit>:
800040d4: d4 21 pushm r4-r7,lr
800040d6: 30 0b mov r11,0
800040d8: 18 97 mov r7,r12
800040da: f0 1f 00 06 mcall 800040f0 <exit+0x1c>
800040de: 48 68 lddpc r8,800040f4 <exit+0x20>
800040e0: 70 0c ld.w r12,r8[0x0]
800040e2: 78 a8 ld.w r8,r12[0x28]
800040e4: 58 08 cp.w r8,0
800040e6: c0 20 breq 800040ea <exit+0x16>
800040e8: 5d 18 icall r8
800040ea: 0e 9c mov r12,r7
800040ec: f0 1f 00 03 mcall 800040f8 <exit+0x24>
800040f0: 80 00 ld.sh r0,r0[0x0]
800040f2: 42 0c lddsp r12,sp[0x80]
800040f4: 80 00 ld.sh r0,r0[0x0]
800040f6: 4e 1c lddpc r12,80004278 <__call_exitprocs+0x6c>
800040f8: 80 00 ld.sh r0,r0[0x0]
800040fa: 41 16 lddsp r6,sp[0x44]
800040fc <memset>:
800040fc: 18 98 mov r8,r12
800040fe: c0 38 rjmp 80004104 <memset+0x8>
80004100: 10 cb st.b r8++,r11
80004102: 20 1a sub r10,1
80004104: 58 0a cp.w r10,0
80004106: cf d1 brne 80004100 <memset+0x4>
80004108: 5e fc retal r12
8000410a <_init_startup>:
8000410a: 5e fd retal 0
8000410c <_init_argv>:
8000410c: 30 e8 mov r8,14
8000410e: d6 73 breakpoint
80004110: 3f fc mov r12,-1
80004112: 35 8b mov r11,88
80004114: 5e fc retal r12
80004116 <_exit>:
80004116: 30 d8 mov r8,13
80004118: d6 73 breakpoint
8000411a: 3f fc mov r12,-1
8000411c: 35 8b mov r11,88
8000411e: c0 08 rjmp 8000411e <_exit+0x8>
80004120 <_sbrk>:
80004120: d4 01 pushm lr
80004122: 48 c8 lddpc r8,80004150 <_sbrk+0x30>
80004124: 70 09 ld.w r9,r8[0x0]
80004126: 58 09 cp.w r9,0
80004128: c0 31 brne 8000412e <_sbrk+0xe>
8000412a: 48 b9 lddpc r9,80004154 <_sbrk+0x34>
8000412c: 91 09 st.w r8[0x0],r9
8000412e: 48 99 lddpc r9,80004150 <_sbrk+0x30>
80004130: 48 aa lddpc r10,80004158 <_sbrk+0x38>
80004132: 72 08 ld.w r8,r9[0x0]
80004134: f0 0c 00 0c add r12,r8,r12
80004138: 14 3c cp.w r12,r10
8000413a: e0 8b 00 04 brhi 80004142 <_sbrk+0x22>
8000413e: 93 0c st.w r9[0x0],r12
80004140: c0 68 rjmp 8000414c <_sbrk+0x2c>
80004142: f0 1f 00 07 mcall 8000415c <_sbrk+0x3c>
80004146: 30 c8 mov r8,12
80004148: 99 08 st.w r12[0x0],r8
8000414a: 3f f8 mov r8,-1
8000414c: 10 9c mov r12,r8
8000414e: d8 02 popm pc
80004150: 00 00 add r0,r0
80004152: 05 7c ld.ub r12,--r2
80004154: 00 00 add r0,r0
80004156: 06 38 cp.w r8,r3
80004158: 00 00 add r0,r0
8000415a: 70 00 ld.w r0,r8[0x0]
8000415c: 80 00 ld.sh r0,r0[0x0]
8000415e: 42 e0 lddsp r0,sp[0xb8]
80004160 <__register_exitproc>:
80004160: d4 31 pushm r0-r7,lr
80004162: 4a 98 lddpc r8,80004204 <__register_exitproc+0xa4>
80004164: 70 03 ld.w r3,r8[0x0]
80004166: 67 24 ld.w r4,r3[0x48]
80004168: 58 04 cp.w r4,0
8000416a: f9 b8 00 4c moveq r8,76
8000416e: e7 d8 e0 04 addeq r4,r3,r8
80004172: e7 f4 0a 12 st.weq r3[0x48],r4
80004176: 18 97 mov r7,r12
80004178: 16 96 mov r6,r11
8000417a: 14 95 mov r5,r10
8000417c: 12 92 mov r2,r9
8000417e: 68 18 ld.w r8,r4[0x4]
80004180: 59 f8 cp.w r8,31
80004182: e0 8a 00 0e brle 8000419e <__register_exitproc+0x3e>
80004186: e0 6c 00 8c mov r12,140
8000418a: f0 1f 00 20 mcall 80004208 <__register_exitproc+0xa8>
8000418e: 18 94 mov r4,r12
80004190: c3 80 breq 80004200 <__register_exitproc+0xa0>
80004192: 67 28 ld.w r8,r3[0x48]
80004194: 99 08 st.w r12[0x0],r8
80004196: e7 4c 00 48 st.w r3[72],r12
8000419a: 30 08 mov r8,0
8000419c: 99 18 st.w r12[0x4],r8
8000419e: 58 07 cp.w r7,0
800041a0: c2 70 breq 800041ee <__register_exitproc+0x8e>
800041a2: e8 fc 00 88 ld.w r12,r4[136]
800041a6: 58 0c cp.w r12,0
800041a8: c0 d1 brne 800041c2 <__register_exitproc+0x62>
800041aa: e0 6c 01 08 mov r12,264
800041ae: f0 1f 00 17 mcall 80004208 <__register_exitproc+0xa8>
800041b2: c2 70 breq 80004200 <__register_exitproc+0xa0>
800041b4: 30 08 mov r8,0
800041b6: e9 4c 00 88 st.w r4[136],r12
800041ba: f9 48 01 04 st.w r12[260],r8
800041be: f9 48 01 00 st.w r12[256],r8
800041c2: 68 18 ld.w r8,r4[0x4]
800041c4: f0 c9 ff e0 sub r9,r8,-32
800041c8: f8 08 09 25 st.w r12[r8<<0x2],r5
800041cc: f8 09 09 22 st.w r12[r9<<0x2],r2
800041d0: 30 1a mov r10,1
800041d2: f8 f9 01 00 ld.w r9,r12[256]
800041d6: f4 08 09 48 lsl r8,r10,r8
800041da: 10 49 or r9,r8
800041dc: f9 49 01 00 st.w r12[256],r9
800041e0: 58 27 cp.w r7,2
800041e2: f9 f9 00 41 ld.weq r9,r12[0x104]
800041e6: f3 d8 e0 38 oreq r8,r9,r8
800041ea: f9 f8 0a 41 st.weq r12[0x104],r8
800041ee: 68 18 ld.w r8,r4[0x4]
800041f0: 30 0c mov r12,0
800041f2: f0 c9 ff ff sub r9,r8,-1
800041f6: 2f e8 sub r8,-2
800041f8: 89 19 st.w r4[0x4],r9
800041fa: e8 08 09 26 st.w r4[r8<<0x2],r6
800041fe: d8 32 popm r0-r7,pc
80004200: dc 3a popm r0-r7,pc,r12=-1
80004202: 00 00 add r0,r0
80004204: 80 00 ld.sh r0,r0[0x0]
80004206: 4e 1c lddpc r12,80004388 <_malloc_r+0x6c>
80004208: 80 00 ld.sh r0,r0[0x0]
8000420a: 43 04 lddsp r4,sp[0xc0]
8000420c <__call_exitprocs>:
8000420c: d4 31 pushm r0-r7,lr
8000420e: 20 3d sub sp,12
80004210: 4b 28 lddpc r8,800042d8 <__call_exitprocs+0xcc>
80004212: 50 2c stdsp sp[0x8],r12
80004214: 70 08 ld.w r8,r8[0x0]
80004216: 16 91 mov r1,r11
80004218: 50 08 stdsp sp[0x0],r8
8000421a: 2b 88 sub r8,-72
8000421c: 50 18 stdsp sp[0x4],r8
8000421e: 40 0a lddsp r10,sp[0x0]
80004220: 40 14 lddsp r4,sp[0x4]
80004222: 75 27 ld.w r7,r10[0x48]
80004224: c5 58 rjmp 800042ce <__call_exitprocs+0xc2>
80004226: 6e 15 ld.w r5,r7[0x4]
80004228: ee f6 00 88 ld.w r6,r7[136]
8000422c: ea c2 ff ff sub r2,r5,-1
80004230: 20 15 sub r5,1
80004232: ee 02 00 22 add r2,r7,r2<<0x2
80004236: ec 05 00 23 add r3,r6,r5<<0x2
8000423a: c3 58 rjmp 800042a4 <__call_exitprocs+0x98>
8000423c: 58 01 cp.w r1,0
8000423e: c0 70 breq 8000424c <__call_exitprocs+0x40>
80004240: 58 06 cp.w r6,0
80004242: c2 e0 breq 8000429e <__call_exitprocs+0x92>
80004244: e6 f8 00 80 ld.w r8,r3[128]
80004248: 02 38 cp.w r8,r1
8000424a: c2 a1 brne 8000429e <__call_exitprocs+0x92>
8000424c: 6e 19 ld.w r9,r7[0x4]
8000424e: 64 08 ld.w r8,r2[0x0]
80004250: 20 19 sub r9,1
80004252: 12 35 cp.w r5,r9
80004254: ef f5 0a 01 st.weq r7[0x4],r5
80004258: f9 b9 01 00 movne r9,0
8000425c: e5 f9 1a 00 st.wne r2[0x0],r9
80004260: 58 08 cp.w r8,0
80004262: c1 e0 breq 8000429e <__call_exitprocs+0x92>
80004264: 6e 10 ld.w r0,r7[0x4]
80004266: 58 06 cp.w r6,0
80004268: c0 90 breq 8000427a <__call_exitprocs+0x6e>
8000426a: 30 1a mov r10,1
8000426c: f4 05 09 49 lsl r9,r10,r5
80004270: ec fa 01 00 ld.w r10,r6[256]
80004274: f3 ea 00 0a and r10,r9,r10
80004278: c0 31 brne 8000427e <__call_exitprocs+0x72>
8000427a: 5d 18 icall r8
8000427c: c0 b8 rjmp 80004292 <__call_exitprocs+0x86>
8000427e: ec fa 01 04 ld.w r10,r6[260]
80004282: 66 0b ld.w r11,r3[0x0]
80004284: 14 69 and r9,r10
80004286: c0 41 brne 8000428e <__call_exitprocs+0x82>
80004288: 40 2c lddsp r12,sp[0x8]
8000428a: 5d 18 icall r8
8000428c: c0 38 rjmp 80004292 <__call_exitprocs+0x86>
8000428e: 16 9c mov r12,r11
80004290: 5d 18 icall r8
80004292: 6e 18 ld.w r8,r7[0x4]
80004294: 10 30 cp.w r0,r8
80004296: cc 41 brne 8000421e <__call_exitprocs+0x12>
80004298: 68 08 ld.w r8,r4[0x0]
8000429a: 0e 38 cp.w r8,r7
8000429c: cc 11 brne 8000421e <__call_exitprocs+0x12>
8000429e: 20 15 sub r5,1
800042a0: 20 43 sub r3,4
800042a2: 20 42 sub r2,4
800042a4: 58 05 cp.w r5,0
800042a6: cc b4 brge 8000423c <__call_exitprocs+0x30>
800042a8: 6e 18 ld.w r8,r7[0x4]
800042aa: 58 08 cp.w r8,0
800042ac: c0 f1 brne 800042ca <__call_exitprocs+0xbe>
800042ae: 6e 08 ld.w r8,r7[0x0]
800042b0: 58 08 cp.w r8,0
800042b2: c0 c0 breq 800042ca <__call_exitprocs+0xbe>
800042b4: 89 08 st.w r4[0x0],r8
800042b6: 58 06 cp.w r6,0
800042b8: c0 40 breq 800042c0 <__call_exitprocs+0xb4>
800042ba: 0c 9c mov r12,r6
800042bc: f0 1f 00 08 mcall 800042dc <__call_exitprocs+0xd0>
800042c0: 0e 9c mov r12,r7
800042c2: f0 1f 00 07 mcall 800042dc <__call_exitprocs+0xd0>
800042c6: 68 07 ld.w r7,r4[0x0]
800042c8: c0 38 rjmp 800042ce <__call_exitprocs+0xc2>
800042ca: 0e 94 mov r4,r7
800042cc: 6e 07 ld.w r7,r7[0x0]
800042ce: 58 07 cp.w r7,0
800042d0: ca b1 brne 80004226 <__call_exitprocs+0x1a>
800042d2: 2f dd sub sp,-12
800042d4: d8 32 popm r0-r7,pc
800042d6: 00 00 add r0,r0
800042d8: 80 00 ld.sh r0,r0[0x0]
800042da: 4e 1c lddpc r12,8000445c <_malloc_r+0x140>
800042dc: 80 00 ld.sh r0,r0[0x0]
800042de: 42 ec lddsp r12,sp[0xb8]
800042e0 <__errno>:
800042e0: 48 28 lddpc r8,800042e8 <__errno+0x8>
800042e2: 70 0c ld.w r12,r8[0x0]
800042e4: 2f 4c sub r12,-12
800042e6: 5e fc retal r12
800042e8: 00 00 add r0,r0
800042ea: 01 58 ld.sh r8,--r0
800042ec <free>:
800042ec: d4 01 pushm lr
800042ee: 48 48 lddpc r8,800042fc <free+0x10>
800042f0: 18 9b mov r11,r12
800042f2: 70 0c ld.w r12,r8[0x0]
800042f4: f0 1f 00 03 mcall 80004300 <free+0x14>
800042f8: d8 02 popm pc
800042fa: 00 00 add r0,r0
800042fc: 00 00 add r0,r0
800042fe: 01 58 ld.sh r8,--r0
80004300: 80 00 ld.sh r0,r0[0x0]
80004302: 48 44 lddpc r4,80004310 <malloc+0xc>
80004304 <malloc>:
80004304: d4 01 pushm lr
80004306: 48 48 lddpc r8,80004314 <malloc+0x10>
80004308: 18 9b mov r11,r12
8000430a: 70 0c ld.w r12,r8[0x0]
8000430c: f0 1f 00 03 mcall 80004318 <malloc+0x14>
80004310: d8 02 popm pc
80004312: 00 00 add r0,r0
80004314: 00 00 add r0,r0
80004316: 01 58 ld.sh r8,--r0
80004318: 80 00 ld.sh r0,r0[0x0]
8000431a: 43 1c lddsp r12,sp[0xc4]
8000431c <_malloc_r>:
8000431c: d4 31 pushm r0-r7,lr
8000431e: f6 c7 ff f5 sub r7,r11,-11
80004322: 18 95 mov r5,r12
80004324: 59 67 cp.w r7,22
80004326: f9 b7 08 10 movls r7,16
8000432a: f9 b8 0b f8 movhi r8,-8
8000432e: ef d8 eb 27 andhi r7,r7,r8
80004332: 16 37 cp.w r7,r11
80004334: 5f 38 srlo r8
80004336: f1 e7 13 f8 or r8,r8,r7>>0x1f
8000433a: c0 50 breq 80004344 <_malloc_r+0x28>
8000433c: 30 c8 mov r8,12
8000433e: 99 38 st.w r12[0xc],r8
80004340: e0 8f 01 f4 bral 80004728 <_malloc_r+0x40c>
80004344: f0 1f 00 50 mcall 80004484 <_malloc_r+0x168>
80004348: e0 47 01 f7 cp.w r7,503
8000434c: e0 8b 00 1c brhi 80004384 <_malloc_r+0x68>
80004350: ee 03 16 03 lsr r3,r7,0x3
80004354: 4c d8 lddpc r8,80004488 <_malloc_r+0x16c>
80004356: f0 03 00 38 add r8,r8,r3<<0x3
8000435a: 70 36 ld.w r6,r8[0xc]
8000435c: 10 36 cp.w r6,r8
8000435e: c0 61 brne 8000436a <_malloc_r+0x4e>
80004360: ec c8 ff f8 sub r8,r6,-8
80004364: 70 36 ld.w r6,r8[0xc]
80004366: 10 36 cp.w r6,r8
80004368: c0 c0 breq 80004380 <_malloc_r+0x64>
8000436a: 6c 18 ld.w r8,r6[0x4]
8000436c: e0 18 ff fc andl r8,0xfffc
80004370: 6c 3a ld.w r10,r6[0xc]
80004372: ec 08 00 09 add r9,r6,r8
80004376: 0a 9c mov r12,r5
80004378: 6c 28 ld.w r8,r6[0x8]
8000437a: 95 28 st.w r10[0x8],r8
8000437c: 91 3a st.w r8[0xc],r10
8000437e: c4 78 rjmp 8000440c <_malloc_r+0xf0>
80004380: 2f e3 sub r3,-2
80004382: c4 d8 rjmp 8000441c <_malloc_r+0x100>
80004384: ee 08 16 09 lsr r8,r7,0x9
80004388: c0 41 brne 80004390 <_malloc_r+0x74>
8000438a: ee 03 16 03 lsr r3,r7,0x3
8000438e: c2 78 rjmp 800043dc <_malloc_r+0xc0>
80004390: 58 48 cp.w r8,4
80004392: e0 8b 00 06 brhi 8000439e <_malloc_r+0x82>
80004396: ee 03 16 06 lsr r3,r7,0x6
8000439a: 2c 83 sub r3,-56
8000439c: c2 08 rjmp 800043dc <_malloc_r+0xc0>
8000439e: 59 48 cp.w r8,20
800043a0: e0 8b 00 05 brhi 800043aa <_malloc_r+0x8e>
800043a4: f0 c3 ff a5 sub r3,r8,-91
800043a8: c1 a8 rjmp 800043dc <_malloc_r+0xc0>
800043aa: e0 48 00 54 cp.w r8,84
800043ae: e0 8b 00 06 brhi 800043ba <_malloc_r+0x9e>
800043b2: ee 03 16 0c lsr r3,r7,0xc
800043b6: 29 23 sub r3,-110
800043b8: c1 28 rjmp 800043dc <_malloc_r+0xc0>
800043ba: e0 48 01 54 cp.w r8,340
800043be: e0 8b 00 06 brhi 800043ca <_malloc_r+0xae>
800043c2: ee 03 16 0f lsr r3,r7,0xf
800043c6: 28 93 sub r3,-119
800043c8: c0 a8 rjmp 800043dc <_malloc_r+0xc0>
800043ca: ee 03 16 12 lsr r3,r7,0x12
800043ce: e0 48 05 54 cp.w r8,1364
800043d2: e0 88 00 04 brls 800043da <_malloc_r+0xbe>
800043d6: 37 e3 mov r3,126
800043d8: c0 28 rjmp 800043dc <_malloc_r+0xc0>
800043da: 28 43 sub r3,-124
800043dc: 4a ba lddpc r10,80004488 <_malloc_r+0x16c>
800043de: f4 03 00 3a add r10,r10,r3<<0x3
800043e2: 74 36 ld.w r6,r10[0xc]
800043e4: c1 98 rjmp 80004416 <_malloc_r+0xfa>
800043e6: 6c 19 ld.w r9,r6[0x4]
800043e8: e0 19 ff fc andl r9,0xfffc
800043ec: f2 07 01 0b sub r11,r9,r7
800043f0: 58 fb cp.w r11,15
800043f2: e0 8a 00 04 brle 800043fa <_malloc_r+0xde>
800043f6: 20 13 sub r3,1
800043f8: c1 18 rjmp 8000441a <_malloc_r+0xfe>
800043fa: 6c 38 ld.w r8,r6[0xc]
800043fc: 58 0b cp.w r11,0
800043fe: c0 b5 brlt 80004414 <_malloc_r+0xf8>
80004400: 6c 2a ld.w r10,r6[0x8]
80004402: ec 09 00 09 add r9,r6,r9
80004406: 0a 9c mov r12,r5
80004408: 91 2a st.w r8[0x8],r10
8000440a: 95 38 st.w r10[0xc],r8
8000440c: 72 18 ld.w r8,r9[0x4]
8000440e: a1 a8 sbr r8,0x0
80004410: 93 18 st.w r9[0x4],r8
80004412: cb d8 rjmp 8000458c <_malloc_r+0x270>
80004414: 10 96 mov r6,r8
80004416: 14 36 cp.w r6,r10
80004418: ce 71 brne 800043e6 <_malloc_r+0xca>
8000441a: 2f f3 sub r3,-1
8000441c: 49 ba lddpc r10,80004488 <_malloc_r+0x16c>
8000441e: f4 cc ff f8 sub r12,r10,-8
80004422: 78 26 ld.w r6,r12[0x8]
80004424: 18 36 cp.w r6,r12
80004426: c6 f0 breq 80004504 <_malloc_r+0x1e8>
80004428: 6c 19 ld.w r9,r6[0x4]
8000442a: e0 19 ff fc andl r9,0xfffc
8000442e: f2 07 01 08 sub r8,r9,r7
80004432: 58 f8 cp.w r8,15
80004434: e0 89 00 91 brgt 80004556 <_malloc_r+0x23a>
80004438: 99 3c st.w r12[0xc],r12
8000443a: 99 2c st.w r12[0x8],r12
8000443c: 58 08 cp.w r8,0
8000443e: c0 55 brlt 80004448 <_malloc_r+0x12c>
80004440: ec 09 00 09 add r9,r6,r9
80004444: 0a 9c mov r12,r5
80004446: ce 3b rjmp 8000440c <_malloc_r+0xf0>
80004448: e0 49 01 ff cp.w r9,511
8000444c: e0 8b 00 13 brhi 80004472 <_malloc_r+0x156>
80004450: a3 99 lsr r9,0x3
80004452: f4 09 00 38 add r8,r10,r9<<0x3
80004456: 70 2b ld.w r11,r8[0x8]
80004458: 8d 38 st.w r6[0xc],r8
8000445a: 8d 2b st.w r6[0x8],r11
8000445c: 97 36 st.w r11[0xc],r6
8000445e: 91 26 st.w r8[0x8],r6
80004460: a3 49 asr r9,0x2
80004462: 74 18 ld.w r8,r10[0x4]
80004464: 30 1b mov r11,1
80004466: f6 09 09 49 lsl r9,r11,r9
8000446a: f1 e9 10 09 or r9,r8,r9
8000446e: 95 19 st.w r10[0x4],r9
80004470: c4 a8 rjmp 80004504 <_malloc_r+0x1e8>
80004472: f2 08 16 09 lsr r8,r9,0x9
80004476: 58 48 cp.w r8,4
80004478: e0 8b 00 0a brhi 8000448c <_malloc_r+0x170>
8000447c: f2 0a 16 06 lsr r10,r9,0x6
80004480: 2c 8a sub r10,-56
80004482: c2 48 rjmp 800044ca <_malloc_r+0x1ae>
80004484: 80 00 ld.sh r0,r0[0x0]
80004486: 47 70 lddsp r0,sp[0x1dc]
80004488: 00 00 add r0,r0
8000448a: 01 5c ld.sh r12,--r0
8000448c: 59 48 cp.w r8,20
8000448e: e0 8b 00 05 brhi 80004498 <_malloc_r+0x17c>
80004492: f0 ca ff a5 sub r10,r8,-91
80004496: c1 a8 rjmp 800044ca <_malloc_r+0x1ae>
80004498: e0 48 00 54 cp.w r8,84
8000449c: e0 8b 00 06 brhi 800044a8 <_malloc_r+0x18c>
800044a0: f2 0a 16 0c lsr r10,r9,0xc
800044a4: 29 2a sub r10,-110
800044a6: c1 28 rjmp 800044ca <_malloc_r+0x1ae>
800044a8: e0 48 01 54 cp.w r8,340
800044ac: e0 8b 00 06 brhi 800044b8 <_malloc_r+0x19c>
800044b0: f2 0a 16 0f lsr r10,r9,0xf
800044b4: 28 9a sub r10,-119
800044b6: c0 a8 rjmp 800044ca <_malloc_r+0x1ae>
800044b8: f2 0a 16 12 lsr r10,r9,0x12
800044bc: e0 48 05 54 cp.w r8,1364
800044c0: e0 88 00 04 brls 800044c8 <_malloc_r+0x1ac>
800044c4: 37 ea mov r10,126
800044c6: c0 28 rjmp 800044ca <_malloc_r+0x1ae>
800044c8: 28 4a sub r10,-124
800044ca: 4c 8b lddpc r11,800045e8 <_malloc_r+0x2cc>
800044cc: f6 0a 00 34 add r4,r11,r10<<0x3
800044d0: 68 28 ld.w r8,r4[0x8]
800044d2: 08 38 cp.w r8,r4
800044d4: c0 e1 brne 800044f0 <_malloc_r+0x1d4>
800044d6: 76 19 ld.w r9,r11[0x4]
800044d8: a3 4a asr r10,0x2
800044da: 30 1e mov lr,1
800044dc: fc 0a 09 4a lsl r10,lr,r10
800044e0: f3 ea 10 0a or r10,r9,r10
800044e4: 10 99 mov r9,r8
800044e6: 97 1a st.w r11[0x4],r10
800044e8: c0 a8 rjmp 800044fc <_malloc_r+0x1e0>
800044ea: 70 28 ld.w r8,r8[0x8]
800044ec: 08 38 cp.w r8,r4
800044ee: c0 60 breq 800044fa <_malloc_r+0x1de>
800044f0: 70 1a ld.w r10,r8[0x4]
800044f2: e0 1a ff fc andl r10,0xfffc
800044f6: 14 39 cp.w r9,r10
800044f8: cf 93 brcs 800044ea <_malloc_r+0x1ce>
800044fa: 70 39 ld.w r9,r8[0xc]
800044fc: 8d 39 st.w r6[0xc],r9
800044fe: 8d 28 st.w r6[0x8],r8
80004500: 91 36 st.w r8[0xc],r6
80004502: 93 26 st.w r9[0x8],r6
80004504: e6 08 14 02 asr r8,r3,0x2
80004508: 30 1b mov r11,1
8000450a: 4b 84 lddpc r4,800045e8 <_malloc_r+0x2cc>
8000450c: f6 08 09 4b lsl r11,r11,r8
80004510: 68 18 ld.w r8,r4[0x4]
80004512: 10 3b cp.w r11,r8
80004514: e0 8b 00 6e brhi 800045f0 <_malloc_r+0x2d4>
80004518: f7 e8 00 09 and r9,r11,r8
8000451c: c0 b1 brne 80004532 <_malloc_r+0x216>
8000451e: e0 13 ff fc andl r3,0xfffc
80004522: a1 7b lsl r11,0x1
80004524: 2f c3 sub r3,-4
80004526: c0 38 rjmp 8000452c <_malloc_r+0x210>
80004528: 2f c3 sub r3,-4
8000452a: a1 7b lsl r11,0x1
8000452c: f7 e8 00 09 and r9,r11,r8
80004530: cf c0 breq 80004528 <_malloc_r+0x20c>
80004532: e8 03 00 3e add lr,r4,r3<<0x3
80004536: 06 92 mov r2,r3
80004538: 1c 91 mov r1,lr
8000453a: 62 36 ld.w r6,r1[0xc]
8000453c: c2 e8 rjmp 80004598 <_malloc_r+0x27c>
8000453e: 6c 1a ld.w r10,r6[0x4]
80004540: e0 1a ff fc andl r10,0xfffc
80004544: f4 07 01 08 sub r8,r10,r7
80004548: 58 f8 cp.w r8,15
8000454a: e0 8a 00 15 brle 80004574 <_malloc_r+0x258>
8000454e: 6c 3a ld.w r10,r6[0xc]
80004550: 6c 29 ld.w r9,r6[0x8]
80004552: 95 29 st.w r10[0x8],r9
80004554: 93 3a st.w r9[0xc],r10
80004556: 0e 99 mov r9,r7
80004558: ec 07 00 07 add r7,r6,r7
8000455c: a1 a9 sbr r9,0x0
8000455e: 99 37 st.w r12[0xc],r7
80004560: 99 27 st.w r12[0x8],r7
80004562: 8d 19 st.w r6[0x4],r9
80004564: ee 08 09 08 st.w r7[r8],r8
80004568: 8f 2c st.w r7[0x8],r12
8000456a: 8f 3c st.w r7[0xc],r12
8000456c: a1 a8 sbr r8,0x0
8000456e: 0a 9c mov r12,r5
80004570: 8f 18 st.w r7[0x4],r8
80004572: c0 d8 rjmp 8000458c <_malloc_r+0x270>
80004574: 6c 39 ld.w r9,r6[0xc]
80004576: 58 08 cp.w r8,0
80004578: c0 f5 brlt 80004596 <_malloc_r+0x27a>
8000457a: ec 0a 00 0a add r10,r6,r10
8000457e: 74 18 ld.w r8,r10[0x4]
80004580: a1 a8 sbr r8,0x0
80004582: 0a 9c mov r12,r5
80004584: 95 18 st.w r10[0x4],r8
80004586: 6c 28 ld.w r8,r6[0x8]
80004588: 93 28 st.w r9[0x8],r8
8000458a: 91 39 st.w r8[0xc],r9
8000458c: f0 1f 00 18 mcall 800045ec <_malloc_r+0x2d0>
80004590: ec cc ff f8 sub r12,r6,-8
80004594: d8 32 popm r0-r7,pc
80004596: 12 96 mov r6,r9
80004598: 02 36 cp.w r6,r1
8000459a: cd 21 brne 8000453e <_malloc_r+0x222>
8000459c: 2f f2 sub r2,-1
8000459e: f1 d2 c0 02 bfextu r8,r2,0x0,0x2
800045a2: c0 30 breq 800045a8 <_malloc_r+0x28c>
800045a4: 2f 81 sub r1,-8
800045a6: cc ab rjmp 8000453a <_malloc_r+0x21e>
800045a8: 1c 98 mov r8,lr
800045aa: f3 d3 c0 02 bfextu r9,r3,0x0,0x2
800045ae: c0 81 brne 800045be <_malloc_r+0x2a2>
800045b0: 68 19 ld.w r9,r4[0x4]
800045b2: f6 08 11 ff rsub r8,r11,-1
800045b6: f3 e8 00 08 and r8,r9,r8
800045ba: 89 18 st.w r4[0x4],r8
800045bc: c0 78 rjmp 800045ca <_malloc_r+0x2ae>
800045be: f0 c9 00 08 sub r9,r8,8
800045c2: 20 13 sub r3,1
800045c4: 70 08 ld.w r8,r8[0x0]
800045c6: 12 38 cp.w r8,r9
800045c8: cf 10 breq 800045aa <_malloc_r+0x28e>
800045ca: a1 7b lsl r11,0x1
800045cc: 68 18 ld.w r8,r4[0x4]
800045ce: 10 3b cp.w r11,r8
800045d0: e0 8b 00 10 brhi 800045f0 <_malloc_r+0x2d4>
800045d4: 58 0b cp.w r11,0
800045d6: c0 d0 breq 800045f0 <_malloc_r+0x2d4>
800045d8: 04 93 mov r3,r2
800045da: c0 38 rjmp 800045e0 <_malloc_r+0x2c4>
800045dc: 2f c3 sub r3,-4
800045de: a1 7b lsl r11,0x1
800045e0: f7 e8 00 09 and r9,r11,r8
800045e4: ca 71 brne 80004532 <_malloc_r+0x216>
800045e6: cf bb rjmp 800045dc <_malloc_r+0x2c0>
800045e8: 00 00 add r0,r0
800045ea: 01 5c ld.sh r12,--r0
800045ec: 80 00 ld.sh r0,r0[0x0]
800045ee: 47 72 lddsp r2,sp[0x1dc]
800045f0: 68 23 ld.w r3,r4[0x8]
800045f2: 66 12 ld.w r2,r3[0x4]
800045f4: e0 12 ff fc andl r2,0xfffc
800045f8: 0e 32 cp.w r2,r7
800045fa: 5f 39 srlo r9
800045fc: e4 07 01 08 sub r8,r2,r7
80004600: 58 f8 cp.w r8,15
80004602: 5f aa srle r10
80004604: f5 e9 10 09 or r9,r10,r9
80004608: e0 80 00 a2 breq 8000474c <_malloc_r+0x430>
8000460c: 4c 88 lddpc r8,8000472c <_malloc_r+0x410>
8000460e: 70 01 ld.w r1,r8[0x0]
80004610: 4c 88 lddpc r8,80004730 <_malloc_r+0x414>
80004612: 2f 01 sub r1,-16
80004614: 70 08 ld.w r8,r8[0x0]
80004616: 0e 01 add r1,r7
80004618: 5b f8 cp.w r8,-1
8000461a: c0 40 breq 80004622 <_malloc_r+0x306>
8000461c: 28 11 sub r1,-127
8000461e: e0 11 ff 80 andl r1,0xff80
80004622: 02 9b mov r11,r1
80004624: 0a 9c mov r12,r5
80004626: f0 1f 00 44 mcall 80004734 <_malloc_r+0x418>
8000462a: 18 96 mov r6,r12
8000462c: 5b fc cp.w r12,-1
8000462e: c6 e0 breq 8000470a <_malloc_r+0x3ee>
80004630: e6 02 00 08 add r8,r3,r2
80004634: 10 3c cp.w r12,r8
80004636: c0 32 brcc 8000463c <_malloc_r+0x320>
80004638: 08 33 cp.w r3,r4
8000463a: c6 81 brne 8000470a <_malloc_r+0x3ee>
8000463c: 4b fa lddpc r10,80004738 <_malloc_r+0x41c>
8000463e: 74 09 ld.w r9,r10[0x0]
80004640: e2 09 00 09 add r9,r1,r9
80004644: 95 09 st.w r10[0x0],r9
80004646: 10 36 cp.w r6,r8
80004648: c0 a1 brne 8000465c <_malloc_r+0x340>
8000464a: f5 d6 c0 07 bfextu r10,r6,0x0,0x7
8000464e: c0 71 brne 8000465c <_malloc_r+0x340>
80004650: e2 02 00 02 add r2,r1,r2
80004654: 68 28 ld.w r8,r4[0x8]
80004656: a1 a2 sbr r2,0x0
80004658: 91 12 st.w r8[0x4],r2
8000465a: c4 c8 rjmp 800046f2 <_malloc_r+0x3d6>
8000465c: 4b 5a lddpc r10,80004730 <_malloc_r+0x414>
8000465e: 74 0b ld.w r11,r10[0x0]
80004660: 5b fb cp.w r11,-1
80004662: c0 31 brne 80004668 <_malloc_r+0x34c>
80004664: 95 06 st.w r10[0x0],r6
80004666: c0 68 rjmp 80004672 <_malloc_r+0x356>
80004668: ec 09 00 09 add r9,r6,r9
8000466c: 4b 3a lddpc r10,80004738 <_malloc_r+0x41c>
8000466e: 10 19 sub r9,r8
80004670: 95 09 st.w r10[0x0],r9
80004672: f1 d6 c0 03 bfextu r8,r6,0x0,0x3
80004676: f0 09 11 08 rsub r9,r8,8
8000467a: 58 08 cp.w r8,0
8000467c: f2 08 17 10 movne r8,r9
80004680: ed d8 e1 06 addne r6,r6,r8
80004684: 28 08 sub r8,-128
80004686: ec 01 00 01 add r1,r6,r1
8000468a: 0a 9c mov r12,r5
8000468c: e3 d1 c0 07 bfextu r1,r1,0x0,0x7
80004690: f0 01 01 01 sub r1,r8,r1
80004694: 02 9b mov r11,r1
80004696: f0 1f 00 28 mcall 80004734 <_malloc_r+0x418>
8000469a: 4a 88 lddpc r8,80004738 <_malloc_r+0x41c>
8000469c: 5b fc cp.w r12,-1
8000469e: ec 0c 17 00 moveq r12,r6
800046a2: f9 b1 00 00 moveq r1,0
800046a6: 70 09 ld.w r9,r8[0x0]
800046a8: 0c 1c sub r12,r6
800046aa: 89 26 st.w r4[0x8],r6
800046ac: 02 0c add r12,r1
800046ae: 12 01 add r1,r9
800046b0: a1 ac sbr r12,0x0
800046b2: 91 01 st.w r8[0x0],r1
800046b4: 8d 1c st.w r6[0x4],r12
800046b6: 08 33 cp.w r3,r4
800046b8: c1 d0 breq 800046f2 <_malloc_r+0x3d6>
800046ba: 58 f2 cp.w r2,15
800046bc: e0 8b 00 05 brhi 800046c6 <_malloc_r+0x3aa>
800046c0: 30 18 mov r8,1
800046c2: 8d 18 st.w r6[0x4],r8
800046c4: c2 38 rjmp 8000470a <_malloc_r+0x3ee>
800046c6: 30 59 mov r9,5
800046c8: 20 c2 sub r2,12
800046ca: e0 12 ff f8 andl r2,0xfff8
800046ce: e6 02 00 08 add r8,r3,r2
800046d2: 91 29 st.w r8[0x8],r9
800046d4: 91 19 st.w r8[0x4],r9
800046d6: 66 18 ld.w r8,r3[0x4]
800046d8: f1 d8 c0 01 bfextu r8,r8,0x0,0x1
800046dc: e5 e8 10 08 or r8,r2,r8
800046e0: 87 18 st.w r3[0x4],r8
800046e2: 58 f2 cp.w r2,15
800046e4: e0 88 00 07 brls 800046f2 <_malloc_r+0x3d6>
800046e8: e6 cb ff f8 sub r11,r3,-8
800046ec: 0a 9c mov r12,r5
800046ee: f0 1f 00 14 mcall 8000473c <_malloc_r+0x420>
800046f2: 49 49 lddpc r9,80004740 <_malloc_r+0x424>
800046f4: 72 0a ld.w r10,r9[0x0]
800046f6: 49 18 lddpc r8,80004738 <_malloc_r+0x41c>
800046f8: 70 08 ld.w r8,r8[0x0]
800046fa: 14 38 cp.w r8,r10
800046fc: f3 f8 ba 00 st.whi r9[0x0],r8
80004700: 49 19 lddpc r9,80004744 <_malloc_r+0x428>
80004702: 72 0a ld.w r10,r9[0x0]
80004704: 14 38 cp.w r8,r10
80004706: f3 f8 ba 00 st.whi r9[0x0],r8
8000470a: 68 28 ld.w r8,r4[0x8]
8000470c: 70 18 ld.w r8,r8[0x4]
8000470e: e0 18 ff fc andl r8,0xfffc
80004712: 0e 38 cp.w r8,r7
80004714: 5f 39 srlo r9
80004716: 0e 18 sub r8,r7
80004718: 58 f8 cp.w r8,15
8000471a: 5f aa srle r10
8000471c: f5 e9 10 09 or r9,r10,r9
80004720: c1 60 breq 8000474c <_malloc_r+0x430>
80004722: 0a 9c mov r12,r5
80004724: f0 1f 00 09 mcall 80004748 <_malloc_r+0x42c>
80004728: d8 3a popm r0-r7,pc,r12=0
8000472a: 00 00 add r0,r0
8000472c: 00 00 add r0,r0
8000472e: 05 88 ld.ub r8,r2[0x0]
80004730: 00 00 add r0,r0
80004732: 05 68 ld.uh r8,--r2
80004734: 80 00 ld.sh r0,r0[0x0]
80004736: 47 74 lddsp r4,sp[0x1dc]
80004738: 00 00 add r0,r0
8000473a: 05 8c ld.ub r12,r2[0x0]
8000473c: 80 00 ld.sh r0,r0[0x0]
8000473e: 48 44 lddpc r4,8000474c <_malloc_r+0x430>
80004740: 00 00 add r0,r0
80004742: 05 84 ld.ub r4,r2[0x0]
80004744: 00 00 add r0,r0
80004746: 05 80 ld.ub r0,r2[0x0]
80004748: 80 00 ld.sh r0,r0[0x0]
8000474a: 47 72 lddsp r2,sp[0x1dc]
8000474c: 68 26 ld.w r6,r4[0x8]
8000474e: a1 a8 sbr r8,0x0
80004750: 0e 99 mov r9,r7
80004752: a1 a9 sbr r9,0x0
80004754: 8d 19 st.w r6[0x4],r9
80004756: ec 07 00 07 add r7,r6,r7
8000475a: 0a 9c mov r12,r5
8000475c: 89 27 st.w r4[0x8],r7
8000475e: 8f 18 st.w r7[0x4],r8
80004760: f0 1f 00 03 mcall 8000476c <_malloc_r+0x450>
80004764: ec cc ff f8 sub r12,r6,-8
80004768: d8 32 popm r0-r7,pc
8000476a: 00 00 add r0,r0
8000476c: 80 00 ld.sh r0,r0[0x0]
8000476e: 47 72 lddsp r2,sp[0x1dc]
80004770 <__malloc_lock>:
80004770: 5e fc retal r12
80004772 <__malloc_unlock>:
80004772: 5e fc retal r12
80004774 <_sbrk_r>:
80004774: d4 21 pushm r4-r7,lr
80004776: 30 08 mov r8,0
80004778: 18 97 mov r7,r12
8000477a: 48 76 lddpc r6,80004794 <_sbrk_r+0x20>
8000477c: 16 9c mov r12,r11
8000477e: 8d 08 st.w r6[0x0],r8
80004780: f0 1f 00 06 mcall 80004798 <_sbrk_r+0x24>
80004784: 5b fc cp.w r12,-1
80004786: c0 51 brne 80004790 <_sbrk_r+0x1c>
80004788: 6c 08 ld.w r8,r6[0x0]
8000478a: 58 08 cp.w r8,0
8000478c: ef f8 1a 03 st.wne r7[0xc],r8
80004790: d8 22 popm r4-r7,pc
80004792: 00 00 add r0,r0
80004794: 00 00 add r0,r0
80004796: 06 30 cp.w r0,r3
80004798: 80 00 ld.sh r0,r0[0x0]
8000479a: 41 20 lddsp r0,sp[0x48]
8000479c <_malloc_trim_r>:
8000479c: d4 21 pushm r4-r7,lr
8000479e: 16 95 mov r5,r11
800047a0: 18 97 mov r7,r12
800047a2: f0 1f 00 23 mcall 8000482c <_malloc_trim_r+0x90>
800047a6: 4a 34 lddpc r4,80004830 <_malloc_trim_r+0x94>
800047a8: 68 28 ld.w r8,r4[0x8]
800047aa: 70 16 ld.w r6,r8[0x4]
800047ac: e0 16 ff fc andl r6,0xfffc
800047b0: ec c8 ff 91 sub r8,r6,-111
800047b4: f0 05 01 05 sub r5,r8,r5
800047b8: e0 15 ff 80 andl r5,0xff80
800047bc: ea c5 00 80 sub r5,r5,128
800047c0: e0 45 00 7f cp.w r5,127
800047c4: e0 8a 00 23 brle 8000480a <_malloc_trim_r+0x6e>
800047c8: 30 0b mov r11,0
800047ca: 0e 9c mov r12,r7
800047cc: f0 1f 00 1a mcall 80004834 <_malloc_trim_r+0x98>
800047d0: 68 28 ld.w r8,r4[0x8]
800047d2: 0c 08 add r8,r6
800047d4: 10 3c cp.w r12,r8
800047d6: c1 a1 brne 8000480a <_malloc_trim_r+0x6e>
800047d8: ea 0b 11 00 rsub r11,r5,0
800047dc: 0e 9c mov r12,r7
800047de: f0 1f 00 16 mcall 80004834 <_malloc_trim_r+0x98>
800047e2: 5b fc cp.w r12,-1
800047e4: c1 71 brne 80004812 <_malloc_trim_r+0x76>
800047e6: 30 0b mov r11,0
800047e8: 0e 9c mov r12,r7
800047ea: f0 1f 00 13 mcall 80004834 <_malloc_trim_r+0x98>
800047ee: 68 28 ld.w r8,r4[0x8]
800047f0: f8 08 01 09 sub r9,r12,r8
800047f4: 58 f9 cp.w r9,15
800047f6: e0 8a 00 0a brle 8000480a <_malloc_trim_r+0x6e>
800047fa: a1 a9 sbr r9,0x0
800047fc: 91 19 st.w r8[0x4],r9
800047fe: 48 f8 lddpc r8,80004838 <_malloc_trim_r+0x9c>
80004800: 70 09 ld.w r9,r8[0x0]
80004802: 48 f8 lddpc r8,8000483c <_malloc_trim_r+0xa0>
80004804: f8 09 01 09 sub r9,r12,r9
80004808: 91 09 st.w r8[0x0],r9
8000480a: 0e 9c mov r12,r7
8000480c: f0 1f 00 0d mcall 80004840 <_malloc_trim_r+0xa4>
80004810: d8 2a popm r4-r7,pc,r12=0
80004812: 68 28 ld.w r8,r4[0x8]
80004814: 0a 16 sub r6,r5
80004816: a1 a6 sbr r6,0x0
80004818: 91 16 st.w r8[0x4],r6
8000481a: 48 98 lddpc r8,8000483c <_malloc_trim_r+0xa0>
8000481c: 70 09 ld.w r9,r8[0x0]
8000481e: 0a 19 sub r9,r5
80004820: 0e 9c mov r12,r7
80004822: 91 09 st.w r8[0x0],r9
80004824: f0 1f 00 07 mcall 80004840 <_malloc_trim_r+0xa4>
80004828: da 2a popm r4-r7,pc,r12=1
8000482a: 00 00 add r0,r0
8000482c: 80 00 ld.sh r0,r0[0x0]
8000482e: 47 70 lddsp r0,sp[0x1dc]
80004830: 00 00 add r0,r0
80004832: 01 5c ld.sh r12,--r0
80004834: 80 00 ld.sh r0,r0[0x0]
80004836: 47 74 lddsp r4,sp[0x1dc]
80004838: 00 00 add r0,r0
8000483a: 05 68 ld.uh r8,--r2
8000483c: 00 00 add r0,r0
8000483e: 05 8c ld.ub r12,r2[0x0]
80004840: 80 00 ld.sh r0,r0[0x0]
80004842: 47 72 lddsp r2,sp[0x1dc]
80004844 <_free_r>:
80004844: d4 21 pushm r4-r7,lr
80004846: 16 96 mov r6,r11
80004848: 18 97 mov r7,r12
8000484a: 58 0b cp.w r11,0
8000484c: e0 80 00 ca breq 800049e0 <_free_r+0x19c>
80004850: f0 1f 00 4e mcall 80004988 <_free_r+0x144>
80004854: 20 86 sub r6,8
80004856: 4c ea lddpc r10,8000498c <_free_r+0x148>
80004858: 6c 18 ld.w r8,r6[0x4]
8000485a: 74 2e ld.w lr,r10[0x8]
8000485c: f9 d8 c0 01 bfextu r12,r8,0x0,0x1
80004860: a1 c8 cbr r8,0x0
80004862: ec 08 00 09 add r9,r6,r8
80004866: 72 1b ld.w r11,r9[0x4]
80004868: e0 1b ff fc andl r11,0xfffc
8000486c: 1c 39 cp.w r9,lr
8000486e: c1 d1 brne 800048a8 <_free_r+0x64>
80004870: f6 08 00 08 add r8,r11,r8
80004874: 58 0c cp.w r12,0
80004876: c0 81 brne 80004886 <_free_r+0x42>
80004878: 6c 09 ld.w r9,r6[0x0]
8000487a: 12 16 sub r6,r9
8000487c: 12 08 add r8,r9
8000487e: 6c 3b ld.w r11,r6[0xc]
80004880: 6c 29 ld.w r9,r6[0x8]
80004882: 97 29 st.w r11[0x8],r9
80004884: 93 3b st.w r9[0xc],r11
80004886: 10 99 mov r9,r8
80004888: 95 26 st.w r10[0x8],r6
8000488a: a1 a9 sbr r9,0x0
8000488c: 8d 19 st.w r6[0x4],r9
8000488e: 4c 19 lddpc r9,80004990 <_free_r+0x14c>
80004890: 72 09 ld.w r9,r9[0x0]
80004892: 12 38 cp.w r8,r9
80004894: c0 63 brcs 800048a0 <_free_r+0x5c>
80004896: 4c 08 lddpc r8,80004994 <_free_r+0x150>
80004898: 0e 9c mov r12,r7
8000489a: 70 0b ld.w r11,r8[0x0]
8000489c: f0 1f 00 3f mcall 80004998 <_free_r+0x154>
800048a0: 0e 9c mov r12,r7
800048a2: f0 1f 00 3f mcall 8000499c <_free_r+0x158>
800048a6: d8 22 popm r4-r7,pc
800048a8: 93 1b st.w r9[0x4],r11
800048aa: 58 0c cp.w r12,0
800048ac: c0 30 breq 800048b2 <_free_r+0x6e>
800048ae: 30 0c mov r12,0
800048b0: c1 08 rjmp 800048d0 <_free_r+0x8c>
800048b2: 6c 0e ld.w lr,r6[0x0]
800048b4: f4 c5 ff f8 sub r5,r10,-8
800048b8: 1c 16 sub r6,lr
800048ba: 1c 08 add r8,lr
800048bc: 6c 2e ld.w lr,r6[0x8]
800048be: 0a 3e cp.w lr,r5
800048c0: f9 bc 00 01 moveq r12,1
800048c4: ed f5 10 03 ld.wne r5,r6[0xc]
800048c8: eb fe 1a 02 st.wne r5[0x8],lr
800048cc: fd f5 1a 03 st.wne lr[0xc],r5
800048d0: f2 0b 00 0e add lr,r9,r11
800048d4: 7c 1e ld.w lr,lr[0x4]
800048d6: ed be 00 00 bld lr,0x0
800048da: c1 30 breq 80004900 <_free_r+0xbc>
800048dc: 16 08 add r8,r11
800048de: 58 0c cp.w r12,0
800048e0: c0 c1 brne 800048f8 <_free_r+0xb4>
800048e2: 4a be lddpc lr,8000498c <_free_r+0x148>
800048e4: 72 2b ld.w r11,r9[0x8]
800048e6: 2f 8e sub lr,-8
800048e8: 1c 3b cp.w r11,lr
800048ea: c0 71 brne 800048f8 <_free_r+0xb4>
800048ec: 97 36 st.w r11[0xc],r6
800048ee: 97 26 st.w r11[0x8],r6
800048f0: 8d 2b st.w r6[0x8],r11
800048f2: 8d 3b st.w r6[0xc],r11
800048f4: 30 1c mov r12,1
800048f6: c0 58 rjmp 80004900 <_free_r+0xbc>
800048f8: 72 2b ld.w r11,r9[0x8]
800048fa: 72 39 ld.w r9,r9[0xc]
800048fc: 93 2b st.w r9[0x8],r11
800048fe: 97 39 st.w r11[0xc],r9
80004900: 10 99 mov r9,r8
80004902: ec 08 09 08 st.w r6[r8],r8
80004906: a1 a9 sbr r9,0x0
80004908: 8d 19 st.w r6[0x4],r9
8000490a: 58 0c cp.w r12,0
8000490c: c6 71 brne 800049da <_free_r+0x196>
8000490e: e0 48 01 ff cp.w r8,511
80004912: e0 8b 00 13 brhi 80004938 <_free_r+0xf4>
80004916: a3 98 lsr r8,0x3
80004918: f4 08 00 39 add r9,r10,r8<<0x3
8000491c: 72 2b ld.w r11,r9[0x8]
8000491e: 8d 39 st.w r6[0xc],r9
80004920: 8d 2b st.w r6[0x8],r11
80004922: 97 36 st.w r11[0xc],r6
80004924: 93 26 st.w r9[0x8],r6
80004926: a3 48 asr r8,0x2
80004928: 74 19 ld.w r9,r10[0x4]
8000492a: 30 1b mov r11,1
8000492c: f6 08 09 48 lsl r8,r11,r8
80004930: f3 e8 10 08 or r8,r9,r8
80004934: 95 18 st.w r10[0x4],r8
80004936: c5 28 rjmp 800049da <_free_r+0x196>
80004938: f0 09 16 09 lsr r9,r8,0x9
8000493c: 58 49 cp.w r9,4
8000493e: e0 8b 00 06 brhi 8000494a <_free_r+0x106>
80004942: f0 0b 16 06 lsr r11,r8,0x6
80004946: 2c 8b sub r11,-56
80004948: c2 d8 rjmp 800049a2 <_free_r+0x15e>
8000494a: 59 49 cp.w r9,20
8000494c: e0 8b 00 05 brhi 80004956 <_free_r+0x112>
80004950: f2 cb ff a5 sub r11,r9,-91
80004954: c2 78 rjmp 800049a2 <_free_r+0x15e>
80004956: e0 49 00 54 cp.w r9,84
8000495a: e0 8b 00 06 brhi 80004966 <_free_r+0x122>
8000495e: f0 0b 16 0c lsr r11,r8,0xc
80004962: 29 2b sub r11,-110
80004964: c1 f8 rjmp 800049a2 <_free_r+0x15e>
80004966: e0 49 01 54 cp.w r9,340
8000496a: e0 8b 00 06 brhi 80004976 <_free_r+0x132>
8000496e: f0 0b 16 0f lsr r11,r8,0xf
80004972: 28 9b sub r11,-119
80004974: c1 78 rjmp 800049a2 <_free_r+0x15e>
80004976: f0 0b 16 12 lsr r11,r8,0x12
8000497a: e0 49 05 54 cp.w r9,1364
8000497e: e0 88 00 11 brls 800049a0 <_free_r+0x15c>
80004982: 37 eb mov r11,126
80004984: c0 f8 rjmp 800049a2 <_free_r+0x15e>
80004986: 00 00 add r0,r0
80004988: 80 00 ld.sh r0,r0[0x0]
8000498a: 47 70 lddsp r0,sp[0x1dc]
8000498c: 00 00 add r0,r0
8000498e: 01 5c ld.sh r12,--r0
80004990: 00 00 add r0,r0
80004992: 05 64 ld.uh r4,--r2
80004994: 00 00 add r0,r0
80004996: 05 88 ld.ub r8,r2[0x0]
80004998: 80 00 ld.sh r0,r0[0x0]
8000499a: 47 9c lddsp r12,sp[0x1e4]
8000499c: 80 00 ld.sh r0,r0[0x0]
8000499e: 47 72 lddsp r2,sp[0x1dc]
800049a0: 28 4b sub r11,-124
800049a2: f4 0b 00 3c add r12,r10,r11<<0x3
800049a6: 78 29 ld.w r9,r12[0x8]
800049a8: 18 39 cp.w r9,r12
800049aa: c0 e1 brne 800049c6 <_free_r+0x182>
800049ac: 74 18 ld.w r8,r10[0x4]
800049ae: a3 4b asr r11,0x2
800049b0: 30 1c mov r12,1
800049b2: f8 0b 09 4b lsl r11,r12,r11
800049b6: f1 eb 10 0b or r11,r8,r11
800049ba: 12 98 mov r8,r9
800049bc: 95 1b st.w r10[0x4],r11
800049be: c0 a8 rjmp 800049d2 <_free_r+0x18e>
800049c0: 72 29 ld.w r9,r9[0x8]
800049c2: 18 39 cp.w r9,r12
800049c4: c0 60 breq 800049d0 <_free_r+0x18c>
800049c6: 72 1a ld.w r10,r9[0x4]
800049c8: e0 1a ff fc andl r10,0xfffc
800049cc: 14 38 cp.w r8,r10
800049ce: cf 93 brcs 800049c0 <_free_r+0x17c>
800049d0: 72 38 ld.w r8,r9[0xc]
800049d2: 8d 38 st.w r6[0xc],r8
800049d4: 8d 29 st.w r6[0x8],r9
800049d6: 93 36 st.w r9[0xc],r6
800049d8: 91 26 st.w r8[0x8],r6
800049da: 0e 9c mov r12,r7
800049dc: f0 1f 00 02 mcall 800049e4 <_free_r+0x1a0>
800049e0: d8 22 popm r4-r7,pc
800049e2: 00 00 add r0,r0
800049e4: 80 00 ld.sh r0,r0[0x0]
800049e6: 47 72 lddsp r2,sp[0x1dc]
800049e8 <__do_global_ctors_aux>:
800049e8: eb cd 40 80 pushm r7,lr
800049ec: 48 67 lddpc r7,80004a04 <__do_global_ctors_aux+0x1c>
800049ee: ee f8 ff fc ld.w r8,r7[-4]
800049f2: 5b f8 cp.w r8,-1
800049f4: c0 60 breq 80004a00 <__do_global_ctors_aux+0x18>
800049f6: 20 47 sub r7,4
800049f8: 5d 18 icall r8
800049fa: 0f 48 ld.w r8,--r7
800049fc: 5b f8 cp.w r8,-1
800049fe: cf d1 brne 800049f8 <__do_global_ctors_aux+0x10>
80004a00: e3 cd 80 80 ldm sp++,r7,pc
80004a04: 00 00 add r0,r0
80004a06: 00 08 add r8,r0
Disassembly of section .exception_handlers:
80004c00 <EVBA_Table>:
80004c00: c0 08 rjmp 80004c00 <EVBA_Table>
...
80004c04 <Exception_TLB_Multiple_Hit>:
80004c04: c0 08 rjmp 80004c04 <Exception_TLB_Multiple_Hit>
...
80004c08 <Exception_Bus_Error_Data_Fetch>:
80004c08: c0 08 rjmp 80004c08 <Exception_Bus_Error_Data_Fetch>
...
80004c0c <Exception_Bus_Error_Instruction_Fetch>:
80004c0c: c0 08 rjmp 80004c0c <Exception_Bus_Error_Instruction_Fetch>
...
80004c10 <Exception_NMI>:
80004c10: c0 08 rjmp 80004c10 <Exception_NMI>
...
80004c14 <Exception_Instruction_Address>:
80004c14: c0 08 rjmp 80004c14 <Exception_Instruction_Address>
...
80004c18 <Exception_ITLB_Protection>:
80004c18: c0 08 rjmp 80004c18 <Exception_ITLB_Protection>
...
80004c1c <Exception_OCD_Breakpoint>:
80004c1c: c0 08 rjmp 80004c1c <Exception_OCD_Breakpoint>
...
80004c20 <Exception_Illegal_Opcode>:
80004c20: c0 08 rjmp 80004c20 <Exception_Illegal_Opcode>
...
80004c24 <Exception_Unimplemented_Instruction>:
80004c24: c0 08 rjmp 80004c24 <Exception_Unimplemented_Instruction>
...
80004c28 <Exception_Privilege_Violation>:
80004c28: c0 08 rjmp 80004c28 <Exception_Privilege_Violation>
...
80004c2c <Exception_Floating_Point>:
80004c2c: c0 08 rjmp 80004c2c <Exception_Floating_Point>
...
80004c30 <Exception_Coprocessor_Absent>:
80004c30: c0 08 rjmp 80004c30 <Exception_Coprocessor_Absent>
...
80004c34 <Exception_Data_Address_Read>:
80004c34: c0 08 rjmp 80004c34 <Exception_Data_Address_Read>
...
80004c38 <Exception_Data_Address_Write>:
80004c38: c0 08 rjmp 80004c38 <Exception_Data_Address_Write>
...
80004c3c <Exception_DTLB_Protection_Read>:
80004c3c: c0 08 rjmp 80004c3c <Exception_DTLB_Protection_Read>
...
80004c40 <Exception_DTLB_Protection_Write>:
80004c40: c0 08 rjmp 80004c40 <Exception_DTLB_Protection_Write>
...
80004c44 <Exception_DTLB_Modified>:
80004c44: c0 08 rjmp 80004c44 <Exception_DTLB_Modified>
...
80004c50 <Exception_ITLB_Miss>:
80004c50: c0 08 rjmp 80004c50 <Exception_ITLB_Miss>
...
80004c60 <Exception_DTLB_Miss_Read>:
80004c60: c0 08 rjmp 80004c60 <Exception_DTLB_Miss_Read>
...
80004c70 <Exception_DTLB_Miss_Write>:
80004c70: c0 08 rjmp 80004c70 <Exception_DTLB_Miss_Write>
...
80004d00 <Exception_Supervisor_Call>:
80004d00: c0 08 rjmp 80004d00 <Exception_Supervisor_Call>
...
80004d04 <Exception_INT0>:
80004d04: 30 0c mov r12,0
80004d06: f0 1f 00 0c mcall 80004d34 <Autovector_Table+0x10>
80004d0a: 18 9f mov pc,r12
80004d0c <Exception_INT1>:
80004d0c: 30 1c mov r12,1
80004d0e: f0 1f 00 0a mcall 80004d34 <Autovector_Table+0x10>
80004d12: 18 9f mov pc,r12
80004d14 <Exception_INT2>:
80004d14: 30 2c mov r12,2
80004d16: f0 1f 00 08 mcall 80004d34 <Autovector_Table+0x10>
80004d1a: 18 9f mov pc,r12
80004d1c <Exception_INT3>:
80004d1c: 30 3c mov r12,3
80004d1e: f0 1f 00 06 mcall 80004d34 <Autovector_Table+0x10>
80004d22: 18 9f mov pc,r12
80004d24 <Autovector_Table>:
80004d24: 00 00 add r0,r0
80004d26: 01 04 ld.w r4,r0++
80004d28: 40 00 lddsp r0,sp[0x0]
80004d2a: 01 0c ld.w r12,r0++
80004d2c: 80 00 ld.sh r0,r0[0x0]
80004d2e: 01 14 ld.sh r4,r0++
80004d30: c0 00 breq 80004d30 <Autovector_Table+0xc>
80004d32: 01 1c ld.sh r12,r0++
80004d34: 80 00 ld.sh r0,r0[0x0]
80004d36: 3c a4 mov r4,-54
...
Disassembly of section .fini:
80004e00 <_fini>:
80004e00: eb cd 40 40 pushm r6,lr
80004e04: 48 26 lddpc r6,80004e0c <_fini+0xc>
80004e06: 1e 26 rsub r6,pc
80004e08: c0 48 rjmp 80004e10 <_fini+0x10>
80004e0a: 00 00 add r0,r0
80004e0c: 80 00 ld.sh r0,r0[0x0]
80004e0e: 4d ee lddpc lr,80004f84 <_data_lma+0x104>
80004e10: f0 16 00 02 mcall r6[8]
80004e14: e3 cd 80 40 ldm sp++,r6,pc
Archive member included because of file (symbol)
aery32/libaery32_uc3a1128.a(gpio.o)
obj/board.o (aery::porta)
aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o (aery::pm)
liblufa.a(USBController_UC3.o)
obj/main.o (USB_Init)
liblufa.a(USBInterrupt_UC3.o)
liblufa.a(USBController_UC3.o) (USB_INT_DisableAllInterrupts)
liblufa.a(DeviceStandardReq.o)
liblufa.a(USBController_UC3.o) (USB_Device_CurrentlySelfPowered)
liblufa.a(Events.o) liblufa.a(USBInterrupt_UC3.o) (EVENT_USB_Device_Suspend)
liblufa.a(USBTask.o) obj/main.o (USB_USBTask)
liblufa.a(CDCClassDevice.o) obj/main.o (CDC_Device_USBTask)
liblufa.a(Exception.o) obj/main.o (Autovector_Table)
liblufa.a(InterruptManagement.o)
liblufa.a(Exception.o) (INTC_GetInterruptHandler)
liblufa.a(Endpoint_UC3.o) liblufa.a(USBController_UC3.o) (Endpoint_ConfigureEndpoint_Prv)
liblufa.a(EndpointStream_UC3.o)
liblufa.a(DeviceStandardReq.o) (Endpoint_Write_Control_Stream_LE)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o (atexit)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o (exit)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o) (_global_impure_ptr)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memcpy.o)
liblufa.a(CDCClassDevice.o) (memcpy)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
liblufa.a(CDCClassDevice.o) (memset)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
liblufa.a(CDCClassDevice.o) (strlen)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o (_init_startup)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o) (__register_exitproc)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o) (__call_exitprocs)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o) (__errno)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o) (__sf_fake_stdin)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o) (_fwalk)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o) (free)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o) (_malloc_r)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o) (__malloc_lock)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o) (errno)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o) (_sbrk_r)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o) (__sclose)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o) (_write_r)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o) (_close_r)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o) (fclose)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o) (_fflush_r)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o) (_free_r)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o) (_lseek_r)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o) (_read_r)
Allocating common symbols
Common symbol size file
USB_IsInitialized 0x1 liblufa.a(USBTask.o)
errno 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
USB_DeviceState 0x1 liblufa.a(USBTask.o)
USB_Device_ConfigurationNumber
0x1 liblufa.a(DeviceStandardReq.o)
InterruptHandlers 0x50 liblufa.a(InterruptManagement.o)
USB_Device_CurrentlySelfPowered
0x1 liblufa.a(DeviceStandardReq.o)
USB_ControlRequest 0x8 liblufa.a(USBTask.o)
USB_Device_RemoteWakeupEnabled
0x1 liblufa.a(DeviceStandardReq.o)
USB_Endpoint_FIFOPos
0x1c liblufa.a(Endpoint_UC3.o)
Discarded input sections
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
.data 0x00000000 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
.data 0x00000000 0x0 obj/board.o
.bss 0x00000000 0x0 obj/board.o
.bss 0x00000000 0x0 obj/main.o
.data 0x00000000 0x0 obj/Descriptors.o
.bss 0x00000000 0x0 obj/Descriptors.o
.bss 0x00000000 0x0 aery32/libaery32_uc3a1128.a(gpio.o)
.bss 0x00000000 0x0 aery32/libaery32_uc3a1128.a(pm.o)
.text 0x00000000 0x0 liblufa.a(USBController_UC3.o)
.data 0x00000000 0x0 liblufa.a(USBController_UC3.o)
.bss 0x00000000 0x0 liblufa.a(USBController_UC3.o)
.text.USB_Disable
0x00000000 0x54 liblufa.a(USBController_UC3.o)
.text 0x00000000 0x0 liblufa.a(USBInterrupt_UC3.o)
.data 0x00000000 0x0 liblufa.a(USBInterrupt_UC3.o)
.bss 0x00000000 0x0 liblufa.a(USBInterrupt_UC3.o)
.data 0x00000000 0x0 liblufa.a(DeviceStandardReq.o)
.bss 0x00000000 0x0 liblufa.a(DeviceStandardReq.o)
.text 0x00000000 0x0 liblufa.a(Events.o)
.data 0x00000000 0x0 liblufa.a(Events.o)
.bss 0x00000000 0x0 liblufa.a(Events.o)
.text 0x00000000 0x0 liblufa.a(USBTask.o)
.data 0x00000000 0x0 liblufa.a(USBTask.o)
.bss 0x00000000 0x0 liblufa.a(USBTask.o)
.text 0x00000000 0x8 liblufa.a(CDCClassDevice.o)
.data 0x00000000 0x0 liblufa.a(CDCClassDevice.o)
.bss 0x00000000 0x0 liblufa.a(CDCClassDevice.o)
.text.CDC_Device_BytesReceived
0x00000000 0x9c liblufa.a(CDCClassDevice.o)
.text.CDC_Device_ReceiveByte
0x00000000 0xb0 liblufa.a(CDCClassDevice.o)
.text.CDC_Device_SendControlLineStateChange
0x00000000 0xa0 liblufa.a(CDCClassDevice.o)
.text.CDC_Device_SendData
0x00000000 0x48 liblufa.a(CDCClassDevice.o)
.text.CDC_Device_SendString
0x00000000 0x50 liblufa.a(CDCClassDevice.o)
.text 0x00000000 0x0 liblufa.a(Exception.o)
.data 0x00000000 0x0 liblufa.a(Exception.o)
.bss 0x00000000 0x0 liblufa.a(Exception.o)
.text 0x00000000 0x0 liblufa.a(InterruptManagement.o)
.data 0x00000000 0x0 liblufa.a(InterruptManagement.o)
.bss 0x00000000 0x0 liblufa.a(InterruptManagement.o)
.text 0x00000000 0x0 liblufa.a(Endpoint_UC3.o)
.data 0x00000000 0x0 liblufa.a(Endpoint_UC3.o)
.text.Endpoint_ClearEndpoints
0x00000000 0x54 liblufa.a(Endpoint_UC3.o)
.text 0x00000000 0x0 liblufa.a(EndpointStream_UC3.o)
.data 0x00000000 0x0 liblufa.a(EndpointStream_UC3.o)
.bss 0x00000000 0x0 liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Write_Control_Stream_BE
0x00000000 0x17c liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Read_Control_Stream_LE
0x00000000 0x10c liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Read_Control_Stream_BE
0x00000000 0x11c liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Null_Stream
0x00000000 0xac liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Discard_Stream
0x00000000 0xa4 liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Read_Stream_BE
0x00000000 0xbc liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Read_Stream_LE
0x00000000 0xb4 liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Write_Stream_BE
0x00000000 0xbc liblufa.a(EndpointStream_UC3.o)
.text.Endpoint_Write_Stream_LE
0x00000000 0xb4 liblufa.a(EndpointStream_UC3.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.text 0x00000000 0x148 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memcpy.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memcpy.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memcpy.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_abbrev 0x00000000 0x83 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_info 0x00000000 0xbe c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_line 0x00000000 0x182 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.text.strlen 0x00000000 0x16 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_frame 0x00000000 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_loc 0x00000000 0x1e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_pubnames
0x00000000 0x1d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_aranges
0x00000000 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_ranges 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.debug_str 0x00000000 0x101 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._open 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._close 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._lseek 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._read 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._write 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text.isatty 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._fstat_host
0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._stat_host
0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._fstat 0x00000000 0x50 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._stat 0x00000000 0x50 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._gettimeofday_host
0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._gettimeofday
0x00000000 0x24 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._unlink 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._system 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._execve 0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._fork 0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._wait 0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text.sigfillset
0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text.sigprocmask
0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._fcntl 0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._link 0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._kill 0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._getpid 0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text._times 0x00000000 0x12 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__sfp_lock_acquire
0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__sfp_lock_release
0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__sinit_lock_acquire
0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__sinit_lock_release
0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__fp_lock
0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__fp_unlock
0x00000000 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__fp_unlock_all
0x00000000 0x1c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__fp_lock_all
0x00000000 0x1c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text._cleanup_r
0x00000000 0x14 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text._cleanup
0x00000000 0x14 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__sfmoreglue
0x00000000 0x30 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__sfp 0x00000000 0x7c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text.__sinit 0x00000000 0xb0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_abbrev 0x00000000 0x1df c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_info 0x00000000 0xa61 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_line 0x00000000 0x2a2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.text._fwalk_reent
0x00000000 0x58 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.text._fwalk 0x00000000 0x54 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_frame 0x00000000 0x70 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_loc 0x00000000 0xe7 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_pubnames
0x00000000 0x2e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_aranges
0x00000000 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_ranges 0x00000000 0xa0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.debug_str 0x00000000 0x4c8 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.text._wrapup_reent
0x00000000 0x3c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.text.cleanup_glue
0x00000000 0x24 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.text._reclaim_reent
0x00000000 0xd4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_abbrev 0x00000000 0x192 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_info 0x00000000 0xa28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_line 0x00000000 0x299 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.text.__sclose
0x00000000 0x10 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.text.__sseek 0x00000000 0x2c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.text.__swrite
0x00000000 0x38 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.text.__sread 0x00000000 0x24 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_frame 0x00000000 0x94 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_loc 0x00000000 0x1ee c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_pubnames
0x00000000 0x44 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_aranges
0x00000000 0x38 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_ranges 0x00000000 0x30 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.debug_str 0x00000000 0x4c4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_abbrev 0x00000000 0x175 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_info 0x00000000 0x90d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_line 0x00000000 0x20d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.text._write_r
0x00000000 0x2c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_frame 0x00000000 0x34 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_loc 0x00000000 0x94 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_pubnames
0x00000000 0x1f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_aranges
0x00000000 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_ranges 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.debug_str 0x00000000 0x4a1 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_abbrev 0x00000000 0x170 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_info 0x00000000 0x8d2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_line 0x00000000 0x201 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.text._close_r
0x00000000 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_frame 0x00000000 0x34 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_loc 0x00000000 0x63 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_pubnames
0x00000000 0x1f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_aranges
0x00000000 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_ranges 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.debug_str 0x00000000 0x491 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_abbrev 0x00000000 0x1a1 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_info 0x00000000 0x9bc c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_line 0x00000000 0x267 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.text._fclose_r
0x00000000 0xd0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.text.fclose 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_frame 0x00000000 0x4c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_loc 0x00000000 0xb6 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_pubnames
0x00000000 0x2b c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_aranges
0x00000000 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_ranges 0x00000000 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.debug_str 0x00000000 0x4e8 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_abbrev 0x00000000 0x1c6 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_info 0x00000000 0xa22 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_line 0x00000000 0x2fd c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.text._fflush_r
0x00000000 0x118 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.text.fflush 0x00000000 0x30 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_frame 0x00000000 0x4c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_loc 0x00000000 0x13f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_pubnames
0x00000000 0x2b c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_aranges
0x00000000 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_ranges 0x00000000 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.debug_str 0x00000000 0x504 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_abbrev 0x00000000 0x17f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_info 0x00000000 0x8fb c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_line 0x00000000 0x20d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.text._lseek_r
0x00000000 0x2c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_frame 0x00000000 0x34 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_loc 0x00000000 0x94 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_pubnames
0x00000000 0x1f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_aranges
0x00000000 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_ranges 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.debug_str 0x00000000 0x49f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_abbrev 0x00000000 0x170 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_info 0x00000000 0x906 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_line 0x00000000 0x20c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.text._read_r 0x00000000 0x2c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_frame 0x00000000 0x34 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_loc 0x00000000 0x94 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_pubnames
0x00000000 0x1e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_aranges
0x00000000 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_ranges 0x00000000 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.debug_str 0x00000000 0x49f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtn.o
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtn.o
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtn.o
Memory Configuration
Name Origin Length Attributes
FLASH 0x80002000 0x00020000 axrl !w
CPUSRAM 0x00000004 0x00007ffc axw !rl
USERPAGE 0x80800000 0x00000200
FACTORYPAGE 0x80800200 0x00000200
*default* 0x00000000 0xffffffff
Linker script and memory map
0x00001000 _stack_size = 0x1000
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
LOAD obj/board.o
LOAD obj/main.o
LOAD obj/Descriptors.o
LOAD aery32/libaery32_uc3a1128.a
LOAD liblufa.a
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2\libstdc++.a
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libm.a
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2\libgcc.a
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2\libgcc.a
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
LOAD c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtn.o
0x80000000 PROVIDE (__executable_start, 0x80000000)
0x80000000 . = 0x80000000
.interp
*(.interp)
.reset 0x80002000 0x8
*(.reset)
.reset 0x80002000 0x8 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
0x80002000 _start
.hash
*(.hash)
.dynsym
*(.dynsym)
.dynstr
*(.dynstr)
.gnu.version
*(.gnu.version)
.gnu.version_d
*(.gnu.version_d)
.gnu.version_r
*(.gnu.version_r)
.rel.init
*(.rel.init)
.rela.init
*(.rela.init)
.rel.text
*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
.rela.text
*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
.rel.fini
*(.rel.fini)
.rela.fini
*(.rela.fini)
.rel.rodata
*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
.rela.rodata
*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
.rel.data.rel.ro
*(.rel.data.rel.ro*)
.rela.data.rel.ro
*(.rel.data.rel.ro*)
.rel.data
*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
.rela.data
*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
.rel.tdata
*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
.rela.tdata
*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
.rel.tbss
*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
.rela.tbss
*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
.rel.ctors
*(.rel.ctors)
.rela.ctors
*(.rela.ctors)
.rel.dtors
*(.rel.dtors)
.rela.dtors
*(.rela.dtors)
.rel.got
*(.rel.got)
.rela.got 0x80002008 0x0
*(.rela.got)
.rela.got 0x80002008 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
.rel.bss
*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
.rela.bss
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
.rel.plt
*(.rel.plt)
.rela.plt
*(.rela.plt)
.init 0x80002008 0x1c
*(.init)
.init 0x80002008 0x10 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
0x80002008 _init
.init 0x80002018 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
.init 0x8000201c 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
.init 0x80002020 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtn.o
.plt
*(.plt)
.text 0x80002024 0x29e4
*(.text .stub .text.* .gnu.linkonce.t.*)
.text 0x80002024 0x84 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
0x80002024 _stext
.text 0x800020a8 0x64 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
.text 0x8000210c 0x100 obj/board.o
0x8000210c init_board()
.text 0x8000220c 0x144 obj/main.o
0x80002242 EVENT_USB_Device_Connect
0x8000224c EVENT_USB_Device_Disconnect
0x80002256 EVENT_USB_Device_ControlRequest
0x80002270 EVENT_USB_Device_ConfigurationChanged
0x80002288 main
.text 0x80002350 0x154 obj/Descriptors.o
0x80002350 DeviceDescriptor
0x80002362 ConfigurationDescriptor
0x800023a0 LanguageString
0x800023a4 ManufacturerString
0x800023bc ProductString
0x800023d8 CALLBACK_USB_GetDescriptor
.text 0x800024a4 0x240 aery32/libaery32_uc3a1128.a(gpio.o)
0x800024a4 aery::gpio_init_pins(avr32_gpio_port_t volatile*, unsigned long, int)
0x8000269c aery::gpio_init_pin(unsigned char, int)
.text 0x800026e4 0x854 aery32/libaery32_uc3a1128.a(pm.o)
0x800026e4 aery::pm_start_osc(unsigned char, aery::Pm_osc_mode, aery::Pm_osc_startup)
0x80002850 aery::pm_init_pllvco(avr32_pm_pll_t volatile*, aery::Pm_pll_source, unsigned char, unsigned char, bool)
0x80002936 aery::pm_enable_pll(avr32_pm_pll_t volatile*, bool)
0x800029b0 aery::pm_init_gclk(aery::Pm_gclk, aery::Pm_gclk_source, unsigned short)
0x80002aa0 aery::pm_wait_osc_to_stabilize(unsigned char)
0x80002afa aery::pm_wait_pll_to_lock(avr32_pm_pll_t volatile*)
0x80002b4e aery::pm_enable_gclk(aery::Pm_gclk)
0x80002b7a aery::pm_disable_gclk(aery::Pm_gclk)
0x80002bc8 aery::pm_select_mck(aery::Pm_mck_source)
0x80002bf4 aery::pm_get_fmck()
0x80002cf2 aery::pm_setup_clkdomain(unsigned char, unsigned char)
0x80002e70 aery::pm_get_fclkdomain(unsigned char)
.text.USB_ResetInterface
0x80002f38 0xf0 liblufa.a(USBController_UC3.o)
0x80002f38 USB_ResetInterface
.text.USB_Init
0x80003028 0x28 liblufa.a(USBController_UC3.o)
0x80003028 USB_Init
.text.USB_INT_DisableAllInterrupts
0x80003050 0x28 liblufa.a(USBInterrupt_UC3.o)
0x80003050 USB_INT_DisableAllInterrupts
.text.USB_INT_ClearAllInterrupts
0x80003078 0x28 liblufa.a(USBInterrupt_UC3.o)
0x80003078 USB_INT_ClearAllInterrupts
.text.USB_GEN_vect
0x800030a0 0x198 liblufa.a(USBInterrupt_UC3.o)
0x800030a0 USB_GEN_vect
.text 0x80003238 0x28 liblufa.a(DeviceStandardReq.o)
.text.USB_Device_ProcessControlRequest
0x80003260 0x510 liblufa.a(DeviceStandardReq.o)
0x80003260 USB_Device_ProcessControlRequest
.text.USB_Event_Stub
0x80003770 0x2 liblufa.a(Events.o)
0x80003770 USB_Event_Stub
0x80003770 EVENT_USB_Device_Suspend
0x80003770 EVENT_USB_Device_StartOfFrame
0x80003770 EVENT_USB_Device_Reset
0x80003770 EVENT_USB_Device_WakeUp
*fill* 0x80003772 0x2 d703d703
.text.USB_USBTask
0x80003774 0x48 liblufa.a(USBTask.o)
0x80003774 USB_USBTask
.text.CDC_Device_Event_Stub
0x800037bc 0x2 liblufa.a(CDCClassDevice.o)
0x800037bc EVENT_CDC_Device_ControLineStateChanged
0x800037bc EVENT_CDC_Device_BreakSent
0x800037bc CDC_Device_Event_Stub
0x800037bc EVENT_CDC_Device_LineEncodingChanged
*fill* 0x800037be 0x2 d703d703
.text.CDC_Device_Flush
0x800037c0 0xc8 liblufa.a(CDCClassDevice.o)
0x800037c0 CDC_Device_Flush
.text.CDC_Device_USBTask
0x80003888 0x2c liblufa.a(CDCClassDevice.o)
0x80003888 CDC_Device_USBTask
.text.CDC_Device_SendByte
0x800038b4 0x9c liblufa.a(CDCClassDevice.o)
0x800038b4 CDC_Device_SendByte
.text.CDC_Device_ConfigureEndpoints
0x80003950 0x4c liblufa.a(CDCClassDevice.o)
0x80003950 CDC_Device_ConfigureEndpoints
.text.CDC_Device_ProcessControlRequest
0x8000399c 0x304 liblufa.a(CDCClassDevice.o)
0x8000399c CDC_Device_ProcessControlRequest
.text.Unhandled_Interrupt
0x80003ca0 0x2 liblufa.a(InterruptManagement.o)
0x80003ca0 Unhandled_Interrupt
*fill* 0x80003ca2 0x2 d703d703
.text.INTC_GetInterruptHandler
0x80003ca4 0x1c liblufa.a(InterruptManagement.o)
0x80003ca4 INTC_GetInterruptHandler
.text.INTC_Init
0x80003cc0 0x34 liblufa.a(InterruptManagement.o)
0x80003cc0 INTC_Init
.text.Endpoint_ConfigureEndpoint_Prv
0x80003cf4 0xa4 liblufa.a(Endpoint_UC3.o)
0x80003cf4 Endpoint_ConfigureEndpoint_Prv
.text.Endpoint_ConfigureEndpointTable
0x80003d98 0x78 liblufa.a(Endpoint_UC3.o)
0x80003d98 Endpoint_ConfigureEndpointTable
.text.Endpoint_ClearStatusStage
0x80003e10 0xa4 liblufa.a(Endpoint_UC3.o)
0x80003e10 Endpoint_ClearStatusStage
.text.Endpoint_WaitUntilReady
0x80003eb4 0x98 liblufa.a(Endpoint_UC3.o)
0x80003eb4 Endpoint_WaitUntilReady
.text.Endpoint_Write_Control_Stream_LE
0x80003f4c 0x174 liblufa.a(EndpointStream_UC3.o)
0x80003f4c Endpoint_Write_Control_Stream_LE
.text.atexit 0x800040c0 0x14 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
0x800040c0 atexit
.text.exit 0x800040d4 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
0x800040d4 exit
.text.memset 0x800040fc 0xe c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
0x800040fc memset
.text._init_startup
0x8000410a 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
0x8000410a _init_startup
.text._init_argv
0x8000410c 0xa c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
0x8000410c _init_argv
.text._exit 0x80004116 0xa c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
0x80004116 _exit
.text._sbrk 0x80004120 0x40 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
0x80004120 _sbrk
.text.__register_exitproc
0x80004160 0xac c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
0x80004160 __register_exitproc
.text.__call_exitprocs
0x8000420c 0xd4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
0x8000420c __call_exitprocs
.text.__errno 0x800042e0 0xc c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
0x800042e0 __errno
.text.free 0x800042ec 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
0x800042ec free
.text.malloc 0x80004304 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
0x80004304 malloc
.text._malloc_r
0x8000431c 0x454 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x8000431c _malloc_r
.text.__malloc_lock
0x80004770 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
0x80004770 __malloc_lock
.text.__malloc_unlock
0x80004772 0x2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
0x80004772 __malloc_unlock
.text._sbrk_r 0x80004774 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
0x80004774 _sbrk_r
.text._malloc_trim_r
0x8000479c 0xa8 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
0x8000479c _malloc_trim_r
.text._free_r 0x80004844 0x1a4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
0x80004844 _free_r
.text 0x800049e8 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
*(.text.*personality*)
*(.gnu.warning)
.exception_handlers
0x80004c00 0x200
.exception_handlers
0x80004c00 0x200 liblufa.a(Exception.o)
0x80004c00 EVBA_Table
0x80004d24 Autovector_Table
.fini 0x80004e00 0x18
*(.fini)
.fini 0x80004e00 0x10 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
0x80004e00 _fini
.fini 0x80004e10 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
.fini 0x80004e14 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtn.o
0x80004e18 PROVIDE (__etext, .)
0x80004e18 PROVIDE (_etext, .)
0x80004e18 PROVIDE (etext, .)
.rodata 0x80004e18 0x68
*(.rodata .rodata.* .gnu.linkonce.r.*)
.rodata.str1.4
0x80004e18 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.rodata._global_impure_ptr
0x80004e1c 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
0x80004e1c _global_impure_ptr
.rodata.__sf_fake_stdin
0x80004e20 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
0x80004e20 __sf_fake_stdin
.rodata.__sf_fake_stdout
0x80004e40 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
0x80004e40 __sf_fake_stdout
.rodata.__sf_fake_stderr
0x80004e60 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
0x80004e60 __sf_fake_stderr
.rodata1
*(.rodata1)
.eh_frame_hdr
*(.eh_frame_hdr)
.eh_frame
*(.eh_frame)
.gcc_except_table
*(.gcc_except_table)
*(.gcc_except_table.*)
.dalign 0x80004e80 0x0
0x80004e80 . = ALIGN (0x8)
0x80004e80 PROVIDE (_data_lma, .)
0x00000004 PROVIDE (_data, ORIGIN (CPUSRAM))
0x00000004 . = ORIGIN (CPUSRAM)
.eh_frame
*(.eh_frame)
.gcc_except_table
*(.gcc_except_table)
*(.gcc_except_table.*)
.tdata
*(.tdata .tdata.* .gnu.linkonce.td.*)
.tbss
*(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon)
0x00000004 PROVIDE (__preinit_array_start, ALIGN (0x4))
.preinit_array
*(.preinit_array)
0x00000004 PROVIDE (__preinit_array_end, .)
0x00000004 PROVIDE (__init_array_start, .)
.init_array
*(.init_array)
0x00000004 PROVIDE (__init_array_end, .)
0x00000004 PROVIDE (__fini_array_start, .)
.fini_array
*(.fini_array)
0x00000004 PROVIDE (__fini_array_end, .)
.ctors 0x00000004 0x8 load address 0x80004e80
*crtbegin*.o(.ctors)
.ctors 0x00000004 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
*(EXCLUDE_FILE(*crtend*.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)
.ctors 0x00000008 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
.dtors 0x0000000c 0x8 load address 0x80004e88
*crtbegin*.o(.dtors)
.dtors 0x0000000c 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
*(EXCLUDE_FILE(*crtend*.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)
.dtors 0x00000010 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
0x00000010 __DTOR_END__
.jcr 0x00000014 0x4 load address 0x80004e90
*(.jcr)
.jcr 0x00000014 0x0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
.jcr 0x00000014 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
.data.rel.ro
*(.data.rel.ro.local)
*(.data.rel.ro*)
.dynamic
*(.dynamic)
.got 0x00000018 0xc load address 0x80004e94
*(.got.plt)
*(.got)
.got 0x00000018 0xc c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
0x00000018 _GLOBAL_OFFSET_TABLE_
.data 0x00000024 0x548 load address 0x80004ea0
*(.data .data.* .gnu.linkonce.d.*)
.data 0x00000024 0x20 obj/main.o
0x00000024 VirtualSerial_CDC_Interface
.data 0x00000044 0x18 aery32/libaery32_uc3a1128.a(gpio.o)
0x00000044 aery::porta
0x00000048 aery::portb
0x0000004c aery::portc
0x00000050 aery::lporta
0x00000054 aery::lportb
0x00000058 aery::lportc
.data 0x0000005c 0xc aery32/libaery32_uc3a1128.a(pm.o)
0x0000005c aery::pm
0x00000060 aery::pll0
0x00000064 aery::pll1
.data.impure_data
0x00000068 0xf0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.data._impure_ptr
0x00000158 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
0x00000158 _impure_ptr
.data.__malloc_av_
0x0000015c 0x408 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x0000015c __malloc_av_
.data.__malloc_trim_threshold
0x00000564 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x00000564 __malloc_trim_threshold
.data.__malloc_sbrk_base
0x00000568 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x00000568 __malloc_sbrk_base
*(.gnu.linkonce.d.*personality*)
.data1
*(.data1)
.balign 0x0000056c 0x4 load address 0x800053e8
0x00000570 . = ALIGN (0x8)
*fill* 0x0000056c 0x4 00
0x00000570 _edata = .
0x00000570 _edata = .
0x00000570 PROVIDE (edata, .)
0x00000570 __bss_start = .
.bss 0x00000570 0xc8 load address 0x800053e8
*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
.bss 0x00000570 0x8 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
.bss 0x00000578 0x4 liblufa.a(Endpoint_UC3.o)
0x00000578 USB_Endpoint_SelectedEndpoint
.bss.cur_heap_pos.1869
0x0000057c 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.bss.__malloc_max_total_mem
0x00000580 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x00000580 __malloc_max_total_mem
.bss.__malloc_max_sbrked_mem
0x00000584 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x00000584 __malloc_max_sbrked_mem
.bss.__malloc_top_pad
0x00000588 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x00000588 __malloc_top_pad
.bss.__malloc_current_mallinfo
0x0000058c 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x0000058c __malloc_current_mallinfo
*(COMMON)
COMMON 0x000005b4 0x3 liblufa.a(DeviceStandardReq.o)
0x000005b4 USB_Device_ConfigurationNumber
0x000005b5 USB_Device_CurrentlySelfPowered
0x000005b6 USB_Device_RemoteWakeupEnabled
COMMON 0x000005b7 0xa liblufa.a(USBTask.o)
0x000005b7 USB_IsInitialized
0x000005b8 USB_DeviceState
0x000005b9 USB_ControlRequest
*fill* 0x000005c1 0x3 00
COMMON 0x000005c4 0x50 liblufa.a(InterruptManagement.o)
0x000005c4 InterruptHandlers
COMMON 0x00000614 0x1c liblufa.a(Endpoint_UC3.o)
0x00000614 USB_Endpoint_FIFOPos
COMMON 0x00000630 0x4 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
0x00000630 errno
0x00000638 . = ALIGN (0x8)
*fill* 0x00000634 0x4 00
0x00000638 . = ALIGN (0x8)
0x00000638 _end = .
0x00000638 PROVIDE (end, .)
0x00000638 __heap_start__ = ALIGN (0x8)
0x00007000 . = ((ORIGIN (CPUSRAM) + 0x7ffc) - _stack_size)
0x00007000 __heap_end__ = .
.stab
*(.stab)
.stabstr
*(.stabstr)
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment 0x00000000 0x30
*(.comment)
.comment 0x00000000 0x30 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
0x31 (size before relaxing)
.comment 0x00000000 0x31 obj/board.o
.comment 0x00000000 0x31 obj/main.o
.comment 0x00000000 0x31 obj/Descriptors.o
.comment 0x00000000 0x31 aery32/libaery32_uc3a1128.a(gpio.o)
.comment 0x00000000 0x31 aery32/libaery32_uc3a1128.a(pm.o)
.comment 0x00000000 0x31 liblufa.a(USBController_UC3.o)
.comment 0x00000000 0x31 liblufa.a(USBInterrupt_UC3.o)
.comment 0x00000000 0x31 liblufa.a(DeviceStandardReq.o)
.comment 0x00000000 0x31 liblufa.a(Events.o)
.comment 0x00000000 0x31 liblufa.a(USBTask.o)
.comment 0x00000000 0x31 liblufa.a(CDCClassDevice.o)
.comment 0x00000000 0x31 liblufa.a(InterruptManagement.o)
.comment 0x00000000 0x31 liblufa.a(Endpoint_UC3.o)
.comment 0x00000000 0x31 liblufa.a(EndpointStream_UC3.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.comment 0x00000000 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0x5c8
*(.debug_aranges)
.debug_aranges
0x00000000 0x20 obj/board.o
.debug_aranges
0x00000020 0x20 obj/main.o
.debug_aranges
0x00000040 0x20 obj/Descriptors.o
.debug_aranges
0x00000060 0x20 aery32/libaery32_uc3a1128.a(gpio.o)
.debug_aranges
0x00000080 0x20 aery32/libaery32_uc3a1128.a(pm.o)
.debug_aranges
0x000000a0 0x30 liblufa.a(USBController_UC3.o)
.debug_aranges
0x000000d0 0x30 liblufa.a(USBInterrupt_UC3.o)
.debug_aranges
0x00000100 0x20 liblufa.a(DeviceStandardReq.o)
.debug_aranges
0x00000120 0x20 liblufa.a(Events.o)
.debug_aranges
0x00000140 0x20 liblufa.a(USBTask.o)
.debug_aranges
0x00000160 0x70 liblufa.a(CDCClassDevice.o)
.debug_aranges
0x000001d0 0x30 liblufa.a(InterruptManagement.o)
.debug_aranges
0x00000200 0x40 liblufa.a(Endpoint_UC3.o)
.debug_aranges
0x00000240 0x68 liblufa.a(EndpointStream_UC3.o)
.debug_aranges
0x000002a8 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.debug_aranges
0x000002c8 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.debug_aranges
0x000002e8 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.debug_aranges
0x00000308 0xf8 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.debug_aranges
0x00000400 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.debug_aranges
0x00000420 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.debug_aranges
0x00000440 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.debug_aranges
0x00000460 0x80 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.debug_aranges
0x000004e0 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.debug_aranges
0x00000508 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.debug_aranges
0x00000528 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.debug_aranges
0x00000550 0x30 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.debug_aranges
0x00000580 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.debug_aranges
0x000005a0 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.debug_pubnames
0x00000000 0xeb3
*(.debug_pubnames)
.debug_pubnames
0x00000000 0x21 obj/board.o
.debug_pubnames
0x00000021 0xc6 obj/main.o
.debug_pubnames
0x000000e7 0x9e obj/Descriptors.o
.debug_pubnames
0x00000185 0xa6 aery32/libaery32_uc3a1128.a(gpio.o)
.debug_pubnames
0x0000022b 0x177 aery32/libaery32_uc3a1128.a(pm.o)
.debug_pubnames
0x000003a2 0x46 liblufa.a(USBController_UC3.o)
.debug_pubnames
0x000003e8 0x63 liblufa.a(USBInterrupt_UC3.o)
.debug_pubnames
0x0000044b 0xa1 liblufa.a(DeviceStandardReq.o)
.debug_pubnames
0x000004ec 0x25 liblufa.a(Events.o)
.debug_pubnames
0x00000511 0x63 liblufa.a(USBTask.o)
.debug_pubnames
0x00000574 0x14b liblufa.a(CDCClassDevice.o)
.debug_pubnames
0x000006bf 0x6b liblufa.a(InterruptManagement.o)
.debug_pubnames
0x0000072a 0xea liblufa.a(Endpoint_UC3.o)
.debug_pubnames
0x00000814 0x14b liblufa.a(EndpointStream_UC3.o)
.debug_pubnames
0x0000095f 0x1d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.debug_pubnames
0x0000097c 0x1b c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.debug_pubnames
0x00000997 0x39 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.debug_pubnames
0x000009d0 0x1d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.debug_pubnames
0x000009ed 0x171 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.debug_pubnames
0x00000b5e 0x2a c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.debug_pubnames
0x00000b88 0x27 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.debug_pubnames
0x00000baf 0x1e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.debug_pubnames
0x00000bcd 0x119 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.debug_pubnames
0x00000ce6 0x26 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.debug_pubnames
0x00000d0c 0xce c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.debug_pubnames
0x00000dda 0x38 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.debug_pubnames
0x00000e12 0x52 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.debug_pubnames
0x00000e64 0x1e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.debug_pubnames
0x00000e82 0x31 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.debug_info 0x00000000 0x5f973
*(.debug_info .gnu.linkonce.wi.*)
.debug_info 0x00000000 0x1ae8 obj/board.o
.debug_info 0x00001ae8 0x8a7 obj/main.o
.debug_info 0x0000238f 0x723 obj/Descriptors.o
.debug_info 0x00002ab2 0x5bd aery32/libaery32_uc3a1128.a(gpio.o)
.debug_info 0x0000306f 0x1424 aery32/libaery32_uc3a1128.a(pm.o)
.debug_info 0x00004493 0xc6e6 liblufa.a(USBController_UC3.o)
.debug_info 0x00010b79 0xbac2 liblufa.a(USBInterrupt_UC3.o)
.debug_info 0x0001c63b 0xbd94 liblufa.a(DeviceStandardReq.o)
.debug_info 0x000283cf 0xa6 liblufa.a(Events.o)
.debug_info 0x00028475 0xb7e1 liblufa.a(USBTask.o)
.debug_info 0x00033c56 0xbf6f liblufa.a(CDCClassDevice.o)
.debug_info 0x0003fbc5 0x2f8 liblufa.a(InterruptManagement.o)
.debug_info 0x0003febd 0xbb57 liblufa.a(Endpoint_UC3.o)
.debug_info 0x0004ba14 0xbfba liblufa.a(EndpointStream_UC3.o)
.debug_info 0x000579ce 0xc5 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.debug_info 0x00057a93 0x8b7 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.debug_info 0x0005834a 0x960 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.debug_info 0x00058caa 0xcd c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.debug_info 0x00058d77 0x93a c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.debug_info 0x000596b1 0x92c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.debug_info 0x00059fdd 0x931 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.debug_info 0x0005a90e 0x8a6 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.debug_info 0x0005b1b4 0xc2a c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.debug_info 0x0005bdde 0x8ea c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.debug_info 0x0005c6c8 0xc4e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.debug_info 0x0005d316 0x8cf c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.debug_info 0x0005dbe5 0x973 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.debug_info 0x0005e558 0x8de c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.debug_info 0x0005ee36 0xb3d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.debug_abbrev 0x00000000 0x325d
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x1a5 obj/board.o
.debug_abbrev 0x000001a5 0x241 obj/main.o
.debug_abbrev 0x000003e6 0x129 obj/Descriptors.o
.debug_abbrev 0x0000050f 0x135 aery32/libaery32_uc3a1128.a(gpio.o)
.debug_abbrev 0x00000644 0x22b aery32/libaery32_uc3a1128.a(pm.o)
.debug_abbrev 0x0000086f 0x22f liblufa.a(USBController_UC3.o)
.debug_abbrev 0x00000a9e 0x216 liblufa.a(USBInterrupt_UC3.o)
.debug_abbrev 0x00000cb4 0x2e0 liblufa.a(DeviceStandardReq.o)
.debug_abbrev 0x00000f94 0x4c liblufa.a(Events.o)
.debug_abbrev 0x00000fe0 0x206 liblufa.a(USBTask.o)
.debug_abbrev 0x000011e6 0x30f liblufa.a(CDCClassDevice.o)
.debug_abbrev 0x000014f5 0x18e liblufa.a(InterruptManagement.o)
.debug_abbrev 0x00001683 0x2ce liblufa.a(Endpoint_UC3.o)
.debug_abbrev 0x00001951 0x24a liblufa.a(EndpointStream_UC3.o)
.debug_abbrev 0x00001b9b 0x81 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.debug_abbrev 0x00001c1c 0x15f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.debug_abbrev 0x00001d7b 0x160 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.debug_abbrev 0x00001edb 0x85 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.debug_abbrev 0x00001f60 0x19a c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.debug_abbrev 0x000020fa 0x1b5 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.debug_abbrev 0x000022af 0x1bc c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.debug_abbrev 0x0000246b 0x150 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.debug_abbrev 0x000025bb 0x28c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.debug_abbrev 0x00002847 0x178 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.debug_abbrev 0x000029bf 0x205 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.debug_abbrev 0x00002bc4 0x15b c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.debug_abbrev 0x00002d1f 0x1e6 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.debug_abbrev 0x00002f05 0x17f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.debug_abbrev 0x00003084 0x1d9 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.debug_line 0x00000000 0xb854
*(.debug_line)
.debug_line 0x00000000 0x322 obj/board.o
.debug_line 0x00000322 0xdf3 obj/main.o
.debug_line 0x00001115 0xc88 obj/Descriptors.o
.debug_line 0x00001d9d 0x332 aery32/libaery32_uc3a1128.a(gpio.o)
.debug_line 0x000020cf 0x3be aery32/libaery32_uc3a1128.a(pm.o)
.debug_line 0x0000248d 0x977 liblufa.a(USBController_UC3.o)
.debug_line 0x00002e04 0xb4e liblufa.a(USBInterrupt_UC3.o)
.debug_line 0x00003952 0xd1f liblufa.a(DeviceStandardReq.o)
.debug_line 0x00004671 0x549 liblufa.a(Events.o)
.debug_line 0x00004bba 0x85e liblufa.a(USBTask.o)
.debug_line 0x00005418 0x17b4 liblufa.a(CDCClassDevice.o)
.debug_line 0x00006bcc 0x5a1 liblufa.a(InterruptManagement.o)
.debug_line 0x0000716d 0xc26 liblufa.a(Endpoint_UC3.o)
.debug_line 0x00007d93 0x13b4 liblufa.a(EndpointStream_UC3.o)
.debug_line 0x00009147 0xfc c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.debug_line 0x00009243 0x1f5 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.debug_line 0x00009438 0x166 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
.debug_line 0x0000959e 0x17c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.debug_line 0x0000971a 0x562 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.debug_line 0x00009c7c 0x221 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.debug_line 0x00009e9d 0x264 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.debug_line 0x0000a101 0x18c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.debug_line 0x0000a28d 0x555 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.debug_line 0x0000a7e2 0x1fd c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.debug_line 0x0000a9df 0x52f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.debug_line 0x0000af0e 0x192 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.debug_line 0x0000b0a0 0x2aa c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.debug_line 0x0000b34a 0x200 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.debug_line 0x0000b54a 0x30a c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.debug_frame 0x00000000 0xedc
*(.debug_frame)
.debug_frame 0x00000000 0x4c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
.debug_frame 0x0000004c 0x2c obj/board.o
.debug_frame 0x00000078 0xb8 obj/main.o
.debug_frame 0x00000130 0x2c obj/Descriptors.o
.debug_frame 0x0000015c 0x48 aery32/libaery32_uc3a1128.a(gpio.o)
.debug_frame 0x000001a4 0x160 aery32/libaery32_uc3a1128.a(pm.o)
.debug_frame 0x00000304 0x64 liblufa.a(USBController_UC3.o)
.debug_frame 0x00000368 0x48 liblufa.a(USBInterrupt_UC3.o)
.debug_frame 0x000003b0 0x38 liblufa.a(DeviceStandardReq.o)
.debug_frame 0x000003e8 0x20 liblufa.a(Events.o)
.debug_frame 0x00000408 0x34 liblufa.a(USBTask.o)
.debug_frame 0x0000043c 0x14c liblufa.a(CDCClassDevice.o)
.debug_frame 0x00000588 0x40 liblufa.a(InterruptManagement.o)
.debug_frame 0x000005c8 0xd4 liblufa.a(Endpoint_UC3.o)
.debug_frame 0x0000069c 0x1dc liblufa.a(EndpointStream_UC3.o)
.debug_frame 0x00000878 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.debug_frame 0x000008a0 0x34 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.debug_frame 0x000008d4 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.debug_frame 0x000008f4 0x220 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.debug_frame 0x00000b14 0x40 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.debug_frame 0x00000b54 0x44 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.debug_frame 0x00000b98 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.debug_frame 0x00000bb8 0x13c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.debug_frame 0x00000cf4 0x40 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.debug_frame 0x00000d34 0x40 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.debug_frame 0x00000d74 0x30 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.debug_frame 0x00000da4 0x80 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.debug_frame 0x00000e24 0x34 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.debug_frame 0x00000e58 0x58 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.debug_frame 0x00000eb0 0x2c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
.debug_str 0x00000000 0x69bf
*(.debug_str)
.debug_str 0x00000000 0x9aa obj/board.o
0xa17 (size before relaxing)
.debug_str 0x000009aa 0x34a obj/main.o
0x59e (size before relaxing)
.debug_str 0x00000cf4 0x8c0 obj/Descriptors.o
0xa4f (size before relaxing)
.debug_str 0x000015b4 0x134 aery32/libaery32_uc3a1128.a(gpio.o)
0x33f (size before relaxing)
.debug_str 0x000016e8 0x324 aery32/libaery32_uc3a1128.a(pm.o)
0xa4b (size before relaxing)
.debug_str 0x00001a0c 0x314d liblufa.a(USBController_UC3.o)
0x37ad (size before relaxing)
.debug_str 0x00004b59 0xfe liblufa.a(USBInterrupt_UC3.o)
0x33d6 (size before relaxing)
.debug_str 0x00004c57 0x498 liblufa.a(DeviceStandardReq.o)
0x36fd (size before relaxing)
.debug_str 0x000050ef 0x2e liblufa.a(Events.o)
0x10e (size before relaxing)
.debug_str 0x0000511d 0x82 liblufa.a(USBTask.o)
0x32cc (size before relaxing)
.debug_str 0x0000519f 0x4d7 liblufa.a(CDCClassDevice.o)
0x3894 (size before relaxing)
.debug_str 0x00005676 0x79 liblufa.a(InterruptManagement.o)
0x22d (size before relaxing)
.debug_str 0x000056ef 0x17f liblufa.a(Endpoint_UC3.o)
0x3561 (size before relaxing)
.debug_str 0x0000586e 0x239 liblufa.a(EndpointStream_UC3.o)
0x3614 (size before relaxing)
.debug_str 0x00005aa7 0x88 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
0x124 (size before relaxing)
.debug_str 0x00005b2f 0x3aa c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
0x49e (size before relaxing)
.debug_str 0x00005ed9 0xa2 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
0x4ec (size before relaxing)
.debug_str 0x00005f7b 0x66 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
0xfb (size before relaxing)
.debug_str 0x00005fe1 0x31d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
0x427 (size before relaxing)
.debug_str 0x000062fe 0x6e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
0x4eb (size before relaxing)
.debug_str 0x0000636c 0x7e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
0x4c6 (size before relaxing)
.debug_str 0x000063ea 0x5e c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
0x495 (size before relaxing)
.debug_str 0x00006448 0x11f c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
0x5c6 (size before relaxing)
.debug_str 0x00006567 0x70 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
0x4ae (size before relaxing)
.debug_str 0x000065d7 0x225 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
0x683 (size before relaxing)
.debug_str 0x000067fc 0x8a c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
0x4b5 (size before relaxing)
.debug_str 0x00006886 0x90 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
0x4d2 (size before relaxing)
.debug_str 0x00006916 0x6d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
0x49e (size before relaxing)
.debug_str 0x00006983 0x3c c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
0x5d5 (size before relaxing)
.debug_loc 0x00000000 0x2860
*(.debug_loc)
.debug_loc 0x00000000 0x2b obj/board.o
.debug_loc 0x0000002b 0x102 obj/main.o
.debug_loc 0x0000012d 0x2b obj/Descriptors.o
.debug_loc 0x00000158 0x56 aery32/libaery32_uc3a1128.a(gpio.o)
.debug_loc 0x000001ae 0x204 aery32/libaery32_uc3a1128.a(pm.o)
.debug_loc 0x000003b2 0x5d liblufa.a(USBController_UC3.o)
.debug_loc 0x0000040f 0x1f liblufa.a(USBInterrupt_UC3.o)
.debug_loc 0x0000042e 0x139 liblufa.a(DeviceStandardReq.o)
.debug_loc 0x00000567 0x1f liblufa.a(USBTask.o)
.debug_loc 0x00000586 0x3c8 liblufa.a(CDCClassDevice.o)
.debug_loc 0x0000094e 0x13 liblufa.a(InterruptManagement.o)
.debug_loc 0x00000961 0x1d9 liblufa.a(Endpoint_UC3.o)
.debug_loc 0x00000b3a 0xb7a liblufa.a(EndpointStream_UC3.o)
.debug_loc 0x000016b4 0x32 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.debug_loc 0x000016e6 0x3d c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.debug_loc 0x00001723 0x268 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.debug_loc 0x0000198b 0xe9 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.debug_loc 0x00001a74 0xf0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.debug_loc 0x00001b64 0x202 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.debug_loc 0x00001d66 0x64 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.debug_loc 0x00001dca 0x5a5 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.debug_loc 0x0000236f 0x10a c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.debug_loc 0x00002479 0x63 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.debug_loc 0x000024dc 0x384 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
.debug_macinfo 0x00000000 0xbc2217
*(.debug_macinfo)
.debug_macinfo
0x00000000 0xd3074 obj/board.o
.debug_macinfo
0x000d3074 0xde2ff obj/main.o
.debug_macinfo
0x001b1373 0xdce3a obj/Descriptors.o
.debug_macinfo
0x0028e1ad 0xd2ec5 aery32/libaery32_uc3a1128.a(gpio.o)
.debug_macinfo
0x00361072 0xd2f48 aery32/libaery32_uc3a1128.a(pm.o)
.debug_macinfo
0x00433fba 0xd6279 liblufa.a(USBController_UC3.o)
.debug_macinfo
0x0050a233 0xd626a liblufa.a(USBInterrupt_UC3.o)
.debug_macinfo
0x005e049d 0xd6638 liblufa.a(DeviceStandardReq.o)
.debug_macinfo
0x006b6ad5 0xd5791 liblufa.a(Events.o)
.debug_macinfo
0x0078c266 0xd627e liblufa.a(USBTask.o)
.debug_macinfo
0x008624e4 0xdd4f9 liblufa.a(CDCClassDevice.o)
.debug_macinfo
0x0093f9dd 0xd5749 liblufa.a(InterruptManagement.o)
.debug_macinfo
0x00a15126 0xd627e liblufa.a(Endpoint_UC3.o)
.debug_macinfo
0x00aeb3a4 0xd6e73 liblufa.a(EndpointStream_UC3.o)
.debug_weaknames
*(.debug_weaknames)
.debug_funcnames
*(.debug_funcnames)
.debug_typenames
*(.debug_typenames)
.debug_varnames
*(.debug_varnames)
.stack 0x00007000 0x1000
0x00007000 _stack = .
*(.stack)
0x00001000 . = _stack_size
*fill* 0x00007000 0x1000 00
0x00008000 _estack = .
.userpage
*(.userpage .userpage.*)
.factorypage
*(.factorypage .factorypage.*)
/DISCARD/
*(.note.GNU-stack)
OUTPUT(lufaery32.elf elf32-avr32)
.debug_ranges 0x00000000 0xe10
.debug_ranges 0x00000000 0x70 liblufa.a(USBController_UC3.o)
.debug_ranges 0x00000070 0x70 liblufa.a(USBInterrupt_UC3.o)
.debug_ranges 0x000000e0 0x180 liblufa.a(DeviceStandardReq.o)
.debug_ranges 0x00000260 0x18 liblufa.a(Events.o)
.debug_ranges 0x00000278 0x18 liblufa.a(USBTask.o)
.debug_ranges 0x00000290 0x1f0 liblufa.a(CDCClassDevice.o)
.debug_ranges 0x00000480 0x28 liblufa.a(InterruptManagement.o)
.debug_ranges 0x000004a8 0x1a0 liblufa.a(Endpoint_UC3.o)
.debug_ranges 0x00000648 0x4e0 liblufa.a(EndpointStream_UC3.o)
.debug_ranges 0x00000b28 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
.debug_ranges 0x00000b40 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
.debug_ranges 0x00000b58 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
.debug_ranges 0x00000b70 0xf0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
.debug_ranges 0x00000c60 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
.debug_ranges 0x00000c78 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
.debug_ranges 0x00000c90 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
.debug_ranges 0x00000ca8 0xb0 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
.debug_ranges 0x00000d58 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
.debug_ranges 0x00000d78 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
.debug_ranges 0x00000d90 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
.debug_ranges 0x00000db0 0x28 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
.debug_ranges 0x00000dd8 0x18 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
.debug_ranges 0x00000df0 0x20 c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
Cross Reference Table
Symbol File
Autovector_Table liblufa.a(Exception.o)
liblufa.a(InterruptManagement.o)
obj/main.o
CALLBACK_USB_GetDescriptor obj/Descriptors.o
liblufa.a(DeviceStandardReq.o)
CDC_Device_BytesReceived liblufa.a(CDCClassDevice.o)
CDC_Device_ConfigureEndpoints liblufa.a(CDCClassDevice.o)
obj/main.o
CDC_Device_Event_Stub liblufa.a(CDCClassDevice.o)
CDC_Device_Flush liblufa.a(CDCClassDevice.o)
CDC_Device_ProcessControlRequest liblufa.a(CDCClassDevice.o)
obj/main.o
CDC_Device_ReceiveByte liblufa.a(CDCClassDevice.o)
CDC_Device_SendByte liblufa.a(CDCClassDevice.o)
obj/main.o
CDC_Device_SendControlLineStateChange liblufa.a(CDCClassDevice.o)
CDC_Device_SendData liblufa.a(CDCClassDevice.o)
CDC_Device_SendString liblufa.a(CDCClassDevice.o)
CDC_Device_USBTask liblufa.a(CDCClassDevice.o)
obj/main.o
ConfigurationDescriptor obj/Descriptors.o
DeviceDescriptor obj/Descriptors.o
EVBA_Table liblufa.a(Exception.o)
liblufa.a(InterruptManagement.o)
EVENT_CDC_Device_BreakSent liblufa.a(CDCClassDevice.o)
EVENT_CDC_Device_ControLineStateChanged liblufa.a(CDCClassDevice.o)
EVENT_CDC_Device_LineEncodingChanged liblufa.a(CDCClassDevice.o)
EVENT_USB_Device_ConfigurationChanged obj/main.o
liblufa.a(DeviceStandardReq.o)
EVENT_USB_Device_Connect obj/main.o
liblufa.a(USBInterrupt_UC3.o)
EVENT_USB_Device_ControlRequest obj/main.o
liblufa.a(DeviceStandardReq.o)
EVENT_USB_Device_Disconnect obj/main.o
liblufa.a(USBInterrupt_UC3.o)
EVENT_USB_Device_Reset liblufa.a(Events.o)
liblufa.a(USBInterrupt_UC3.o)
EVENT_USB_Device_StartOfFrame liblufa.a(Events.o)
liblufa.a(USBInterrupt_UC3.o)
EVENT_USB_Device_Suspend liblufa.a(Events.o)
liblufa.a(USBInterrupt_UC3.o)
EVENT_USB_Device_WakeUp liblufa.a(Events.o)
liblufa.a(USBInterrupt_UC3.o)
Endpoint_ClearEndpoints liblufa.a(Endpoint_UC3.o)
Endpoint_ClearStatusStage liblufa.a(Endpoint_UC3.o)
liblufa.a(CDCClassDevice.o)
liblufa.a(DeviceStandardReq.o)
Endpoint_ConfigureEndpointTable liblufa.a(Endpoint_UC3.o)
liblufa.a(CDCClassDevice.o)
Endpoint_ConfigureEndpoint_Prv liblufa.a(Endpoint_UC3.o)
liblufa.a(USBInterrupt_UC3.o)
liblufa.a(USBController_UC3.o)
Endpoint_Discard_Stream liblufa.a(EndpointStream_UC3.o)
Endpoint_Null_Stream liblufa.a(EndpointStream_UC3.o)
Endpoint_Read_Control_Stream_BE liblufa.a(EndpointStream_UC3.o)
Endpoint_Read_Control_Stream_LE liblufa.a(EndpointStream_UC3.o)
Endpoint_Read_Stream_BE liblufa.a(EndpointStream_UC3.o)
Endpoint_Read_Stream_LE liblufa.a(EndpointStream_UC3.o)
Endpoint_WaitUntilReady liblufa.a(Endpoint_UC3.o)
liblufa.a(EndpointStream_UC3.o)
liblufa.a(CDCClassDevice.o)
Endpoint_Write_Control_Stream_BE liblufa.a(EndpointStream_UC3.o)
Endpoint_Write_Control_Stream_LE liblufa.a(EndpointStream_UC3.o)
liblufa.a(DeviceStandardReq.o)
Endpoint_Write_Stream_BE liblufa.a(EndpointStream_UC3.o)
Endpoint_Write_Stream_LE liblufa.a(EndpointStream_UC3.o)
liblufa.a(CDCClassDevice.o)
INTC_GetInterruptHandler liblufa.a(InterruptManagement.o)
liblufa.a(Exception.o)
INTC_Init liblufa.a(InterruptManagement.o)
obj/main.o
InterruptHandlers liblufa.a(InterruptManagement.o)
obj/main.o
LanguageString obj/Descriptors.o
ManufacturerString obj/Descriptors.o
ProductString obj/Descriptors.o
USB_ControlRequest liblufa.a(EndpointStream_UC3.o)
liblufa.a(Endpoint_UC3.o)
liblufa.a(CDCClassDevice.o)
liblufa.a(USBTask.o)
liblufa.a(DeviceStandardReq.o)
USB_DeviceState liblufa.a(EndpointStream_UC3.o)
liblufa.a(Endpoint_UC3.o)
liblufa.a(CDCClassDevice.o)
liblufa.a(USBTask.o)
liblufa.a(DeviceStandardReq.o)
liblufa.a(USBInterrupt_UC3.o)
liblufa.a(USBController_UC3.o)
USB_Device_ConfigurationNumber liblufa.a(DeviceStandardReq.o)
liblufa.a(USBInterrupt_UC3.o)
liblufa.a(USBController_UC3.o)
USB_Device_CurrentlySelfPowered liblufa.a(DeviceStandardReq.o)
liblufa.a(USBController_UC3.o)
USB_Device_ProcessControlRequest liblufa.a(DeviceStandardReq.o)
liblufa.a(USBTask.o)
USB_Device_RemoteWakeupEnabled liblufa.a(DeviceStandardReq.o)
liblufa.a(USBController_UC3.o)
USB_Disable liblufa.a(USBController_UC3.o)
USB_Endpoint_FIFOPos liblufa.a(EndpointStream_UC3.o)
liblufa.a(Endpoint_UC3.o)
liblufa.a(CDCClassDevice.o)
liblufa.a(DeviceStandardReq.o)
USB_Endpoint_SelectedEndpoint liblufa.a(Endpoint_UC3.o)
liblufa.a(EndpointStream_UC3.o)
liblufa.a(CDCClassDevice.o)
liblufa.a(USBTask.o)
liblufa.a(DeviceStandardReq.o)
USB_Event_Stub liblufa.a(Events.o)
USB_GEN_vect liblufa.a(USBInterrupt_UC3.o)
obj/main.o
USB_INT_ClearAllInterrupts liblufa.a(USBInterrupt_UC3.o)
liblufa.a(USBController_UC3.o)
USB_INT_DisableAllInterrupts liblufa.a(USBInterrupt_UC3.o)
liblufa.a(USBController_UC3.o)
USB_Init liblufa.a(USBController_UC3.o)
obj/main.o
USB_IsInitialized liblufa.a(USBTask.o)
liblufa.a(USBController_UC3.o)
USB_ResetInterface liblufa.a(USBController_UC3.o)
USB_USBTask liblufa.a(USBTask.o)
liblufa.a(EndpointStream_UC3.o)
obj/main.o
Unhandled_Interrupt liblufa.a(InterruptManagement.o)
VirtualSerial_CDC_Interface obj/main.o
_GLOBAL_OFFSET_TABLE_ c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
_Jv_RegisterClasses c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
__DTOR_END__ c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtend.o
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
__call_exitprocs c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
__dso_handle c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crtbegin.o
__errno c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
__fp_lock_all c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__fp_unlock_all c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__heap_end__ c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
__heap_start__ c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
__malloc_av_ c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
__malloc_current_mallinfo c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
__malloc_lock c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
__malloc_max_sbrked_mem c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
__malloc_max_total_mem c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
__malloc_sbrk_base c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
__malloc_top_pad c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
__malloc_trim_threshold c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
__malloc_unlock c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mlock.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
__register_exitproc c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
__sclose c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__sf_fake_stderr c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
__sf_fake_stdin c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
__sf_fake_stdout c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
__sfmoreglue c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__sfp c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__sfp_lock_acquire c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
__sfp_lock_release c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
__sinit c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
__sinit_lock_acquire c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__sinit_lock_release c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__sread c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__sseek c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
__swrite c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
_cleanup c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
_cleanup_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
_close c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
_close_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
_data c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_data_lma c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_edata c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_end c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_estack c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_execve c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_exit c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
_fclose_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
_fcntl c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_fflush_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
_fini c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_fork c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_free_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
_fstat c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_fstat_host c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_fwalk c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
_fwalk_reent c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fwalk.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
_getpid c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_gettimeofday c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_gettimeofday_host c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_global_impure_ptr c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
_impure_ptr c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-impure.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-errno.o)
_init c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/ucr2/crti.o
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_init_argv c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_init_startup c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_kill c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_link c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_lseek c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
_lseek_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
_malloc_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
_malloc_trim_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
_open c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_read c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
_read_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
_reclaim_reent c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
_sbrk c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
_sbrk_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-freer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-mallocr.o)
_start c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_stat c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_stat_host c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_stext c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
_system c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_times c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_unlink c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_wait c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
_wrapup_reent c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
_write c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
_write_r c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-stdio.o)
aery::gpio_init_pin(unsigned char, int) aery32/libaery32_uc3a1128.a(gpio.o)
obj/main.o
aery::gpio_init_pins(avr32_gpio_port_t volatile*, unsigned long, int) aery32/libaery32_uc3a1128.a(gpio.o)
obj/board.o
aery::lporta aery32/libaery32_uc3a1128.a(gpio.o)
aery::lportb aery32/libaery32_uc3a1128.a(gpio.o)
aery::lportc aery32/libaery32_uc3a1128.a(gpio.o)
aery::pll0 aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::pll1 aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::pm aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::pm_disable_gclk(aery::Pm_gclk) aery32/libaery32_uc3a1128.a(pm.o)
aery::pm_enable_gclk(aery::Pm_gclk) aery32/libaery32_uc3a1128.a(pm.o)
obj/main.o
aery::pm_enable_pll(avr32_pm_pll_t volatile*, bool) aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::pm_get_fclkdomain(unsigned char) aery32/libaery32_uc3a1128.a(pm.o)
aery::pm_get_fmck() aery32/libaery32_uc3a1128.a(pm.o)
aery::pm_init_gclk(aery::Pm_gclk, aery::Pm_gclk_source, unsigned short) aery32/libaery32_uc3a1128.a(pm.o)
obj/main.o
aery::pm_init_pllvco(avr32_pm_pll_t volatile*, aery::Pm_pll_source, unsigned char, unsigned char, bool) aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::pm_select_mck(aery::Pm_mck_source) aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::pm_setup_clkdomain(unsigned char, unsigned char) aery32/libaery32_uc3a1128.a(pm.o)
aery::pm_start_osc(unsigned char, aery::Pm_osc_mode, aery::Pm_osc_startup) aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::pm_wait_osc_to_stabilize(unsigned char) aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::pm_wait_pll_to_lock(avr32_pm_pll_t volatile*) aery32/libaery32_uc3a1128.a(pm.o)
obj/board.o
aery::porta aery32/libaery32_uc3a1128.a(gpio.o)
obj/board.o
aery::portb aery32/libaery32_uc3a1128.a(gpio.o)
obj/board.o
aery::portc aery32/libaery32_uc3a1128.a(gpio.o)
obj/board.o
atexit c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-atexit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
cleanup_glue c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
errno c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-readr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-lseekr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-closer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-writer.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-sbrkr.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-reent.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
exit c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-exit.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
fclose c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fclose.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
fflush c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-fflush.o)
free c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__call_atexit.o)
init_board() obj/board.o
obj/main.o
isatty c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
main obj/main.o
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2/crt0.o
malloc c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-malloc.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-__atexit.o)
memcpy c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memcpy.o)
liblufa.a(CDCClassDevice.o)
memset c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-memset.o)
c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-findfp.o)
liblufa.a(CDCClassDevice.o)
sigfillset c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
sigprocmask c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-syscalls.o)
strlen c:/program files (x86)/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr32/4.4.3/../../../../avr32/lib/ucr2\libc.a(lib_a-strlen.o)
liblufa.a(CDCClassDevice.o)
@kblomqvist
Copy link
Author

  • LUFA compiled with its default optimization flag, -Os
  • Aery32 lib compiled with -O2. main.cpp and board.cpp compiled with -O2.

Interrupts do not work. EVENT_USB_Device_ControlRequest() won't be called and Windows recognizes board as unkown device.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment