head	1.12;
access;
symbols
	netbsd-11-0-RELEASE:1.12
	netbsd-11-0-RC7:1.12
	netbsd-11-0-RC6:1.12
	netbsd-11-0-RC5:1.12
	netbsd-11-0-RC4:1.12
	netbsd-11-0-RC3:1.12
	netbsd-11-0-RC2:1.12
	netbsd-11-0-RC1:1.12
	perseant-exfatfs-base-20250801:1.12
	netbsd-11:1.12.0.126
	netbsd-11-base:1.12
	netbsd-10-1-RELEASE:1.12
	perseant-exfatfs-base-20240630:1.12
	perseant-exfatfs:1.12.0.124
	perseant-exfatfs-base:1.12
	netbsd-8-3-RELEASE:1.12
	netbsd-9-4-RELEASE:1.12
	netbsd-10-0-RELEASE:1.12
	netbsd-10-0-RC6:1.12
	netbsd-10-0-RC5:1.12
	netbsd-10-0-RC4:1.12
	netbsd-10-0-RC3:1.12
	netbsd-10-0-RC2:1.12
	thorpej-ifq:1.12.0.122
	thorpej-ifq-base:1.12
	thorpej-altq-separation:1.12.0.120
	thorpej-altq-separation-base:1.12
	netbsd-10-0-RC1:1.12
	netbsd-10:1.12.0.118
	netbsd-10-base:1.12
	bouyer-sunxi-drm:1.12.0.116
	bouyer-sunxi-drm-base:1.12
	netbsd-9-3-RELEASE:1.12
	thorpej-i2c-spi-conf2:1.12.0.114
	thorpej-i2c-spi-conf2-base:1.12
	thorpej-futex2:1.12.0.112
	thorpej-futex2-base:1.12
	thorpej-cfargs2:1.12.0.110
	thorpej-cfargs2-base:1.12
	cjep_sun2x-base1:1.12
	cjep_sun2x:1.12.0.108
	cjep_sun2x-base:1.12
	cjep_staticlib_x-base1:1.12
	netbsd-9-2-RELEASE:1.12
	cjep_staticlib_x:1.12.0.106
	cjep_staticlib_x-base:1.12
	thorpej-i2c-spi-conf:1.12.0.104
	thorpej-i2c-spi-conf-base:1.12
	thorpej-cfargs:1.12.0.102
	thorpej-cfargs-base:1.12
	thorpej-futex:1.12.0.100
	thorpej-futex-base:1.12
	netbsd-9-1-RELEASE:1.12
	bouyer-xenpvh-base2:1.12
	phil-wifi-20200421:1.12
	bouyer-xenpvh-base1:1.12
	phil-wifi-20200411:1.12
	bouyer-xenpvh:1.12.0.98
	bouyer-xenpvh-base:1.12
	is-mlppp:1.12.0.96
	is-mlppp-base:1.12
	phil-wifi-20200406:1.12
	netbsd-8-2-RELEASE:1.12
	ad-namecache-base3:1.12
	netbsd-9-0-RELEASE:1.12
	netbsd-9-0-RC2:1.12
	ad-namecache-base2:1.12
	ad-namecache-base1:1.12
	ad-namecache:1.12.0.94
	ad-namecache-base:1.12
	netbsd-9-0-RC1:1.12
	phil-wifi-20191119:1.12
	netbsd-9:1.12.0.92
	netbsd-9-base:1.12
	phil-wifi-20190609:1.12
	netbsd-8-1-RELEASE:1.12
	netbsd-8-1-RC1:1.12
	isaki-audio2:1.12.0.90
	isaki-audio2-base:1.12
	pgoyette-compat-merge-20190127:1.12
	pgoyette-compat-20190127:1.12
	pgoyette-compat-20190118:1.12
	pgoyette-compat-1226:1.12
	pgoyette-compat-1126:1.12
	pgoyette-compat-1020:1.12
	pgoyette-compat-0930:1.12
	pgoyette-compat-0906:1.12
	netbsd-7-2-RELEASE:1.12
	pgoyette-compat-0728:1.12
	netbsd-8-0-RELEASE:1.12
	phil-wifi:1.12.0.88
	phil-wifi-base:1.12
	pgoyette-compat-0625:1.12
	netbsd-8-0-RC2:1.12
	pgoyette-compat-0521:1.12
	pgoyette-compat-0502:1.12
	pgoyette-compat-0422:1.12
	netbsd-8-0-RC1:1.12
	pgoyette-compat-0415:1.12
	pgoyette-compat-0407:1.12
	pgoyette-compat-0330:1.12
	pgoyette-compat-0322:1.12
	pgoyette-compat-0315:1.12
	netbsd-7-1-2-RELEASE:1.12
	pgoyette-compat:1.12.0.86
	pgoyette-compat-base:1.12
	netbsd-7-1-1-RELEASE:1.12
	tls-maxphys-base-20171202:1.12
	matt-nb8-mediatek:1.12.0.84
	matt-nb8-mediatek-base:1.12
	nick-nhusb-base-20170825:1.12
	perseant-stdc-iso10646:1.12.0.82
	perseant-stdc-iso10646-base:1.12
	netbsd-8:1.12.0.80
	netbsd-8-base:1.12
	prg-localcount2-base3:1.12
	prg-localcount2-base2:1.12
	prg-localcount2-base1:1.12
	prg-localcount2:1.12.0.78
	prg-localcount2-base:1.12
	pgoyette-localcount-20170426:1.12
	bouyer-socketcan-base1:1.12
	jdolecek-ncq:1.12.0.76
	jdolecek-ncq-base:1.12
	pgoyette-localcount-20170320:1.12
	netbsd-7-1:1.12.0.74
	netbsd-7-1-RELEASE:1.12
	netbsd-7-1-RC2:1.12
	nick-nhusb-base-20170204:1.12
	netbsd-7-nhusb-base-20170116:1.12
	bouyer-socketcan:1.12.0.72
	bouyer-socketcan-base:1.12
	pgoyette-localcount-20170107:1.12
	netbsd-7-1-RC1:1.12
	nick-nhusb-base-20161204:1.12
	pgoyette-localcount-20161104:1.12
	netbsd-7-0-2-RELEASE:1.12
	nick-nhusb-base-20161004:1.12
	localcount-20160914:1.12
	netbsd-7-nhusb:1.12.0.70
	netbsd-7-nhusb-base:1.12
	pgoyette-localcount-20160806:1.12
	pgoyette-localcount-20160726:1.12
	pgoyette-localcount:1.12.0.68
	pgoyette-localcount-base:1.12
	nick-nhusb-base-20160907:1.12
	nick-nhusb-base-20160529:1.12
	netbsd-7-0-1-RELEASE:1.12
	nick-nhusb-base-20160422:1.12
	nick-nhusb-base-20160319:1.12
	nick-nhusb-base-20151226:1.12
	netbsd-7-0:1.12.0.66
	netbsd-7-0-RELEASE:1.12
	nick-nhusb-base-20150921:1.12
	netbsd-7-0-RC3:1.12
	netbsd-7-0-RC2:1.12
	netbsd-7-0-RC1:1.12
	nick-nhusb-base-20150606:1.12
	nick-nhusb-base-20150406:1.12
	nick-nhusb:1.12.0.64
	nick-nhusb-base:1.12
	netbsd-5-2-3-RELEASE:1.12
	netbsd-5-1-5-RELEASE:1.12
	netbsd-6-0-6-RELEASE:1.12
	netbsd-6-1-5-RELEASE:1.12
	netbsd-7:1.12.0.62
	netbsd-7-base:1.12
	yamt-pagecache-base9:1.12
	yamt-pagecache-tag8:1.12
	netbsd-6-1-4-RELEASE:1.12
	netbsd-6-0-5-RELEASE:1.12
	tls-earlyentropy:1.12.0.60
	tls-earlyentropy-base:1.12
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.12
	riastradh-drm2-base3:1.12
	netbsd-6-1-3-RELEASE:1.12
	netbsd-6-0-4-RELEASE:1.12
	netbsd-5-2-2-RELEASE:1.12
	netbsd-5-1-4-RELEASE:1.12
	netbsd-6-1-2-RELEASE:1.12
	netbsd-6-0-3-RELEASE:1.12
	netbsd-5-2-1-RELEASE:1.12
	netbsd-5-1-3-RELEASE:1.12
	rmind-smpnet-nbase:1.12
	netbsd-6-1-1-RELEASE:1.12
	riastradh-drm2-base2:1.12
	riastradh-drm2-base1:1.12
	riastradh-drm2:1.12.0.58
	riastradh-drm2-base:1.12
	rmind-smpnet:1.12.0.50
	rmind-smpnet-base:1.12
	netbsd-6-1:1.12.0.56
	netbsd-6-0-2-RELEASE:1.12
	netbsd-6-1-RELEASE:1.12
	khorben-n900:1.12.0.54
	netbsd-6-1-RC4:1.12
	netbsd-6-1-RC3:1.12
	agc-symver:1.12.0.52
	agc-symver-base:1.12
	netbsd-6-1-RC2:1.12
	netbsd-6-1-RC1:1.12
	yamt-pagecache-base8:1.12
	netbsd-5-2:1.12.0.48
	netbsd-6-0-1-RELEASE:1.12
	yamt-pagecache-base7:1.12
	netbsd-5-2-RELEASE:1.12
	netbsd-5-2-RC1:1.12
	matt-nb6-plus-nbase:1.12
	yamt-pagecache-base6:1.12
	netbsd-6-0:1.12.0.46
	netbsd-6-0-RELEASE:1.12
	netbsd-6-0-RC2:1.12
	tls-maxphys:1.12.0.44
	tls-maxphys-base:1.12
	matt-nb6-plus:1.12.0.42
	matt-nb6-plus-base:1.12
	netbsd-6-0-RC1:1.12
	jmcneill-usbmp-base10:1.12
	yamt-pagecache-base5:1.12
	jmcneill-usbmp-base9:1.12
	yamt-pagecache-base4:1.12
	jmcneill-usbmp-base8:1.12
	jmcneill-usbmp-base7:1.12
	jmcneill-usbmp-base6:1.12
	jmcneill-usbmp-base5:1.12
	jmcneill-usbmp-base4:1.12
	jmcneill-usbmp-base3:1.12
	jmcneill-usbmp-pre-base2:1.12
	jmcneill-usbmp-base2:1.12
	netbsd-6:1.12.0.40
	netbsd-6-base:1.12
	netbsd-5-1-2-RELEASE:1.12
	netbsd-5-1-1-RELEASE:1.12
	jmcneill-usbmp:1.12.0.38
	jmcneill-usbmp-base:1.12
	jmcneill-audiomp3:1.12.0.36
	jmcneill-audiomp3-base:1.12
	yamt-pagecache-base3:1.12
	yamt-pagecache-base2:1.12
	yamt-pagecache:1.12.0.34
	yamt-pagecache-base:1.12
	rmind-uvmplock-nbase:1.12
	cherry-xenmp:1.12.0.32
	cherry-xenmp-base:1.12
	jym-xensuspend-nbase:1.12
	uebayasi-xip-base7:1.12
	bouyer-quota2-nbase:1.12
	bouyer-quota2:1.12.0.30
	bouyer-quota2-base:1.12
	jruoho-x86intr:1.12.0.28
	jruoho-x86intr-base:1.12
	matt-mips64-premerge-20101231:1.12
	matt-nb5-mips64-premerge-20101231:1.12
	matt-nb5-pq3:1.12.0.26
	matt-nb5-pq3-base:1.12
	netbsd-5-1:1.12.0.24
	uebayasi-xip-base6:1.12
	uebayasi-xip-base5:1.12
	netbsd-5-1-RELEASE:1.12
	uebayasi-xip-base4:1.12
	uebayasi-xip-base3:1.12
	yamt-nfs-mp-base11:1.12
	netbsd-5-1-RC4:1.12
	matt-nb5-mips64-k15:1.12
	uebayasi-xip-base2:1.12
	yamt-nfs-mp-base10:1.12
	netbsd-5-1-RC3:1.12
	netbsd-5-1-RC2:1.12
	uebayasi-xip-base1:1.12
	netbsd-5-1-RC1:1.12
	rmind-uvmplock:1.12.0.22
	rmind-uvmplock-base:1.12
	yamt-nfs-mp-base9:1.12
	uebayasi-xip:1.12.0.20
	uebayasi-xip-base:1.12
	netbsd-5-0-2-RELEASE:1.12
	matt-nb5-mips64-premerge-20091211:1.12
	matt-premerge-20091211:1.12
	yamt-nfs-mp-base8:1.12
	matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.12
	matt-nb4-mips64-k7-u2a-k9b:1.12
	matt-nb5-mips64-u1-k1-k5:1.12
	yamt-nfs-mp-base7:1.12
	matt-nb5-mips64:1.12.0.18
	netbsd-5-0-1-RELEASE:1.12
	jymxensuspend-base:1.12
	yamt-nfs-mp-base6:1.12
	yamt-nfs-mp-base5:1.12
	yamt-nfs-mp-base4:1.12
	yamt-nfs-mp-base3:1.12
	nick-hppapmap-base4:1.12
	nick-hppapmap-base3:1.12
	netbsd-5-0:1.12.0.16
	netbsd-5-0-RELEASE:1.12
	netbsd-5-0-RC4:1.12
	netbsd-5-0-RC3:1.12
	nick-hppapmap-base2:1.12
	netbsd-5-0-RC2:1.12
	jym-xensuspend:1.12.0.14
	jym-xensuspend-base:1.12
	netbsd-5-0-RC1:1.12
	haad-dm-base2:1.12
	haad-nbase2:1.12
	ad-audiomp2:1.12.0.12
	ad-audiomp2-base:1.12
	netbsd-5:1.12.0.10
	netbsd-5-base:1.12
	nick-hppapmap:1.12.0.8
	nick-hppapmap-base:1.12
	matt-mips64-base2:1.12
	haad-dm-base1:1.12
	wrstuden-revivesa-base-4:1.12
	netbsd-4-0-1-RELEASE:1.11
	wrstuden-revivesa-base-3:1.12
	wrstuden-revivesa-base-2:1.12
	wrstuden-fixsa-newbase:1.11
	nick-csl-alignment-base5:1.11
	haad-dm:1.12.0.6
	haad-dm-base:1.12
	wrstuden-revivesa-base-1:1.12
	simonb-wapbl-nbase:1.12
	yamt-pf42-base4:1.12
	simonb-wapbl:1.12.0.4
	simonb-wapbl-base:1.12
	yamt-pf42-base3:1.12
	hpcarm-cleanup-nbase:1.12
	yamt-pf42-baseX:1.11
	yamt-pf42-base2:1.12
	yamt-nfs-mp-base2:1.12
	wrstuden-revivesa:1.12.0.2
	wrstuden-revivesa-base:1.12
	yamt-nfs-mp:1.11.0.78
	yamt-nfs-mp-base:1.11
	yamt-pf42:1.11.0.76
	yamt-pf42-base:1.11
	ad-socklock-base1:1.11
	yamt-lazymbuf-base15:1.11
	yamt-lazymbuf-base14:1.11
	keiichi-mipv6-nbase:1.11
	mjf-devfs2:1.11.0.74
	mjf-devfs2-base:1.12
	nick-net80211-sync:1.11.0.72
	nick-net80211-sync-base:1.11
	keiichi-mipv6:1.11.0.70
	keiichi-mipv6-base:1.11
	bouyer-xeni386-merge1:1.11
	matt-armv6-prevmlocking:1.11
	wrstuden-fixsa-base-1:1.11
	vmlocking2-base3:1.11
	netbsd-4-0:1.11.0.68
	netbsd-4-0-RELEASE:1.11
	bouyer-xeni386-nbase:1.11
	yamt-kmem-base3:1.11
	cube-autoconf:1.11.0.66
	cube-autoconf-base:1.11
	yamt-kmem-base2:1.11
	bouyer-xeni386:1.11.0.64
	bouyer-xeni386-base:1.11
	yamt-kmem:1.11.0.62
	yamt-kmem-base:1.11
	vmlocking2-base2:1.11
	reinoud-bufcleanup-nbase:1.11
	vmlocking2:1.11.0.60
	vmlocking2-base1:1.11
	netbsd-4-0-RC5:1.11
	matt-nb4-arm:1.11.0.58
	matt-nb4-arm-base:1.11
	matt-armv6-nbase:1.11
	jmcneill-base:1.11
	netbsd-4-0-RC4:1.11
	mjf-devfs:1.11.0.56
	mjf-devfs-base:1.11
	bouyer-xenamd64-base2:1.11
	vmlocking-nbase:1.11
	yamt-x86pmap-base4:1.11
	bouyer-xenamd64:1.11.0.54
	bouyer-xenamd64-base:1.11
	netbsd-4-0-RC3:1.11
	yamt-x86pmap-base3:1.11
	yamt-x86pmap-base2:1.11
	netbsd-4-0-RC2:1.11
	yamt-x86pmap:1.11.0.52
	yamt-x86pmap-base:1.11
	netbsd-4-0-RC1:1.11
	matt-armv6:1.11.0.50
	matt-armv6-base:1.11
	jmcneill-pm:1.11.0.48
	jmcneill-pm-base:1.11
	hpcarm-cleanup:1.11.0.46
	hpcarm-cleanup-base:1.11
	nick-csl-alignment:1.11.0.44
	nick-csl-alignment-base:1.11
	matt-mips64:1.11.0.42
	matt-mips64-base:1.11
	netbsd-3-1-1-RELEASE:1.10
	netbsd-3-0-3-RELEASE:1.10
	yamt-idlelwp-base8:1.11
	wrstuden-fixsa:1.11.0.40
	wrstuden-fixsa-base:1.11
	ppcoea-renovation:1.11.0.38
	ppcoea-renovation-base:1.11
	thorpej-atomic:1.11.0.36
	thorpej-atomic-base:1.11
	reinoud-bufcleanup:1.11.0.34
	reinoud-bufcleanup-base:1.11
	mjf-ufs-trans:1.11.0.32
	mjf-ufs-trans-base:1.11
	vmlocking:1.11.0.30
	vmlocking-base:1.11
	ad-audiomp:1.11.0.28
	ad-audiomp-base:1.11
	yamt-idlelwp:1.11.0.26
	post-newlock2-merge:1.11
	newlock2-nbase:1.11
	yamt-splraiseipl-base5:1.11
	yamt-splraiseipl-base4:1.11
	yamt-splraiseipl-base3:1.11
	abandoned-netbsd-4-base:1.11
	abandoned-netbsd-4:1.11.0.18
	netbsd-3-1:1.10.0.22
	netbsd-3-1-RELEASE:1.10
	netbsd-3-0-2-RELEASE:1.10
	yamt-splraiseipl-base2:1.11
	netbsd-3-1-RC4:1.10
	yamt-splraiseipl:1.11.0.22
	yamt-splraiseipl-base:1.11
	netbsd-3-1-RC3:1.10
	yamt-pdpolicy-base9:1.11
	newlock2:1.11.0.20
	newlock2-base:1.11
	yamt-pdpolicy-base8:1.11
	netbsd-3-1-RC2:1.10
	netbsd-3-1-RC1:1.10
	yamt-pdpolicy-base7:1.11
	netbsd-4:1.11.0.24
	netbsd-4-base:1.11
	yamt-pdpolicy-base6:1.11
	chap-midi-nbase:1.11
	netbsd-3-0-1-RELEASE:1.10
	gdamore-uart:1.11.0.16
	gdamore-uart-base:1.11
	simonb-timcounters-final:1.11
	yamt-pdpolicy-base5:1.11
	chap-midi:1.11.0.14
	chap-midi-base:1.11
	yamt-pdpolicy-base4:1.11
	yamt-pdpolicy-base3:1.11
	peter-altq-base:1.11
	peter-altq:1.11.0.12
	yamt-pdpolicy-base2:1.11
	elad-kernelauth-base:1.11
	elad-kernelauth:1.11.0.10
	yamt-pdpolicy:1.11.0.8
	yamt-pdpolicy-base:1.11
	yamt-uio_vmspace-base5:1.11
	simonb-timecounters:1.11.0.6
	simonb-timecounters-base:1.11
	rpaulo-netinet-merge-pcb:1.11.0.4
	rpaulo-netinet-merge-pcb-base:1.11
	yamt-uio_vmspace:1.11.0.2
	netbsd-3-0:1.10.0.20
	netbsd-3-0-RELEASE:1.10
	netbsd-3-0-RC6:1.10
	yamt-readahead-base3:1.10
	netbsd-3-0-RC5:1.10
	netbsd-3-0-RC4:1.10
	netbsd-3-0-RC3:1.10
	yamt-readahead-base2:1.10
	netbsd-3-0-RC2:1.10
	yamt-readahead-pervnode:1.10
	yamt-readahead-perfile:1.10
	yamt-readahead:1.10.0.18
	yamt-readahead-base:1.10
	netbsd-3-0-RC1:1.10
	yamt-vop-base3:1.10
	netbsd-2-0-3-RELEASE:1.9
	netbsd-2-1:1.9.0.22
	yamt-vop-base2:1.10
	thorpej-vnode-attr:1.10.0.16
	thorpej-vnode-attr-base:1.10
	netbsd-2-1-RELEASE:1.9
	yamt-vop:1.10.0.14
	yamt-vop-base:1.10
	netbsd-2-1-RC6:1.9
	netbsd-2-1-RC5:1.9
	netbsd-2-1-RC4:1.9
	netbsd-2-1-RC3:1.9
	netbsd-2-1-RC2:1.9
	netbsd-2-1-RC1:1.9
	yamt-lazymbuf:1.10.0.12
	yamt-km-base4:1.10
	netbsd-2-0-2-RELEASE:1.9
	yamt-km-base3:1.10
	netbsd-3:1.10.0.10
	netbsd-3-base:1.10
	yamt-km-base2:1.10
	yamt-km:1.10.0.6
	yamt-km-base:1.10
	kent-audio2:1.10.0.4
	kent-audio2-base:1.10
	netbsd-2-0-1-RELEASE:1.9
	kent-audio1-beforemerge:1.10
	netbsd-2:1.9.0.20
	netbsd-2-base:1.9
	kent-audio1:1.10.0.2
	kent-audio1-base:1.10
	netbsd-2-0-RELEASE:1.9
	netbsd-2-0-RC5:1.9
	netbsd-2-0-RC4:1.9
	netbsd-2-0-RC3:1.9
	netbsd-2-0-RC2:1.9
	netbsd-2-0-RC1:1.9
	netbsd-2-0:1.9.0.18
	netbsd-2-0-base:1.9
	netbsd-1-6-PATCH002-RELEASE:1.9
	netbsd-1-6-PATCH002:1.9
	netbsd-1-6-PATCH002-RC4:1.9
	netbsd-1-6-PATCH002-RC3:1.9
	netbsd-1-6-PATCH002-RC2:1.9
	netbsd-1-6-PATCH002-RC1:1.9
	ktrace-lwp:1.9.0.16
	ktrace-lwp-base:1.10
	netbsd-1-6-PATCH001:1.9
	netbsd-1-6-PATCH001-RELEASE:1.9
	netbsd-1-6-PATCH001-RC3:1.9
	netbsd-1-6-PATCH001-RC2:1.9
	netbsd-1-6-PATCH001-RC1:1.9
	nathanw_sa_end:1.7.8.2
	nathanw_sa_before_merge:1.9
	fvdl_fs64_base:1.9
	gmcgarry_ctxsw:1.9.0.14
	gmcgarry_ctxsw_base:1.9
	gmcgarry_ucred:1.9.0.12
	gmcgarry_ucred_base:1.9
	nathanw_sa_base:1.9
	kqueue-aftermerge:1.9
	kqueue-beforemerge:1.9
	netbsd-1-6-RELEASE:1.9
	netbsd-1-6-RC3:1.9
	netbsd-1-6-RC2:1.9
	netbsd-1-6-RC1:1.9
	netbsd-1-6:1.9.0.10
	netbsd-1-6-base:1.9
	gehenna-devsw:1.9.0.8
	gehenna-devsw-base:1.9
	eeh-devprop:1.9.0.6
	eeh-devprop-base:1.9
	newlock:1.9.0.4
	newlock-base:1.9
	ifpoll-base:1.9
	nathanw_sa:1.7.0.8
	thorpej-mips-cache:1.7.0.6
	thorpej-mips-cache-base:1.7
	thorpej-devvp-base3:1.7
	thorpej-devvp-base2:1.7
	post-chs-ubcperf:1.7
	pre-chs-ubcperf:1.7
	thorpej-devvp:1.7.0.4
	thorpej-devvp-base:1.7
	kqueue:1.7.0.2
	kqueue-base:1.9
	thorpej_scsipi_beforemerge:1.5
	thorpej_scsipi_base:1.4
	thorpej_scsipi:1.1.0.2
	thorpej_scsipi_nbase:1.4;
