diff --git a/dev/build/litex/a2o.py b/dev/build/litex/a2o.py index 50ec1ef..cbf4cbb 100755 --- a/dev/build/litex/a2o.py +++ b/dev/build/litex/a2o.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# A2O Test - build with core.py +# A2O Test (64LE) # a2o.py --csr-csv csr.csv --no-compile-software # a2o.py --csr-csv csr.csv --no-compile-software --build [--sys-clk-freq 50e6] # @@ -16,9 +16,10 @@ from platforms import cmod7_kintex # wtf - use local core (not built into litex) # help python find package -import sys -binPath = os.path.dirname(os.path.realpath(__file__)) -sys.path.append(os.path.join(binPath, 'a2p')) # dir with core package; core.py defines core source location +# not needed anymore +#import sys +#binPath = os.path.dirname(os.path.realpath(__file__)) +#sys.path.append(os.path.join(binPath, 'a2o')) # dir with core package; core.py defines core source location # get core def from a2o import A2O # add to litex dict diff --git a/dev/build/litex/a2o.txt b/dev/build/litex/a2o.txt new file mode 100644 index 0000000..a26a739 --- /dev/null +++ b/dev/build/litex/a2o.txt @@ -0,0 +1,37 @@ +Building variant=WB_64LE. +Read 3790 bytes for ROM data. +Wrote mem.init +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libc' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libc' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libcompiler_rt' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libcompiler_rt' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libbase' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libbase' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libfatfs' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libfatfs' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitespi' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitespi' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitedram' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitedram' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libliteeth' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libliteeth' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitesdcard' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitesdcard' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitesata' +make: Nothing to be done for 'all'. +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitesata' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/bios' +python3 -m litex.soc.software.memusage bios.elf /data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/bios/../include/generated/regions.ld powerpc64le-linux-gnu + +ROM usage: 28.17KiB (44.01%) +RAM usage: 0.00KiB (0.00%) + +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/bios' diff --git a/dev/build/litex/a2o/core.py b/dev/build/litex/a2o/core.py index 3890e1a..7788220 100644 --- a/dev/build/litex/a2o/core.py +++ b/dev/build/litex/a2o/core.py @@ -18,21 +18,30 @@ CPU_VARIANTS = { 'standard' : 'a2owb' } -# 32 is from a2p plus -ma2; can get rid of some of them +#wtf doesnt do anything, but you can somehow do it by using -Xassembler in gcc flags +GAS_FLAGS = { + 'WB_32BE' : '-defsym BIOS_32=1', + 'WB_64LE' : '-defsym BIOS_LE=1' +} + GCC_FLAGS = { - 'WB_32BE' : '-ma2 -m32 -mbig-endian fomit-frame-pointer -Wall -fno-builtin -nostdinc -fno-stack-protector -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes', - 'WB_64LE' : '-ma2 -m64 -mlittle-endian -mabi=elfv2 -fnostack-protector' + 'WB_32BE' : '-mcpu=a2 -m32 -mbig-endian -fno-stack-protector -Xassembler -defsym -Xassembler BIOS_32=1', + 'WB_64LE' : '-mcpu=a2 -m64 -mlittle-endian -mabi=elfv2 -fno-stack-protector -Xassembler -defsym -Xassembler BIOS_LE=1' } + class A2O(CPU, AutoCSR): name = 'a2o' human_name = 'a2o' variants = CPU_VARIANTS + + # default 64LE family = 'ppc64' data_width = 64 endianness = 'little' gcc_triple = ('powerpc64le-linux', 'powerpc64le-linux-gnu') linker_output_format = 'elf64-powerpcle' + nop = 'nop' io_regions = {0xF0000000: 0x10000000} # origin, length @@ -58,8 +67,9 @@ class A2O(CPU, AutoCSR): if variant == 'standard': variant = 'WB_64LE' - if variant == 'WB_32LE': - self.family = 'ppc32' + if variant == 'WB_32BE': + #self.family = 'ppc' # kills meson build + self.family = 'powerpc' self.data_width = 32 self.endianness = 'big' self.gcc_triple = 'powerpc-linux-gnu' diff --git a/dev/build/litex/a2o/crt0.S b/dev/build/litex/a2o/crt0.S index 8a92c48..376cf06 100644 --- a/dev/build/litex/a2o/crt0.S +++ b/dev/build/litex/a2o/crt0.S @@ -1,973 +1,395 @@ -# debug code for mem -#.set TEST_MEM,1 - -# boot code for rom integration with litex terminal code -# requires 64K ROM -# got rid of int handlers for now to shrink this code - -# cmod7 - skip ddr stuff - -# set for sim bypass version -#.set SIM,1 # this skips uart, ram check, etc. -#.set DELAY,0x00000005 - -# general delay (leds) -# should probs put this in a mem loc so it can be easily changed w/o compile -.set DELAY,0x01000000 # hardware (~1 secs) -#.set DELAY,0x00000100 - -# csr.csv -# need to set up CONFIG: -#csr_base,dna,0xfff00000,, -#csr_base,xadc,0xfff00800,, -#csr_base,leds,0xfff01000,, -#csr_base,buttons,0xfff01800,, -#csr_base,i2c,0xfff02000,, -#csr_base,motor_0,0xfff02800,, -#csr_base,ctrl,0xfff03000,, -#csr_base,identifier_mem,0xfff03800,, -#csr_base,timer0,0xfff04000,, -#csr_base,uart,0xfff04800,, - -# -#memory_region,rom,0x00000000,65536,cached -#memory_region,ram,0x00010000,4096,cached -#memory_region,sram,0x80000000,4096,cached -#memory_region,csr,0xfff00000,65536,io +# © IBM Corp. 2022 +# Licensed under and subject to the terms of the CC-BY 4.0 +# license (https://creativecommons.org/licenses/by/4.0/legalcode). +# Additional rights, including the right to physically implement a softcore +# that is compliant with the required sections of the Power ISA +# Specification, will be available at no cost via the OpenPOWER Foundation. +# This README will be updated with additional information when OpenPOWER's +# license is available. + +# litex boot kernel (original ppc-embedded architecture) +# resets to 32BE +# set up translations for starting bios (inc. BE/LE) +# copy modifiable rom data to ram - or do in bios? +# set up msr for running bios (inc. 32/64) +# jump to bios .include "defines.s" -#.section .hwinit # @00000000 -# change to use litex linker.ld +# pass in with -defsym +;# if neither defined, it's 64BE! +# BE/LE +#.set BIOS_LE,1 +# 32/64 +#.set BIOS_32,1 + +.set BIOS_START,0 +.set BIOS_STACK_0,_fstack +.set BIOS_STACK_1,_fstack + +.macro load32 rx,v + li \rx,0 + oris \rx,\rx,\v>>16 + ori \rx,\rx,\v&0x0000FFFF +.endm + +.macro load16swiz rx,v + li \rx,0 + ori \rx,\rx,(\v<<8)&0xFF00 + ori \rx,\rx,(\v>>8)&0x00FF +.endm + +# constants from linker script, or defsym + +.ifndef THREAD_ENABLES +.set THREAD_ENABLES,0x1 +.endif + +.ifdef BIOS_32 +# sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0 +.set BIOS_MSR,0x0002B000 +.else +# sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0 +.set BIOS_MSR,0x8002B000 +.endif + +#wtf this should to be done in bios based on the tst +# erat w2 (test) # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63 +.ifdef BIOS_LE +.set BIOS_ERATW2,0x000000BF +.else +.set BIOS_ERATW2,0x0000003F +.endif + +# bios might be able to use one stack during thread startup if careful +.ifndef BIOS_STACK_0 +.set BIOS_STACK_0,_stack_0 +.endif + +#.ifndef BIOS_STACK_1 +#.set BIOS_STACK_1,_stack_1 +#.endif + .section .text .global _start -# reset +.org 0x000 _start: +int_000: b boot_start -.set REGSAVE,0x04 -regsave: - .long 0 - .long 0 - .long 0 - .long 0 - .long 0 - .long 0 - .long 0 - .long 0 - - -# ddr setup delay (intracommand) -.ifdef SIM -.set DDR_DELAY,0x00000010 # sim +# critical input +.org 0x020 +int_020: +.ifdef INT_UNHANDLED + b int_unhandled .else -.set DDR_DELAY,0x00020000 -.endif - -.align 6 -.set CONFIG,0x40 - -#.set SRAM_BASE, 0x00010000 # get from _fdata -#.set STACK, 0x0001FFF8 # first save of r0 is 4 past this! #get from _fstack - -.set MAGIC, 0x08675309 - -rom_lo: .long 0 -rom_hi: .long 0xFFFF -sram_lo: .long 0 # get from link syms; does chk for -1 to skip test -sram_hi: .long 0 -ddr_lo: .long 0xFFFFFFFF # -1: no gots -ddr_hi: .long 0xF7FFFFFF - -ctrl: .long 0xFFF03000 -cpu: .long 0xFFFFFFFF # -1: no gots -uart: .long 0xFFF04800 # -1: no gots -leds: .long 0xFFF01000 # -1: no gots -switches: .long 0xFFFFFFFF # -1: no gots -buttons: .long 0xFFF01800 # -1: no gots -sdram: .long 0xFFFFFFFF -eob_data: .long MAGIC - -# offsets for uart functions -.set UART_RXTX, 0x00 -.set UART_TXFULL, 0x04 -.set UART_RXEMPTY, 0x08 -.set UART_EV_STATUS, 0x0C -.set UART_EV_PENDING, 0x10 -.set UART_EV_ENABLE, 0x14 -.set UART_TXEMPTY, 0x18 -.set UART_RXFULL, 0x1C -.set UARTX_RXTX, 0x20 -.set UARTX_TXFULL, 0x24 -.set UARTX_RXEMPTY, 0x28 -.set UARTX_EV_STATUS, 0x2C -.set UARTX_EV_PENDING, 0x30 -.set UARTX_EV_ENABLE, 0x34 -.set UARTX_TXEMPTY, 0x38 -.set UARTX_RXFULL, 0x3C - -.align 7 -.set CONFIG_DDR,0x80 - -#wtf can litex be forced to put these at specific offsets from csr_base??? -sdram_dfii: .long 0xFFF06000 # csr_register,sdram_dfii_control,0xfff05000,1,rw -ddr_cmd_delay: .long DDR_DELAY -ddr_chk_loops: .long 1 # 0=infinite -ddr_mrs0: .long 0 # wtf eventually set these up as config vals - -# offsets from sdram_dfii base -.set DFII_CONTROL, 0x00 -.set DFII_PI0_COMMAND, 0x04 -.set DFII_PI0_COMMAND_ISSUE, 0x08 -.set DFII_PI0_ADDRESS, 0x0C -.set DFII_PI0_BADDRESS, 0x10 -.set DFII_PI0_WRDATA, 0x14 -.set DFII_PI0_RDDATA, 0x18 -.set DFII_PI1_COMMAND, 0x1C -.set DFII_PI1_COMMAND_ISSUE, 0x20 -.set DFII_PI1_ADDRESS, 0x24 -.set DFII_PI1_BADDRESS, 0x28 -.set DFII_PI1_WRDATA, 0x2C -.set DFII_PI1_RDDATA, 0x30 - -# bits -.set CONTROL_SEL, 0x01 -.set CONTROL_CKE, 0x02 -.set CONTROL_ODT, 0x04 #wtf does this exist for ddr2?? -.set CONTROL_RESET_N, 0x08 -.set COMMAND_CS, 0x01 -.set COMMAND_WE, 0x02 -.set COMMAND_CAS, 0x04 -.set COMMAND_RAS, 0x08 -.set COMMAND_WRDATA, 0x10 -.set COMMAND_RDDATA, 0x20 -.set DDR_PARM_DELAY, 0x00020000 - -# -.align 8 -int_100: b . +.endif -# mck -.align 8 -int_200: +# debug +.org 0x040 +int_040: b . # dsi -.align 8 -int_300: - b . - -# dseg -.align 7 -int_380: +.org 0x060 +int_060: b . # isi -.align 8 -int_400: - b . - -# iseg -.align 7 -int_480: +.org 0x080 +int_080: b . # external -.align 8 -int_500: +.org 0x0A0 +int_0A0: b . # alignment -.align 8 -int_600: +.org 0x0C0 +int_0C0: b . # program -.align 8 -int_700: +.org 0x0E0 +int_0E0: b . # fp unavailable -.align 8 -int_800: +.org 0x100 +int_100: b . -# dec -.align 8 -int_900: +# sc +.org 0x120 +int_120: +.ifdef TST_END +# tst results haven't been saved yet; if want to call bios, need to save r1, then restore or set stack + b tst_end +.else +.ifdef INT_SC + # lev is in 20:26, but supposed to use scv now + li r3,0 + mfsrr0 r4 + b int_sc +.else +.ifdef INT_UNHANDLED + b int_unhandled +.else b . +.endif +.endif +.endif -# dec hyp -.align 7 -int_980: +# apu unavailable +.org 0x140 +int_140: b . -# doorbell -.align 8# offsets from sdram_dfii base -.set DFII_CONTROL, 0x00 -.set DFII_PI0_COMMAND, 0x04 -.set DFII_PI0_COMMAND_ISSUE, 0x08 -.set DFII_PI0_ADDRESS, 0x0C -.set DFII_PI0_BADDRESS, 0x10 -.set DFII_PI0_WRDATA, 0x14 -.set DFII_PI0_RDDATA, 0x18 -.set DFII_PI1_COMMAND, 0x1C -.set DFII_PI1_COMMAND_ISSUE, 0x20 -.set DFII_PI1_ADDRESS, 0x24 -.set DFII_PI1_BADDRESS, 0x28 -.set DFII_PI1_WRDATA, 0x2C -.set DFII_PI1_RDDATA, 0x30 - -# bits -.set CONTROL_SEL, 0x01 -.set CONTROL_CKE, 0x02 -.set CONTROL_ODT, 0x04 #wtf does this exist for ddr2?? -.set CONTROL_RESET_N, 0x08 -.set COMMAND_CS, 0x01 -.set COMMAND_WE, 0x02 -.set COMMAND_CAS, 0x04 -.set COMMAND_RAS, 0x08 -.set COMMAND_WRDATA, 0x10 -.set COMMAND_RDDATA, 0x20 -.set DDR_PARM_DELAY, 0x00020000 -int_C00: +# decrementer +.org 0x160 +int_160: + b . + +# fit +.org 0x180 +int_180: b . -# trace -.align 8 -int_D00: +# watchdog +.org 0x1A0 +int_1A0: b . -# dsi hyp -.align 8 -int_E00: +# dtlb +.org 0x1C0 +int_1C0: b . -# isi hyp -.align 5 -int_E20: +# itlb +.org 0x1E0 +int_1E0: b . -# emulation hyp -.align 5 -int_E40: +# vector unavailable +.org 0x200 +int_200: b . -# maintenance hyp -.align 5 -int_E60: +# +.org 0x220 +int_220: b . -# doorbell hyp -.align 5 -int_E80: +# +.org 0x240 +int_240: b . -# virtualization hyp -.align 5 -int_EA0: +# +.org 0x260 +int_260: b . -# reserved -.align 5 -int_EC0: +# doorbell +.org 0x280 +int_280: b . -# reserved -.align 5 -int_EE0: +# doorbell critical +.org 0x2A0 +int_2A0: b . -# perfmon -.align 5 -int_F00: +# doorbell guest +.org 0x2C0 +int_2C0: b . -# vector unavailable -.align 5 -int_F20: +# doorbell guest critical +.org 0x2E0 +int_2E0: b . -# vsx unavailable -.align 5 -int_F40: +# hvsc +.org 0x300 +int_300: b . -# facility unavailable -.align 5 -int_F60: +# hvpriv +.org 0x320 +int_320: b . -# facility unavailable hyp -.align 5 -int_F80: +# lrat +.org 0x340 +int_340: b . # ------------------------------------------------------------------------------------------------------------------------------ -# init facilities and memories before blastoff +# initial translation +# both erats: +# 00000000 64K: (rom, BE) +# 00010000 64K: (ram, BE or LE) # +.org 0x400 +boot_start: -.macro load32 rx,v - li \rx,0 - oris \rx,\rx,\v>>16 - ori \rx,\rx,\v&0x0000FFFF -.endm + mfspr r5,tir # who am i? + cmpdi r5,0x00 # skip unless T0 + bne init_t123 + + lis r3,0x8C00 # 32=ecl 36:37=tlbsel (10=i, 11=d) + +# derat 31 @00000000 + li r0,0x001F # entry #31 + li r2,0x0015 # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63 + li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63 + li r8,0x023F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G + + mtspr mmucr0,r3 + eratwe r2,r0,2 + eratwe r4,r0,1 + eratwe r8,r0,0 + isync + + load32 r10,BIOS_ERATW2 # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63 + +# derat 30 @ + li r0,0x001E # entry #30 + load32 r4,BIOS_START # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63 + load32 r8,BIOS_START + ori r8,r8,0x023F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G + + eratwe r10,r0,2 + eratwe r4,r0,1 + eratwe r8,r0,0 + isync + + lis r3,0x8800 # 32=ecl 36:37=tlbsel (10=i, 11=d) + +# ierat 15 @00000000 + li r0,0x000F # entry #15 + li r2,0x003F # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63 + li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63 + li r8,0x023F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G + + mtspr mmucr0,r3 + eratwe r2,r0,2 + eratwe r4,r0,1 + eratwe r8,r0,0 + isync + + # *** leave the init'd entry 14 for MT access to FFFFFFC0 + # ierat 13 @ + li r0,0x000D # entry #13 + load32 r4,BIOS_START # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63 + load32 r8,BIOS_START + ori r8,r8,0x023F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G + + eratwe r10,r0,2 + eratwe r4,r0,1 + eratwe r8,r0,0 + isync + + b init_t0 -.macro load16swiz rx,v - li \rx,0 - ori \rx,\rx,(\v<<8)&0xFF00 - ori \rx,\rx,(\v>>8)&0x00FF -.endm +# ------------------------------------------------------------------------------------------------------------------------------ +# init +# -.macro delayr rx - mtctr \rx - bdnz . -.endm +# T0 -.macro delay rx,v - li \rx,0 - oris \rx,\rx,\v>>16 - ori \rx,\rx,\v&0x0000FFFF - mtctr \rx - bdnz . -.endm +init_t0: -.org 0x1000 -boot_start: +# set up threads +# set thread configuration -######################################################################################################################################## -# sim only - go quickly to main() w/no console output + li r1,THREAD_ENABLES + mtspr tens,r1 # 60:63 = tid 3:0 enabled + not r1,r1 + mtspr tenc,r1 # in case T0 is marked disabled + isync -.ifdef SIM - li r3,0x01 - bl set_leds_b0 - bl uart_init - li r3,0x02 - bl set_leds_b0 - b jump2main -.endif +# set up BIOS msr -######################################################################################################################################## -# clear and init core facilities + load32 r10,BIOS_MSR + mtmsr r10 + isync +# can't use load32 unless you can .set BIOS_STACK_0 to the linked value +# load32 r1,BIOS_STACK_0 # @stack_0 +# this ignores def +# lis r1,_stack_0@h +# ori r1,r1,_stack_0@l +# this requires data load + lwz r1,stack_0(r0) - li r3,0x01 - bl core_init - bl set_leds_b0 # 01; core init'd - delay r10,DELAY + b boot_complete -######################################################################################################################################## -# console +# except T0 -console: +init_t123: - li r3,0x02 # 02; console init - bl set_leds_b0 - bl uart_init - delay r10,DELAY +# set up BIOS msr - li r3,0x03 # 03; console init done - bl set_leds_b0 - delay r10,DELAY + load32 r10,BIOS_MSR + mtmsr r10 + isync + # check tir if more than 2 threads possible + lwz r1,stack_1(r0) - li r3,DATA+MSG_HELLO - bl console_println + b boot_complete -######################################################################################################################################## -# check on-board sram +# ------------------------------------------------------------------------------------------------------------------------------ +boot_complete: -.ifdef TEST_MEM - b test_mem -.endif +# set up thread and hop to it -sram_chk: - lwz r10,sram_lo(r0) - cmpwi r10,-1 - beq ddr_chk - # use syms - lis r10,_fdata@h - ori r10,r10,_fdata@l - #lwz r11,sram_hi(r0) - # use stack top; else have to add sym to linker.ld - lis r11,_fstack@h - ori r11,r11,_fstack@l - addi r11,r11,3 - - subf r11,r10,r11 - addi r11,r11,1 - srwi r11,r11,4 # num word reads - mtctr r11 - - li r12,0 - oris r12,r12,0x0867 - ori r12,r12,0x5309 # data - -sram_writes: - stw r12,0(r10) - addi r10,r10,4 - bdnz sram_writes - # use syms - #lwz r10,sram_lo(r0) - lis r10,_fdata@h - ori r10,r10,_fdata@l - mtctr r11 - -sram_reads: - lwz r13,0(r10) - cmpw r13,r12 - bne fail - addi r10,r10,4 - bdnz sram_reads - - li r3,0x07 # 07; sram checked - bl set_leds_b0 - delay r10,DELAY - - li r3,DATA+MSG_SRAM - bl console_println - -# sram test someday -######################################################################################################################################## -# check ddr, n loops - -#wtf is there a way to disable/enable l2???? - -ddr_chk: - lwz r10,ddr_lo(r0) - cmpwi r10,-1 - beq rominit - - li r3,0x0F # 0F; dram checking - bl set_leds_b0 - li r3,DATA+MSG_DDR_0 - bl console_println - - li r8,0 # loop counter - lwz r9,ddr_chk_loops(r0) - - li r12,0 # data - oris r12,r12,0x6708 - ori r12,r12,0x0953 - -ddr_start: - addi r8,r8,1 - mr r3,r8 - bl set_leds_b1 # running pass - - lwz r10,ddr_lo(r0) - lwz r11,ddr_hi(r0) - addi r11,r11,1 - subf r11,r10,r11 - srwi r11,r11,2 # word r/w - mtctr r11 - -ddr_writes: - stw r12,0(r10) - addi r10,r10,4 - bdnz ddr_writes - - lwz r10,ddr_lo(r0) - mtctr r11 - -ddr_reads: - lwz r13,0(r10) - cmpw r13,r12 - bne ddr_fail_save - addi r10,r10,4 - bdnz ddr_reads - -# loop done - - addi r12,r12,7 # change pattern - cmpwi r9,0 - beq ddr_start - cmpw r8,r9 - bne ddr_start - - li r3,0x0E # 0E; dram OK - bl set_leds_b0 - li r3,0x00 - bl set_leds_b1 - li r3,DATA+MSG_DDR_1 - bl console_println - delay r10,DELAY - -######################################################################################################################################## - -rominit: - - li r3,DATA+MSG_ROM_INIT - bl console_println - -######################################################################################################################################## -# VMA/LMA: copy .data, clear .bss - - # get the linker script symbols needed... - #lis r1,(.TOC.-0)@h - #lis r1,.toc.@h - #lis r6,.got.@h - #lwz r1,_fdata_rom@got(r6) - - lis r1,_fdata_rom@h - ori r1,r1,_fdata_rom@l - lis r2,_fdata@h - ori r2,r2,_fdata@l - lis r3,_edata_rom@h - ori r3,r3,_edata_rom@l - lis r4,_fbss@h - ori r4,r4,_fbss@l - lis r5,_ebss@h - ori r5,r5,_ebss@l - - subf r9,r1,r3 - srwi. r9,r9,2 - beq romcopy_done - mtctr r9 - addi r1,r1,-4 - addi r2,r2,-4 - -romcopy: - lwzu r9,4(r1) - stwu r9,4(r2) - bdnz romcopy - -romcopy_done: - subf r9,r4,r5 - srwi. r9,r9,2 - beq romclear_done - - mtctr r9 - addi r4,r4,-4 - li r9,0 - -romclear: - stwu r9,4(r4) - bdnz romclear - -romclear_done: - -######################################################################################################################################## - -######################################################################################################################################## - -process_start: - - li r3,DATA+MSG_BANNER - bl console_println - -jump2main: - lis r1,_fstack@h - ori r1,r1,_fstack@l - li r3, 0 # parm 1 - b main - -######################################################################################################################################## - -.ifdef TEST_MEM - -.macro asciib rt,rs - andi. \rt,\rs,0x0F - cmpwi \rt,10 - blt +8 - addi \rt,\rt,0x11-10 - addi \rt,\rt,0x30 -.endm + lis r3,main@h + ori r3,r3,main@l + mtctr r3 + mfspr r3,tir # who am i? + bctrl + b kernel_return -.macro println_reg rt - rotlwi \rt,\rt,4 - asciib r3,\rt - bl uart_write - rotlwi \rt,\rt,4 - asciib r3,\rt - bl uart_write - rotlwi \rt,\rt,4 - asciib r3,\rt - bl uart_write - rotlwi \rt,\rt,4 - asciib r3,\rt - bl uart_write - rotlwi \rt,\rt,4 - asciib r3,\rt - bl uart_write - rotlwi \rt,\rt,4 - asciib r3,\rt - bl uart_write - rotlwi \rt,\rt,4 - asciib r3,\rt - bl uart_write - rotlwi \rt,\rt,4 - asciib r3,\rt - bl uart_write - li r3,0x0D - bl uart_write - li r3,0x0A - bl uart_write -.endm +# ------------------------------------------------------------------------------------------------------------------------------ -# running out of space -print_r6: - mflr r0 - println_reg r6 - mtlr r0 - blr - -test_mem: - lis r5,1 # start@- - ori r10,r5,0x40 # end@ - - load32 r6,0x0a0b0c0d - li r3,'W' - bl uart_write - bl print_r6 - - #stw r6,0(r5) - #load32 r6,0 - #stw r6,4(r5) - #stw r6,8(r5) - #stw r6,12(r5) - stb r6,0(r5) - srwi r6,r6,8 - stb r6,5(r5) - srwi r6,r6,8 - stb r6,10(r5) - srwi r6,r6,8 - stb r6,15(r5) - lbz r6,0(r5) - bl print_r6 - lbz r6,1(r5) - bl print_r6 - lbz r6,2(r5) - bl print_r6 - lbz r6,3(r5) - bl print_r6 - lbz r6,4(r5) - bl print_r6 - nop - nop - nop - nop -test_mem_read: - lwz r7,0(r5) - li r3,'R' - bl uart_write - println_reg r7 - addi r5,r5,4 - cmpw r5,r10 - blt test_mem_read - #b . - b sram_chk +.ifdef BIOS_32 +.align 4 +.include "crtsavres.s" +.endif + +.ifdef TST_PASSFAIL +.global tst_pass +.global tst_fail + +.org 0x7F0 +tst_pass: + b . +.org 0x7F4 +tst_fail: + b . .endif -######################################################################################################################################## -# rom: just check high address - could be a crc check - -test_rom: - lwz r20,rom_hi(r0) - li r21,-4 - and r21,r20,r21 - lwz r21,0(r21) - lwz r22,eob_data(r0) - cmpw r21,r22 - li r3,1 - bne fail - bl set_leds - - b pass - -# put data in sram so it can be read from uart -ddr_fail_save: - - lis r1,_fdata@h - ori r1,r1,_fdata@l - - stw r0,0(1) - #stw r1,4(1) - stw r2,8(1) - stw r3,12(1) # loops - stw r4,16(1) - stw r5,20(1) - stw r6,24(1) - stw r7,28(1) - stw r8,32(1) - stw r9,36(1) - stw r10,40(1) # addr - stw r11,44(1) - stw r12,48(1) # exp - stw r13,52(1) # act - stw r14,56(1) - stw r15,60(1) - stw r16,64(1) - stw r17,68(1) - stw r18,72(1) - stw r19,76(1) - stw r20,80(1) - stw r21,84(1) - stw r22,88(1) - stw r23,92(1) - stw r24,96(1) - stw r25,100(1) - stw r26,104(1) - stw r27,108(1) - stw r28,112(1) - stw r29,116(1) - stw r30,120(1) - stw r31,124(1) - - mfcr r31 - stw r31,128(1) # cr - mfctr r31 - stw r31,132(1) # ctr - mflr r31 - stw r31,136(1) # lr - mfspr r31,tar - stw r31,140(1) # tar - li r31,-1 - stw r31,144(1) # error code - - b fail - -console_echo: - - mflr r0 - - lwz r5,sram_lo(r0) # buffer start - mr r6,r5 # buffer ptr - -console_echo_1: - bl uart_read_nonblock # this could just be uart_read() unless want to do something else while waiting - cmpwi r3, 0 - beq console_echo_1 - bl uart_read - - cmpwi r3,0x0A # lf - beq console_echo_2 - cmpwi r3,0x0D # cr - beq console_echo_2 - stb r3,0(6) - addi r6,r6,1 - bl uart_write - b console_echo_1 - -console_echo_2: -# print back the whole line surrounded by <> - subf r3,r5,r6 - mtctr r3 - li r3,0x0D # cr - bl uart_write - li r3,0x0A # lf - bl uart_write - li r3,0x3C # < - bl uart_write - mr r6,r5 # start of buffer - -console_echo_3: - lbz r3,0(6) - bl uart_write - addi r6,r6,1 - bdnz console_echo_3 - - li r3,0x3E # > - bl uart_write - li r3,0x0D # cr - bl uart_write - li r3,0x0A # lf - bl uart_write - mr r6,r5 # start of buffer - b console_echo_1 - - mtlr r0 - blr - -console_print: - - mflr r0 - mr r5,r3 # buffer ptr - -console_print_1: - lbz r3,0(5) - cmpwi r3,0 - beq console_print_2 - bl uart_write - addi r5,r5,1 - bdnz console_print_1 - -console_print_2: - mtlr r0 - blr - -console_println: - mflr r0 - mr r5,r3 # buffer ptr - -console_println_1: - lbz r3,0(5) - cmpwi r3,0 - beq console_println_2 - bl uart_write - addi r5,r5,1 - bdnz console_println_1 - -console_println_2: - li r3,0x0D # cr - bl uart_write - li r3,0x0A # lf - bl uart_write - - mtlr r0 - blr - -.org 0x1800 - -pass: - mflr r0 - li r3,0x01C0 - bl set_leds - b . - -.align 6 -# fail w/generic code, or specify -fail: - li r3,0x6666 -fail_rc: - mflr r0 - bl set_leds -fail_no_rc: - b . - -.align 6 -# set up everything that isn't reset; not really needed for fpga -core_init: - blr - -# leds 15:0 -get_leds: - lwz r1,leds(r0) - lhz r3,0(1) - blr - -set_leds: - lwz r1,leds(r0) - sth r3,0(1) - blr - -# litex csr don't obey sel!?!?! -set_leds_b0: - lwz r1,leds(r0) - #stb r3,0(1) - lhz r2,0(1) # 0011 - andi. r2,r2,0x00FF - slwi r3,r3,8 - or r2,r2,r3 - sth r2,0(1) # 0011 - blr - -set_leds_b1: - lwz r1,leds(r0) - lhz r2,0(1) # 0011 - andi. r2,r2,0xFF00 - andi. r3,r3,0x00FF - or r2,r2,r3 - sth r2,0(1) # 0011 - blr - -.align 6 - -.set UART_EV_TX, 0x1 -.set UART_EV_RX, 0x2 - -uart_init: - lwz r2, uart(r0) - lbz r1, UART_EV_PENDING(r2) - stb r1, UART_EV_PENDING(r2) - li r1, UART_EV_TX | UART_EV_RX - stb r1, UART_EV_ENABLE(r2) - blr - - -uart_read: - lwz r2, uart(r0) - lbz r1, UART_RXEMPTY(r2) - cmpwi r1,0 - bne uart_read - lbz r3, UART_RXTX(r2) - li r1, UART_EV_RX - stb r1, UART_EV_PENDING(r2) - blr - -uart_read_nonblock: - lwz r2, uart(r0) - li r3,0 - lbz r1, UART_RXEMPTY(r2) - cmpw r1,r3 - bne uart_read_nonblock_1 - li r3,1 -uart_read_nonblock_1: - blr - -uart_write: - lwz r2, uart(r0) - lbz r1, UART_TXFULL(r2) - cmpwi r1,0 - bne uart_write - stb r3, UART_RXTX(r2) - li r1, UART_EV_TX - stb r1, UART_EV_PENDING(r2) - blr - -uart_sync: - lwz r2, uart(r0) - lbz r1, UART_TXFULL(r2) - cmpwi r1,0 - bne uart_sync - blr - -.org 0x1C00 -.set DATA, 0x1C00 - -msg_hello: - .byte 0x0D - .byte 0x0A - .ascii "A2P POWAflight" - .byte 0x0D - .byte 0x0A - .asciz "" - -.align 5 -msg_sram: - .ascii "SRAM OK." - .asciz "" - - -.align 5 -msg_ddr_0: - .ascii "SDRAM TEST..." - .asciz "" - -.align 5 -.msg_ddr_1: - .ascii "SDRAM OK " - .ascii "@10000000:" - .asciz "17FFFFFF" - -.align 5 -.msg_rom: - .ascii "Copying" - .ascii " ROM to" - .asciz " RAM..." - -.align 5 -.msg_banner: -#.include "banner.s" - .ascii "Jumping to" - .asciz " main()..." - -.set MSG_HELLO, 0 -.set MSG_SRAM, MSG_HELLO+32 -.set MSG_DDR_0, MSG_SRAM+32 -.set MSG_DDR_1, MSG_DDR_0+32 -.set MSG_ROM_INIT, MSG_DDR_1+32 -.set MSG_BANNER, MSG_ROM_INIT+32 +.org 0x7FC +kernel_return: + b . + +# dec +.org 0x800 +int_800: + b . + +# perf +.org 0x820 +int_820: + b . +.org 0x8F0 +.section .rodata +stack_0: .long BIOS_STACK_0 +stack_1: .long BIOS_STACK_1 diff --git a/dev/build/litex/a2o/crtsavres.s b/dev/build/litex/a2o/crtsavres.s new file mode 100644 index 0000000..c905acd --- /dev/null +++ b/dev/build/litex/a2o/crtsavres.s @@ -0,0 +1,85 @@ +# save/restore for 32b libc + +.macro GLOBAL n + .type \n,@function + .global \n +\n: +.endm + +# saves + +GLOBAL _savegpr_31 +GLOBAL _save32gpr_31 + stw 31,-4(11) + blr + +# restores + +GLOBAL _restgpr_16_x +GLOBAL _rest32gpr_16_x + lwz 16,-64(11) + +GLOBAL _restgpr_17_x +GLOBAL _rest32gpr_17_x + lwz 17,-60(11) + +GLOBAL _restgpr_18_x +GLOBAL _rest32gpr_18_x + lwz 18,-56(11) + +GLOBAL _restgpr_19_x +GLOBAL _rest32gpr_19_x + lwz 19,-52(11) + +GLOBAL _restgpr_20_x +GLOBAL _rest32gpr_20_x + lwz 20,-48(11) + +GLOBAL _restgpr_21_x +GLOBAL _rest32gpr_21_x + lwz 21,-44(11) + +GLOBAL _restgpr_22_x +GLOBAL _rest32gpr_22_x + lwz 22,-40(11) + +GLOBAL _restgpr_23_x +GLOBAL _rest32gpr_23_x + lwz 23,-36(11) + +GLOBAL _restgpr_24_x +GLOBAL _rest32gpr_24_x + lwz 24,-32(11) + +GLOBAL _restgpr_25_x +GLOBAL _rest32gpr_25_x + lwz 25,-28(11) + +GLOBAL _restgpr_26_x +GLOBAL _rest32gpr_26_x + lwz 26,-24(11) + +GLOBAL _restgpr_27_x +GLOBAL _rest32gpr_27_x + lwz 27,-20(11) + +GLOBAL _restgpr_28_x +GLOBAL _rest32gpr_28_x + lwz 28,-16(11) + +GLOBAL _restgpr_29_x +GLOBAL _rest32gpr_29_x + lwz 29,-12(11) + +GLOBAL _restgpr_30_x +GLOBAL _rest32gpr_30_x + lwz 30,-8(11) + +GLOBAL _restgpr_31_x +GLOBAL _rest32gpr_31_x + lwz 0,4(11) + lwz 31,-4(11) + mtlr 0 + mr 1,11 + blr + diff --git a/dev/build/litex/a2o_32.py b/dev/build/litex/a2o_32.py new file mode 100755 index 0000000..4954241 --- /dev/null +++ b/dev/build/litex/a2o_32.py @@ -0,0 +1,223 @@ +#!/usr/bin/python3 + +# A2O Test (32BE) +# a2o_32.py --csr-csv csr.csv --no-compile-software +# a2o_32.py --csr-csv csr.csv --no-compile-software --build [--sys-clk-freq 50e6] +# + +import os +import argparse + +from migen import * + +# wtf - use local platform +from platforms import cmod7 +from platforms import cmod7_kintex + +# wtf - use local core (not built into litex) +# help python find package +# not needed anymore +#import sys +#binPath = os.path.dirname(os.path.realpath(__file__)) +#sys.path.append(os.path.join(binPath, 'a2o')) # dir with core package; core.py defines core source location +# get core def +from a2o import A2O +# add to litex dict +from litex.soc.cores import cpu +cpu.CPUS['a2o'] = A2O + +from litex.soc.cores.clock import * +from litex.soc.integration.soc import SoCRegion +from litex.soc.integration.soc_core import * +from litex.soc.integration.builder import * + +from litex.soc.cores.led import LedChaser +from litex.soc.cores import dna, xadc +from litex.soc.cores.gpio import GPIOIn +from litex.soc.cores.gpio import GPIOOut +from litex.soc.cores.bitbang import I2CMaster + +from litex.soc.interconnect import wishbone + +from litex.soc.cores import uart +from litex.soc.cores.uart import UART +from litex.soc.cores.uart import UARTPHY +from litex.soc.cores.uart import UARTWishboneBridge +from litescope import LiteScopeAnalyzer + +# CRG ---------------------------------------------------------------------------------------------- + +class _CRG(Module): + def __init__(self, platform, sys_clk_freq): + self.rst = Signal() + self.clock_domains.cd_sys = ClockDomain() + self.clock_domains.cd_sys2x = ClockDomain(reset_less=True) + self.clock_domains.cd_idelay = ClockDomain() + + self.submodules.pll = pll = S7MMCM(speedgrade=-1) + #wtf how do you add btn to reset sig? + #x = platform.request('user_btn',0) + self.comb += pll.reset.eq(self.rst) + #self.comb += pll.reset.eq(self.rst) + pll.register_clkin(platform.request('clk12'), 12e6) + pll.create_clkout(self.cd_sys, sys_clk_freq) + pll.create_clkout(self.cd_sys2x, 2*sys_clk_freq) + pll.create_clkout(self.cd_idelay, 200e6) + platform.add_false_path_constraints(self.cd_sys.clk, pll.clkin) # Ignore sys_clk to pll.clkin path created by SoC's rst. + + self.submodules.idelayctrl = S7IDELAYCTRL(self.cd_idelay) + +def _to_signal(obj): + return obj.raw_bits() if isinstance(obj, Record) else obj + +class BaseSoC(SoCCore): + + def __init__(self, sys_clk_freq=int(50e6), + with_analyzer=False, + uart_baudrate=115200, + **kwargs): + + coreUART = True + #romSize = 128*1024 + #ramSize = 128*1024 + romSize = 64 * 1024; + ramSize = 64 * 1024; + ddrSize = 16*1024*1024 + + + # try build using different fpga's + #platform = cmod7.Platform() + #platform = cmod7.Platform(fpga='xc7a200t-SBG484-1') # arty-200 + #platform = cmod7_kintex.Platform(fpga='xc7k325t-ffv676-1 ) # kintex-325 + platform = cmod7_kintex.Platform(fpga='xc7k410t-ffv676-1') # kintex-410 + + SoCCore.__init__(self, platform, sys_clk_freq, csr_data_width=32, + #with_uart=coreUART, integrated_rom_size=romSize, integrated_sram_size=ramSize, don't set rom/ram if doing it below!!!!! + with_uart=coreUART, integrated_rom_size=0, integrated_sram_size=0, + ident='A2O', ident_version=True, uart_baudrate=uart_baudrate, + cpu_type='a2o', cpu_variant='WB_32BE') + + print(f'Building variant={self.cpu.variant}.') + + # no irq yet, but should be able to connect; need irq handler in crt0.s + self.add_constant('UART_POLLING') + + # this appears to be how to set up fixed csr order but not sure it works this way. https://github.com/litex-hub/linux-on-litex-vexriscv/blob/master/soc_linux.py + #SoCCore.csr_map + #self.csr_map = {**SoCCore.csr_map, **{ + #self.csr_map = { + # 'ctrl': 0, + # 'dna' : 1, + # 'uart': 2, + # 'i2c': 3, + # 'leds': 4 + #}} + #interrupt_map = {**soc_cls.interrupt_map, **{ + # 'uart': 0, + # 'timer0': 1, + #}} + self.mem_map = { + 'rom': 0x00000000, + 'ram': 0x00010000, + 'main_ram': 0x01000000, + 'csr': 0xFFF00000 + } + + # CRG -------------------------------------------------------------------------------------- + self.submodules.crg = _CRG(platform, sys_clk_freq) + + if not coreUART: + self.submodules.serial_bridge = UARTWishboneBridge(platform.request('serial'), sys_clk_freq) + self.add_wb_master(self.serial_bridge.wishbone) + + self.add_csr('node_ctl') + self.add_csr('node_config') + self.add_csr('node_status') + + # ON-BOARD MEM ------------------------------------------------------------------------------ + + with open('rom.init', 'r') as file: + hexdata = file.read().replace('\n', '') + + #a2o how will this work for a2o? should allow 32BE or 64LE to load kernel+bios + # 1. core resets to 32BE + # 2. probably want to link kernel+bios in same mode, so have kernel deal with possible mode switch + # 3. load mem here in proper mode based on variant (A2O_32BE or A2O64_LE) + + outFile = open('mem_init', 'w') # write data immediately so available even if not building (sim) + # this seems to work (specified in BE in rom.init, instructions are decoded properly) + # BUT, vivado wants each line to be 4B to match width (at least for sim) + bytedata = [] + for i in range(0, len(hexdata), 8): + data = int(hexdata[i+6:i+8] + hexdata[i+4:i+6] + hexdata[i+2:i+4] + hexdata[i:i+2], 16) # BE->LE + bytedata.append(data) + outFile.write(hexdata[i+6:i+8] + hexdata[i+4:i+6] + hexdata[i+2:i+4] + hexdata[i:i+2] + '\n') + #bytedata.append(int(hexdata[i:i+2] + hexdata[i+2:i+4] + hexdata[i+4:i+6] + hexdata[i+6:i+8], 16)) + romdata = bytedata + print('Read ' + str(len(romdata)) + ' bytes for ROM data.') + outFile.close() + print('Wrote mem.init') + + self.add_rom('rom', origin=self.mem_map['rom'], size=romSize, contents=romdata) # name, origin, size, contents=[], mode='r' + # make this sram to match what linker expects + self.add_ram('sram', origin=self.mem_map['ram'], size=ramSize) # name, origin, size, contents=[], mode='rw' + + # External Mem ----------------------------------------------------------------------------- + self.add_ram('main_ram', origin=self.mem_map['main_ram'], size=ddrSize) + + # Leds ------------------------------------------------------------------------------------- + self.submodules.leds = LedChaser( + pads = platform.request_all('user_led'), + sys_clk_freq = sys_clk_freq + ) + self.add_csr('leds') + + # Buttons + self.submodules.buttons = GPIOIn( + pads = platform.request_all('user_btn') + ) + self.add_csr('buttons') + + # Analyzer --------------------------------------------------------------------------------- + if with_analyzer: + analyzer_signals = [ + self.cpu.wb_stb, + self.cpu.wb_cyc, + self.cpu.wb_adr, + self.cpu.wb_we, + self.cpu.wb_ack, + self.cpu.wb_sel, + self.cpu.wb_datw, + self.cpu.wb.datr, + ] + self.submodules.analyzer = LiteScopeAnalyzer(analyzer_signals, + depth = 512, + clock_domain = 'sys', + csr_csv = 'analyzer.csv') + self.add_csr('analyzer') + + + +# Build -------------------------------------------------------------------------------------------- + +def main(): + + parser = argparse.ArgumentParser(description='A2O Test') + parser.add_argument('--build', action='store_true', help='Build bitstream') + parser.add_argument('--load', action='store_true', help='Load bitstream') + parser.add_argument('--sys-clk-freq', default=100e6, help='System clock frequency (default: 100MHz)') + parser.add_argument('--with-analyzer', action='store_true', help='Include analyzer') + + builder_args(parser) + args = parser.parse_args() + + soc = BaseSoC( + sys_clk_freq = int(float(args.sys_clk_freq)), + with_analyzer = args.with_analyzer, + ) + + builder = Builder(soc, **builder_argdict(args)) + builder.build(run=args.build) + +if __name__ == '__main__': + main() diff --git a/dev/build/litex/a2o_32.txt b/dev/build/litex/a2o_32.txt new file mode 100644 index 0000000..c1c7d0e --- /dev/null +++ b/dev/build/litex/a2o_32.txt @@ -0,0 +1,1050 @@ +Building variant=WB_32BE. +Read 3790 bytes for ROM data. +Wrote mem.init +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libc' +if [ -d "/data/projects/litex/litex/soc/software/libc/powerpc" ]; then \ + cp /data/projects/litex/litex/soc/software/libc/powerpc/* /home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/machine/powerpc/ ;\ +fi +meson /home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data \ + -Dmultilib=false \ + -Dpicocrt=false \ + -Datomic-ungetc=false \ + -Dthread-local-storage=false \ + -Dio-long-long=true \ + -Dformat-default=integer \ + -Dincludedir=picolibc/powerpc-linux-gnu/include \ + -Dlibdir=picolibc/powerpc-linux-gnu/lib \ + --cross-file cross.txt +WARNING: Unknown CPU family powerpc, please report this at https://github.com/mesonbuild/meson/issues/new +The Meson build system +Version: 0.63.1 +Source dir: /home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data +Build dir: /data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libc +Build type: cross build +Project name: picolibc +Project version: 1.7.3 +C compiler for the host machine: powerpc-linux-gnu-gcc (gcc 9.4.0 "powerpc-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0") +C linker for the host machine: powerpc-linux-gnu-gcc ld.bfd 2.34 +C compiler for the build machine: ccache cc (gcc 9.4.0 "cc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0") +C linker for the build machine: cc ld.bfd 2.34 +Build machine cpu family: x86_64 +Build machine cpu: x86_64 +Host machine cpu family: powerpc +Host machine cpu: a2o +Target machine cpu family: powerpc +Target machine cpu: a2o +Checking if "long double check" compiles: YES +Checking if "long double same as double" compiles: NO +Checking if "long double mantissa is 64 bits" compiles: NO +Checking if "long double mantissa is 113 bits" compiles: NO +Compiler for C supports arguments -fno-stack-protector: YES +Compiler for C supports arguments -fno-common: YES +Compiler for C supports arguments -frounding-math: YES +Program powerpc-linux-gnu-gcc-nm found: YES +Program scripts/duplicate-names found: YES (/home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/scripts/duplicate-names) +Compiler for C supports link arguments -Wl,--defsym=_start=0: YES +Compiler for C supports link arguments -Wl,-alias,main,testalias: NO +Compiler for C supports function attribute alias: YES +Compiler for C supports function attribute format: YES +WARNING: You should add the boolean check kwarg to the run_command call. + It currently defaults to false, + but it will default to true in future releases of meson. + See also: https://github.com/mesonbuild/meson/issues/9300 +Configuring picolibc.specs using configuration +Configuring picolibcpp.specs using configuration +Configuring test.specs using configuration +Configuring picolibc.ld using configuration +Configuring picolibcpp.ld using configuration +Compiler for C supports arguments -Werror=implicit-function-declaration: YES +Compiler for C supports arguments -Werror=vla: YES +Compiler for C supports arguments -Warray-bounds: YES +Compiler for C supports arguments -Wold-style-definition: YES +Compiler for C supports arguments -Wno-missing-braces: YES +Compiler for C supports arguments -Wno-implicit-int: YES +Compiler for C supports arguments -Wno-return-type: YES +Compiler for C supports arguments -Wno-unused-command-line-argument: NO +Checking if "packed structs may contain bitfields" compiles: YES +Checking if "has __builtin_mul_overflow" : links: YES +Checking if "supports _Complex" compiles: YES +Checking if "has __builtin_expect" : links: YES +Compiler for C supports arguments -Werror: YES +Checking if "attribute __alloc_size__" compiles: NO +Compiler for C supports arguments -Werror: YES (cached) +Checking if "attributes constructor/destructor" compiles: YES +Checking if "test for __builtin_alloca" : links: YES +Checking if "test for __builtin_ffs" : links: YES +Checking if "test for __builtin_ffsl" : links: YES +Checking if "test for __builtin_ffsll" : links: YES +Checking if "test for __builtin_ctz" : links: YES +Checking if "test for __builtin_ctzl" : links: YES +Checking if "test for __builtin_ctzll" : links: YES +Checking if "test for __builtin_copysignl" : links: YES +Checking if "test for __builtin_copysign" : links: YES +Checking if "test for __builtin_isinfl" : links: YES +Checking if "test for __builtin_isinf" : links: YES +Checking if "test for __builtin_isnanl" : links: YES +Checking if "test for __builtin_isnan" : links: YES +Checking if "test for __builtin_finitel" : links: YES +Checking if "test for __builtin_isfinite" : links: YES +Compiler for C supports arguments -fno-tree-loop-distribute-patterns: YES +Compiler for C supports arguments -Werrror=attributes: NO +Checking if "no_builtin attribute" compiles: NO +Compiler for C supports arguments -fno-builtin: YES +Compiler for C supports arguments -ffunction-sections: YES +Compiler for C supports arguments -fstack-protector-all: YES +Compiler for C supports arguments -fstack-protector-strong: YES +Compiler for C supports arguments -fno-builtin-malloc: YES +Compiler for C supports arguments -fno-builtin-free: YES +Message: libm/fenv/feclearexcept.c: machine overrides generic +Message: libm/fenv/fedisableexcept.c: machine overrides generic +Message: libm/fenv/feenableexcept.c: machine overrides generic +Message: libm/fenv/fegetenv.c: machine overrides generic +Message: libm/fenv/fegetexcept.c: machine overrides generic +Message: libm/fenv/fegetexceptflag.c: machine overrides generic +Message: libm/fenv/fegetround.c: machine overrides generic +Message: libm/fenv/feholdexcept.c: machine overrides generic +Message: libm/fenv/feraiseexcept.c: machine overrides generic +Message: libm/fenv/fesetenv.c: machine overrides generic +Message: libm/fenv/fesetexceptflag.c: machine overrides generic +Message: libm/fenv/fesetround.c: machine overrides generic +Message: libm/fenv/fetestexcept.c: machine overrides generic +Message: libm/fenv/feupdateenv.c: machine overrides generic +Configuring picolibc.h using configuration +Build targets in project: 7 +NOTICE: Future-deprecated features used: + * 0.58.0: {'meson.get_cross_property'} + +picolibc 1.7.3 + + User defined options + Cross files : cross.txt + includedir : picolibc/powerpc-linux-gnu/include + libdir : picolibc/powerpc-linux-gnu/lib + atomic-ungetc : false + format-default : integer + io-long-long : true + multilib : false + picocrt : false + thread-local-storage: false + +Found ninja-1.10.2.git.kitware.jobserver-1 at /home/wtf/.local/bin/ninja +meson compile +[1/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-cfree.c.o +[2/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-calloc.c.o +[3/795] Compiling C object newlib/libc.a.p/libc_ctype_towlower.c.o +[4/795] Compiling C object dummyhost/libdummyhost.a.p/iob.c.o +[5/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-mallinfo.c.o +[6/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-mallopt.c.o +[7/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-malloc_stats.c.o +[8/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-malloc_usable_size.c.o +[9/795] Linking static target dummyhost/libdummyhost.a +[10/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-free.c.o +[11/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-pvalloc.c.o +[12/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-memalign.c.o +[13/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-realloc.c.o +[14/795] Compiling C object newlib/libc.a.p/libc_argz_argz_add_sep.c.o +[15/795] Compiling C object newlib/libc/string/libstrcmp.a.p/strcmp.c.o +[16/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-malloc.c.o +[17/795] Compiling C object newlib/libc/stdlib/libstdlib_malloc.a.p/nano-malloc-valloc.c.o +[18/795] Compiling C object newlib/libc.a.p/libc_argz_argz_append.c.o +[19/795] Compiling C object newlib/libc.a.p/libc_argz_argz_add.c.o +[20/795] Compiling C object newlib/libc.a.p/libc_machine_powerpc_setjmp.S.o +[21/795] Linking static target newlib/libc/string/libstrcmp.a +[22/795] Compiling C object newlib/libc.a.p/libc_argz_argz_delete.c.o +[23/795] Linking static target newlib/libc/stdlib/libstdlib_malloc.a +[24/795] Compiling C object newlib/libc.a.p/libc_argz_argz_extract.c.o +[25/795] Compiling C object newlib/libc.a.p/libc_argz_argz_count.c.o +[26/795] Compiling C object newlib/libc.a.p/libc_argz_argz_create.c.o +[27/795] Linking static target newlib/libc/libcpart.a +[28/795] Compiling C object newlib/libc.a.p/libc_argz_argz_next.c.o +[29/795] Compiling C object newlib/libc.a.p/libc_argz_argz_create_sep.c.o +[30/795] Compiling C object newlib/libc.a.p/libc_argz_envz_get.c.o +[31/795] Compiling C object newlib/libc.a.p/libc_argz_argz_insert.c.o +[32/795] Compiling C object newlib/libc.a.p/libc_argz_envz_remove.c.o +[33/795] Compiling C object newlib/libc.a.p/libc_argz_buf_findstr.c.o +[34/795] Compiling C object newlib/libc.a.p/libc_argz_argz_stringify.c.o +[35/795] Compiling C object newlib/libc.a.p/libc_argz_envz_strip.c.o +[36/795] Compiling C object newlib/libc.a.p/libc_argz_envz_add.c.o +[37/795] Compiling C object newlib/libc.a.p/libc_argz_envz_entry.c.o +[38/795] Compiling C object newlib/libc.a.p/libc_argz_argz_replace.c.o +[39/795] Compiling C object newlib/libc.a.p/libc_ctype_ctype_.c.o +[40/795] Compiling C object newlib/libc.a.p/libc_argz_envz_merge.c.o +[41/795] Compiling C object newlib/libc.a.p/libc_ctype_isblank.c.o +[42/795] Compiling C object newlib/libc.a.p/libc_ctype_categories.c.o +[43/795] Compiling C object newlib/libc.a.p/libc_ctype_isalnum.c.o +[44/795] Compiling C object newlib/libc.a.p/libc_ctype_isascii.c.o +[45/795] Compiling C object newlib/libc.a.p/libc_ctype_isalnum_l.c.o +[46/795] Compiling C object newlib/libc.a.p/libc_ctype_isascii_l.c.o +[47/795] Compiling C object newlib/libc.a.p/libc_ctype_isalpha_l.c.o +[48/795] Compiling C object newlib/libc.a.p/libc_ctype_isblank_l.c.o +[49/795] Compiling C object newlib/libc.a.p/libc_ctype_iscntrl_l.c.o +[50/795] Compiling C object newlib/libc.a.p/libc_ctype_iscntrl.c.o +[51/795] Compiling C object newlib/libc.a.p/libc_ctype_islower.c.o +[52/795] Compiling C object newlib/libc.a.p/libc_ctype_isalpha.c.o +[53/795] Compiling C object newlib/libc.a.p/libc_ctype_isdigit_l.c.o +[54/795] Compiling C object newlib/libc.a.p/libc_ctype_isdigit.c.o +[55/795] Compiling C object newlib/libc.a.p/libc_ctype_islower_l.c.o +[56/795] Compiling C object newlib/libc.a.p/libc_ctype_isprint.c.o +[57/795] Compiling C object newlib/libc.a.p/libc_ctype_isspace.c.o +[58/795] Compiling C object newlib/libc.a.p/libc_ctype_isprint_l.c.o +[59/795] Compiling C object newlib/libc.a.p/libc_ctype_isupper_l.c.o +[60/795] Compiling C object newlib/libc.a.p/libc_ctype_ispunct.c.o +[61/795] Compiling C object newlib/libc.a.p/libc_ctype_ispunct_l.c.o +[62/795] Compiling C object newlib/libc.a.p/libc_ctype_isupper.c.o +[63/795] Compiling C object newlib/libc.a.p/libc_ctype_iswalnum.c.o +[64/795] Compiling C object newlib/libc.a.p/libc_ctype_isspace_l.c.o +[65/795] Compiling C object newlib/libc.a.p/libc_ctype_iswalnum_l.c.o +[66/795] Compiling C object newlib/libc.a.p/libc_ctype_iswalpha.c.o +[67/795] Compiling C object newlib/libc.a.p/libc_ctype_iswblank.c.o +[68/795] Compiling C object newlib/libc.a.p/libc_ctype_iswalpha_l.c.o +[69/795] Compiling C object newlib/libc.a.p/libc_ctype_iswcntrl_l.c.o +[70/795] Compiling C object newlib/libc.a.p/libc_ctype_iswctype.c.o +[71/795] Compiling C object newlib/libc.a.p/libc_ctype_iswcntrl.c.o +[72/795] Compiling C object newlib/libc.a.p/libc_ctype_iswdigit.c.o +[73/795] Compiling C object newlib/libc.a.p/libc_ctype_iswblank_l.c.o +[74/795] Compiling C object newlib/libc.a.p/libc_ctype_iswgraph.c.o +[75/795] Compiling C object newlib/libc.a.p/libc_ctype_iswgraph_l.c.o +[76/795] Compiling C object newlib/libc.a.p/libc_ctype_iswdigit_l.c.o +[77/795] Compiling C object newlib/libc.a.p/libc_ctype_iswctype_l.c.o +[78/795] Compiling C object newlib/libc.a.p/libc_ctype_iswlower.c.o +[79/795] Compiling C object newlib/libc.a.p/libc_ctype_iswprint.c.o +[80/795] Compiling C object newlib/libc.a.p/libc_ctype_iswspace.c.o +[81/795] Compiling C object newlib/libc.a.p/libc_ctype_iswpunct.c.o +[82/795] Compiling C object newlib/libc.a.p/libc_ctype_iswlower_l.c.o +[83/795] Compiling C object newlib/libc.a.p/libc_ctype_iswprint_l.c.o +[84/795] Compiling C object newlib/libc.a.p/libc_ctype_iswpunct_l.c.o +[85/795] Compiling C object newlib/libc.a.p/libc_ctype_iswupper.c.o +[86/795] Compiling C object newlib/libc.a.p/libc_ctype_iswupper_l.c.o +[87/795] Compiling C object newlib/libc.a.p/libc_ctype_iswxdigit_l.c.o +[88/795] Compiling C object newlib/libc.a.p/libc_ctype_isxdigit.c.o +[89/795] Compiling C object newlib/libc.a.p/libc_ctype_iswspace_l.c.o +[90/795] Compiling C object newlib/libc.a.p/libc_ctype_iswxdigit.c.o +[91/795] Compiling C object newlib/libc.a.p/libc_ctype_toascii_l.c.o +[92/795] Compiling C object newlib/libc.a.p/libc_ctype_toascii.c.o +[93/795] Compiling C object newlib/libc.a.p/libc_ctype_jp2uc.c.o +[94/795] Compiling C object newlib/libc.a.p/libc_ctype_isxdigit_l.c.o +[95/795] Compiling C object newlib/libc.a.p/libc_ctype_toupper.c.o +[96/795] Compiling C object newlib/libc.a.p/libc_ctype_tolower_l.c.o +[97/795] Compiling C object newlib/libc.a.p/libc_ctype_tolower.c.o +[98/795] Compiling C object newlib/libc.a.p/libc_ctype_toupper_l.c.o +[99/795] Compiling C object newlib/libc.a.p/libc_ctype_towctrans.c.o +[100/795] Compiling C object newlib/libc.a.p/libc_signal_psignal.c.o +[101/795] Compiling C object newlib/libc.a.p/libc_ctype_towupper_l.c.o +[102/795] Compiling C object newlib/libc.a.p/libc_ctype_wctrans_l.c.o +[103/795] Compiling C object newlib/libc.a.p/libc_ctype_towctrans_l.c.o +[104/795] Compiling C object newlib/libc.a.p/libc_ctype_towlower_l.c.o +[105/795] Compiling C object newlib/libc.a.p/libc_ctype_wctrans.c.o +[106/795] Compiling C object newlib/libc.a.p/libc_ctype_towupper.c.o +[107/795] Compiling C object newlib/libc.a.p/libc_errno_errno.c.o +[108/795] Compiling C object newlib/libc.a.p/libc_ctype_wctype_l.c.o +[109/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_cesbi.c.o +[110/795] Compiling C object newlib/libc.a.p/libc_ctype_wctype.c.o +[111/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_table-pcs.c.o +[112/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_ucs-2-internal.c.o +[113/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_ucs-4.c.o +[114/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_ucs-2.c.o +[115/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_ucs-4-internal.c.o +[116/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_ccsbi.c.o +[117/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_us-ascii.c.o +[118/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_euc.c.o +[119/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_table.c.o +[120/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_cp775.c.o +[121/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_utf-16.c.o +[122/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_cns11643_plane14.c.o +[123/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_cp850.c.o +[124/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_cp852.c.o +[125/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_cp855.c.o +[126/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_cns11643_plane2.c.o +[127/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_13.c.o +[128/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_11.c.o +[129/795] Compiling C object newlib/libc.a.p/libc_iconv_ces_utf-8.c.o +[130/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_10.c.o +[131/795] Compiling C object newlib/libc.a.p/libc_stdlib_mbsrtowcs.c.o +[132/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_cns11643_plane1.c.o +[133/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_cp866.c.o +[134/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_2.c.o +[135/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_15.c.o +[136/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_big5.c.o +[137/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_4.c.o +[138/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_14.c.o +[139/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_3.c.o +[140/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_1.c.o +[141/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_5.c.o +[142/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_6.c.o +[143/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_8.c.o +[144/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_9.c.o +[145/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_ir_111.c.o +[146/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_jis_x0201_1976.c.o +[147/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_koi8_uni.c.o +[148/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1250.c.o +[149/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_iso_8859_7.c.o +[150/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_koi8_u.c.o +[151/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_jis_x0208_1990.c.o +[152/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_koi8_ru.c.o +[153/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_koi8_r.c.o +[154/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1251.c.o +[155/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1254.c.o +[156/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1252.c.o +[157/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_jis_x0212_1990.c.o +[158/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1253.c.o +[159/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1256.c.o +[160/795] Compiling C object newlib/libc.a.p/libc_iconv_lib_aliasesbi.c.o +[161/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1255.c.o +[162/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1258.c.o +[163/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_win_1257.c.o +[164/795] Compiling C object newlib/libc.a.p/libc_iconv_ccs_ksx1001.c.o +[165/795] Compiling C object newlib/libc.a.p/libc_iconv_lib_iconvnls.c.o +[166/795] Compiling C object newlib/libc.a.p/libc_iconv_lib_nullconv.c.o +[167/795] Compiling C object newlib/libc.a.p/libc_iconv_lib_aliasesi.c.o +[168/795] Compiling C object newlib/libc.a.p/libc_misc_lock.c.o +[169/795] Compiling C object newlib/libc.a.p/libc_misc_fini.c.o +[170/795] Compiling C object newlib/libc.a.p/libc_misc_unctrl.c.o +[171/795] Compiling C object newlib/libc.a.p/libc_iconv_lib_iconv.c.o +[172/795] Compiling C object newlib/libc.a.p/libc_misc_ffs.c.o +[173/795] Compiling C object newlib/libc.a.p/libc_misc_init.c.o +[174/795] Compiling C object newlib/libc.a.p/libc_posix_dirname.c.o +[175/795] Compiling C object newlib/libc.a.p/libc_posix_basename.c.o +[176/795] Compiling C object newlib/libc.a.p/libc_iconv_lib_ucsconv.c.o +[177/795] Compiling C object newlib/libc.a.p/libc_misc___dprintf.c.o +[178/795] Compiling C object newlib/libc.a.p/libc_search_bsearch.c.o +[179/795] Compiling C object newlib/libc.a.p/libc_posix_regfree.c.o +[180/795] Compiling C object newlib/libc.a.p/libc_posix_regerror.c.o +[181/795] Compiling C object newlib/libc.a.p/libc_posix_fnmatch.c.o +[182/795] Compiling C object newlib/libc.a.p/libc_search_hash_log2.c.o +[183/795] Compiling C object newlib/libc.a.p/libc_search_hash_buf.c.o +[184/795] Compiling C object newlib/libc.a.p/libc_search_hcreate.c.o +[185/795] Compiling C object newlib/libc.a.p/libc_search_hash_func.c.o +[186/795] Compiling C object newlib/libc.a.p/libc_search_hcreate_r.c.o +[187/795] Compiling C object newlib/libc.a.p/libc_search_bsd_qsort_r.c.o +[188/795] Compiling C object newlib/libc.a.p/libc_search_tdelete.c.o +[189/795] Compiling C object newlib/libc.a.p/libc_search_tfind.c.o +[190/795] Compiling C object newlib/libc.a.p/libc_search_qsort.c.o +[191/795] Compiling C object newlib/libc.a.p/libc_search_hash.c.o +[192/795] Compiling C object newlib/libc.a.p/libc_search_tdestroy.c.o +[193/795] Compiling C object newlib/libc.a.p/libc_search_tsearch.c.o +[194/795] Compiling C object newlib/libc.a.p/libc_search_twalk.c.o +[195/795] Compiling C object newlib/libc.a.p/libc_string_wcsncpy.c.o +[196/795] Compiling C object newlib/libc.a.p/libc_string_wcspbrk.c.o +[197/795] Compiling C object newlib/libc.a.p/libc_search_hash_bigkey.c.o +[198/795] Compiling C object newlib/libc.a.p/libc_signal_signal.c.o +[199/795] Compiling C object newlib/libc.a.p/libc_search_qsort_r.c.o +[200/795] Compiling C object newlib/libc.a.p/libc_signal_sig2str.c.o +[201/795] Compiling C object newlib/libc.a.p/libc_string_wcsnlen.c.o +[202/795] Compiling C object newlib/libc.a.p/libc_ssp_chk_fail.c.o +[203/795] Compiling C object newlib/libc.a.p/libc_ssp_gets_chk.c.o +[204/795] Compiling C object newlib/libc.a.p/libc_ssp_memcpy_chk.c.o +[205/795] Compiling C object newlib/libc.a.p/libc_ssp_memmove_chk.c.o +[206/795] Compiling C object newlib/libc.a.p/libc_ssp_mempcpy_chk.c.o +[207/795] Compiling C object newlib/libc.a.p/libc_ssp_memset_chk.c.o +[208/795] Compiling C object newlib/libc.a.p/libc_ssp_stpcpy_chk.c.o +[209/795] Compiling C object newlib/libc.a.p/libc_ssp_snprintf_chk.c.o +[210/795] Compiling C object newlib/libc.a.p/libc_ssp_sprintf_chk.c.o +[211/795] Compiling C object newlib/libc.a.p/libc_ssp_stack_protector.c.o +[212/795] Compiling C object newlib/libc.a.p/libc_ssp_strcat_chk.c.o +[213/795] Compiling C object newlib/libc.a.p/libc_ssp_strncpy_chk.c.o +[214/795] Compiling C object newlib/libc.a.p/libc_search_hash_page.c.o +[215/795] Compiling C object newlib/libc.a.p/libc_ssp_strcpy_chk.c.o +[216/795] Compiling C object newlib/libc.a.p/libc_ssp_strncat_chk.c.o +[217/795] Compiling C object newlib/libc.a.p/libc_ssp_vsnprintf_chk.c.o +[218/795] Compiling C object newlib/libc.a.p/libc_stdlib_a64l.c.o +[219/795] Compiling C object newlib/libc.a.p/libc_ssp_stpncpy_chk.c.o +[220/795] Compiling C object newlib/libc.a.p/libc_stdlib_abort.c.o +[221/795] Compiling C object newlib/libc.a.p/libc_stdlib_aligned_alloc.c.o +[222/795] Compiling C object newlib/libc.a.p/libc_stdlib_abs.c.o +[223/795] Compiling C object newlib/libc.a.p/libc_stdlib_atof.c.o +[224/795] Compiling C object newlib/libc.a.p/libc_stdlib_arc4random_uniform.c.o +[225/795] Compiling C object newlib/libc.a.p/libc_ssp_vsprintf_chk.c.o +[226/795] Compiling C object newlib/libc.a.p/libc_stdlib_atol.c.o +[227/795] Compiling C object newlib/libc.a.p/libc_stdlib_atoff.c.o +[228/795] Compiling C object newlib/libc.a.p/libc_stdlib_atoi.c.o +[229/795] Compiling C object newlib/libc.a.p/libc_stdlib_atoll.c.o +[230/795] Compiling C object newlib/libc.a.p/libc_stdlib_assert.c.o +[231/795] Compiling C object newlib/libc.a.p/libc_stdlib_drand48.c.o +[232/795] Compiling C object newlib/libc.a.p/libc_stdlib_erand48.c.o +[233/795] Compiling C object newlib/libc.a.p/libc_stdlib_div.c.o +[234/795] Compiling C object newlib/libc.a.p/libc_stdlib_btowc.c.o +[235/795] Compiling C object newlib/libc.a.p/libc_stdlib_environ.c.o +[236/795] Compiling C object newlib/libc.a.p/libc_stdlib_eprintf.c.o +[237/795] Compiling C object newlib/libc.a.p/libc_stdlib__Exit.c.o +[238/795] Compiling C object newlib/libc.a.p/libc_stdlib_getenv.c.o +[239/795] Compiling C object newlib/libc.a.p/libc_stdlib_getenv_r.c.o +[240/795] Compiling C object newlib/libc.a.p/libc_stdlib_itoa.c.o +[241/795] Compiling C object newlib/libc.a.p/libc_stdlib_arc4random.c.o +[242/795] Compiling C object newlib/libc.a.p/libc_stdlib_jrand48.c.o +[243/795] Compiling C object newlib/libc.a.p/libc_stdlib_imaxabs.c.o +[244/795] Compiling C object newlib/libc.a.p/libc_stdlib_getsubopt.c.o +[245/795] Compiling C object newlib/libc.a.p/libc_stdlib_imaxdiv.c.o +[246/795] Compiling C object newlib/libc.a.p/libc_stdlib_l64a.c.o +[247/795] Compiling C object newlib/libc.a.p/libc_stdlib_llabs.c.o +[248/795] Compiling C object newlib/libc.a.p/libc_stdlib_labs.c.o +[249/795] Compiling C object newlib/libc.a.p/libc_stdlib_ldiv.c.o +[250/795] Compiling C object newlib/libc.a.p/libc_stdlib_lcong48.c.o +[251/795] Compiling C object newlib/libc.a.p/libc_stdlib_lldiv.c.o +[252/795] Compiling C object newlib/libc.a.p/libc_stdlib_lrand48.c.o +[253/795] Compiling C object newlib/libc.a.p/libc_stdlib_mblen.c.o +[254/795] Compiling C object newlib/libc.a.p/libc_stdlib_mbrtowc.c.o +[255/795] Compiling C object newlib/libc.a.p/libc_stdlib_getopt.c.o +[256/795] Compiling C object newlib/libc.a.p/libc_stdlib_mbsinit.c.o +[257/795] Compiling C object newlib/libc.a.p/libc_stdlib_mbsnrtowcs.c.o +[258/795] Compiling C object newlib/libc.a.p/libc_stdlib_mbrlen.c.o +[259/795] Compiling C object newlib/libc.a.p/libc_stdlib_mbstowcs.c.o +[260/795] Compiling C object newlib/libc.a.p/libc_stdlib_mstats.c.o +[261/795] Compiling C object newlib/libc.a.p/libc_posix_regexec.c.o +[262/795] Compiling C object newlib/libc.a.p/libc_stdlib_mbtowc_r.c.o +[263/795] Compiling C object newlib/libc.a.p/libc_posix_regcomp.c.o +[264/795] Compiling C object newlib/libc.a.p/libc_stdlib_mrand48.c.o +[265/795] Compiling C object newlib/libc.a.p/libc_stdlib_nrand48.c.o +[266/795] Compiling C object newlib/libc.a.p/libc_stdlib_rand.c.o +[267/795] Compiling C object newlib/libc.a.p/libc_stdlib_putenv.c.o +[268/795] Compiling C object newlib/libc.a.p/libc_stdlib_mbtowc.c.o +[269/795] Compiling C object newlib/libc.a.p/libc_stdlib_rand48.c.o +[270/795] Compiling C object newlib/libc.a.p/libc_stdlib_rand_r.c.o +[271/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ftoa_ryu.c.o +[272/795] Compiling C object newlib/libc.a.p/libc_stdlib_random.c.o +[273/795] Compiling C object newlib/libc.a.p/libc_stdlib_sb_charsets.c.o +[274/795] Compiling C object newlib/libc.a.p/libc_stdlib_reallocarray.c.o +[275/795] Compiling C object newlib/libc.a.p/libc_stdlib_rpmatch.c.o +[276/795] Compiling C object newlib/libc.a.p/libc_stdlib_seed48.c.o +[277/795] Compiling C object newlib/libc.a.p/libc_tinystdio_dtoa_ryu.c.o +[278/795] Compiling C object newlib/libc.a.p/libc_stdlib_reallocf.c.o +[279/795] Compiling C object newlib/libc.a.p/libc_stdlib_srand.c.o +[280/795] Compiling C object newlib/libc.a.p/libc_stdlib_srand48.c.o +[281/795] Compiling C object newlib/libc.a.p/libc_stdlib_setenv.c.o +[282/795] Compiling C object newlib/libc.a.p/libc_stdlib_srandom.c.o +[283/795] Compiling C object newlib/libc.a.p/libc_stdlib_strtoul.c.o +[284/795] Compiling C object newlib/libc.a.p/libc_stdlib_strtoull.c.o +[285/795] Compiling C object newlib/libc.a.p/libc_stdlib_strtoumax.c.o +[286/795] Compiling C object newlib/libc.a.p/libc_stdlib_system.c.o +[287/795] Compiling C object newlib/libc.a.p/libc_stdlib_utoa.c.o +[288/795] Compiling C object newlib/libc.a.p/libc_stdlib_strtoll.c.o +[289/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcrtomb.c.o +[290/795] Compiling C object newlib/libc.a.p/libc_stdlib_strtol.c.o +[291/795] Compiling C object newlib/libc.a.p/libc_stdlib_strtoimax.c.o +[292/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcsnrtombs.c.o +[293/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcstombs.c.o +[294/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcsrtombs.c.o +[295/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcstoimax.c.o +[296/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcstod.c.o +[297/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcstoul.c.o +[298/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcstol.c.o +[299/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcstoll.c.o +[300/795] Compiling C object newlib/libc.a.p/libc_stdlib_wctob.c.o +[301/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcstoull.c.o +[302/795] Compiling C object newlib/libc.a.p/libc_stdlib_wcstoumax.c.o +[303/795] Compiling C object newlib/libc.a.p/libc_stdlib_wctomb_r.c.o +[304/795] Compiling C object newlib/libc.a.p/libc_stdlib_pico-atexit.c.o +[305/795] Compiling C object newlib/libc.a.p/libc_stdlib_wctomb.c.o +[306/795] Compiling C object newlib/libc.a.p/libc_string_bzero.c.o +[307/795] Compiling C object newlib/libc.a.p/libc_stdlib_pico-exit.c.o +[308/795] Compiling C object newlib/libc.a.p/libc_stdlib_pico-cxa-atexit.c.o +[309/795] Compiling C object newlib/libc.a.p/libc_stdlib_pico-onexit.c.o +[310/795] Compiling C object newlib/libc.a.p/libc_string_bcopy.c.o +[311/795] Compiling C object newlib/libc.a.p/libc_string_bcmp.c.o +[312/795] Compiling C object newlib/libc.a.p/libc_string_ffsl.c.o +[313/795] Compiling C object newlib/libc.a.p/libc_string_explicit_bzero.c.o +[314/795] Compiling C object newlib/libc.a.p/libc_string_flsl.c.o +[315/795] Compiling C object newlib/libc.a.p/libc_string_ffsll.c.o +[316/795] Compiling C object newlib/libc.a.p/libc_string_gnu_basename.c.o +[317/795] Compiling C object newlib/libc.a.p/libc_string_flsll.c.o +[318/795] Compiling C object newlib/libc.a.p/libc_string_memchr.c.o +[319/795] Compiling C object newlib/libc.a.p/libc_string_fls.c.o +[320/795] Compiling C object newlib/libc.a.p/libc_string_index.c.o +[321/795] Compiling C object newlib/libc.a.p/libc_string_memcmp.c.o +[322/795] Compiling C object newlib/libc.a.p/libc_string_memccpy.c.o +[323/795] Compiling C object newlib/libc.a.p/libc_string_mempcpy.c.o +[324/795] Compiling C object newlib/libc.a.p/libc_string_memmove.c.o +[325/795] Compiling C object newlib/libc.a.p/libc_string_memrchr.c.o +[326/795] Compiling C object newlib/libc.a.p/libc_string_memcpy.c.o +[327/795] Compiling C object newlib/libc.a.p/libc_string_memmem.c.o +[328/795] Compiling C object newlib/libc.a.p/libc_string_rawmemchr.c.o +[329/795] Compiling C object newlib/libc.a.p/libc_string_memset.c.o +[330/795] Compiling C object newlib/libc.a.p/libc_string_rindex.c.o +[331/795] Compiling C object newlib/libc.a.p/libc_string_strcat.c.o +[332/795] Compiling C object newlib/libc.a.p/libc_string_strcasecmp.c.o +[333/795] Compiling C object newlib/libc.a.p/libc_string_stpncpy.c.o +[334/795] Compiling C object newlib/libc.a.p/libc_string_stpcpy.c.o +[335/795] Compiling C object newlib/libc.a.p/libc_string_strchr.c.o +[336/795] Compiling C object newlib/libc.a.p/libc_string_strcoll.c.o +[337/795] Compiling C object newlib/libc.a.p/libc_string_strcasecmp_l.c.o +[338/795] Compiling C object newlib/libc.a.p/libc_string_strcasestr.c.o +[339/795] Compiling C object newlib/libc.a.p/libc_string_strcoll_l.c.o +[340/795] Compiling C object newlib/libc.a.p/libc_string_strchrnul.c.o +[341/795] Compiling C object newlib/libc.a.p/libc_string_strdup.c.o +[342/795] Compiling C object newlib/libc.a.p/libc_string_strcspn.c.o +[343/795] Compiling C object newlib/libc.a.p/libc_string_strlen.c.o +[344/795] Compiling C object newlib/libc.a.p/libc_string_strcpy.c.o +[345/795] Compiling C object newlib/libc.a.p/libc_string_strerror_r.c.o +[346/795] Compiling C object newlib/libc.a.p/libc_string_strlcat.c.o +[347/795] Compiling C object newlib/libc.a.p/libc_string_strerror.c.o +[348/795] Compiling C object newlib/libc.a.p/libc_string_strlcpy.c.o +[349/795] Compiling C object newlib/libc.a.p/libc_string_strlwr.c.o +[350/795] Compiling C object newlib/libc.a.p/libc_string_strncasecmp_l.c.o +[351/795] Compiling C object newlib/libc.a.p/libc_string_strncasecmp.c.o +[352/795] Compiling C object newlib/libc.a.p/libc_string_strncat.c.o +[353/795] Compiling C object newlib/libc.a.p/libc_string_strncmp.c.o +[354/795] Compiling C object newlib/libc.a.p/libc_string_strndup.c.o +[355/795] Compiling C object newlib/libc.a.p/libc_string_strsep.c.o +[356/795] Compiling C object newlib/libc.a.p/libc_string_strnlen.c.o +[357/795] Compiling C object newlib/libc.a.p/libc_string_strpbrk.c.o +[358/795] Compiling C object newlib/libc.a.p/libc_string_strncpy.c.o +[359/795] Compiling C object newlib/libc.a.p/libc_string_strnstr.c.o +[360/795] Compiling C object newlib/libc.a.p/libc_string_strrchr.c.o +[361/795] Compiling C object newlib/libc.a.p/libc_string_strsignal.c.o +[362/795] Compiling C object newlib/libc.a.p/libc_string_strstr.c.o +[363/795] Compiling C object newlib/libc.a.p/libc_string_strspn.c.o +[364/795] Compiling C object newlib/libc.a.p/libc_string_strtok.c.o +[365/795] Compiling C object newlib/libc.a.p/libc_string_strtok_r.c.o +[366/795] Compiling C object newlib/libc.a.p/libc_string_strxfrm.c.o +[367/795] Compiling C object newlib/libc.a.p/libc_string_strverscmp.c.o +[368/795] Compiling C object newlib/libc.a.p/libc_string_strupr.c.o +[369/795] Compiling C object newlib/libc.a.p/libc_string_swab.c.o +[370/795] Compiling C object newlib/libc.a.p/libc_string_u_strerr.c.o +[371/795] Compiling C object newlib/libc.a.p/libc_string_strxfrm_l.c.o +[372/795] Compiling C object newlib/libc.a.p/libc_string_timingsafe_bcmp.c.o +[373/795] Compiling C object newlib/libc.a.p/libc_string_timingsafe_memcmp.c.o +[374/795] Compiling C object newlib/libc.a.p/libc_string_wcpcpy.c.o +[375/795] Compiling C object newlib/libc.a.p/libc_string_wcpncpy.c.o +[376/795] Compiling C object newlib/libc.a.p/libc_string_wcscasecmp.c.o +[377/795] Compiling C object newlib/libc.a.p/libc_string_wcscat.c.o +[378/795] Compiling C object newlib/libc.a.p/libc_string_wcscasecmp_l.c.o +[379/795] Compiling C object newlib/libc.a.p/libc_string_wcscmp.c.o +[380/795] Compiling C object newlib/libc.a.p/libc_string_wcschr.c.o +[381/795] Compiling C object newlib/libc.a.p/libc_string_wcscoll.c.o +[382/795] Compiling C object newlib/libc.a.p/libc_string_wcscpy.c.o +[383/795] Compiling C object newlib/libc.a.p/libc_string_wcscspn.c.o +[384/795] Compiling C object newlib/libc.a.p/libc_string_wcslcpy.c.o +[385/795] Compiling C object newlib/libc.a.p/libc_string_wcsdup.c.o +[386/795] Compiling C object newlib/libc.a.p/libc_string_wcscoll_l.c.o +[387/795] Compiling C object newlib/libc.a.p/libc_string_wcslcat.c.o +[388/795] Compiling C object newlib/libc.a.p/libc_string_wcslen.c.o +[389/795] Compiling C object newlib/libc.a.p/libc_string_wcsncasecmp.c.o +[390/795] Compiling C object newlib/libc.a.p/libc_string_wcsncat.c.o +[391/795] Compiling C object newlib/libc.a.p/libm_complex_cacoshf.c.o +[392/795] Compiling C object newlib/libc.a.p/libc_string_wcsncasecmp_l.c.o +[393/795] Compiling C object newlib/libc.a.p/libc_string_wcsncmp.c.o +[394/795] Compiling C object newlib/libc.a.p/libc_string_wcsrchr.c.o +[395/795] Compiling C object newlib/libc.a.p/libc_string_wcsspn.c.o +[396/795] Compiling C object newlib/libc.a.p/libm_complex_cephes_subrf.c.o +[397/795] Compiling C object newlib/libc.a.p/libm_complex_catanf.c.o +[398/795] Compiling C object newlib/libc.a.p/libc_string_wcstok.c.o +[399/795] Compiling C object newlib/libc.a.p/libm_complex_conjf.c.o +[400/795] Compiling C object newlib/libc.a.p/libc_string_wcsxfrm.c.o +[401/795] Compiling C object newlib/libc.a.p/libc_string_wcsxfrm_l.c.o +[402/795] Compiling C object newlib/libc.a.p/libc_string_wcsstr.c.o +[403/795] Compiling C object newlib/libc.a.p/libc_string_wcswidth.c.o +[404/795] Compiling C object newlib/libc.a.p/libc_string_wmemchr.c.o +[405/795] Compiling C object newlib/libc.a.p/libc_string_wcwidth.c.o +[406/795] Compiling C object newlib/libc.a.p/libc_string_wmemcpy.c.o +[407/795] Compiling C object newlib/libc.a.p/libc_string_wmemmove.c.o +[408/795] Compiling C object newlib/libc.a.p/libc_string_wmempcpy.c.o +[409/795] Compiling C object newlib/libc.a.p/libc_string_xpg_strerror_r.c.o +[410/795] Compiling C object newlib/libc.a.p/libc_string_wmemcmp.c.o +[411/795] Compiling C object newlib/libc.a.p/libc_string_wmemset.c.o +[412/795] Compiling C object newlib/libc.a.p/libc_time_clock.c.o +[413/795] Compiling C object newlib/libc.a.p/libc_time_ctime_r.c.o +[414/795] Compiling C object newlib/libc.a.p/libc_time_asctime.c.o +[415/795] Compiling C object newlib/libc.a.p/libc_time_asctime_r.c.o +[416/795] Compiling C object newlib/libc.a.p/libc_time_difftime.c.o +[417/795] Compiling C object newlib/libc.a.p/libc_time_ctime.c.o +[418/795] Compiling C object newlib/libc.a.p/libc_time_gettzinfo.c.o +[419/795] Compiling C object newlib/libc.a.p/libc_time_gmtime.c.o +[420/795] Compiling C object newlib/libc.a.p/libc_time_gmtime_r.c.o +[421/795] Compiling C object newlib/libc.a.p/libc_time_lcltime_buf.c.o +[422/795] Compiling C object newlib/libc.a.p/libc_time_month_lengths.c.o +[423/795] Compiling C object newlib/libc.a.p/libc_time_lcltime.c.o +[424/795] Compiling C object newlib/libc.a.p/libc_time_lcltime_r.c.o +[425/795] Compiling C object newlib/libc.a.p/libc_time_time.c.o +[426/795] Compiling C object newlib/libc.a.p/libc_time_tzvars.c.o +[427/795] Compiling C object newlib/libc.a.p/libc_time_tzcalc_limits.c.o +[428/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr_array.c.o +[429/795] Compiling C object newlib/libc.a.p/libc_time_mktime.c.o +[430/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr_private.c.o +[431/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr_float.c.o +[432/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr_mem.c.o +[433/795] Compiling C object newlib/libc.a.p/libc_time_tzset.c.o +[434/795] Compiling C object newlib/libc.a.p/libc_time_strptime.c.o +[435/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr_reference.c.o +[436/795] Compiling C object newlib/libc.a.p/libc_locale_lnumeric.c.o +[437/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr_sizeof.c.o +[438/795] Compiling C object newlib/libc.a.p/libc_locale_localeconv.c.o +[439/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr_stdio.c.o +[440/795] Compiling C object newlib/libc.a.p/libc_locale_locale.c.o +[441/795] Compiling C object newlib/libc.a.p/libc_locale_timelocal.c.o +[442/795] Compiling C object newlib/libc.a.p/libc_picolib_picosbrk.c.o +[443/795] Compiling C object newlib/libc.a.p/libc_picolib_dso_handle.c.o +[444/795] Compiling C object newlib/libc.a.p/libc_picolib_getauxval.c.o +[445/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr.c.o +[446/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ecvtf_data.c.o +[447/795] Compiling C object newlib/libc.a.p/libc_tinystdio_clearerr.c.o +[448/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ecvt_data.c.o +[449/795] Compiling C object newlib/libc.a.p/libc_time_strftime.c.o +[450/795] Compiling C object newlib/libc.a.p/libc_tinystdio_asprintf.c.o +[451/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ecvt.c.o +[452/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fcvt.c.o +[453/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ecvtfbuf.c.o +[454/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ecvtbuf.c.o +[455/795] Compiling C object newlib/libc.a.p/libc_xdr_xdr_rec.c.o +[456/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fcvtfbuf.c.o +[457/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ecvtf.c.o +[458/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fcvtbuf.c.o +[459/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fcvtf.c.o +[460/795] Compiling C object newlib/libc.a.p/libc_tinystdio_gcvtbuf.c.o +[461/795] Compiling C object newlib/libc.a.p/libc_tinystdio_gcvtf.c.o +[462/795] Compiling C object newlib/libc.a.p/libc_tinystdio_gcvt.c.o +[463/795] Compiling C object newlib/libc.a.p/libc_tinystdio_gcvtfbuf.c.o +[464/795] Compiling C object newlib/libc.a.p/libc_tinystdio_feof.c.o +[465/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fflush.c.o +[466/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fdevopen.c.o +[467/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fclose.c.o +[468/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ferror.c.o +[469/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fileno.c.o +[470/795] Compiling C object newlib/libc.a.p/libc_tinystdio_filestrput.c.o +[471/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fgets.c.o +[472/795] Compiling C object newlib/libc.a.p/libc_tinystdio_filestrget.c.o +[473/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fgetc.c.o +[474/795] Compiling C object newlib/libc.a.p/libc_tinystdio_filestrputalloc.c.o +[475/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fprintf.c.o +[476/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fputc.c.o +[477/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fread.c.o +[478/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fscanf.c.o +[479/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fseek.c.o +[480/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fputs.c.o +[481/795] Compiling C object newlib/libc.a.p/libc_tinystdio_getchar.c.o +[482/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ftell.c.o +[483/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fwrite.c.o +[484/795] Compiling C object newlib/libc.a.p/libc_tinystdio_gets.c.o +[485/795] Compiling C object newlib/libc.a.p/libc_tinystdio_perror.c.o +[486/795] Compiling C object newlib/libc.a.p/libc_tinystdio_printf.c.o +[487/795] Compiling C object newlib/libc.a.p/libc_tinystdio_putchar.c.o +[488/795] Compiling C object newlib/libc.a.p/libc_tinystdio_scanf.c.o +[489/795] Compiling C object newlib/libc.a.p/libc_tinystdio_matchcaseprefix.c.o +[490/795] Compiling C object newlib/libc.a.p/libc_tinystdio_rewind.c.o +[491/795] Compiling C object newlib/libc.a.p/libc_tinystdio_setbuf.c.o +[492/795] Compiling C object newlib/libc.a.p/libc_tinystdio_setvbuf.c.o +[493/795] Compiling C object newlib/libc.a.p/libc_tinystdio_puts.c.o +[494/795] Compiling C object newlib/libc.a.p/libc_tinystdio_snprintf.c.o +[495/795] Compiling C object newlib/libc.a.p/libc_tinystdio_sprintff.c.o +[496/795] Compiling C object newlib/libc.a.p/libc_tinystdio_snprintff.c.o +[497/795] Compiling C object newlib/libc.a.p/libc_tinystdio_sprintf.c.o +[498/795] Compiling C object newlib/libc.a.p/libc_tinystdio_strfromf.c.o +[499/795] Compiling C object newlib/libc.a.p/libc_tinystdio_snprintfd.c.o +[500/795] Compiling C object newlib/libc.a.p/libc_tinystdio_sscanf.c.o +[501/795] Compiling C object newlib/libc.a.p/libc_tinystdio_sprintfd.c.o +[502/795] Compiling C object newlib/libc.a.p/libc_tinystdio_strtod_l.c.o +[503/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ungetc.c.o +[504/795] Compiling C object newlib/libc.a.p/libc_tinystdio_strfromd.c.o +[505/795] Compiling C object newlib/libc.a.p/libc_tinystdio_strtof.c.o +[506/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vprintf.c.o +[507/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vasprintf.c.o +[508/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vscanf.c.o +[509/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vsscanf.c.o +[510/795] Compiling C object newlib/libc.a.p/libc_tinystdio_strtod.c.o +[511/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vsnprintf.c.o +[512/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vfiscanf.c.o +[513/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vsprintf.c.o +[514/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ryu_log2pow5.c.o +[515/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ryu_log10.c.o +[516/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vfiprintf.c.o +[517/795] Compiling C object newlib/libc.a.p/libc_tinystdio_atod_ryu.c.o +[518/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ryu_table.c.o +[519/795] Compiling C object newlib/libc.a.p/libc_tinystdio_atof_ryu.c.o +[520/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ryu_pow5bits.c.o +[521/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ryu_umul128.c.o +[522/795] Compiling C object newlib/libc.a.p/libc_tinystdio_strtold_l.c.o +[523/795] Compiling C object newlib/libc.a.p/libc_tinystdio_ryu_divpow2.c.o +[524/795] Compiling C object newlib/libc.a.p/libc_tinystdio_atold_engine.c.o +[525/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vfscanff.c.o +[526/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fopen.c.o +[527/795] Compiling C object newlib/libc.a.p/libc_tinystdio_strtold.c.o +[528/795] Compiling C object newlib/libc.a.p/libc_tinystdio_posixio.c.o +[529/795] Compiling C object newlib/libc.a.p/libc_tinystdio_sflags.c.o +[530/795] Compiling C object newlib/libc.a.p/libc_tinystdio_fdopen.c.o +[531/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vfprintff.c.o +[532/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vfprintf.c.o +[533/795] Compiling C object newlib/libc.a.p/libc_tinystdio_vfscanf.c.o +[534/795] Compiling C object newlib/libc.a.p/libm_math_k_cos.c.o +[535/795] Compiling C object newlib/libc.a.p/libm_machine_powerpc_fenv.c.o +[536/795] Compiling C object newlib/libc.a.p/libm_math_kf_cos.c.o +[537/795] Compiling C object newlib/libc.a.p/libm_math_k_sin.c.o +[538/795] Compiling C object newlib/libc.a.p/libm_math_k_tan.c.o +[539/795] Compiling C object newlib/libc.a.p/libm_math_kf_tan.c.o +[540/795] Compiling C object newlib/libc.a.p/libm_math_s_acosh.c.o +[541/795] Compiling C object newlib/libc.a.p/libm_math_s_asin.c.o +[542/795] Compiling C object newlib/libc.a.p/libm_math_kf_sin.c.o +[543/795] Compiling C object newlib/libc.a.p/libm_math_s_acos.c.o +[544/795] Compiling C object newlib/libc.a.p/libm_math_s_asinh.c.o +[545/795] Compiling C object newlib/libc.a.p/libm_math_s_atan.c.o +[546/795] Compiling C object newlib/libc.a.p/libm_math_s_atan2.c.o +[547/795] Compiling C object newlib/libc.a.p/libm_math_s_cosh.c.o +[548/795] Compiling C object newlib/libc.a.p/libm_math_s_atanh.c.o +[549/795] Compiling C object newlib/libc.a.p/libm_math_k_rem_pio2.c.o +[550/795] Compiling C object newlib/libc.a.p/libm_math_s_cos.c.o +[551/795] Compiling C object newlib/libc.a.p/libm_math_s_drem.c.o +[552/795] Compiling C object newlib/libc.a.p/libm_math_kf_rem_pio2.c.o +[553/795] Compiling C object newlib/libc.a.p/libm_math_s_exp2.c.o +[554/795] Compiling C object newlib/libc.a.p/libm_math_s_exp.c.o +[555/795] Compiling C object newlib/libc.a.p/libm_math_s_ceil.c.o +[556/795] Compiling C object newlib/libc.a.p/libm_math_s_fabs.c.o +[557/795] Compiling C object newlib/libc.a.p/libm_math_s_gamma.c.o +[558/795] Compiling C object newlib/libc.a.p/libm_math_s_frexp.c.o +[559/795] Compiling C object newlib/libc.a.p/libm_math_s_floor.c.o +[560/795] Compiling C object newlib/libc.a.p/libm_math_s_hypot.c.o +[561/795] Compiling C object newlib/libc.a.p/libm_math_s_log.c.o +[562/795] Compiling C object newlib/libc.a.p/libm_math_s_lgamma.c.o +[563/795] Compiling C object newlib/libc.a.p/libm_math_s_erf.c.o +[564/795] Compiling C object newlib/libc.a.p/libm_math_s_fmod.c.o +[565/795] Compiling C object newlib/libc.a.p/libm_math_s_j1.c.o +[566/795] Compiling C object newlib/libc.a.p/libm_math_s_log10.c.o +[567/795] Compiling C object newlib/libc.a.p/libm_math_s_pow.c.o +[568/795] Compiling C object newlib/libc.a.p/libm_math_s_jn.c.o +[569/795] Compiling C object newlib/libc.a.p/libm_math_s_j0.c.o +[570/795] Compiling C object newlib/libc.a.p/libm_math_s_scalb.c.o +[571/795] Compiling C object newlib/libc.a.p/libm_math_s_remainder.c.o +[572/795] Compiling C object newlib/libc.a.p/libm_math_s_sin.c.o +[573/795] Compiling C object newlib/libc.a.p/libm_math_s_signif.c.o +[574/795] Compiling C object newlib/libc.a.p/libm_math_s_sinh.c.o +[575/795] Compiling C object newlib/libc.a.p/libm_math_s_sincos.c.o +[576/795] Compiling C object newlib/libc.a.p/libm_math_s_rem_pio2.c.o +[577/795] Compiling C object newlib/libc.a.p/libm_math_s_tan.c.o +[578/795] Compiling C object newlib/libc.a.p/libm_math_s_tanh.c.o +[579/795] Compiling C object newlib/libc.a.p/libm_math_s_tgamma.c.o +[580/795] Compiling C object newlib/libc.a.p/libm_math_sf_asinh.c.o +[581/795] Compiling C object newlib/libc.a.p/libm_math_sf_acosh.c.o +[582/795] Compiling C object newlib/libc.a.p/libm_math_sf_acos.c.o +[583/795] Compiling C object newlib/libc.a.p/libm_math_s_sqrt.c.o +[584/795] Compiling C object newlib/libc.a.p/libm_math_sf_atan2.c.o +[585/795] Compiling C object newlib/libc.a.p/libm_math_sf_atanh.c.o +[586/795] Compiling C object newlib/libc.a.p/libm_math_sf_asin.c.o +[587/795] Compiling C object newlib/libc.a.p/libm_math_sf_atan.c.o +[588/795] Compiling C object newlib/libc.a.p/libm_math_sf_cos.c.o +[589/795] Compiling C object newlib/libc.a.p/libm_math_sf_drem.c.o +[590/795] Compiling C object newlib/libc.a.p/libm_math_sf_cosh.c.o +[591/795] Compiling C object newlib/libc.a.p/libm_math_sf_ceil.c.o +[592/795] Compiling C object newlib/libc.a.p/libm_math_sf_fabs.c.o +[593/795] Compiling C object newlib/libc.a.p/libm_math_sf_floor.c.o +[594/795] Compiling C object newlib/libc.a.p/libm_math_sf_exp2.c.o +[595/795] Compiling C object newlib/libc.a.p/libm_math_sf_exp.c.o +[596/795] Compiling C object newlib/libc.a.p/libm_math_sf_fmod.c.o +[597/795] Compiling C object newlib/libc.a.p/libm_math_sf_gamma.c.o +[598/795] Compiling C object newlib/libc.a.p/libm_math_sf_frexp.c.o +[599/795] Compiling C object newlib/libc.a.p/libm_math_sf_hypot.c.o +[600/795] Compiling C object newlib/libc.a.p/libm_math_sf_lgamma.c.o +[601/795] Compiling C object newlib/libc.a.p/libm_math_sf_log10.c.o +[602/795] Compiling C object newlib/libc.a.p/libm_math_sf_erf.c.o +[603/795] Compiling C object newlib/libc.a.p/libm_math_sf_j0.c.o +[604/795] Compiling C object newlib/libc.a.p/libm_math_sf_log2.c.o +[605/795] Compiling C object newlib/libc.a.p/libm_math_sf_j1.c.o +[606/795] Compiling C object newlib/libc.a.p/libm_math_sf_jn.c.o +[607/795] Compiling C object newlib/libc.a.p/libm_math_sf_log.c.o +[608/795] Compiling C object newlib/libc.a.p/libm_math_sf_remainder.c.o +[609/795] Compiling C object newlib/libc.a.p/libm_math_sf_rem_pio2.c.o +[610/795] Compiling C object newlib/libc.a.p/libm_math_sf_scalb.c.o +[611/795] Compiling C object newlib/libc.a.p/libm_math_sf_signif.c.o +[612/795] Compiling C object newlib/libc.a.p/libm_math_sf_sin.c.o +[613/795] Compiling C object newlib/libc.a.p/libm_math_sf_sincos.c.o +[614/795] Compiling C object newlib/libc.a.p/libm_math_sf_tan.c.o +[615/795] Compiling C object newlib/libc.a.p/libm_math_sf_sqrt.c.o +[616/795] Compiling C object newlib/libc.a.p/libm_math_sf_sinh.c.o +[617/795] Compiling C object newlib/libc.a.p/libm_math_sf_tanh.c.o +[618/795] Compiling C object newlib/libc.a.p/libm_math_sf_pow.c.o +[619/795] Compiling C object newlib/libc.a.p/libm_math_sf_tgamma.c.o +[620/795] Compiling C object newlib/libc.a.p/libm_math_sl_hypot.c.o +[621/795] Compiling C object newlib/libc.a.p/libm_common_signgam.c.o +[622/795] Compiling C object newlib/libc.a.p/libm_common_s_finite.c.o +[623/795] Compiling C object newlib/libc.a.p/libm_common_s_copysign.c.o +[624/795] Compiling C object newlib/libc.a.p/libm_common_s_modf.c.o +[625/795] Compiling C object newlib/libc.a.p/libm_common_s_infinity.c.o +[626/795] Compiling C object newlib/libc.a.p/libm_common_s_exp10.c.o +[627/795] Compiling C object newlib/libc.a.p/libm_common_s_scalbn.c.o +[628/795] Compiling C object newlib/libc.a.p/libm_math_srf_lgamma.c.o +[629/795] Compiling C object newlib/libc.a.p/libm_common_s_cbrt.c.o +[630/795] Compiling C object newlib/libc.a.p/libm_common_s_ilogb.c.o +[631/795] Compiling C object newlib/libc.a.p/libm_common_s_expm1.c.o +[632/795] Compiling C object newlib/libc.a.p/libm_common_s_isnan.c.o +[633/795] Compiling C object newlib/libc.a.p/libm_math_sr_lgamma.c.o +[634/795] Compiling C object newlib/libc.a.p/libm_common_s_isinfd.c.o +[635/795] Compiling C object newlib/libc.a.p/libm_common_s_isinf.c.o +[636/795] Compiling C object newlib/libc.a.p/libm_common_s_issignaling.c.o +[637/795] Compiling C object newlib/libc.a.p/libm_common_s_isnand.c.o +[638/795] Compiling C object newlib/libc.a.p/libm_common_s_log2.c.o +[639/795] Compiling C object newlib/libc.a.p/libm_common_s_pow10.c.o +[640/795] Compiling C object newlib/libc.a.p/libm_common_s_nan.c.o +[641/795] Compiling C object newlib/libc.a.p/libm_common_s_log1p.c.o +[642/795] Compiling C object newlib/libc.a.p/libm_common_s_nextafter.c.o +[643/795] Compiling C object newlib/libc.a.p/libm_common_s_logb.c.o +[644/795] Compiling C object newlib/libc.a.p/libm_common_s_fdim.c.o +[645/795] Compiling C object newlib/libc.a.p/libm_common_s_rint.c.o +[646/795] Compiling C object newlib/libc.a.p/libm_common_s_fmin.c.o +[647/795] Compiling C object newlib/libc.a.p/libm_common_s_fmax.c.o +[648/795] Compiling C object newlib/libc.a.p/libm_common_s_fma.c.o +[649/795] Compiling C object newlib/libc.a.p/libm_common_s_fpclassify.c.o +[650/795] Compiling C object newlib/libc.a.p/libm_common_s_nearbyint.c.o +[651/795] Compiling C object newlib/libc.a.p/libm_common_s_lrint.c.o +[652/795] Compiling C object newlib/libc.a.p/libm_common_s_llrint.c.o +[653/795] Compiling C object newlib/libc.a.p/libm_common_s_lround.c.o +[654/795] Compiling C object newlib/libc.a.p/libm_common_s_llround.c.o +[655/795] Compiling C object newlib/libc.a.p/libm_common_s_scalbln.c.o +[656/795] Compiling C object newlib/libc.a.p/libm_common_s_signbit.c.o +[657/795] Compiling C object newlib/libc.a.p/libm_common_math_err_xflow.c.o +[658/795] Compiling C object newlib/libc.a.p/libm_common_s_round.c.o +[659/795] Compiling C object newlib/libc.a.p/libm_common_exp_data.c.o +[660/795] Compiling C object newlib/libc.a.p/libm_common_s_trunc.c.o +[661/795] Compiling C object newlib/libc.a.p/libm_common_math_err_with_errno.c.o +[662/795] Compiling C object newlib/libc.a.p/libm_common_math_err_uflow.c.o +[663/795] Compiling C object newlib/libc.a.p/libm_common_exp.c.o +[664/795] Compiling C object newlib/libc.a.p/libm_common_exp2.c.o +[665/795] Compiling C object newlib/libc.a.p/libm_common_math_err_oflow.c.o +[666/795] Compiling C object newlib/libc.a.p/libm_common_math_err_invalid.c.o +[667/795] Compiling C object newlib/libc.a.p/libm_common_s_remquo.c.o +[668/795] Compiling C object newlib/libc.a.p/libm_common_math_err_may_uflow.c.o +[669/795] Compiling C object newlib/libc.a.p/libm_common_math_err_divzero.c.o +[670/795] Compiling C object newlib/libc.a.p/libm_common_math_err_check_uflow.c.o +[671/795] Compiling C object newlib/libc.a.p/libm_common_math_err_check_oflow.c.o +[672/795] Compiling C object newlib/libc.a.p/libm_common_log_data.c.o +[673/795] Compiling C object newlib/libc.a.p/libm_common_log2_data.c.o +[674/795] Compiling C object newlib/libc.a.p/libm_common_log2.c.o +[675/795] Compiling C object newlib/libc.a.p/libm_common_pow_log_data.c.o +[676/795] Compiling C object newlib/libc.a.p/libm_common_log.c.o +[677/795] Compiling C object newlib/libc.a.p/libm_common_sf_modf.c.o +[678/795] Compiling C object newlib/libc.a.p/libm_common_sf_exp10.c.o +[679/795] Compiling C object newlib/libc.a.p/libm_common_sf_finite.c.o +[680/795] Compiling C object newlib/libc.a.p/libm_common_sf_cbrt.c.o +[681/795] Compiling C object newlib/libc.a.p/libm_common_sf_scalbn.c.o +[682/795] Compiling C object newlib/libc.a.p/libm_common_sf_copysign.c.o +[683/795] Compiling C object newlib/libc.a.p/libm_common_sf_ilogb.c.o +[684/795] Compiling C object newlib/libc.a.p/libm_common_sf_infinity.c.o +[685/795] Compiling C object newlib/libc.a.p/libm_common_sf_isinff.c.o +[686/795] Compiling C object newlib/libc.a.p/libm_common_sf_isnan.c.o +[687/795] Compiling C object newlib/libc.a.p/libm_common_sf_isinf.c.o +[688/795] Compiling C object newlib/libc.a.p/libm_common_sf_expm1.c.o +[689/795] Compiling C object newlib/libc.a.p/libm_common_sf_issignaling.c.o +[690/795] Compiling C object newlib/libc.a.p/libm_common_sf_isnanf.c.o +[691/795] Compiling C object newlib/libc.a.p/libm_common_pow.c.o +[692/795] Compiling C object newlib/libc.a.p/libm_common_sf_nan.c.o +[693/795] Compiling C object newlib/libc.a.p/libm_common_sf_pow10.c.o +[694/795] Compiling C object newlib/libc.a.p/libm_common_sf_nextafter.c.o +[695/795] Compiling C object newlib/libc.a.p/libm_common_sf_logb.c.o +[696/795] Compiling C object newlib/libc.a.p/libm_common_sf_fma.c.o +[697/795] Compiling C object newlib/libc.a.p/libm_common_sf_log1p.c.o +[698/795] Compiling C object newlib/libc.a.p/libm_common_sf_fdim.c.o +[699/795] Compiling C object newlib/libc.a.p/libm_common_sf_rint.c.o +[700/795] Compiling C object newlib/libc.a.p/libm_common_sf_fpclassify.c.o +[701/795] Compiling C object newlib/libc.a.p/libm_common_sf_lround.c.o +[702/795] Compiling C object newlib/libc.a.p/libm_common_sf_fmax.c.o +[703/795] Compiling C object newlib/libc.a.p/libm_common_sf_lrint.c.o +[704/795] Compiling C object newlib/libc.a.p/libm_common_sf_nearbyint.c.o +[705/795] Compiling C object newlib/libc.a.p/libm_common_sf_fmin.c.o +[706/795] Compiling C object newlib/libc.a.p/libm_common_sf_llrint.c.o +[707/795] Compiling C object newlib/libc.a.p/libm_common_sf_llround.c.o +[708/795] Compiling C object newlib/libc.a.p/libm_common_sf_round.c.o +[709/795] Compiling C object newlib/libc.a.p/libm_common_sf_scalbln.c.o +[710/795] Compiling C object newlib/libc.a.p/libm_common_sf_trunc.c.o +[711/795] Compiling C object newlib/libc.a.p/libm_common_sf_exp.c.o +[712/795] Compiling C object newlib/libc.a.p/libm_common_sf_exp2.c.o +[713/795] Compiling C object newlib/libc.a.p/libm_common_sf_exp2_data.c.o +[714/795] Compiling C object newlib/libc.a.p/libm_common_sf_remquo.c.o +[715/795] Compiling C object newlib/libc.a.p/libm_common_sf_log_data.c.o +[716/795] Compiling C object newlib/libc.a.p/libm_common_sf_log.c.o +[717/795] Compiling C object newlib/libc.a.p/libm_common_sf_log2.c.o +[718/795] Compiling C object newlib/libc.a.p/libm_common_sf_log2_data.c.o +[719/795] Compiling C object newlib/libc.a.p/libm_common_sf_pow_log2_data.c.o +[720/795] Compiling C object newlib/libc.a.p/libm_common_sf_pow.c.o +[721/795] Compiling C object newlib/libc.a.p/libm_common_cosf.c.o +[722/795] Compiling C object newlib/libc.a.p/libm_common_sinf.c.o +[723/795] Compiling C object newlib/libc.a.p/libm_common_sincosf.c.o +[724/795] Compiling C object newlib/libc.a.p/libm_common_math_errf_xflowf.c.o +[725/795] Compiling C object newlib/libc.a.p/libm_common_math_errf_uflowf.c.o +[726/795] Compiling C object newlib/libc.a.p/libm_common_sincosf_data.c.o +[727/795] Compiling C object newlib/libc.a.p/libm_common_math_errf_with_errnof.c.o +[728/795] Compiling C object newlib/libc.a.p/libm_common_math_errf_may_uflowf.c.o +[729/795] Compiling C object newlib/libc.a.p/libm_common_math_errf_oflowf.c.o +[730/795] Compiling C object newlib/libc.a.p/libm_common_math_errf_divzerof.c.o +[731/795] Compiling C object newlib/libc.a.p/libm_common_math_errf_invalidf.c.o +[732/795] Compiling C object newlib/libc.a.p/libm_common_copysignl.c.o +[733/795] Compiling C object newlib/libc.a.p/libm_common_math_errf_check_oflowf.c.o +[734/795] Compiling C object newlib/libc.a.p/libm_common_isnanl.c.o +[735/795] Compiling C object newlib/libc.a.p/libm_common_isinfl.c.o +[736/795] Compiling C object newlib/libc.a.p/libm_common_nanl.c.o +[737/795] Compiling C object newlib/libc.a.p/libm_fenv_fe_dfl_env.c.o +[738/795] Compiling C object newlib/libc.a.p/libm_fenv_fenv_stub.c.o +[739/795] Compiling C object newlib/libc.a.p/libm_common_sl_issignaling.c.o +[740/795] Compiling C object newlib/libc.a.p/libm_common_sl_finite.c.o +[741/795] Compiling C object newlib/libc.a.p/libm_complex_cacosh.c.o +[742/795] Compiling C object newlib/libc.a.p/libm_complex_catanh.c.o +[743/795] Compiling C object newlib/libc.a.p/libm_complex_casinh.c.o +[744/795] Compiling C object newlib/libc.a.p/libm_complex_cabs.c.o +[745/795] Compiling C object newlib/libc.a.p/libm_complex_carg.c.o +[746/795] Compiling C object newlib/libc.a.p/libm_complex_casin.c.o +[747/795] Compiling C object newlib/libc.a.p/libm_complex_catan.c.o +[748/795] Compiling C object newlib/libc.a.p/libm_common_sqrtl.c.o +[749/795] Compiling C object newlib/libc.a.p/libm_complex_ccos.c.o +[750/795] Compiling C object newlib/libc.a.p/libm_complex_cacos.c.o +[751/795] Compiling C object newlib/libc.a.p/libm_complex_ccosh.c.o +[752/795] Compiling C object newlib/libc.a.p/libm_complex_clog.c.o +[753/795] Compiling C object newlib/libc.a.p/libm_complex_cephes_subr.c.o +[754/795] Compiling C object newlib/libc.a.p/libm_complex_clog10.c.o +[755/795] Compiling C object newlib/libc.a.p/libm_complex_cexp.c.o +[756/795] Compiling C object newlib/libc.a.p/libm_complex_conj.c.o +[757/795] Compiling C object newlib/libc.a.p/libm_complex_cimag.c.o +[758/795] Compiling C object newlib/libc.a.p/libm_complex_cproj.c.o +[759/795] Compiling C object newlib/libc.a.p/libm_complex_creal.c.o +[760/795] Compiling C object newlib/libc.a.p/libm_complex_cpow.c.o +[761/795] Compiling C object newlib/libc.a.p/libm_complex_csin.c.o +[762/795] Compiling C object newlib/libc.a.p/libm_complex_csinh.c.o +[763/795] Compiling C object newlib/libc.a.p/libm_complex_ctan.c.o +[764/795] Compiling C object newlib/libc.a.p/libm_complex_cabsf.c.o +[765/795] Compiling C object newlib/libc.a.p/libm_complex_ccosf.c.o +[766/795] Compiling C object newlib/libc.a.p/libm_complex_cimagf.c.o +[767/795] Compiling C object newlib/libc.a.p/libm_complex_casinf.c.o +[768/795] Compiling C object newlib/libc.a.p/libm_complex_ctanh.c.o +[769/795] Compiling C object newlib/libc.a.p/libm_complex_casinhf.c.o +[770/795] Compiling C object newlib/libc.a.p/libm_complex_cprojf.c.o +[771/795] Compiling C object newlib/libc.a.p/libm_complex_cacosf.c.o +[772/795] Compiling C object newlib/libc.a.p/libm_complex_csqrt.c.o +[773/795] Compiling C object newlib/libc.a.p/libm_complex_csqrtf.c.o +[774/795] Compiling C object newlib/libc.a.p/libm_complex_ccoshf.c.o +[775/795] Compiling C object newlib/libc.a.p/libm_complex_clog10f.c.o +[776/795] Compiling C object newlib/libc.a.p/libm_complex_clogf.c.o +[777/795] Compiling C object newlib/libc.a.p/libm_complex_catanhf.c.o +[778/795] Compiling C object newlib/libc.a.p/libm_complex_crealf.c.o +[779/795] Compiling C object newlib/libc.a.p/libm_complex_csinf.c.o +[780/795] Compiling C object newlib/libc.a.p/libm_complex_ctanf.c.o +[781/795] Compiling C object newlib/libc.a.p/libm_complex_ctanhf.c.o +[782/795] Compiling C object newlib/libc.a.p/libm_complex_csinhf.c.o +[783/795] Compiling C object newlib/libc.a.p/libm_complex_cargf.c.o +[784/795] Compiling C object newlib/libc.a.p/libm_complex_cpowf.c.o +[785/795] Compiling C object newlib/libc.a.p/libm_complex_cexpf.c.o +[786/795] Compiling C object newlib/libm.a.p/empty.c.o +[787/795] Compiling C object newlib/libc.a.p/libm_complex_creall.c.o +[788/795] Compiling C object newlib/libc.a.p/libm_complex_cabsl.c.o +[789/795] Linking static target newlib/libm.a +[790/795] Compiling C object newlib/libc.a.p/libm_complex_cimagl.c.o +[791/795] Compiling C object newlib/libc.a.p/libm_complex_cprojl.c.o +[792/795] Compiling C object newlib/libc.a.p/libm_complex_conjl.c.o +[793/795] Compiling C object newlib/libc.a.p/libm_complex_csqrtl.c.o +[794/795] Linking static target newlib/libc.a +[795/795] Generating newlib/libc_duplicates with a custom command +cp newlib/libc.a __libc.a + CC _libc.a + AR _libc.a +cp __libc.a _libc.a + CC libc.a + AR libc.a +cp _libc.a libc.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libc' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libcompiler_rt' + CC umodsi3.o + CC udivsi3.o + CC divsi3.o + CC modsi3.o + CC comparesf2.o + CC comparedf2.o + CC negsf2.o + CC negdf2.o + CC addsf3.o + CC subsf3.o + CC mulsf3.o + CC divsf3.o + CC lshrdi3.o + CC muldi3.o + CC divdi3.o + CC ashldi3.o + CC ashrdi3.o + CC udivmoddi4.o + CC floatsisf.o + CC floatunsisf.o + CC fixsfsi.o + CC fixdfdi.o + CC fixunssfsi.o + CC fixunsdfdi.o + CC adddf3.o + CC subdf3.o + CC muldf3.o + CC divdf3.o + CC floatsidf.o + CC floatunsidf.o + CC floatdidf.o + CC fixdfsi.o + CC fixunsdfsi.o + CC clzsi2.o + CC ctzsi2.o + CC udivdi3.o + CC umoddi3.o + CC moddi3.o + CC ucmpdi2.o + CC mulsi3.o + AR libcompiler_rt.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libcompiler_rt' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libbase' + CC crc16.o + CC crc32.o + CC console.o + CC system.o + CC progress.o + CC memtest.o + CC uart.o + CC spiflash.o + CC i2c.o + CC isr.o + AR libbase.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libbase' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libfatfs' + CC ffunicode.o + CC ff.o + AR libfatfs.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libfatfs' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitespi' + CC spiflash.o + AR liblitespi.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitespi' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitedram' + CC sdram.o + CC bist.o + CC sdram_dbg.o + AR liblitedram.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitedram' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libliteeth' + CC udp.o + CC tftp.o + CC mdio.o + AR libliteeth.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libliteeth' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitesdcard' + CC sdcard.o + CC spisdcard.o + AR liblitesdcard.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitesdcard' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitesata' + CC sata.o + AR liblitesata.a +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/liblitesata' +make: Entering directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/bios' + CC boot-helper.o + CC boot.o + CC helpers.o + CC cmd_bios.o + CC cmd_mem.o + CC cmd_boot.o + CC cmd_i2c.o + CC cmd_spiflash.o + CC cmd_litedram.o + CC cmd_liteeth.o + CC cmd_litesdcard.o + CC cmd_litesata.o + CC sim_debug.o + CC main.o + CC complete.o + CC readline.o + CC crt0.o + CC bios.elf +chmod -x bios.elf + OBJCOPY bios.bin +chmod -x bios.bin +python3 -m litex.soc.software.crcfbigen bios.bin +python3 -m litex.soc.software.memusage bios.elf /data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/bios/../include/generated/regions.ld powerpc-linux-gnu + +ROM usage: 25.59KiB (39.99%) +RAM usage: 1.34KiB (2.10%) + +rm crt0.o +make: Leaving directory '/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/bios' diff --git a/dev/build/litex/csr.csv b/dev/build/litex/csr.csv index 22979da..b345912 100644 --- a/dev/build/litex/csr.csv +++ b/dev/build/litex/csr.csv @@ -1,5 +1,5 @@ #-------------------------------------------------------------------------------- -# Auto-generated by LiteX (33ae301d) on 2022-08-15 13:16:22 +# Auto-generated by LiteX (33ae301d) on 2022-08-17 12:09:08 #-------------------------------------------------------------------------------- csr_base,leds,0xfff01800,, csr_base,buttons,0xfff02000,, @@ -32,7 +32,7 @@ constant,config_clock_frequency,100000000,, constant,config_cpu_has_interrupt,None,, constant,config_cpu_reset_addr,0,, constant,config_cpu_type_a2o,None,, -constant,config_cpu_variant_standard,None,, +constant,config_cpu_variant_wb_32be,None,, constant,config_cpu_human_name,a2owb,, constant,config_cpu_nop,nop,, constant,uart_polling,None,, diff --git a/dev/build/litex/make b/dev/build/litex/makesoc similarity index 100% rename from dev/build/litex/make rename to dev/build/litex/makesoc diff --git a/dev/build/litex/readme.md b/dev/build/litex/readme.md index 9416473..ecd92fc 100644 --- a/dev/build/litex/readme.md +++ b/dev/build/litex/readme.md @@ -2,6 +2,95 @@ ## Litex +### Try 32BE and 64LE software builds + +#### 64LE + +``` +a2o.py --csr-csv csr.csv +# completes OK and build/cmod7_kintex/software is created +``` + +#### 32BE + +``` +a2o_32.py --csr-csv csr.csv + +Running test binary command: /data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libc/meson-private/sanitycheckc.exe +C compiler for the build machine: ccache cc (gcc 9.4.0 "cc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0") +C linker for the build machine: cc ld.bfd 2.34 +Build machine cpu family: x86_64 +Build machine cpu: x86_64 +Host machine cpu family: ppc +Host machine cpu: a2o +Target machine cpu family: ppc +Target machine cpu: a2o + +../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/meson.build:99:2: ERROR: Problem encountered: + +Unsupported architecture: "ppc" +``` + +* change core.py cpu_family="powerpc"; warning only :) + +``` +a2o_32.py --csr-csv csr.csv + +... +WARNING: Unknown CPU family powerpc, please report this at https://github.com/mesonbuild/meson/issues/new +... + +[15/795] Compiling C object newlib/libc.a.p/libc_machine_powerpc_setjmp.S.o +FAILED: newlib/libc.a.p/libc_machine_powerpc_setjmp.S.o +powerpc-linux-gnu-gcc -Inewlib/libc.a.p -Inewlib -I../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib -Inewlib/libm/common -I../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libm/common -Inewlib/libc/machine/powerpc -I../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/machine/powerpc -Inewlib/libc/tinystdio -I../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/tinystdio -I. -I../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data -Inewlib/libc/include -I../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/include -I/home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/tinystdio -I/home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/include -I/data/projects/litex/litex/soc/software/libbase -I/data/projects/litex/litex/soc/software/include -I/data/projects/litex/litex/soc/software -I/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/include -I/data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/include/../libc -I/data/projects/a2o/dev/build/litex/a2o -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c18 -Os -g -ffunction-sections -Os -mcpu=a2 -m32 -mbig-endian -fomit-frame-pointer -fno-builtin -fno-stack-protector -fexceptions -D__a2o__ -g3 -fomit-frame-pointer -Wall -fno-builtin -fno-stack-protector -fexceptions -Wpragmas -include /data/projects/a2o/dev/build/litex/build/cmod7_kintex/software/libc/picolibc.h -fno-stack-protector -U_FORTIFY_SOURCE -fno-common -frounding-math -DFORMAT_DEFAULT_INTEGER -Werror=implicit-function-declaration -Werror=vla -Warray-bounds -Wold-style-definition -Wno-missing-braces -Wno-implicit-int -Wno-return-type -D_COMPILING_NEWLIB -MD -MQ newlib/libc.a.p/libc_machine_powerpc_setjmp.S.o -MF newlib/libc.a.p/libc_machine_powerpc_setjmp.S.o.d -o newlib/libc.a.p/libc_machine_powerpc_setjmp.S.o -c ../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/machine/powerpc/setjmp.S +../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/machine/powerpc/setjmp.S:30:2: error: #error 32-bit + 30 | #error 32-bit + +``` + +* get rid of forced error in data/newlib/libc/machine/powerpc/setjmp.S + +``` +cd pythondata-software-picolibc$ +# //#error 32-bit +pip3 install . +``` + +``` +a2o_32.py --csr-csv csr.csv + +../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/include/machine/endian.h:74:30: error: expected statement before ‘)’ token + 74 | #define ntohl(_x) __ntohl(_x)) + | ^ +../../../../../../../../../../home/wtf/.local/lib/python3.8/site-packages/pythondata_software_picolibc/data/newlib/libc/xdr/xdr_rec.c:827:12: note: in expansion of macro ‘ntohl’ + 827 | header = ntohl (header); + | ^~~~~ +[438/795] Compiling C object newlib/libc.a.p/libc_time_strftime.c.o +ninja: build stopped: subcommand failed. +``` + +* fix syntax in data/newlib/libc/include/machine/endian.h + +``` +cd pythondata-software-picolibc$ +# #define htonl(_x) __htonl(_x) +# #define htons(_x) __htons(_x) +# #define ntohl(_x) __ntohl(_x) +# #define ntohs(_x) __ntohs(_x) +pip3 install . +``` + +* add crt0savres.s for missing 32b functions +* now compiles and builds +* seems semi-copacetic so far + +``` +powerpc-linux-gnu-objdump -d build/cmod7_kintex/software/bios/bios.elf > bios_32.d +``` + + + + #### Core and wishbone wrapper with extra stuff for Litex integration * create a2o/core.py and a2o.py (SOC) from a2p