Port-arm archive

aarch64 support added

To : port-arm%netbsd.org@localhost

: Subject : aarch64 support added

: From : Ryo Shimizu <ryo%nerv.org@localhost>

: Date: Sun, 01 Apr 2018 13:38:16 +0900

Hi! all, I have committed about adding initial support for aarch64. booting log on RaspberryPI3: boot NetBSD/evbarm (aarch64) Drop to EL1...OK Creating VA=PA tables Creating KSEG tables Creating KVA=PA tables Creating devmap tables MMU Enable...OK VSTART = ffffffc000001ff4 FDT<3ab46000> devmap cpufunc bootstrap consinit ok uboot: args 0x3ab46000, 0, 0, 0 NetBSD/evbarm (fdt) booting ... FDT /memory [0] @ 0x0 size 0x3b000000 MEM: add 0-3b000000 MEM: res 0-1000 MEM: res 3ab46000-3ab4a000 Usable memory: 1000 - 3ab45fff 3ab4a000 - 3affffff initarm: kernel phys start 1000000 end 17bd000 MEM: res 1000000-17bd000 bootargs: root=axe0 1000 - ffffff 17bd000 - 3ab45fff 3ab4a000 - 3affffff ------------------------------------------ kern_vtopdiff = 0xffffffbfff000000 physical_start = 0x0000000000001000 kernel_start_phys = 0x0000000001000000 kernel_end_phys = 0x00000000017bd000 physical_end = 0x000000003ab45000 VM_MIN_KERNEL_ADDRESS = 0xffffffc000000000 kernel_start_l2 = 0xffffffc000000000 kernel_start = 0xffffffc000000000 kernel_end = 0xffffffc0007bd000 kernel_end_l2 = 0xffffffc000800000 (kernel va area) (devmap va area) VM_MAX_KERNEL_ADDRESS = 0xffffffffffe00000 ------------------------------------------ Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 8.99.14 (RPI64) #11: Fri Mar 30 12:34:19 JST 2018 ryo@moveq:/usr/home/ryo/tmp/netbsd-src-ryo-wip/sys/arch/evbarm/compile/RPI64 total memory = 936 MB avail memory = 877 MB armfdt0 (root) fdt0 at armfdt0: Raspberry Pi 3 Model B fdt1 at fdt0 fdt2 at fdt0 fdt3 at fdt0 fclock0 at fdt2: 19200000 Hz fixed clock fclock1 at fdt2: 480000000 Hz fixed clock cpus0 at fdt0 cpu0 at cpus0: Cortex-A53 r0p4 (Cortex V8-A core) cpu0: CPU Affinity 0-0-0-0 cpu0: IC enabled, DC enabled, EL0/EL1 stack Alignment check enabled cpu0: Cache Writeback Granule 16B, Exclusives Reservation Granule 16B cpu0: Dcache line 64, Icache line 64 cpu0: L1 32KB/64B 2-way read-allocate VIPT Instruction cache cpu0: L1 32KB/64B 4-way write-back read-allocate write-allocate PIPT Data cache cpu0: L2 512KB/64B 16-way write-back read-allocate write-allocate PIPT Unified cache cpu0: revID=0x80, PMCv3, 4k table, 64k table, 16bit ASID cpu0: auxID=0x10000, FP, CRC32, NEON, rounding, NaN propagation, denormals, 32x64bitRegs, Fused Multiply-Add cpu1 at cpus0: disabled (uniprocessor kernel) cpu2 at cpus0: disabled (uniprocessor kernel) cpu3 at cpus0: disabled (uniprocessor kernel) bcmicu0 at fdt1 bcmicu1 at fdt1 bcmcprman0 at fdt1: BCM283x Clock Controller gtmr0 at fdt0: Generic Timer gtmr0: interrupting on local_intc irq 3 armgtmr0 at gtmr0: ARMv7 Generic 64-bit Timer (19200 kHz) bcmaux0 at fdt1 /soc/thermal@7e212000 at fdt1 not configured /soc/dsi@7e209000 at fdt1 not configured bcmgpio0 at fdt1: GPIO controller gpio0 at bcmgpio0: 32 pins gpio1 at bcmgpio0: 22 pins bcmdmac0 at fdt1: DMA0 DMA2 DMA4 DMA5 DMA8 DMA9 DMA10 /soc/power at fdt1 not configured bsciic0 at fdt1: Broadcom Serial Controller iic0 at bsciic0: I2C bus /phy at fdt0 not configured bcmmbox0 at fdt1: VC mailbox bcmmbox0: interrupting on icu irq 193 vcmbox0 at bcmmbox0 /soc/firmware at fdt1 not configured /framebuffer@3daf0000 at fdt0 not configured gpioleds0 at fdt0: ACT /soc/timer@7e003000 at fdt1 not configured watchdog0 at fdt1: Power management, Reset and Watchdog controller bcmrng0 at fdt1: RNG plcom0 at fdt1 plcom0: txfifo disabled sdhost0 at fdt1: SD HOST controller sdhost0: interrupting on icu irq 184 bsciic1 at fdt1: Broadcom Serial Controller iic1 at bsciic1: I2C bus /soc/pixelvalve@7e206000 at fdt1 not configured /soc/pixelvalve@7e207000 at fdt1 not configured com0 at fdt1: BCM AUX UART, working fifo com0: console com0: interrupting on icu irq 157 /soc/pwm@7e20c000 at fdt1 not configured sdhc0 at fdt1: SDHC controller sdhc0: interrupting on icu irq 190 /soc/hvs@7e400000 at fdt1 not configured bsciic2 at fdt1: Broadcom Serial Controller iic2 at bsciic2: I2C bus /soc/vec@7e806000 at fdt1 not configured /soc/pixelvalve@7e807000 at fdt1 not configured /soc/hdmi@7e902000 at fdt1 not configured dwctwo0 at fdt1: USB controller dwctwo0: interrupting on icu irq 137 /soc/v3d@7ec00000 at fdt1 not configured /soc/gpu at fdt1 not configured genfb0 at fdt1rpi_fb_init: addr = 0xfd876000 size = 3686400 rpi_fb_init: depth = 32 rpi_fb_init: pitch = 5120 rpi_fb_init: width = 1280 height = 720 rpi_fb_init: vwidth = 1280 vheight = 720 wsdisplay0 at genfb0 kbdmux 1 /soc/vchiq at fdt1 not configured sdmmc0 at sdhost0 sdhc0: SDHC 3.0, rev 153, platform DMA, 250000 kHz, HS 3.3V, re-tuning mode 1, 1024 byte blocks sdmmc1 at sdhc0 slot 0 usb0 at dwctwo0: USB revision 2.0 sdhc0: cmd timeout error ld0 at sdmmc0: <0x03:0x5344:SU02G:0x80:0x10f597b8:0x076> uhub0 at usb0: vendor 0000 (0000) DWC2 root hub (0000), class 9/0, rev 2.00/1.00, addr 1 ld0: 1938 MB, 984 cyl, 64 head, 63 sec, 512 bytes/sect x 3970048 sectors ld0: 4-bit width, 25.000 MHz (manufacturer 0x2d0, product 0xa9a6) at sdmmc1 function 1 not configured (manufacturer 0x2d0, product 0xa9a6) at sdmmc1 function 2 not configured uhub1 at uhub0 port 1: vendor 0424 (0x424) product 9514 (0x9514), class 9/0, rev 2.00/2.00, addr 2 uhub1: multiple transaction translators usmsc0 at uhub1 port 1 usmsc0: vendor 0424 (0x424) product ec00 (0xec00), rev 2.00/2.00, addr 3 usmsc0: Ethernet address b8:27:eb:da:55:5e ukphy0 at usmsc0 phy 1: OUI 0x00800f, model 0x000c, rev. 3 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto axe0 at uhub1 port 3 axe0: ASIX Elec. Corp. (0xb95) AX887 (0x7720), rev 2.00/0.01, addr 4 axe0: Ethernet address 00:90:cc:e5:2b:39 ukphy1 at axe0 phy 16: OUI 0x007063, model 0x0006, rev. 1 ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto uhub0: illegal enable change, port 1 WARNING: 1 error while detecting hardware; check system log. boot device: ld0 root on axe0 nfs_boot: trying static nfs_boot: client_addr=172.17.4.63 nfs_boot: gateway=172.17.4.40 nfs_boot: netmask=255.255.0.0 nfs_boot: server=172.17.4.40 nfs_boot: root=172.17.4.40:/usr/home/ryo/tmp/netbsd-src-ryo-wip/work.evbarm64-el/tree root on 172.17.4.40:/usr/home/ryo/tmp/netbsd-src-ryo-wip/work.evbarm64-el/tree root file system type: nfs kern.module.path=/stand/evbarm/8.99.14/modules WARNING: no TOD clock present WARNING: using filesystem time WARNING: CHECK AND RESET THE DATE! Fri Mar 30 12:35:14 JST 2018 Not checking /: fs_passno = 0 in /etc/fstab Starting file system checks: random_seed: /var/db/entropy-file: Not present Setting tty flags. Setting sysctl variables: ddb.onpanic: 1 -> 0 machdep.cpu.frequency.target: 600 -> 1200 Starting network. Hostname: rpi3 IPv6 mode: host Configuring network interfaces:. Adding interface aliases:. add net default: gateway 172.17.4.1 Waiting for DAD to complete for statically configured addresses... Building databases: dev, utmp, utmpx. Starting syslogd. Mounting all file systems... Clearing temporary files. Checking quotas: done. Setting securelevel: kern.securelevel: 0 -> 1 /etc/rc: WARNING: No swap space configured! /etc/rc.d/swap2 exited with code 1 Starting virecover. Checking for core dump... savecore: (null): _dumplo not in namelist Starting local daemons:. Updating motd. Starting sshd. Starting inetd. Starting cron. The following components reported failures: /etc/rc.d/swap2 See /var/run/rc.log for more information. Fri Mar 30 12:35:31 JST 2018 NetBSD/evbarm (rpi3) (console) login: root dLast login: Fri Mar 30 12:30:24 2018 on console Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 8.99.14 (RPI64) #11: Fri Mar 30 12:34:19 JST 2018 Welcome to NetBSD! This system is running a development snapshot of the NetBSD operating system, also known as NetBSD-current. It is very possible that it has serious bugs, regressions, broken features or other problems. Please bear this in mind and use the system with care. You are encouraged to test this version as thoroughly as possible. Should you encounter any problem, please report it back to the development team using the send-pr(1) utility (requires a working MTA). If yours is not properly set up, use the web interface at: http://www.NetBSD.org/support/send-pr.html Thank you for helping us test and improve NetBSD. We recommend that you create a non-root account and use su(1) for root access. rpi3# uname -ap NetBSD rpi3 8.99.14 NetBSD 8.99.14 (RPI64) #11: Fri Mar 30 12:34:19 JST 2018 ryo@moveq:/usr/home/ryo/tmp/netbsd-src-ryo-wip/sys/arch/evbarm/compile/RPI64 evbarm aarch64 rpi3# Now, multiuser mode works stably on fdt based boards (RPI3,SUNXI,TEGRA). But there are still some problems, more time is required for release. also SMP is not yet. See sys/arch/aarch64/aarch64/TODO for more detail. Especially the problems around TLS of rtld, and C++ stack unwindings are too difficult for me to solve, I give up and need someone's help \(^o^)/ Since C++ doesn't work, ATF also doesn't work. If the ATF works, it will clarify more issues. sys/arch/evbarm64 is gone and integrated into sys/arch/evbarm. One evbarm/conf/GENERIC64 kernel binary supports all fdt (bcm2837,sunxi,tegra) based boards. While on 32bit, sys/arch/evbarm/conf/GENERIC will support all fdt based boards...but doesn't work yet. (WIP) My deepest appreciation goes to Tohru Nishimura (nisimura@) whose writes vector handlers, context switchings, and so on. and his comments and suggestions were innumerably valuable. I would also like to thank Nick Hudson (skrll@) and Jared McNeill (jmcneill@) whose added support FDT and integrated into evbarm. Finally, I would like to thank Matt Thomas (matt@) whose commited aarch64 toolchains and preliminary support for aarch64. Thanks, -- ryo shimizu