locks; strict;
comment	@// @;


1.12
date	2008.04.28.20.23.20;	author martin;	state Exp;
branches;
next	1.11;

1.11
date	2005.12.11.12.17.28;	author christos;	state Exp;
branches
	1.11.74.1
	1.11.76.1
	1.11.78.1;
next	1.10;

1.10
date	2004.08.06.18.33.09;	author uch;	state Exp;
branches;
next	1.9;

1.9
date	2002.02.11.17.08.56;	author uch;	state Exp;
branches
	1.9.16.1;
next	1.8;

1.8
date	2002.02.04.17.38.27;	author uch;	state Exp;
branches;
next	1.7;

1.7
date	2001.05.21.15.54.25;	author uch;	state Exp;
branches
	1.7.2.1
	1.7.8.1;
next	1.6;

1.6
date	2001.05.08.18.51.25;	author uch;	state Exp;
branches;
next	1.5;

1.5
date	2001.04.24.19.28.01;	author uch;	state Exp;
branches;
next	1.4;

1.4
date	2001.03.22.18.27.51;	author uch;	state Exp;
branches;
next	1.3;

1.3
date	2001.03.15.17.24.47;	author uch;	state Exp;
branches;
next	1.2;

1.2
date	2001.03.13.16.31.31;	author uch;	state Exp;
branches;
next	1.1;

1.1
date	2001.02.09.18.35.18;	author uch;	state Exp;
branches
	1.1.2.1
	1.1.4.1;
next	;

1.11.74.1
date	2008.06.02.13.22.09;	author mjf;	state Exp;
branches;
next	;

1.11.76.1
date	2008.05.18.12.32.02;	author yamt;	state Exp;
branches;
next	;

1.11.78.1
date	2008.05.16.02.22.26;	author yamt;	state Exp;
branches;
next	;

1.9.16.1
date	2004.08.12.11.41.06;	author skrll;	state Exp;
branches;
next	1.9.16.2;

1.9.16.2
date	2004.09.18.14.34.46;	author skrll;	state Exp;
branches;
next	1.9.16.3;

1.9.16.3
date	2004.09.21.13.15.54;	author skrll;	state Exp;
branches;
next	;

1.7.2.1
date	2002.02.11.20.08.00;	author jdolecek;	state Exp;
branches;
next	1.7.2.2;

1.7.2.2
date	2002.03.16.15.57.52;	author jdolecek;	state Exp;
branches;
next	;

1.7.8.1
date	2001.05.21.15.54.25;	author nathanw;	state dead;
branches;
next	1.7.8.2;

1.7.8.2
date	2002.02.28.04.09.46;	author nathanw;	state Exp;
branches;
next	;

1.1.2.1
date	2001.02.09.18.35.18;	author bouyer;	state dead;
branches;
next	1.1.2.2;

1.1.2.2
date	2001.02.11.19.10.13;	author bouyer;	state Exp;
branches;
next	1.1.2.3;

1.1.2.3
date	2001.03.27.15.30.50;	author bouyer;	state Exp;
branches;
next	;

1.1.4.1
date	2001.04.09.01.52.46;	author nathanw;	state Exp;
branches;
next	1.1.4.2;

1.1.4.2
date	2001.06.21.19.23.03;	author nathanw;	state Exp;
branches;
next	;


desc
@@


1.12
log
@Remove clause 3 and 4 from TNF licenses
@
text
@/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.11 2005/12/11 12:17:28 christos Exp $	*/

/*-
 * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by UCHIYAMA Yasushi.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#include <hpcmenu.h>
#include <sh3/sh_console.h>
#include <sh3/dev/sh.h>
#include <sh3/dev/hd64461.h>
#include <sh3/dev/hd64465.h>

// console switch
#include "../../../../hpcsh/include/console.h"

const struct SHConsole::console_info
SHConsole::_console_info[] = {
	{ PLATID_CPU_SH_3        , PLATID_MACH_HP                          , SCIFPrint       , BI_CNUSE_SCIF       , BI_CNUSE_HD64461VIDEO },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI                     , HD64461COMPrint , BI_CNUSE_HD64461COM , BI_CNUSE_HD64461VIDEO },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_CASIO_CASSIOPEIAA_A55V      , 0               , BI_CNUSE_BUILTIN    , BI_CNUSE_BUILTIN },
	{ PLATID_CPU_SH_4_7750   , PLATID_MACH_HITACHI_PERSONA_HPW650PA    , HD64465COMPrint , BI_CNUSE_HD64465COM , BI_CNUSE_BUILTIN },
	{ 0, 0, 0 } // terminator.
};

const struct SHConsole::console_info *
SHConsole::selectBootConsole(Console &cons, enum consoleSelect select)
{
	const struct console_info *tab = _console_info;
	platid_mask_t target, entry;

	target.dw.dw0 = HPC_PREFERENCE.platid_hi;
	target.dw.dw1 = HPC_PREFERENCE.platid_lo;

	// search apriori setting if any.
	for (; tab->cpu; tab++) {
		entry.dw.dw0 = tab->cpu;
		entry.dw.dw1 = tab->machine;
		if (platid_match(&target, &entry)) {
			switch (select) {
			case SERIAL:
				cons.setBootConsole(tab->serial_console);
				return tab;
			case VIDEO:
				cons.setBootConsole(tab->video_console);
				return tab;
			}
		}
	}

	return NULL;
}

SHConsole::SHConsole()
{

	_print = 0;
}

SHConsole::~SHConsole()
{
	// NO-OP
}

BOOL
SHConsole::init()
{

	if (!super::init())
		return FALSE;

	const struct console_info *tab = selectBootConsole(*this, SERIAL);
	if (tab != 0) {
		SetKMode(1);	// Native method access P4.
		_print = tab->print;
	}

	// override default instance.
	Console::_instance = this;

	return TRUE;
}

void
SHConsole::print(const TCHAR *fmt, ...)
{

	SETUP_WIDECHAR_BUFFER();

	if (!setupMultibyteBuffer())
		return;

	if (_print == 0)
		super::genericPrint(_bufm);
	else
		_print(_bufm);
}

void
SHConsole::SCIPrint(const char *buf)
{

	SH3_SCI_PRINT(buf);
}

void
SHConsole::SCIFPrint(const char *buf)
{

	SH3_SCIF_PRINT(buf);
}

void
SHConsole::HD64461COMPrint(const char *buf)
{

	HD64461COM_PRINT(buf);
}

void
SHConsole::HD64465COMPrint(const char *buf)
{

	HD64465COM_PRINT(buf);
}
@


1.11
log
@merge ktrace-lwp.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.9.16.3 2004/09/21 13:15:54 skrll Exp $	*/
a17 7
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *        This product includes software developed by the NetBSD
 *        Foundation, Inc. and its contributors.
 * 4. Neither the name of The NetBSD Foundation nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
@


1.11.74.1
log
@Sync with HEAD.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD$	*/
d18 7
@


1.11.76.1
log
@sync with head.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.11 2005/12/11 12:17:28 christos Exp $	*/
d18 7
@


1.11.78.1
log
@sync with head.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.11 2005/12/11 12:17:28 christos Exp $	*/
d18 7
@


1.10
log
@clean up whitespace.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.9 2002/02/11 17:08:56 uch Exp $	*/
@


1.9
log
@totaly clean up SH3/SH4 related code
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.8 2002/02/04 17:38:27 uch Exp $	*/
d99 1
a99 1
	
d107 2
a108 2
	} 
	
@


1.9.16.1
log
@Sync with HEAD.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.9 2002/02/11 17:08:56 uch Exp $	*/
d99 1
a99 1

d107 2
a108 2
	}

@


1.9.16.2
log
@Sync with HEAD.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.10 2004/08/06 18:33:09 uch Exp $	*/
@


1.9.16.3
log
@Fix the sync with head I botched.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.9.16.1 2004/08/12 11:41:06 skrll Exp $	*/
@


1.8
log
@SH4 and HD64465(SH4 companion chip) serial console support.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.7 2001/05/21 15:54:25 uch Exp $	*/
d41 3
a43 2
#include <sh3/hd64461.h>
#include <sh3/hd64465.h>
d45 2
a46 7
// XXX don't define here. arch/hpcsh/include/bootinfo.h
#define BI_CNUSE_SCI		2
#define BI_CNUSE_SCIF		3
#define BI_CNUSE_HD64461COM	4
#define BI_CNUSE_HD64461VIDEO	5
#define BI_CNUSE_HD64465COM	6
#define BI_CNUSE_MQ100		7
d48 1
a48 3
SHConsole *SHConsole::_instance = 0;

struct SHConsole::console_info
d53 1
a53 1
	{ PLATID_CPU_SH_4_7750   , PLATID_MACH_HITACHI_PERSONA_HPW650PA    , HD64465COMPrint , BI_CNUSE_HD64465COM , BI_CNUSE_MQ100 },
d57 1
a57 1
struct SHConsole::console_info *
d60 1
a60 1
	struct console_info *tab = _console_info;
a95 10
SHConsole *
SHConsole::Instance()
{

	if (!_instance)
		_instance = new SHConsole();

	return _instance;
}

d103 3
a105 4
	_kmode = SetKMode(1);

	struct console_info *tab = selectBootConsole(*this, SERIAL);
	if (tab != 0)
d107 1
d109 3
d134 1
a134 1
	SCI_PRINT(buf);
d141 1
a141 1
	SCIF_PRINT(buf);
@


1.7
log
@rework the way to set booted-console flag.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.6 2001/05/08 18:51:25 uch Exp $	*/
d4 1
a4 1
 * Copyright (c) 2001 The NetBSD Foundation, Inc.
d42 1
d49 2
d56 2
a57 2
	{ PLATID_CPU_SH_3        , PLATID_MACH_HP                          , SCIFPrint       , BI_CNUSE_SCIF       , BI_CNUSE_HD64461VIDEO},
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI                     , HD64461COMPrint , BI_CNUSE_HD64461COM , BI_CNUSE_HD64461VIDEO},
d59 1
d80 1
a80 1
				break;
d83 1
a83 1
				break;
d88 1
a88 1
	return tab;
d93 1
d105 1
d131 1
d146 1
d153 1
d160 1
d162 7
@


1.7.8.1
log
@file sh_console.cpp was added on branch nathanw_sa on 2002-02-28 04:09:46 +0000
@
text
@d1 152
@


1.7.8.2
log
@Catch up to -current.
@
text
@a0 156
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.7.8.1 2002/02/28 04:09:46 nathanw Exp $	*/

/*-
 * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by UCHIYAMA Yasushi.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *        This product includes software developed by the NetBSD
 *        Foundation, Inc. and its contributors.
 * 4. Neither the name of The NetBSD Foundation nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#include <hpcmenu.h>
#include <sh3/sh_console.h>
#include <sh3/dev/sh.h>
#include <sh3/dev/hd64461.h>
#include <sh3/dev/hd64465.h>

// console switch
#include "../../../../hpcsh/include/console.h"

const struct SHConsole::console_info
SHConsole::_console_info[] = {
	{ PLATID_CPU_SH_3        , PLATID_MACH_HP                          , SCIFPrint       , BI_CNUSE_SCIF       , BI_CNUSE_HD64461VIDEO },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI                     , HD64461COMPrint , BI_CNUSE_HD64461COM , BI_CNUSE_HD64461VIDEO },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_CASIO_CASSIOPEIAA_A55V      , 0               , BI_CNUSE_BUILTIN    , BI_CNUSE_BUILTIN },
	{ PLATID_CPU_SH_4_7750   , PLATID_MACH_HITACHI_PERSONA_HPW650PA    , HD64465COMPrint , BI_CNUSE_HD64465COM , BI_CNUSE_BUILTIN },
	{ 0, 0, 0 } // terminator.
};

const struct SHConsole::console_info *
SHConsole::selectBootConsole(Console &cons, enum consoleSelect select)
{
	const struct console_info *tab = _console_info;
	platid_mask_t target, entry;

	target.dw.dw0 = HPC_PREFERENCE.platid_hi;
	target.dw.dw1 = HPC_PREFERENCE.platid_lo;

	// search apriori setting if any.
	for (; tab->cpu; tab++) {
		entry.dw.dw0 = tab->cpu;
		entry.dw.dw1 = tab->machine;
		if (platid_match(&target, &entry)) {
			switch (select) {
			case SERIAL:
				cons.setBootConsole(tab->serial_console);
				return tab;
			case VIDEO:
				cons.setBootConsole(tab->video_console);
				return tab;
			}
		}
	}

	return NULL;
}

SHConsole::SHConsole()
{

	_print = 0;
}

SHConsole::~SHConsole()
{
	// NO-OP
}

BOOL
SHConsole::init()
{
	
	if (!super::init())
		return FALSE;

	const struct console_info *tab = selectBootConsole(*this, SERIAL);
	if (tab != 0) {
		SetKMode(1);	// Native method access P4.
		_print = tab->print;
	} 
	
	// override default instance.
	Console::_instance = this;

	return TRUE;
}

void
SHConsole::print(const TCHAR *fmt, ...)
{

	SETUP_WIDECHAR_BUFFER();

	if (!setupMultibyteBuffer())
		return;

	if (_print == 0)
		super::genericPrint(_bufm);
	else
		_print(_bufm);
}

void
SHConsole::SCIPrint(const char *buf)
{

	SH3_SCI_PRINT(buf);
}

void
SHConsole::SCIFPrint(const char *buf)
{

	SH3_SCIF_PRINT(buf);
}

void
SHConsole::HD64461COMPrint(const char *buf)
{

	HD64461COM_PRINT(buf);
}

void
SHConsole::HD64465COMPrint(const char *buf)
{

	HD64465COM_PRINT(buf);
}
@


1.7.2.1
log
@Sync w/ -current.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.7 2001/05/21 15:54:25 uch Exp $	*/
d4 1
a4 1
 * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
a41 1
#include <sh3/hd64465.h>
a47 2
#define BI_CNUSE_HD64465COM	6
#define BI_CNUSE_MQ100		7
d53 2
a54 2
	{ PLATID_CPU_SH_3        , PLATID_MACH_HP                          , SCIFPrint       , BI_CNUSE_SCIF       , BI_CNUSE_HD64461VIDEO },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI                     , HD64461COMPrint , BI_CNUSE_HD64461COM , BI_CNUSE_HD64461VIDEO },
a55 1
	{ PLATID_CPU_SH_4_7750   , PLATID_MACH_HITACHI_PERSONA_HPW650PA    , HD64465COMPrint , BI_CNUSE_HD64465COM , BI_CNUSE_MQ100 },
d76 1
a76 1
				return tab;
d79 1
a79 1
				return tab;
d84 1
a84 1
	return NULL;
a88 1

a99 1

a124 1

a138 1

a144 1

a150 1

a151 7
}

void
SHConsole::HD64465COMPrint(const char *buf)
{

	HD64465COM_PRINT(buf);
@


1.7.2.2
log
@Catch up with -current.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.7.2.1 2002/02/11 20:08:00 jdolecek Exp $	*/
d41 2
a42 3
#include <sh3/dev/sh.h>
#include <sh3/dev/hd64461.h>
#include <sh3/dev/hd64465.h>
d44 7
a50 2
// console switch
#include "../../../../hpcsh/include/console.h"
d52 3
a54 1
const struct SHConsole::console_info
d59 1
a59 1
	{ PLATID_CPU_SH_4_7750   , PLATID_MACH_HITACHI_PERSONA_HPW650PA    , HD64465COMPrint , BI_CNUSE_HD64465COM , BI_CNUSE_BUILTIN },
d63 1
a63 1
const struct SHConsole::console_info *
d66 1
a66 1
	const struct console_info *tab = _console_info;
d102 10
d119 4
a122 3
	const struct console_info *tab = selectBootConsole(*this, SERIAL);
	if (tab != 0) {
		SetKMode(1);	// Native method access P4.
a123 1
	} 
a124 3
	// override default instance.
	Console::_instance = this;

d147 1
a147 1
	SH3_SCI_PRINT(buf);
d154 1
a154 1
	SH3_SCIF_PRINT(buf);
@


1.6
log
@KNF.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.5 2001/04/24 19:28:01 uch Exp $	*/
d43 1
d47 1
d53 3
a55 3
	{ PLATID_CPU_SH_3        , PLATID_MACH_HP                          , SCIFPrint       , BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI                     , HD64461COMPrint , BI_CNUSE_HD64461COM },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_CASIO_CASSIOPEIAA_A55V      , 0               , BI_CNUSE_BUILTIN },
d59 28
d94 1
a108 2
	struct console_info *tab = _console_info;
	platid_mask_t target, entry;
d114 4
a118 14
	target.dw.dw0 = HPC_PREFERENCE.platid_hi;
	target.dw.dw1 = HPC_PREFERENCE.platid_lo;

	// search apriori setting if any.
	for (; tab->cpu; tab++) {
		entry.dw.dw0 = tab->cpu;
		entry.dw.dw1 = tab->machine;
		if (platid_match(&target, &entry)) {
			_print = tab->print;
			_boot_console = tab->boot_console;
			break;
		}
	}

@


1.5
log
@code clean up.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD: sh_console.cpp,v 1.4 2001/03/22 18:27:51 uch Exp $	*/
a133 2


@


1.4
log
@add HD64461 UART serial console.
add SH3 SCI console method
add SH3 TMU register dump
use generic serial console when companion chip is unknown.
@
text
@d1 1
a1 1
/*	$NetBSD: sh_console.cpp,v 1.3 2001/03/15 17:24:47 uch Exp $	*/
a77 1
	HpcMenuInterface &menu = HpcMenuInterface::Instance();
d81 3
d86 2
a87 2
	target.dw.dw0 = menu._pref.platid_hi;
	target.dw.dw1 = menu._pref.platid_lo;
d100 1
a100 3
	// always open COM1 to supply clock and power for the
	// sake of kernel serial driver 
	return openCOM1();
d106 1
a106 4
	va_list ap;
	va_start(ap, fmt);
	wvsprintf(_bufw, fmt, ap);
	va_end(ap);
d108 1
a108 1
	if (!setupBuffer())
d112 1
a112 1
		SerialConsole::genericPrint(_bufm);
@


1.3
log
@setup bootinfo.bi_cnuse at bootloader phase.
@
text
@d1 1
a1 1
/*	$NetBSD: sh_console.cpp,v 1.2 2001/03/13 16:31:31 uch Exp $	*/
d41 1
d51 3
a53 7
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HP_LX_620                   , SCIFPrint, BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HP_LX_620JP                 , SCIFPrint, BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709A  , PLATID_MACH_HP_JORNADA_680              , SCIFPrint, BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709A  , PLATID_MACH_HP_JORNADA_680JP            , SCIFPrint, BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709A  , PLATID_MACH_HP_JORNADA_690              , SCIFPrint, BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709A  , PLATID_MACH_HP_JORNADA_690JP            , SCIFPrint, BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI_PERSONA_HPW230JC    , 0        , BI_CNUSE_HD64461COM },
d80 1
a80 1
	u_int32_t cpu, machine;
d84 2
a85 2
	cpu = menu._pref.platid_hi;
	machine = menu._pref.platid_lo;
d87 1
d89 3
a91 1
		if (tab->cpu == cpu && tab->machine == machine) {
d98 2
a99 4
	/* 
	 * always open COM1 to supply clock and power for the
	 * sake of kernel serial driver 
	 */
a105 3
	if (_print == 0)
		return;

d114 10
a123 1
	_print(_bufm);
d131 7
@


1.2
log
@add SH4 configuration.
(SH) don't access SCIF if the Windows CE's COM1 is not connected to SCIF.
@
text
@d1 1
a1 1
/*	$NetBSD: sh_console.cpp,v 1.1 2001/02/09 18:35:18 uch Exp $	*/
d42 4
d50 7
a56 7
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HP_LX_620                   , SCIFPrint },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HP_LX_620JP                 , SCIFPrint },
	{ PLATID_CPU_SH_3_7709A  , PLATID_MACH_HP_JORNADA_680              , SCIFPrint },
	{ PLATID_CPU_SH_3_7709A  , PLATID_MACH_HP_JORNADA_680JP            , SCIFPrint },
	{ PLATID_CPU_SH_3_7709A  , PLATID_MACH_HP_JORNADA_690              , SCIFPrint },
	{ PLATID_CPU_SH_3_7709A  , PLATID_MACH_HP_JORNADA_690JP            , SCIFPrint },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI_PERSONA_HPW230JC    , 0 }, // HD64461 Serial module
d93 1
@


1.1
log
@bootloader for SH3, SA-1100, TX39, VR41 based Windows CE(2.00 or later)
@
text
@d1 1
a1 1
/*	$NetBSD$	*/
d39 1
d44 56
d103 3
d114 1
a114 1
	PRINT(_bufm);
d116 7
@


1.1.2.1
log
@file sh_console.cpp was added on branch thorpej_scsipi on 2001-02-11 19:10:13 +0000
@
text
@d1 55
@


1.1.2.2
log
@Sync with HEAD.
@
text
@a0 55
/*	$NetBSD: sh_console.cpp,v 1.1.2.1 2001/02/11 19:10:13 bouyer Exp $	*/

/*-
 * Copyright (c) 2001 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by UCHIYAMA Yasushi.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *        This product includes software developed by the NetBSD
 *        Foundation, Inc. and its contributors.
 * 4. Neither the name of The NetBSD Foundation nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#include <sh3/sh_console.h>

SHConsole *SHConsole::_instance = 0;

void
SHConsole::print(const TCHAR *fmt, ...)
{
	va_list ap;
	va_start(ap, fmt);
	wvsprintf(_bufw, fmt, ap);
	va_end(ap);

	if (!setupBuffer())
		return;

	PRINT(_bufm);
}
@


1.1.2.3
log
@Sync with HEAD.
@
text
@d1 1
a1 1
/*	$NetBSD: sh_console.cpp,v 1.1.2.2 2001/03/27 15:30:50 bouyer Exp $	*/
a38 1
#include <hpcmenu.h>
a39 5
#include <sh3/hd64461.h>

#define BI_CNUSE_SCI		2
#define BI_CNUSE_SCIF		3
#define BI_CNUSE_HD64461COM	4
a42 54
struct SHConsole::console_info
SHConsole::_console_info[] = {
	{ PLATID_CPU_SH_3        , PLATID_MACH_HP                          , SCIFPrint       , BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI                     , HD64461COMPrint , BI_CNUSE_HD64461COM },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_CASIO_CASSIOPEIAA_A55V      , 0               , BI_CNUSE_BUILTIN },
	{ 0, 0, 0 } // terminator.
};

SHConsole::SHConsole()
{
	_print = 0;
}

SHConsole::~SHConsole()
{
}

SHConsole *
SHConsole::Instance()
{
	if (!_instance)
		_instance = new SHConsole();

	return _instance;
}

BOOL
SHConsole::init()
{
	HpcMenuInterface &menu = HpcMenuInterface::Instance();
	struct console_info *tab = _console_info;
	platid_mask_t target, entry;
	
	_kmode = SetKMode(1);
	
	target.dw.dw0 = menu._pref.platid_hi;
	target.dw.dw1 = menu._pref.platid_lo;

	// search apriori setting if any.
	for (; tab->cpu; tab++) {
		entry.dw.dw0 = tab->cpu;
		entry.dw.dw1 = tab->machine;
		if (platid_match(&target, &entry)) {
			_print = tab->print;
			_boot_console = tab->boot_console;
			break;
		}
	}

	// always open COM1 to supply clock and power for the
	// sake of kernel serial driver 
	return openCOM1();
}

d54 1
a54 4
	if (_print == 0)
		SerialConsole::genericPrint(_bufm);
	else
		_print(_bufm);
a55 20

void
SHConsole::SCIPrint(const char *buf)
{
	SCI_PRINT(buf);
}

void
SHConsole::SCIFPrint(const char *buf)
{
	SCIF_PRINT(buf);
}

void
SHConsole::HD64461COMPrint(const char *buf)
{
	HD64461COM_PRINT(buf);
}


@


1.1.4.1
log
@Catch up with -current.
@
text
@d1 1
a1 1
/*	$NetBSD: sh_console.cpp,v 1.4 2001/03/22 18:27:51 uch Exp $	*/
a38 1
#include <hpcmenu.h>
a39 5
#include <sh3/hd64461.h>

#define BI_CNUSE_SCI		2
#define BI_CNUSE_SCIF		3
#define BI_CNUSE_HD64461COM	4
a42 54
struct SHConsole::console_info
SHConsole::_console_info[] = {
	{ PLATID_CPU_SH_3        , PLATID_MACH_HP                          , SCIFPrint       , BI_CNUSE_SCIF },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI                     , HD64461COMPrint , BI_CNUSE_HD64461COM },
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_CASIO_CASSIOPEIAA_A55V      , 0               , BI_CNUSE_BUILTIN },
	{ 0, 0, 0 } // terminator.
};

SHConsole::SHConsole()
{
	_print = 0;
}

SHConsole::~SHConsole()
{
}

SHConsole *
SHConsole::Instance()
{
	if (!_instance)
		_instance = new SHConsole();

	return _instance;
}

BOOL
SHConsole::init()
{
	HpcMenuInterface &menu = HpcMenuInterface::Instance();
	struct console_info *tab = _console_info;
	platid_mask_t target, entry;
	
	_kmode = SetKMode(1);
	
	target.dw.dw0 = menu._pref.platid_hi;
	target.dw.dw1 = menu._pref.platid_lo;

	// search apriori setting if any.
	for (; tab->cpu; tab++) {
		entry.dw.dw0 = tab->cpu;
		entry.dw.dw1 = tab->machine;
		if (platid_match(&target, &entry)) {
			_print = tab->print;
			_boot_console = tab->boot_console;
			break;
		}
	}

	// always open COM1 to supply clock and power for the
	// sake of kernel serial driver 
	return openCOM1();
}

d54 1
a54 4
	if (_print == 0)
		SerialConsole::genericPrint(_bufm);
	else
		_print(_bufm);
a55 20

void
SHConsole::SCIPrint(const char *buf)
{
	SCI_PRINT(buf);
}

void
SHConsole::SCIFPrint(const char *buf)
{
	SCIF_PRINT(buf);
}

void
SHConsole::HD64461COMPrint(const char *buf)
{
	HD64461COM_PRINT(buf);
}


@


1.1.4.2
log
@Catch up to -current.
@
text
@d1 1
a1 1
/* -*-C++-*-	$NetBSD$	*/
a42 1
// XXX don't define here. arch/hpcsh/include/bootinfo.h
a45 1
#define BI_CNUSE_HD64461VIDEO	5
d51 3
a53 3
	{ PLATID_CPU_SH_3        , PLATID_MACH_HP                          , SCIFPrint       , BI_CNUSE_SCIF       , BI_CNUSE_HD64461VIDEO},
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_HITACHI                     , HD64461COMPrint , BI_CNUSE_HD64461COM , BI_CNUSE_HD64461VIDEO},
	{ PLATID_CPU_SH_3_7709   , PLATID_MACH_CASIO_CASSIOPEIAA_A55V      , 0               , BI_CNUSE_BUILTIN    , BI_CNUSE_BUILTIN },
a56 28
struct SHConsole::console_info *
SHConsole::selectBootConsole(Console &cons, enum consoleSelect select)
{
	struct console_info *tab = _console_info;
	platid_mask_t target, entry;

	target.dw.dw0 = HPC_PREFERENCE.platid_hi;
	target.dw.dw1 = HPC_PREFERENCE.platid_lo;

	// search apriori setting if any.
	for (; tab->cpu; tab++) {
		entry.dw.dw0 = tab->cpu;
		entry.dw.dw1 = tab->machine;
		if (platid_match(&target, &entry)) {
			switch (select) {
			case SERIAL:
				cons.setBootConsole(tab->serial_console);
				break;
			case VIDEO:
				cons.setBootConsole(tab->video_console);
				break;
			}
		}
	}

	return tab;
}

a63 1
	// NO-OP
d78 5
d84 2
a85 2
	if (!super::init())
		return FALSE;
d87 10
a96 1
	_kmode = SetKMode(1);
d98 3
a100 5
	struct console_info *tab = selectBootConsole(*this, SERIAL);
	if (tab != 0)
		_print = tab->print;
	
	return TRUE;
d106 4
a109 1
	SETUP_WIDECHAR_BUFFER();
d111 1
a111 1
	if (!setupMultibyteBuffer())
d115 1
a115 1
		super::genericPrint(_bufm);
d137 2
@
