summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2014-07-07 00:27:09 +0000
committermarcel <marcel@FreeBSD.org>2014-07-07 00:27:09 +0000
commit9f28abd980752efcf77578cd494f1015083c2a2b (patch)
tree98db2559cee662a9de7212211dd5c69176b58254
parent43f783bfcf60b349841acd57895767177114e4ae (diff)
downloadFreeBSD-src-9f28abd980752efcf77578cd494f1015083c2a2b.zip
FreeBSD-src-9f28abd980752efcf77578cd494f1015083c2a2b.tar.gz
Remove ia64.
This includes: o All directories named *ia64* o All files named *ia64* o All ia64-specific code guarded by __ia64__ o All ia64-specific makefile logic o Mention of ia64 in comments and documentation This excludes: o Everything under contrib/ o Everything under crypto/ o sys/xen/interface o sys/sys/elf_common.h Discussed at: BSDcan
-rw-r--r--cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c24
-rw-r--r--cddl/lib/libzpool/Makefile2
-rw-r--r--etc/etc.ia64/ttys49
-rw-r--r--gnu/lib/csu/Makefile7
-rw-r--r--gnu/lib/libgcc/Makefile11
-rw-r--r--gnu/usr.bin/binutils/as/ia64-freebsd/targ-cpu.h3
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile4
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile.ia6424
-rw-r--r--gnu/usr.bin/binutils/ld/elf64_ia64_fbsd.sh8
-rw-r--r--gnu/usr.bin/binutils/libbfd/Makefile2
-rw-r--r--gnu/usr.bin/binutils/libbfd/Makefile.ia6435
-rw-r--r--gnu/usr.bin/binutils/libbfd/bfd.h2
-rw-r--r--gnu/usr.bin/binutils/libopcodes/Makefile.ia644
-rw-r--r--gnu/usr.bin/cc/Makefile.tgt3
-rw-r--r--gnu/usr.bin/cc/include/Makefile2
-rw-r--r--gnu/usr.bin/gdb/arch/ia64/Makefile14
-rw-r--r--gnu/usr.bin/gdb/arch/ia64/config.h550
-rw-r--r--gnu/usr.bin/gdb/arch/ia64/init.c230
-rw-r--r--gnu/usr.bin/gdb/kgdb/trgt_ia64.c338
-rw-r--r--lib/Makefile6
-rw-r--r--lib/clang/include/IA64GenAsmWriter.inc2
-rw-r--r--lib/clang/include/IA64GenDAGISel.inc2
-rw-r--r--lib/clang/include/IA64GenInstrInfo.inc2
-rw-r--r--lib/clang/include/IA64GenRegisterInfo.inc2
-rw-r--r--lib/csu/ia64/Makefile62
-rw-r--r--lib/csu/ia64/crt1.S197
-rw-r--r--lib/csu/ia64/crti.S60
-rw-r--r--lib/csu/ia64/crtn.S44
-rw-r--r--lib/libarchive/Makefile2
-rw-r--r--lib/libc/Makefile1
-rw-r--r--lib/libc/gen/tls.c5
-rw-r--r--lib/libc/ia64/Makefile.inc9
-rw-r--r--lib/libc/ia64/SYS.h63
-rw-r--r--lib/libc/ia64/Symbol.map71
-rw-r--r--lib/libc/ia64/_fpmath.h82
-rw-r--r--lib/libc/ia64/arith.h37
-rw-r--r--lib/libc/ia64/gd_qnan.h21
-rw-r--r--lib/libc/ia64/gen/Makefile.inc11
-rw-r--r--lib/libc/ia64/gen/__divdf3.S142
-rw-r--r--lib/libc/ia64/gen/__divdi3.S143
-rw-r--r--lib/libc/ia64/gen/__divsf3.S116
-rw-r--r--lib/libc/ia64/gen/__divsi3.S125
-rw-r--r--lib/libc/ia64/gen/__moddi3.S160
-rw-r--r--lib/libc/ia64/gen/__modsi3.S132
-rw-r--r--lib/libc/ia64/gen/__udivdi3.S144
-rw-r--r--lib/libc/ia64/gen/__udivsi3.S125
-rw-r--r--lib/libc/ia64/gen/__umoddi3.S156
-rw-r--r--lib/libc/ia64/gen/__umodsi3.S132
-rw-r--r--lib/libc/ia64/gen/_mcount.S75
-rw-r--r--lib/libc/ia64/gen/_set_tp.c34
-rw-r--r--lib/libc/ia64/gen/_setjmp.S310
-rw-r--r--lib/libc/ia64/gen/fabs.S33
-rw-r--r--lib/libc/ia64/gen/flt_rounds.c25
-rw-r--r--lib/libc/ia64/gen/fpgetmask.c40
-rw-r--r--lib/libc/ia64/gen/fpgetround.c39
-rw-r--r--lib/libc/ia64/gen/fpsetmask.c44
-rw-r--r--lib/libc/ia64/gen/fpsetround.c43
-rw-r--r--lib/libc/ia64/gen/getcontextx.c76
-rw-r--r--lib/libc/ia64/gen/infinity.c48
-rw-r--r--lib/libc/ia64/gen/makecontext.c123
-rw-r--r--lib/libc/ia64/gen/setjmp.S82
-rw-r--r--lib/libc/ia64/gen/signalcontext.c123
-rw-r--r--lib/libc/ia64/gen/sigsetjmp.S66
-rw-r--r--lib/libc/ia64/gen/unwind.c129
-rw-r--r--lib/libc/ia64/string/Makefile.inc3
-rw-r--r--lib/libc/ia64/string/bcopy.S95
-rw-r--r--lib/libc/ia64/string/bzero.S81
-rw-r--r--lib/libc/ia64/string/ffs.S99
-rw-r--r--lib/libc/ia64/string/memcpy.S36
-rw-r--r--lib/libc/ia64/string/memmove.S36
-rw-r--r--lib/libc/ia64/sys/Makefile.inc14
-rw-r--r--lib/libc/ia64/sys/Ovfork.S37
-rw-r--r--lib/libc/ia64/sys/__vdso_gettc.c48
-rw-r--r--lib/libc/ia64/sys/brk.S57
-rw-r--r--lib/libc/ia64/sys/cerror.S46
-rw-r--r--lib/libc/ia64/sys/exect.S38
-rw-r--r--lib/libc/ia64/sys/fork.S37
-rw-r--r--lib/libc/ia64/sys/getcontext.S39
-rw-r--r--lib/libc/ia64/sys/pipe.S47
-rw-r--r--lib/libc/ia64/sys/ptrace.S41
-rw-r--r--lib/libc/ia64/sys/sbrk.S63
-rw-r--r--lib/libc/ia64/sys/setlogin.S42
-rw-r--r--lib/libc/ia64/sys/sigreturn.S41
-rw-r--r--lib/libc/ia64/sys/swapcontext.S39
-rw-r--r--lib/libc/mips/arith.h3
-rw-r--r--lib/libc/xdr/xdr_float.c2
-rw-r--r--lib/libkvm/kvm_amd64.c3
-rw-r--r--lib/libkvm/kvm_i386.c3
-rw-r--r--lib/libkvm/kvm_ia64.c375
-rw-r--r--lib/libstand/Makefile13
-rw-r--r--lib/libthr/arch/ia64/Makefile.inc3
-rw-r--r--lib/libthr/arch/ia64/ia64/_umtx_op_err.S35
-rw-r--r--lib/libthr/arch/ia64/ia64/pthread_md.c54
-rw-r--r--lib/libthr/arch/ia64/include/pthread_md.h82
-rw-r--r--lib/libthread_db/arch/ia64/libpthread_md.c65
-rw-r--r--lib/msun/ia64/Makefile.inc5
-rw-r--r--lib/msun/ia64/Symbol.map13
-rw-r--r--lib/msun/ia64/fenv.c66
-rw-r--r--lib/msun/ia64/fenv.h248
-rw-r--r--lib/msun/ia64/s_fma.S35
-rw-r--r--lib/msun/ia64/s_fmaf.S35
-rw-r--r--lib/msun/ia64/s_fmal.S35
-rw-r--r--lib/msun/sparc64/fenv.h6
-rw-r--r--lib/msun/src/math.h4
-rw-r--r--lib/ncurses/ncurses/Makefile2
-rw-r--r--libexec/rtld-elf/ia64/Makefile.inc1
-rw-r--r--libexec/rtld-elf/ia64/reloc.c658
-rw-r--r--libexec/rtld-elf/ia64/rtld_machdep.h74
-rw-r--r--libexec/rtld-elf/ia64/rtld_start.S252
-rw-r--r--libexec/rtld-elf/rtld.c15
-rw-r--r--release/doc/README8
-rw-r--r--release/doc/en_US.ISO8859-1/hardware/article.xml78
-rw-r--r--release/doc/en_US.ISO8859-1/readme/article.xml3
-rw-r--r--release/doc/share/examples/Makefile.relnotesng2
-rw-r--r--release/doc/share/misc/dev.archlist.txt40
-rw-r--r--release/doc/share/xml/release.ent1
-rwxr-xr-xrelease/ia64/make-memstick.sh38
-rw-r--r--release/ia64/mkisoimages.sh85
-rw-r--r--rescue/rescue/Makefile4
-rw-r--r--sbin/Makefile.ia643
-rw-r--r--sbin/bsdlabel/bsdlabel.82
-rw-r--r--sbin/bsdlabel/bsdlabel.c1
-rw-r--r--sbin/fdisk/fdisk.c10
-rw-r--r--sbin/mca/Makefile5
-rw-r--r--sbin/mca/mca.873
-rw-r--r--sbin/mca/mca.c547
-rw-r--r--secure/lib/libcrypto/opensslconf-ia64.h224
-rw-r--r--share/dict/freebsd1
-rw-r--r--share/examples/etc/make.conf1
-rw-r--r--share/man/man4/acpi.42
-rw-r--r--share/man/man4/aout.42
-rw-r--r--share/man/man4/inet.45
-rw-r--r--share/man/man4/smp.44
-rw-r--r--share/man/man5/src.conf.51046
-rw-r--r--share/man/man9/atomic.94
-rw-r--r--share/man/man9/get_cyclecount.95
-rw-r--r--share/mk/bsd.cpu.mk6
-rw-r--r--share/mk/bsd.endian.mk1
-rw-r--r--share/mk/bsd.sys.mk4
-rw-r--r--sys/Makefile2
-rw-r--r--sys/boot/Makefile.ia644
-rw-r--r--sys/boot/common/Makefile.inc2
-rw-r--r--sys/boot/efi/include/amd64/pe.h1
-rw-r--r--sys/boot/efi/include/efiapi.h4
-rw-r--r--sys/boot/efi/include/i386/pe.h1
-rw-r--r--sys/boot/efi/include/ia64/efibind.h219
-rw-r--r--sys/boot/efi/include/ia64/pe.h637
-rw-r--r--sys/boot/ficl/ia64/sysdep.c101
-rw-r--r--sys/boot/ficl/ia64/sysdep.h434
-rw-r--r--sys/boot/ficl/loader.c6
-rw-r--r--sys/boot/ia64/Makefile10
-rw-r--r--sys/boot/ia64/Makefile.inc9
-rw-r--r--sys/boot/ia64/common/Makefile47
-rw-r--r--sys/boot/ia64/common/autoload.c35
-rw-r--r--sys/boot/ia64/common/bootinfo.c296
-rw-r--r--sys/boot/ia64/common/copy.c217
-rw-r--r--sys/boot/ia64/common/devicename.c169
-rw-r--r--sys/boot/ia64/common/exec.c268
-rw-r--r--sys/boot/ia64/common/icache.c51
-rw-r--r--sys/boot/ia64/common/libia64.h75
-rw-r--r--sys/boot/ia64/efi/Makefile59
-rw-r--r--sys/boot/ia64/efi/conf.c82
-rw-r--r--sys/boot/ia64/efi/efimd.c264
-rw-r--r--sys/boot/ia64/efi/ldscript.ia6473
-rw-r--r--sys/boot/ia64/efi/main.c618
-rw-r--r--sys/boot/ia64/efi/start.S290
-rw-r--r--sys/boot/ia64/efi/version27
-rw-r--r--sys/boot/ia64/ski/Makefile39
-rw-r--r--sys/boot/ia64/ski/acpi_stub.c183
-rw-r--r--sys/boot/ia64/ski/conf.c74
-rw-r--r--sys/boot/ia64/ski/delay.c34
-rw-r--r--sys/boot/ia64/ski/efi_stub.c259
-rw-r--r--sys/boot/ia64/ski/exit.c42
-rw-r--r--sys/boot/ia64/ski/ldscript.ia6461
-rw-r--r--sys/boot/ia64/ski/libski.h65
-rw-r--r--sys/boot/ia64/ski/main.c121
-rw-r--r--sys/boot/ia64/ski/pal_stub.S74
-rw-r--r--sys/boot/ia64/ski/sal_stub.c118
-rw-r--r--sys/boot/ia64/ski/skiconsole.c96
-rw-r--r--sys/boot/ia64/ski/skifs.c194
-rw-r--r--sys/boot/ia64/ski/skiload.cmd16
-rw-r--r--sys/boot/ia64/ski/skimd.c82
-rw-r--r--sys/boot/ia64/ski/ssc.c53
-rw-r--r--sys/boot/ia64/ski/start.S62
-rw-r--r--sys/boot/ia64/ski/time.c174
-rw-r--r--sys/boot/ia64/ski/version12
-rw-r--r--sys/boot/libstand32/Makefile13
-rw-r--r--sys/boot/userboot/libstand/Makefile12
-rw-r--r--sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S93
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h2
-rw-r--r--sys/compat/freebsd32/freebsd32_misc.c124
-rw-r--r--sys/compat/freebsd32/freebsd32_util.h2
-rw-r--r--sys/compat/ia32/ia32_util.h7
-rw-r--r--sys/compat/ndis/pe_var.h2
-rw-r--r--sys/conf/Makefile.ia6453
-rw-r--r--sys/conf/files.ia64137
-rw-r--r--sys/conf/kern.mk11
-rw-r--r--sys/conf/ldscript.ia64152
-rw-r--r--sys/conf/options.ia6433
-rwxr-xr-xsys/contrib/dev/acpica/acpica_prep.sh4
-rw-r--r--sys/contrib/ia64/libuwx/src/Makefile71
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx.h418
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_bstream.c181
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_bstream.h59
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_context.c408
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_context.h25
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_env.c221
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_env.h111
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_scoreboard.c315
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_scoreboard.h84
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_self.c442
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_self.h112
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_self_context.s383
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_self_info.h44
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_step.c827
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_step.h30
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_str.c128
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_str.h37
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_swap.c70
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_swap.h26
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_symbols.c850
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_symbols.h38
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_trace.c166
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_trace.h370
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_uinfo.c1119
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_uinfo.h66
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_utable.c273
-rw-r--r--sys/contrib/ia64/libuwx/src/uwx_utable.h37
-rw-r--r--sys/contrib/ia64/libuwx/test/Makefile14
-rw-r--r--sys/contrib/ia64/libuwx/test/dump_context.c100
-rw-r--r--sys/contrib/ia64/libuwx/test/dumpmyself.c106
-rw-r--r--sys/contrib/ia64/libuwx/test/primeregs.s93
-rw-r--r--sys/dev/acpica/acpi_hpet.c2
-rw-r--r--sys/dev/amr/amrio.h2
-rw-r--r--sys/dev/ath/if_ath_ahb.c3
-rw-r--r--sys/dev/ath/if_ath_pci.c3
-rw-r--r--sys/dev/atkbdc/atkbdc.c2
-rw-r--r--sys/dev/drm/drm.h2
-rw-r--r--sys/dev/drm/drm_sarea.h2
-rw-r--r--sys/dev/drm2/drm.h2
-rw-r--r--sys/dev/drm2/drm_sarea.h2
-rw-r--r--sys/dev/fb/fbreg.h24
-rw-r--r--sys/dev/hwpmc/hwpmc_ia64.c66
-rw-r--r--sys/dev/pci/vga_pci.c6
-rw-r--r--sys/dev/sound/pcm/pcm.h2
-rw-r--r--sys/dev/sym/sym_hipd.c2
-rw-r--r--sys/dev/txp/if_txp.c2
-rw-r--r--sys/dev/uart/uart_cpu_ia64.c113
-rw-r--r--sys/dev/vt/hw/vga/vt_vga.c5
-rw-r--r--sys/ia64/acpica/OsdEnvironment.c77
-rw-r--r--sys/ia64/acpica/acpi_machdep.c101
-rw-r--r--sys/ia64/acpica/acpi_wakeup.c52
-rw-r--r--sys/ia64/acpica/madt.c247
-rw-r--r--sys/ia64/conf/DEFAULTS22
-rw-r--r--sys/ia64/conf/GENERIC213
-rw-r--r--sys/ia64/conf/GENERIC.hints2
-rw-r--r--sys/ia64/conf/Makefile5
-rw-r--r--sys/ia64/conf/NOTES108
-rw-r--r--sys/ia64/disasm/disasm.h328
-rw-r--r--sys/ia64/disasm/disasm_decode.c2565
-rw-r--r--sys/ia64/disasm/disasm_extract.c2609
-rw-r--r--sys/ia64/disasm/disasm_format.c346
-rw-r--r--sys/ia64/disasm/disasm_int.h222
-rw-r--r--sys/ia64/ia32/ia32_misc.c61
-rw-r--r--sys/ia64/ia32/ia32_reg.c80
-rw-r--r--sys/ia64/ia32/ia32_signal.c298
-rw-r--r--sys/ia64/ia32/ia32_trap.c282
-rw-r--r--sys/ia64/ia64/autoconf.c93
-rw-r--r--sys/ia64/ia64/bus_machdep.c377
-rw-r--r--sys/ia64/ia64/busdma_machdep.c975
-rw-r--r--sys/ia64/ia64/clock.c199
-rw-r--r--sys/ia64/ia64/context.S804
-rw-r--r--sys/ia64/ia64/db_machdep.c610
-rw-r--r--sys/ia64/ia64/dump_machdep.c439
-rw-r--r--sys/ia64/ia64/efi.c270
-rw-r--r--sys/ia64/ia64/elf_machdep.c323
-rw-r--r--sys/ia64/ia64/emulate.c89
-rw-r--r--sys/ia64/ia64/exception.S1758
-rw-r--r--sys/ia64/ia64/gdb_machdep.c187
-rw-r--r--sys/ia64/ia64/genassym.c123
-rw-r--r--sys/ia64/ia64/highfp.c179
-rw-r--r--sys/ia64/ia64/in_cksum.c241
-rw-r--r--sys/ia64/ia64/interrupt.c411
-rw-r--r--sys/ia64/ia64/iodev_machdep.c208
-rw-r--r--sys/ia64/ia64/locore.S361
-rw-r--r--sys/ia64/ia64/machdep.c1540
-rw-r--r--sys/ia64/ia64/mca.c331
-rw-r--r--sys/ia64/ia64/mem.c179
-rw-r--r--sys/ia64/ia64/mp_locore.S275
-rw-r--r--sys/ia64/ia64/mp_machdep.c543
-rw-r--r--sys/ia64/ia64/nexus.c530
-rw-r--r--sys/ia64/ia64/pal.S116
-rw-r--r--sys/ia64/ia64/physical.S258
-rw-r--r--sys/ia64/ia64/physmem.c258
-rw-r--r--sys/ia64/ia64/pmap.c2923
-rw-r--r--sys/ia64/ia64/ptrace_machdep.c64
-rw-r--r--sys/ia64/ia64/sal.c130
-rw-r--r--sys/ia64/ia64/sapic.c381
-rw-r--r--sys/ia64/ia64/setjmp.S349
-rw-r--r--sys/ia64/ia64/stack_machdep.c57
-rw-r--r--sys/ia64/ia64/support.S843
-rw-r--r--sys/ia64/ia64/sys_machdep.c60
-rw-r--r--sys/ia64/ia64/syscall.S569
-rw-r--r--sys/ia64/ia64/trap.c962
-rw-r--r--sys/ia64/ia64/uio_machdep.c120
-rw-r--r--sys/ia64/ia64/uma_machdep.c77
-rw-r--r--sys/ia64/ia64/unaligned.c307
-rw-r--r--sys/ia64/ia64/unwind.c483
-rw-r--r--sys/ia64/ia64/vm_machdep.c363
-rw-r--r--sys/ia64/ia64/xtrace.c220
-rw-r--r--sys/ia64/include/_align.h53
-rw-r--r--sys/ia64/include/_bus.h46
-rw-r--r--sys/ia64/include/_inttypes.h213
-rw-r--r--sys/ia64/include/_limits.h90
-rw-r--r--sys/ia64/include/_regset.h275
-rw-r--r--sys/ia64/include/_stdint.h158
-rw-r--r--sys/ia64/include/_types.h122
-rw-r--r--sys/ia64/include/acpica_machdep.h77
-rw-r--r--sys/ia64/include/asm.h192
-rw-r--r--sys/ia64/include/atomic.h417
-rw-r--r--sys/ia64/include/bootinfo.h55
-rw-r--r--sys/ia64/include/bus.h820
-rw-r--r--sys/ia64/include/bus_dma.h33
-rw-r--r--sys/ia64/include/clock.h12
-rw-r--r--sys/ia64/include/counter.h93
-rw-r--r--sys/ia64/include/cpu.h75
-rw-r--r--sys/ia64/include/cpufunc.h91
-rw-r--r--sys/ia64/include/db_machdep.h80
-rw-r--r--sys/ia64/include/dig64.h90
-rw-r--r--sys/ia64/include/elf.h155
-rw-r--r--sys/ia64/include/endian.h109
-rw-r--r--sys/ia64/include/exec.h37
-rw-r--r--sys/ia64/include/float.h94
-rw-r--r--sys/ia64/include/floatingpoint.h32
-rw-r--r--sys/ia64/include/fpu.h109
-rw-r--r--sys/ia64/include/frame.h48
-rw-r--r--sys/ia64/include/gdb_machdep.h48
-rw-r--r--sys/ia64/include/ia64_cpu.h532
-rw-r--r--sys/ia64/include/ieee.h115
-rw-r--r--sys/ia64/include/ieeefp.h57
-rw-r--r--sys/ia64/include/in_cksum.h80
-rw-r--r--sys/ia64/include/intr.h93
-rw-r--r--sys/ia64/include/intrcnt.h40
-rw-r--r--sys/ia64/include/iodev.h68
-rw-r--r--sys/ia64/include/kdb.h67
-rw-r--r--sys/ia64/include/limits.h46
-rw-r--r--sys/ia64/include/mca.h248
-rw-r--r--sys/ia64/include/md_var.h123
-rw-r--r--sys/ia64/include/memdev.h40
-rw-r--r--sys/ia64/include/pal.h122
-rw-r--r--sys/ia64/include/param.h124
-rw-r--r--sys/ia64/include/pc/display.h46
-rw-r--r--sys/ia64/include/pcb.h75
-rw-r--r--sys/ia64/include/pci_cfgreg.h38
-rw-r--r--sys/ia64/include/pcpu.h101
-rw-r--r--sys/ia64/include/pmap.h143
-rw-r--r--sys/ia64/include/pmc_mdep.h28
-rw-r--r--sys/ia64/include/proc.h54
-rw-r--r--sys/ia64/include/profile.h65
-rw-r--r--sys/ia64/include/pte.h106
-rw-r--r--sys/ia64/include/ptrace.h42
-rw-r--r--sys/ia64/include/reg.h104
-rw-r--r--sys/ia64/include/reloc.h30
-rw-r--r--sys/ia64/include/resource.h44
-rw-r--r--sys/ia64/include/runq.h65
-rw-r--r--sys/ia64/include/sal.h141
-rw-r--r--sys/ia64/include/setjmp.h130
-rw-r--r--sys/ia64/include/sf_buf.h72
-rw-r--r--sys/ia64/include/sigframe.h39
-rw-r--r--sys/ia64/include/signal.h81
-rw-r--r--sys/ia64/include/smp.h57
-rw-r--r--sys/ia64/include/stdarg.h67
-rw-r--r--sys/ia64/include/sysarch.h43
-rw-r--r--sys/ia64/include/ucontext.h92
-rw-r--r--sys/ia64/include/unwind.h56
-rw-r--r--sys/ia64/include/varargs.h48
-rw-r--r--sys/ia64/include/vdso.h41
-rw-r--r--sys/ia64/include/vm.h44
-rw-r--r--sys/ia64/include/vmparam.h206
-rw-r--r--sys/ia64/isa/isa.c137
-rw-r--r--sys/ia64/isa/isa_dma.c508
-rw-r--r--sys/ia64/pci/pci_cfgreg.c104
-rw-r--r--sys/kern/imgact_elf.c4
-rw-r--r--sys/kern/kern_exec.c9
-rw-r--r--sys/kern/kern_thread.c2
-rw-r--r--sys/kern/link_elf.c19
-rw-r--r--sys/kern/subr_witness.c3
-rw-r--r--sys/libkern/ia64/__divdi3.S142
-rw-r--r--sys/libkern/ia64/__divsi3.S124
-rw-r--r--sys/libkern/ia64/__moddi3.S159
-rw-r--r--sys/libkern/ia64/__modsi3.S131
-rw-r--r--sys/libkern/ia64/__udivdi3.S143
-rw-r--r--sys/libkern/ia64/__udivsi3.S124
-rw-r--r--sys/libkern/ia64/__umoddi3.S155
-rw-r--r--sys/libkern/ia64/__umodsi3.S131
-rw-r--r--sys/libkern/ia64/bswap16.S35
-rw-r--r--sys/libkern/ia64/bswap32.S35
-rw-r--r--sys/libkern/ia64/byte_swap_2.S47
-rw-r--r--sys/libkern/ia64/byte_swap_4.S47
-rw-r--r--sys/modules/Makefile40
-rw-r--r--sys/modules/acpi/acpi/Makefile4
-rw-r--r--sys/modules/hwpmc/Makefile4
-rw-r--r--sys/modules/ppc/Makefile4
-rw-r--r--sys/modules/sound/sound/Makefile2
-rw-r--r--sys/sys/disklabel.h2
-rw-r--r--sys/sys/efi.h23
-rw-r--r--sys/sys/fnv_hash.h2
-rw-r--r--sys/sys/kerneldump.h1
-rw-r--r--sys/sys/sysctl.h2
-rw-r--r--sys/sys/sysent.h2
-rw-r--r--sys/vm/vm_mmap.c2
-rw-r--r--sys/vm/vm_pageout.c9
-rw-r--r--sys/vm/vm_unix.c2
-rw-r--r--sys/x86/include/segments.h6
-rw-r--r--sys/x86/iommu/intel_drv.c2
-rw-r--r--sys/xen/interface/arch-ia64.h637
-rw-r--r--sys/xen/interface/arch-ia64/debug_op.h99
-rw-r--r--sys/xen/interface/arch-ia64/hvm/memmap.h91
-rw-r--r--sys/xen/interface/arch-ia64/hvm/save.h208
-rw-r--r--sys/xen/interface/arch-ia64/sioemu.h92
-rw-r--r--tools/build/mk/OptionalObsoleteFiles.inc2
-rw-r--r--tools/regression/README1
-rw-r--r--tools/regression/filemon/Makefile2
-rw-r--r--tools/regression/ia64/emulated/brl.t99
-rw-r--r--tools/regression/ia64/emulated/test.c172
-rw-r--r--tools/regression/ia64/unaligned/test.c204
-rw-r--r--tools/regression/ia64/unaligned/unaligned.t99
-rw-r--r--tools/tools/gdb_regofs/ia64.c213
-rw-r--r--usr.bin/Makefile.ia643
-rw-r--r--usr.bin/gprof/gprof.h3
-rw-r--r--usr.bin/gprof/ia64.h40
-rw-r--r--usr.bin/truss/extern.h4
-rw-r--r--usr.bin/truss/ia64-fbsd.c314
-rw-r--r--usr.bin/truss/main.c3
-rw-r--r--usr.bin/xlint/arch/ia64/targparam.h54
-rw-r--r--usr.bin/xlint/lint1/param.h5
-rw-r--r--usr.sbin/Makefile.ia649
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c2
-rw-r--r--usr.sbin/config/config.52
-rw-r--r--usr.sbin/crunch/crunchide/Makefile5
-rw-r--r--usr.sbin/crunch/crunchide/exec_elf32.c4
-rwxr-xr-xusr.sbin/mergemaster/mergemaster.sh4
-rw-r--r--usr.sbin/ntp/config.h8
-rw-r--r--usr.sbin/pkg/elf_tables.h1
444 files changed, 129 insertions, 62813 deletions
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
index f31c600..2a43211 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
@@ -230,9 +230,6 @@ prepare_elf32(dtrace_hdl_t *dtp, const dof_hdr_t *dof, dof_elf32_t *dep)
#if defined(__arm__)
/* XXX */
printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__);
-#elif defined(__ia64__)
-/* XXX */
-printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__);
#elif defined(__i386) || defined(__amd64)
rel->r_offset = s->dofs_offset +
dofr[j].dofr_offset;
@@ -424,8 +421,6 @@ prepare_elf64(dtrace_hdl_t *dtp, const dof_hdr_t *dof, dof_elf64_t *dep)
#ifdef DOODAD
#if defined(__arm__)
/* XXX */
-#elif defined(__ia64__)
-/* XXX */
#elif defined(__mips__)
/* XXX */
#elif defined(__powerpc__)
@@ -535,8 +530,6 @@ dump_elf32(dtrace_hdl_t *dtp, const dof_hdr_t *dof, int fd)
elf_file.ehdr.e_type = ET_REL;
#if defined(__arm__)
elf_file.ehdr.e_machine = EM_ARM;
-#elif defined(__ia64__)
- elf_file.ehdr.e_machine = EM_IA_64;
#elif defined(__mips__)
elf_file.ehdr.e_machine = EM_MIPS;
#elif defined(__powerpc__)
@@ -683,8 +676,6 @@ dump_elf64(dtrace_hdl_t *dtp, const dof_hdr_t *dof, int fd)
elf_file.ehdr.e_type = ET_REL;
#if defined(__arm__)
elf_file.ehdr.e_machine = EM_ARM;
-#elif defined(__ia64__)
- elf_file.ehdr.e_machine = EM_IA_64;
#elif defined(__mips__)
elf_file.ehdr.e_machine = EM_MIPS;
#elif defined(__powerpc__)
@@ -814,15 +805,6 @@ dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, GElf_Rela *rela,
printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__);
return (0);
}
-#elif defined(__ia64__)
-/* XXX */
-static int
-dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, GElf_Rela *rela,
- uint32_t *off)
-{
-printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__);
- return (0);
-}
#elif defined(__mips__)
/* XXX */
static int
@@ -1235,9 +1217,7 @@ process_obj(dtrace_hdl_t *dtp, const char *obj, int *eprobesp)
if (dtp->dt_oflags & DTRACE_O_LP64) {
eclass = ELFCLASS64;
-#if defined(__ia64__)
- emachine1 = emachine2 = EM_IA_64;
-#elif defined(__mips__)
+#if defined(__mips__)
emachine1 = emachine2 = EM_MIPS;
#elif defined(__powerpc__)
emachine1 = emachine2 = EM_PPC64;
@@ -1258,7 +1238,7 @@ process_obj(dtrace_hdl_t *dtp, const char *obj, int *eprobesp)
#elif defined(__sparc)
emachine1 = EM_SPARC;
emachine2 = EM_SPARC32PLUS;
-#elif defined(__i386) || defined(__amd64) || defined(__ia64__)
+#elif defined(__i386) || defined(__amd64)
emachine1 = emachine2 = EM_386;
#endif
symsize = sizeof (Elf32_Sym);
diff --git a/cddl/lib/libzpool/Makefile b/cddl/lib/libzpool/Makefile
index 7d4528f..8f60a20 100644
--- a/cddl/lib/libzpool/Makefile
+++ b/cddl/lib/libzpool/Makefile
@@ -14,7 +14,7 @@
.if exists(${.CURDIR}/../../../sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}/opensolaris_atomic.S)
.PATH: ${.CURDIR}/../../../sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}
ATOMIC_SRCS= opensolaris_atomic.S
-.if ${MACHINE_ARCH} != "ia64" && ${MACHINE_ARCH} != "sparc64"
+.if ${MACHINE_ARCH} != "sparc64"
ACFLAGS+= -Wa,--noexecstack
.endif
.else
diff --git a/etc/etc.ia64/ttys b/etc/etc.ia64/ttys
deleted file mode 100644
index 6ddc777..0000000
--- a/etc/etc.ia64/ttys
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# $FreeBSD$
-# @(#)ttys 5.1 (Berkeley) 4/17/89
-#
-# This file specifies various information about terminals on the system.
-# It is used by several different programs. Common entries for the
-# various columns include:
-#
-# name The name of the terminal device.
-#
-# getty The program to start running on the terminal. Typically a
-# getty program, as the name implies. Other common entries
-# include none, when no getty is needed, and xdm, to start the
-# X Window System.
-#
-# type The initial terminal type for this port. For hardwired
-# terminal lines, this will contain the type of terminal used.
-# For virtual consoles, the correct type is typically xterm.
-# Other common values include dialup for incoming modem ports, and
-# unknown when the terminal type cannot be predetermined.
-#
-# status Must be on or off. If on, init will run the getty program on
-# the specified port. If the word "secure" appears, this tty
-# allows root login.
-#
-# name getty type status comments
-#
-# If console is marked "insecure", then init will ask for the root password
-# when going to single-user mode.
-console none unknown off secure
-#
-ttyv0 "/usr/libexec/getty Pc" xterm off secure
-# Virtual terminals
-ttyv1 "/usr/libexec/getty Pc" xterm off secure
-ttyv2 "/usr/libexec/getty Pc" xterm off secure
-ttyv3 "/usr/libexec/getty Pc" xterm off secure
-ttyv4 "/usr/libexec/getty Pc" xterm off secure
-ttyv5 "/usr/libexec/getty Pc" xterm off secure
-ttyv6 "/usr/libexec/getty Pc" xterm off secure
-ttyv7 "/usr/libexec/getty Pc" xterm off secure
-ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
-# Serial terminals. The 'dialup' keyword identifies dialin lines to login,
-# fingerd etc.
-ttyu0 "/usr/libexec/getty 3wire" vt100 on secure
-ttyu1 "/usr/libexec/getty 3wire" vt100 on secure
-ttyu2 "/usr/libexec/getty std.9600" dialup off secure
-ttyu3 "/usr/libexec/getty std.9600" dialup off secure
-# Dumb console
-dcons "/usr/libexec/getty std.9600" vt100 off secure
diff --git a/gnu/lib/csu/Makefile b/gnu/lib/csu/Makefile
index 2db69fb..dee77df 100644
--- a/gnu/lib/csu/Makefile
+++ b/gnu/lib/csu/Makefile
@@ -28,13 +28,6 @@ MKDEP= -DCRT_BEGIN
CFLAGS+= -DTARGET_ARM_EABI
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-BEGINSRC= crtbegin.asm
-ENDSRC= crtend.asm
-CFLAGS+= -x assembler-with-cpp # Ugly hack
-CFLAGS+= -include osreldate.h
-.undef SRCS # hack for 'make depend'
-.endif
.if ${MACHINE_CPUARCH} == "powerpc"
TGTOBJS= crtsavres.o
SRCS+= crtsavres.asm
diff --git a/gnu/lib/libgcc/Makefile b/gnu/lib/libgcc/Makefile
index de80960..f0e4834 100644
--- a/gnu/lib/libgcc/Makefile
+++ b/gnu/lib/libgcc/Makefile
@@ -137,17 +137,6 @@ LIB2FUNCS_EXTRA+= fixdfdi.c fixunssfsi.c
.endif
.endif
-.if ${TARGET_CPUARCH} == "ia64"
-# from config/ia64/t-ia64
-LIB1ASMSRC = lib1funcs.asm
-LIB1ASMFUNCS = __divxf3 __divdf3 __divsf3 \
- __divdi3 __moddi3 __udivdi3 __umoddi3 \
- __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \
- __nonlocal_goto __restore_stack_nonlocal __trampoline \
- _fixtfdi _fixunstfdi _floatditf
-LIB2ADDEH = unwind-ia64.c unwind-sjlj.c unwind-c.c
-.endif
-
.if ${TARGET_ARCH} == "powerpc"
# from config/rs6000/t-ppccomm
LIB2FUNCS_EXTRA = tramp.asm
diff --git a/gnu/usr.bin/binutils/as/ia64-freebsd/targ-cpu.h b/gnu/usr.bin/binutils/as/ia64-freebsd/targ-cpu.h
deleted file mode 100644
index a0a6360..0000000
--- a/gnu/usr.bin/binutils/as/ia64-freebsd/targ-cpu.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* $FreeBSD$ */
-
-#include "tc-ia64.h"
diff --git a/gnu/usr.bin/binutils/ld/Makefile b/gnu/usr.bin/binutils/ld/Makefile
index 81a46d5..6c59945 100644
--- a/gnu/usr.bin/binutils/ld/Makefile
+++ b/gnu/usr.bin/binutils/ld/Makefile
@@ -5,10 +5,6 @@
.PATH: ${SRCDIR}/ld
-.if ${TARGET_ARCH} == "ia64"
-CFLAGS+= -O1
-.endif
-
PROG= ld
SCRIPTDIR= /usr/libdata/ldscripts
SRCS+= ldcref.c \
diff --git a/gnu/usr.bin/binutils/ld/Makefile.ia64 b/gnu/usr.bin/binutils/ld/Makefile.ia64
deleted file mode 100644
index 50a7bb6..0000000
--- a/gnu/usr.bin/binutils/ld/Makefile.ia64
+++ /dev/null
@@ -1,24 +0,0 @@
-# $FreeBSD$
-
-NATIVE_EMULATION= elf64_ia64_fbsd
-
-SRCS+= e${NATIVE_EMULATION}.c
-CLEANFILES+= e${NATIVE_EMULATION}.c
-e${NATIVE_EMULATION}.c: ${.CURDIR}/${NATIVE_EMULATION}.sh emultempl/elf32.em \
- scripttempl/elf.sc genscripts.sh stringify.sed
- sh ${.CURDIR}/genscripts.sh ${SRCDIR}/ld ${LIBSEARCHPATH} \
- ${TOOLS_PREFIX}/usr \
- ${HOST} ${TARGET_TUPLE} ${TARGET_TUPLE} \
- ${NATIVE_EMULATION} "" no ${NATIVE_EMULATION} ${TARGET_TUPLE} \
- ${.CURDIR}/${NATIVE_EMULATION}.sh
-
-#XXX EMS+= eelf64_ia64
-
-SRCS+= eelf64_ia64.c
-CLEANFILES+= eelf64_ia64.c
-eelf64_ia64.c: emulparams/elf64_ia64.sh emultempl/elf32.em \
- scripttempl/elf.sc genscripts.sh stringify.sed
- sh ${.CURDIR}/genscripts.sh ${SRCDIR}/ld ${LIBSEARCHPATH} \
- ${TOOLS_PREFIX}/usr \
- ${HOST} ${TARGET_TUPLE} ${TARGET_TUPLE} \
- elf64_ia64 "" no elf64_ia64 ${TARGET_TUPLE}
diff --git a/gnu/usr.bin/binutils/ld/elf64_ia64_fbsd.sh b/gnu/usr.bin/binutils/ld/elf64_ia64_fbsd.sh
deleted file mode 100644
index 213b494..0000000
--- a/gnu/usr.bin/binutils/ld/elf64_ia64_fbsd.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-# $FreeBSD$
-. ${srcdir}/emulparams/elf64_ia64.sh
-TEXT_START_ADDR="0x0000000100000000"
-unset DATA_ADDR
-unset SMALL_DATA_CTOR
-unset SMALL_DATA_DTOR
-. ${srcdir}/emulparams/elf_fbsd.sh
-OUTPUT_FORMAT="elf64-ia64-freebsd"
diff --git a/gnu/usr.bin/binutils/libbfd/Makefile b/gnu/usr.bin/binutils/libbfd/Makefile
index ca5e183..a24dd04 100644
--- a/gnu/usr.bin/binutils/libbfd/Makefile
+++ b/gnu/usr.bin/binutils/libbfd/Makefile
@@ -42,7 +42,7 @@ SRCS+= archive.c \
targets.c \
targmatch.h \
tekhex.c
-.if (${TARGET_ARCH} == "ia64" || ${TARGET_ARCH} == "sparc64")
+.if ${TARGET_ARCH} == "sparc64"
WARNS?= 2
.endif
CFLAGS+= -D_GNU_SOURCE
diff --git a/gnu/usr.bin/binutils/libbfd/Makefile.ia64 b/gnu/usr.bin/binutils/libbfd/Makefile.ia64
deleted file mode 100644
index 2e489bc..0000000
--- a/gnu/usr.bin/binutils/libbfd/Makefile.ia64
+++ /dev/null
@@ -1,35 +0,0 @@
-# $FreeBSD$
-
-DEFAULT_VECTOR= bfd_elf64_ia64_freebsd_vec
-
-SRCS+= cofflink.c \
- cpu-ia64.c \
- efi-app-ia64.c \
- elf32.c \
- elf32-gen.c \
- elf32-target.h \
- elf64.c \
- elf64-gen.c \
- elf64-ia64.c \
- elf64-target.h \
- elflink.c \
- pepigen.c \
- pex64igen.c
-
-VECS+= ${DEFAULT_VECTOR} \
- bfd_efi_app_ia64_vec \
- bfd_elf64_ia64_little_vec \
- bfd_elf64_ia64_big_vec \
- bfd_elf64_little_generic_vec bfd_elf64_big_generic_vec \
- bfd_elf32_little_generic_vec bfd_elf32_big_generic_vec
-
-CLEANFILES+= elf64-ia64.c pepigen.c pex64igen.c
-
-elf64-ia64.c: elfxx-ia64.c
- sed -e s/NN/64/g ${.ALLSRC} > ${.TARGET}
-
-pepigen.c: peXXigen.c
- sed -e s/XX/pep/g ${.ALLSRC} > ${.TARGET}
-
-pex64igen.c: peXXigen.c
- sed -e s/XX/pex64/g ${.ALLSRC} > ${.TARGET}
diff --git a/gnu/usr.bin/binutils/libbfd/bfd.h b/gnu/usr.bin/binutils/libbfd/bfd.h
index c9dfef5..f651233 100644
--- a/gnu/usr.bin/binutils/libbfd/bfd.h
+++ b/gnu/usr.bin/binutils/libbfd/bfd.h
@@ -85,7 +85,7 @@ extern "C" {
#define BFD_HOST_64BIT_LONG 0
#define BFD_HOST_64_BIT long long
#define BFD_HOST_U_64_BIT unsigned long long
-#elif defined(__alpha__) || defined(__sparc64__) || defined(__amd64__) || defined(__ia64__)
+#elif defined(__alpha__) || defined(__sparc64__) || defined(__amd64__)
#define BFD_HOST_64BIT_LONG 1
#define BFD_HOST_64_BIT long
#define BFD_HOST_U_64_BIT unsigned long
diff --git a/gnu/usr.bin/binutils/libopcodes/Makefile.ia64 b/gnu/usr.bin/binutils/libopcodes/Makefile.ia64
deleted file mode 100644
index 98198cd..0000000
--- a/gnu/usr.bin/binutils/libopcodes/Makefile.ia64
+++ /dev/null
@@ -1,4 +0,0 @@
-# $FreeBSD$
-
-SRCS+= ia64-dis.c ia64-opc.c
-CFLAGS+= -DARCH_ia64
diff --git a/gnu/usr.bin/cc/Makefile.tgt b/gnu/usr.bin/cc/Makefile.tgt
index 48cc774..ee5a794 100644
--- a/gnu/usr.bin/cc/Makefile.tgt
+++ b/gnu/usr.bin/cc/Makefile.tgt
@@ -11,9 +11,6 @@ TARGET_CPUARCH=${MACHINE_CPUARCH}
TARGET_ARCH?= ${MACHINE_ARCH}
GCC_CPU=${TARGET_CPUARCH:C/amd64/i386/:C/powerpc/rs6000/:C/sparc64/sparc/}
-.if ${TARGET_ARCH} == "ia64"
-TARGET_CPU_DEFAULT= MASK_GNU_AS|MASK_GNU_LD
-.endif
.if ${TARGET_ARCH} == "sparc64"
TARGET_CPU_DEFAULT= TARGET_CPU_ultrasparc
.endif
diff --git a/gnu/usr.bin/cc/include/Makefile b/gnu/usr.bin/cc/include/Makefile
index c48975e..48060ec 100644
--- a/gnu/usr.bin/cc/include/Makefile
+++ b/gnu/usr.bin/cc/include/Makefile
@@ -12,8 +12,6 @@ INCSDIR=${INCLUDEDIR}/gcc/${GCCVER}
INCS= ammintrin.h emmintrin.h mmintrin.h mm3dnow.h pmmintrin.h \
tmmintrin.h xmmintrin.h mm_malloc.h
INCS+= wmmintrin.h __wmmintrin_aes.h __wmmintrin_pclmul.h
-.elif ${TARGET_ARCH} == "ia64"
-INCS= ia64intrin.h
.elif ${TARGET_ARCH} == "arm"
INCS= mmintrin.h
.elif ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "powerpc64"
diff --git a/gnu/usr.bin/gdb/arch/ia64/Makefile b/gnu/usr.bin/gdb/arch/ia64/Makefile
deleted file mode 100644
index 2fe4899..0000000
--- a/gnu/usr.bin/gdb/arch/ia64/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-# $FreeBSD$
-
-.if !defined(GDB_CROSS_DEBUGGER)
-LIBSRCS+= fbsd-proc.c fbsd-threads.c gcore.c
-LIBSRCS+= ia64-fbsd-nat.c
-.endif
-LIBSRCS+= solib.c solib-svr4.c
-LIBSRCS+= ia64-fbsd-tdep.c ia64-tdep.c
-
-nm.h:
- echo '#include "ia64/nm-fbsd.h"' > ${.TARGET}
-
-tm.h:
- echo '#include "ia64/tm-fbsd.h"' > ${.TARGET}
diff --git a/gnu/usr.bin/gdb/arch/ia64/config.h b/gnu/usr.bin/gdb/arch/ia64/config.h
deleted file mode 100644
index 4cc29f9..0000000
--- a/gnu/usr.bin/gdb/arch/ia64/config.h
+++ /dev/null
@@ -1,550 +0,0 @@
-/* $FreeBSD$ */
-
-/* config.h. Generated automatically by configure. */
-/* config.in. Generated automatically from configure.in by autoheader. */
-
-/* Define if on AIX 3.
- System headers sometimes define this.
- We just want to avoid a redefinition error message. */
-#ifndef _ALL_SOURCE
-/* #undef _ALL_SOURCE */
-#endif
-
-/* Define if using alloca.c. */
-/* #undef C_ALLOCA */
-
-/* Define to empty if the keyword does not work. */
-/* #undef const */
-
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
- This function is required for alloca.c support on those systems. */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define if you have alloca, as a function or macro. */
-#define HAVE_ALLOCA 1
-
-/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
-/* #undef HAVE_ALLOCA_H */
-
-/* Define if the `long double' type works. */
-#define HAVE_LONG_DOUBLE 1
-
-/* Define if you have a working `mmap' system call. */
-#define HAVE_MMAP 1
-
-/* Define if you have <vfork.h>. */
-/* #undef HAVE_VFORK_H */
-
-/* Define as __inline if that's what the C compiler calls it. */
-/* #undef inline */
-
-/* Define to `long' if <sys/types.h> doesn't define. */
-/* #undef off_t */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef pid_t */
-
-/* Define if you need to in order for stat and other things to work. */
-/* #undef _POSIX_SOURCE */
-
-/* Define as the return type of signal handlers (int or void). */
-#define RETSIGTYPE void
-
-/* Define if the `setpgrp' function takes no argument. */
-/* #undef SETPGRP_VOID */
-
-/* Define to `unsigned' if <sys/types.h> doesn't define. */
-/* #undef size_t */
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown
- */
-/* #undef STACK_DIRECTION */
-
-/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-/* #undef STAT_MACROS_BROKEN */
-
-/* Define if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define vfork as fork if vfork does not work. */
-/* #undef vfork */
-
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-/* Define if your struct reg has r_fs. */
-/* #undef HAVE_STRUCT_REG_R_FS */
-
-/* Define if your struct stat has st_blocks. */
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-
-/* Define if your struct reg has r_gs. */
-/* #undef HAVE_STRUCT_REG_R_GS */
-
-/* Define if <link.h> exists and defines struct link_map which has
- members with an ``l_'' prefix. (For Solaris, SVR4, and
- SVR4-like systems.) */
-#define HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS 1
-
-/* Define if <link.h> exists and defines struct link_map which has
- members with an ``lm_'' prefix. (For SunOS.) */
-/* #undef HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS */
-
-/* Define if <link.h> exists and defines a struct so_map which has
- members with an ``som_'' prefix. (Found on older *BSD systems.) */
-/* #undef HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS */
-
-/* Define if <sys/link.h> has struct link_map32 */
-/* #undef HAVE_STRUCT_LINK_MAP32 */
-
-/* Define if <sys/link.h> has link_map32 (solaris sparc-64 target) */
-/* #undef _SYSCALL32 */
-
-/* Define if the prfpregset_t type is broken. */
-/* #undef PRFPREGSET_T_BROKEN */
-
-/* Define if you want to use new multi-fd /proc interface
- (replaces HAVE_MULTIPLE_PROC_FDS as well as other macros). */
-/* #undef NEW_PROC_API */
-
-/* Define if ioctl argument PIOCSET is available. */
-/* #undef HAVE_PROCFS_PIOCSET */
-
-/* Define if the `long long' type works. */
-#define CC_HAS_LONG_LONG 1
-
-/* Define if the "ll" format works to print long long ints. */
-#define PRINTF_HAS_LONG_LONG 1
-
-/* Define if the "%Lg" format works to print long doubles. */
-#define PRINTF_HAS_LONG_DOUBLE 1
-
-/* Define if the "%Lg" format works to scan long doubles. */
-#define SCANF_HAS_LONG_DOUBLE 1
-
-/* Define if using Solaris thread debugging. */
-/* #undef HAVE_THREAD_DB_LIB */
-
-/* Define on a GNU/Linux system to work around problems in sys/procfs.h. */
-/* #undef START_INFERIOR_TRAPS_EXPECTED */
-/* #undef sys_quotactl */
-
-/* Define if you have HPUX threads */
-/* #undef HAVE_HPUX_THREAD_SUPPORT */
-
-/* Define if <proc_service.h> on solaris uses int instead of
- size_t, and assorted other type changes. */
-/* #undef PROC_SERVICE_IS_OLD */
-
-/* Define if the simulator is being linked in. */
-#define WITH_SIM 1
-
-/* Set to true if the save_state_t structure is present */
-/* #undef HAVE_STRUCT_SAVE_STATE_T */
-
-/* Set to true if the save_state_t structure has the ss_wide member */
-/* #undef HAVE_STRUCT_MEMBER_SS_WIDE */
-
-/* Define if <sys/ptrace.h> defines the PTRACE_GETREGS request. */
-/* #undef HAVE_PTRACE_GETREGS */
-
-/* Define if <sys/ptrace.h> defines the PTRACE_GETFPXREGS request. */
-/* #undef HAVE_PTRACE_GETFPXREGS */
-
-/* Define if <sys/ptrace.h> defines the PT_GETDBREGS request. */
-#define HAVE_PT_GETDBREGS 1
-
-/* Define if <sys/ptrace.h> defines the PT_GETXMMREGS request. */
-/* #undef HAVE_PT_GETXMMREGS */
-
-/* Define if libunwind library is being used. */
-/* #undef HAVE_LIBUNWIND */
-
-/* hostfile */
-/* #undef GDB_XM_FILE */
-
-/* targetfile */
-#define GDB_TM_FILE config/ia64/tm-fbsd.h
-
-/* nativefile */
-#ifndef CROSS_DEBUGGER
-#define GDB_NM_FILE config/ia64/nm-fbsd.h
-#endif
-
-/* Define to 1 so <sys/proc.h> gets a definition of anon_hdl. Works
- around a <sys/proc.h> problem on IRIX 5. */
-#ifndef _KMEMUSER
-/* #undef _KMEMUSER */
-#endif
-
-/* Define if you have the __argz_count function. */
-/* #undef HAVE___ARGZ_COUNT */
-
-/* Define if you have the __argz_next function. */
-/* #undef HAVE___ARGZ_NEXT */
-
-/* Define if you have the __argz_stringify function. */
-/* #undef HAVE___ARGZ_STRINGIFY */
-
-/* Define if you have the _mcleanup function. */
-#define HAVE__MCLEANUP 1
-
-/* Define if you have the canonicalize_file_name function. */
-/* #undef HAVE_CANONICALIZE_FILE_NAME */
-
-/* Define if you have the dcgettext function. */
-/* #undef HAVE_DCGETTEXT */
-
-/* Define if you have the getcwd function. */
-#define HAVE_GETCWD 1
-
-/* Define if you have the getpagesize function. */
-#define HAVE_GETPAGESIZE 1
-
-/* Define if you have the monstartup function. */
-#define HAVE_MONSTARTUP 1
-
-/* Define if you have the munmap function. */
-#define HAVE_MUNMAP 1
-
-/* Define if you have the poll function. */
-#define HAVE_POLL 1
-
-/* Define if you have the pread64 function. */
-/* #undef HAVE_PREAD64 */
-
-/* Define if you have the putenv function. */
-#define HAVE_PUTENV 1
-
-/* Define if you have the realpath function. */
-#define HAVE_REALPATH 1
-
-/* Define if you have the sbrk function. */
-#define HAVE_SBRK 1
-
-/* Define if you have the setenv function. */
-#define HAVE_SETENV 1
-
-/* Define if you have the setlocale function. */
-#define HAVE_SETLOCALE 1
-
-/* Define if you have the setpgid function. */
-#define HAVE_SETPGID 1
-
-/* Define if you have the setpgrp function. */
-#define HAVE_SETPGRP 1
-
-/* Define if you have the sigaction function. */
-#define HAVE_SIGACTION 1
-
-/* Define if you have the sigprocmask function. */
-#define HAVE_SIGPROCMASK 1
-
-/* Define if you have the sigsetmask function. */
-#define HAVE_SIGSETMASK 1
-
-/* Define if you have the socketpair function. */
-#define HAVE_SOCKETPAIR 1
-
-/* Define if you have the stpcpy function. */
-#define HAVE_STPCPY 1
-
-/* Define if you have the strcasecmp function. */
-#define HAVE_STRCASECMP 1
-
-/* Define if you have the strchr function. */
-#define HAVE_STRCHR 1
-
-/* Define if you have the syscall function. */
-#define HAVE_SYSCALL 1
-
-/* Define if you have the <argz.h> header file. */
-/* #undef HAVE_ARGZ_H */
-
-/* Define if you have the <ctype.h> header file. */
-#define HAVE_CTYPE_H 1
-
-/* Define if you have the <curses.h> header file. */
-#define HAVE_CURSES_H 1
-
-/* Define if you have the <dirent.h> header file. */
-#define HAVE_DIRENT_H 1
-
-/* Define if you have the <libunwind-ia64.h> header file. */
-/* #undef HAVE_LIBUNWIND_IA64_H */
-
-/* Define if you have the <libunwind.h> header file. */
-/* #undef HAVE_LIBUNWIND_H */
-
-/* Define if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define if you have the <link.h> header file. */
-#define HAVE_LINK_H 1
-
-/* Define if you have the <locale.h> header file. */
-#define HAVE_LOCALE_H 1
-
-/* Define if you have the <machine/reg.h> header file. */
-#define HAVE_MACHINE_REG_H 1
-
-/* Define if you have the <malloc.h> header file. */
-/* #undef HAVE_MALLOC_H */
-
-/* Define if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define if you have the <ncurses.h> header file. */
-#define HAVE_NCURSES_H 1
-
-/* Define if you have the <ndir.h> header file. */
-/* #undef HAVE_NDIR_H */
-
-/* Define if you have the <nl_types.h> header file. */
-#define HAVE_NL_TYPES_H 1
-
-/* Define if you have the <nlist.h> header file. */
-#define HAVE_NLIST_H 1
-
-/* Define if you have the <poll.h> header file. */
-#define HAVE_POLL_H 1
-
-/* Define if you have the <proc_service.h> header file. */
-/* #undef HAVE_PROC_SERVICE_H */
-
-/* Define if you have the <ptrace.h> header file. */
-/* #undef HAVE_PTRACE_H */
-
-/* Define if you have the <sgtty.h> header file. */
-#define HAVE_SGTTY_H 1
-
-/* Define if you have the <stddef.h> header file. */
-#define HAVE_STDDEF_H 1
-
-/* Define if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define if you have the <sys/debugreg.h> header file. */
-/* #undef HAVE_SYS_DEBUGREG_H */
-
-/* Define if you have the <sys/dir.h> header file. */
-/* #undef HAVE_SYS_DIR_H */
-
-/* Define if you have the <sys/fault.h> header file. */
-/* #undef HAVE_SYS_FAULT_H */
-
-/* Define if you have the <sys/file.h> header file. */
-#define HAVE_SYS_FILE_H 1
-
-/* Define if you have the <sys/filio.h> header file. */
-#define HAVE_SYS_FILIO_H 1
-
-/* Define if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define if you have the <sys/ndir.h> header file. */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define if you have the <sys/poll.h> header file. */
-#define HAVE_SYS_POLL_H 1
-
-/* Define if you have the <sys/proc.h> header file. */
-#define HAVE_SYS_PROC_H 1
-
-/* Define if you have the <sys/procfs.h> header file. */
-#define HAVE_SYS_PROCFS_H 1
-
-/* Define if you have the <sys/ptrace.h> header file. */
-#define HAVE_SYS_PTRACE_H 1
-
-/* Define if you have the <sys/reg.h> header file. */
-/* #undef HAVE_SYS_REG_H */
-
-/* Define if you have the <sys/select.h> header file. */
-#define HAVE_SYS_SELECT_H 1
-
-/* Define if you have the <sys/syscall.h> header file. */
-#define HAVE_SYS_SYSCALL_H 1
-
-/* Define if you have the <sys/user.h> header file. */
-#define HAVE_SYS_USER_H 1
-
-/* Define if you have the <sys/wait.h> header file. */
-#define HAVE_SYS_WAIT_H 1
-
-/* Define if you have the <term.h> header file. */
-#define HAVE_TERM_H 1
-
-/* Define if you have the <termio.h> header file. */
-/* #undef HAVE_TERMIO_H */
-
-/* Define if you have the <termios.h> header file. */
-#define HAVE_TERMIOS_H 1
-
-/* Define if you have the <thread_db.h> header file. */
-/* #undef HAVE_THREAD_DB_H */
-
-/* Define if you have the <time.h> header file. */
-#define HAVE_TIME_H 1
-
-/* Define if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the <values.h> header file. */
-/* #undef HAVE_VALUES_H */
-
-/* Define if you have the <wait.h> header file. */
-/* #undef HAVE_WAIT_H */
-
-/* Define if you have the dl library (-ldl). */
-/* #undef HAVE_LIBDL */
-
-/* Define if you have the m library (-lm). */
-#define HAVE_LIBM 1
-
-/* Define if you have the w library (-lw). */
-/* #undef HAVE_LIBW */
-
-/* Define if you have the stpcpy function */
-#define HAVE_STPCPY 1
-
-/* Define if your locale.h file contains LC_MESSAGES. */
-#define HAVE_LC_MESSAGES 1
-
-/* Define to 1 if NLS is requested */
-/* #undef ENABLE_NLS */
-
-/* Define as 1 if you have gettext and don't want to use GNU gettext. */
-/* #undef HAVE_GETTEXT */
-
-/* Name of this package. */
-#define PACKAGE "gdb"
-
-/* Define to BFD's default architecture. */
-#define DEFAULT_BFD_ARCH bfd_ia64_arch
-
-/* Define to BFD's default target vector. */
-#define DEFAULT_BFD_VEC bfd_elf64_ia64_little_vec
-
-/* Define to 1 if your system has the _etext variable. */
-#define HAVE__ETEXT 1
-
-/* Define to 1 to avoid a clash between <widec.h> and <wchar.h> on
- Solaris 2.[78] when using GCC. */
-/* #undef _MSE_INT_H */
-
-/* Define to 1 if we found this declaration otherwise define to 0. */
-#define HAVE_DECL_GETOPT 0
-
-/* Define if sigsetjmp is available. */
-#define HAVE_SIGSETJMP 1
-
-/* Define to 1 if the regex included in libiberty should be used. */
-#define USE_INCLUDED_REGEX 1
-
-/* Define to 1 if your system has struct reg in <machine/reg.h>. */
-#define HAVE_STRUCT_REG 1
-
-/* Define if <stdint.h> provides the uintptr_t type. */
-#define HAVE_UINTPTR_T 1
-
-/* Define if malloc is not declared in system header files. */
-/* #undef NEED_DECLARATION_MALLOC */
-
-/* Define if realloc is not declared in system header files. */
-/* #undef NEED_DECLARATION_REALLOC */
-
-/* Define if free is not declared in system header files. */
-/* #undef NEED_DECLARATION_FREE */
-
-/* Define if strerror is not declared in system header files. */
-/* #undef NEED_DECLARATION_STRERROR */
-
-/* Define if strdup is not declared in system header files. */
-/* #undef NEED_DECLARATION_STRDUP */
-
-/* Define if strstr is not declared in system header files. */
-/* #undef NEED_DECLARATION_STRSTR */
-
-/* Define if canonicalize_file_name is not declared in system header files. */
-#define NEED_DECLARATION_CANONICALIZE_FILE_NAME 1
-
-/* Define if <sys/procfs.h> has pstatus_t. */
-/* #undef HAVE_PSTATUS_T */
-
-/* Define if <sys/procfs.h> has prrun_t. */
-/* #undef HAVE_PRRUN_T */
-
-/* Define if <sys/procfs.h> has gregset_t. */
-#define HAVE_GREGSET_T 1
-
-/* Define if <sys/procfs.h> has fpregset_t. */
-#define HAVE_FPREGSET_T 1
-
-/* Define if <sys/procfs.h> has prgregset_t. */
-#define HAVE_PRGREGSET_T 1
-
-/* Define if <sys/procfs.h> has prfpregset_t. */
-#define HAVE_PRFPREGSET_T 1
-
-/* Define if <sys/procfs.h> has prgregset32_t. */
-/* #undef HAVE_PRGREGSET32_T */
-
-/* Define if <sys/procfs.h> has prfpregset32_t. */
-/* #undef HAVE_PRFPREGSET32_T */
-
-/* Define if <sys/procfs.h> has lwpid_t. */
-#define HAVE_LWPID_T 1
-
-/* Define if <sys/procfs.h> has psaddr_t. */
-#define HAVE_PSADDR_T 1
-
-/* Define if <sys/procfs.h> has prsysent_t. */
-/* #undef HAVE_PRSYSENT_T */
-
-/* Define if <sys/procfs.h> has pr_sigset_t. */
-/* #undef HAVE_PR_SIGSET_T */
-
-/* Define if <sys/procfs.h> has pr_sigaction64_t. */
-/* #undef HAVE_PR_SIGACTION64_T */
-
-/* Define if <sys/procfs.h> has pr_siginfo64_t. */
-/* #undef HAVE_PR_SIGINFO64_T */
-
-/* Define if <thread_db.h> has the TD_NOTALLOC error code. */
-/* #undef THREAD_DB_HAS_TD_NOTALLOC */
-
-/* Define if we can use the tkill syscall. */
-/* #undef HAVE_TKILL_SYSCALL */
-
-/* Define to the default OS ABI for this configuration. */
-/* #undef GDB_OSABI_DEFAULT */
-
-/* Define to be a string naming the default host character set. */
-#define GDB_DEFAULT_HOST_CHARSET "ISO-8859-1"
-
-/* Define if you have the iconv() function. */
-/* #undef HAVE_ICONV */
-
-/* Define as const if the declaration of iconv() needs const. */
-/* #undef ICONV_CONST */
-
diff --git a/gnu/usr.bin/gdb/arch/ia64/init.c b/gnu/usr.bin/gdb/arch/ia64/init.c
deleted file mode 100644
index ee383e9..0000000
--- a/gnu/usr.bin/gdb/arch/ia64/init.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/* $FreeBSD$ */
-
-/* Do not modify this file. */
-/* It is created automatically by the Makefile. */
-#include "defs.h" /* For initialize_file_ftype. */
-#include "call-cmds.h" /* For initialize_all_files. */
-extern initialize_file_ftype _initialize_gdbtypes;
-extern initialize_file_ftype _initialize_corelow;
-extern initialize_file_ftype _initialize_ia64_fbsd_tdep;
-extern initialize_file_ftype _initialize_ia64_tdep;
-extern initialize_file_ftype _initialize_solib;
-extern initialize_file_ftype _initialize_svr4_solib;
-extern initialize_file_ftype _initialize_ser_hardwire;
-extern initialize_file_ftype _initialize_ser_pipe;
-extern initialize_file_ftype _initialize_ser_tcp;
-extern initialize_file_ftype _initialize_fbsd_proc;
-extern initialize_file_ftype _initialize_gcore;
-extern initialize_file_ftype _initialize_thread_db;
-extern initialize_file_ftype _initialize_ia64_fbsd_nat;
-extern initialize_file_ftype _initialize_kernel_u_addr;
-extern initialize_file_ftype _initialize_infptrace;
-extern initialize_file_ftype _initialize_inftarg;
-extern initialize_file_ftype _initialize_remote;
-extern initialize_file_ftype _initialize_dcache;
-extern initialize_file_ftype _initialize_sr_support;
-extern initialize_file_ftype _initialize_tracepoint;
-extern initialize_file_ftype _initialize_ax_gdb;
-extern initialize_file_ftype _initialize_annotate;
-extern initialize_file_ftype _initialize_auxv;
-extern initialize_file_ftype _initialize_breakpoint;
-extern initialize_file_ftype _initialize_regcache;
-extern initialize_file_ftype _initialize_charset;
-extern initialize_file_ftype _initialize_dummy_frame;
-extern initialize_file_ftype _initialize_source;
-extern initialize_file_ftype _initialize_values;
-extern initialize_file_ftype _initialize_valops;
-extern initialize_file_ftype _initialize_valarith;
-extern initialize_file_ftype _initialize_valprint;
-extern initialize_file_ftype _initialize_printcmd;
-extern initialize_file_ftype _initialize_symtab;
-extern initialize_file_ftype _initialize_symfile;
-extern initialize_file_ftype _initialize_symmisc;
-extern initialize_file_ftype _initialize_infcall;
-extern initialize_file_ftype _initialize_infcmd;
-extern initialize_file_ftype _initialize_infrun;
-extern initialize_file_ftype _initialize_stack;
-extern initialize_file_ftype _initialize_thread;
-extern initialize_file_ftype _initialize_interpreter;
-extern initialize_file_ftype _initialize_macrocmd;
-extern initialize_file_ftype _initialize_gdbarch;
-extern initialize_file_ftype _initialize_gdbarch_utils;
-extern initialize_file_ftype _initialize_gdb_osabi;
-extern initialize_file_ftype _initialize_copying;
-extern initialize_file_ftype _initialize_mem;
-extern initialize_file_ftype _initialize_parse;
-extern initialize_file_ftype _initialize_language;
-extern initialize_file_ftype _initialize_frame_reg;
-extern initialize_file_ftype _initialize_signals;
-extern initialize_file_ftype _initialize_kod;
-extern initialize_file_ftype _initialize_gdb_events;
-extern initialize_file_ftype _initialize_exec;
-extern initialize_file_ftype _initialize_maint_cmds;
-extern initialize_file_ftype _initialize_demangler;
-extern initialize_file_ftype _initialize_dbxread;
-extern initialize_file_ftype _initialize_coffread;
-extern initialize_file_ftype _initialize_elfread;
-extern initialize_file_ftype _initialize_mipsread;
-extern initialize_file_ftype _initialize_stabsread;
-extern initialize_file_ftype _initialize_core;
-extern initialize_file_ftype _initialize_dwarf2_frame;
-extern initialize_file_ftype _initialize_c_language;
-extern initialize_file_ftype _initialize_f_language;
-extern initialize_file_ftype _initialize_objc_language;
-extern initialize_file_ftype _initialize_ui_out;
-extern initialize_file_ftype _initialize_cli_out;
-extern initialize_file_ftype _initialize_varobj;
-extern initialize_file_ftype _initialize_java_language;
-extern initialize_file_ftype _initialize_m2_language;
-extern initialize_file_ftype _initialize_pascal_language;
-extern initialize_file_ftype _initialize_pascal_valprint;
-extern initialize_file_ftype _initialize_scheme_language;
-extern initialize_file_ftype _initialize_complaints;
-extern initialize_file_ftype _initialize_typeprint;
-extern initialize_file_ftype _initialize_cp_valprint;
-extern initialize_file_ftype _initialize_f_valprint;
-extern initialize_file_ftype _initialize_nlmread;
-extern initialize_file_ftype _initialize_serial;
-extern initialize_file_ftype _initialize_mdebugread;
-extern initialize_file_ftype _initialize_user_regs;
-extern initialize_file_ftype _initialize_frame;
-extern initialize_file_ftype _initialize_frame_unwind;
-extern initialize_file_ftype _initialize_frame_base;
-extern initialize_file_ftype _initialize_gnu_v2_abi;
-extern initialize_file_ftype _initialize_gnu_v3_abi;
-extern initialize_file_ftype _initialize_hpacc_abi;
-extern initialize_file_ftype _initialize_cp_abi;
-extern initialize_file_ftype _initialize_cp_support;
-extern initialize_file_ftype _initialize_cp_namespace;
-extern initialize_file_ftype _initialize_reggroup;
-extern initialize_file_ftype _initialize_inflow;
-extern initialize_file_ftype _initialize_cli_dump;
-extern initialize_file_ftype _initialize_cli_logging;
-extern initialize_file_ftype _initialize_cli_interp;
-extern initialize_file_ftype _initialize_mi_out;
-extern initialize_file_ftype _initialize_mi_cmds;
-extern initialize_file_ftype _initialize_mi_cmd_env;
-extern initialize_file_ftype _initialize_mi_interp;
-extern initialize_file_ftype _initialize_mi_main;
-extern initialize_file_ftype _initialize_tui_hooks;
-extern initialize_file_ftype _initialize_tui_interp;
-extern initialize_file_ftype _initialize_tui_layout;
-extern initialize_file_ftype _initialize_tui_out;
-extern initialize_file_ftype _initialize_tui_regs;
-extern initialize_file_ftype _initialize_tui_stack;
-extern initialize_file_ftype _initialize_tui_win;
-void
-initialize_all_files (void)
-{
- _initialize_gdbtypes ();
- _initialize_corelow ();
- _initialize_ia64_fbsd_tdep ();
- _initialize_ia64_tdep ();
- _initialize_solib ();
- _initialize_svr4_solib ();
- _initialize_ser_hardwire ();
- _initialize_ser_pipe ();
- _initialize_ser_tcp ();
-#ifndef CROSS_DEBUGGER
- _initialize_fbsd_proc ();
- _initialize_gcore ();
- _initialize_thread_db ();
- _initialize_ia64_fbsd_nat ();
- _initialize_kernel_u_addr ();
- _initialize_infptrace ();
- _initialize_inftarg ();
-#endif
- _initialize_remote ();
- _initialize_dcache ();
- _initialize_sr_support ();
- _initialize_tracepoint ();
- _initialize_ax_gdb ();
- _initialize_annotate ();
- _initialize_auxv ();
- _initialize_breakpoint ();
- _initialize_regcache ();
- _initialize_charset ();
- _initialize_dummy_frame ();
- _initialize_source ();
- _initialize_values ();
- _initialize_valops ();
- _initialize_valarith ();
- _initialize_valprint ();
- _initialize_printcmd ();
- _initialize_symtab ();
- _initialize_symfile ();
- _initialize_symmisc ();
- _initialize_infcall ();
- _initialize_infcmd ();
- _initialize_infrun ();
- _initialize_stack ();
- _initialize_thread ();
- _initialize_interpreter ();
- _initialize_macrocmd ();
- _initialize_gdbarch ();
- _initialize_gdbarch_utils ();
- _initialize_gdb_osabi ();
- _initialize_copying ();
- _initialize_mem ();
- _initialize_parse ();
- _initialize_language ();
- _initialize_frame_reg ();
- _initialize_signals ();
- _initialize_kod ();
- _initialize_gdb_events ();
- _initialize_exec ();
- _initialize_maint_cmds ();
- _initialize_demangler ();
- _initialize_dbxread ();
- _initialize_coffread ();
- _initialize_elfread ();
- _initialize_mipsread ();
- _initialize_stabsread ();
- _initialize_core ();
- _initialize_dwarf2_frame ();
- _initialize_c_language ();
- _initialize_f_language ();
- _initialize_objc_language ();
- _initialize_ui_out ();
- _initialize_cli_out ();
- _initialize_varobj ();
- _initialize_java_language ();
- _initialize_m2_language ();
- _initialize_pascal_language ();
- _initialize_pascal_valprint ();
- _initialize_scheme_language ();
- _initialize_complaints ();
- _initialize_typeprint ();
- _initialize_cp_valprint ();
- _initialize_f_valprint ();
- _initialize_nlmread ();
- _initialize_serial ();
- _initialize_mdebugread ();
- _initialize_user_regs ();
- _initialize_frame ();
- _initialize_frame_unwind ();
- _initialize_frame_base ();
- _initialize_gnu_v2_abi ();
- _initialize_gnu_v3_abi ();
- _initialize_hpacc_abi ();
- _initialize_cp_abi ();
- _initialize_cp_support ();
- _initialize_cp_namespace ();
- _initialize_reggroup ();
- _initialize_inflow ();
- _initialize_cli_dump ();
- _initialize_cli_logging ();
- _initialize_cli_interp ();
- _initialize_mi_out ();
- _initialize_mi_cmds ();
- _initialize_mi_cmd_env ();
- _initialize_mi_interp ();
- _initialize_mi_main ();
- _initialize_tui_hooks ();
- _initialize_tui_interp ();
- _initialize_tui_layout ();
- _initialize_tui_out ();
- _initialize_tui_regs ();
- _initialize_tui_stack ();
- _initialize_tui_win ();
-}
diff --git a/gnu/usr.bin/gdb/kgdb/trgt_ia64.c b/gnu/usr.bin/gdb/kgdb/trgt_ia64.c
deleted file mode 100644
index 6ba800b..0000000
--- a/gnu/usr.bin/gdb/kgdb/trgt_ia64.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHORS ``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 AUTHORS 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#ifdef CROSS_DEBUGGER
-#include <sys/ia64/include/_regset.h>
-#include <sys/ia64/include/frame.h>
-#include <sys/ia64/include/md_var.h>
-#include <sys/ia64/include/pcb.h>
-#else
-#include <machine/frame.h>
-#include <machine/md_var.h>
-#include <machine/pcb.h>
-#endif
-#include <err.h>
-#include <kvm.h>
-#include <string.h>
-
-#include <defs.h>
-#include <target.h>
-#include <gdbthread.h>
-#include <inferior.h>
-#include <regcache.h>
-#include <frame-unwind.h>
-#include <ia64-tdep.h>
-
-#include "kgdb.h"
-
-CORE_ADDR
-kgdb_trgt_core_pcb(u_int cpuid)
-{
- CORE_ADDR addr;
- char *expr;
-
- asprintf(&expr, "&cpuid_to_pcpu[%d]->pc_md.pcb", cpuid);
- addr = kgdb_parse(expr);
- free(expr);
- return (addr);
-}
-
-void
-kgdb_trgt_fetch_registers(int regno __unused)
-{
- struct kthr *kt;
- struct pcb pcb;
- uint64_t r;
-
- kt = kgdb_thr_lookup_tid(ptid_get_pid(inferior_ptid));
- if (kt == NULL)
- return;
- if (kvm_read(kvm, kt->pcb, &pcb, sizeof(pcb)) != sizeof(pcb)) {
- warnx("kvm_read: %s", kvm_geterr(kvm));
- memset(&pcb, 0, sizeof(pcb));
- }
-
- /* Registers 0-127: general registers. */
- supply_register(IA64_GR1_REGNUM, (char *)&pcb.pcb_special.gp);
- supply_register(IA64_GR4_REGNUM, (char *)&pcb.pcb_preserved.gr4);
- supply_register(IA64_GR5_REGNUM, (char *)&pcb.pcb_preserved.gr5);
- supply_register(IA64_GR6_REGNUM, (char *)&pcb.pcb_preserved.gr6);
- supply_register(IA64_GR7_REGNUM, (char *)&pcb.pcb_preserved.gr7);
- supply_register(IA64_GR12_REGNUM, (char *)&pcb.pcb_special.sp);
- supply_register(IA64_GR12_REGNUM+1, (char *)&pcb.pcb_special.tp);
-
- /* Registers 128-255: floating-point registers. */
- supply_register(IA64_FR2_REGNUM, (char *)&pcb.pcb_preserved_fp.fr2);
- supply_register(IA64_FR2_REGNUM+1, (char *)&pcb.pcb_preserved_fp.fr3);
- supply_register(IA64_FR2_REGNUM+2, (char *)&pcb.pcb_preserved_fp.fr4);
- supply_register(IA64_FR2_REGNUM+3, (char *)&pcb.pcb_preserved_fp.fr5);
- supply_register(IA64_FR16_REGNUM, (char *)&pcb.pcb_preserved_fp.fr16);
- supply_register(IA64_FR16_REGNUM+1, (char*)&pcb.pcb_preserved_fp.fr17);
- supply_register(IA64_FR16_REGNUM+2, (char*)&pcb.pcb_preserved_fp.fr18);
- supply_register(IA64_FR16_REGNUM+3, (char*)&pcb.pcb_preserved_fp.fr19);
- supply_register(IA64_FR16_REGNUM+4, (char*)&pcb.pcb_preserved_fp.fr20);
- supply_register(IA64_FR16_REGNUM+5, (char*)&pcb.pcb_preserved_fp.fr21);
- supply_register(IA64_FR16_REGNUM+6, (char*)&pcb.pcb_preserved_fp.fr22);
- supply_register(IA64_FR16_REGNUM+7, (char*)&pcb.pcb_preserved_fp.fr23);
- supply_register(IA64_FR16_REGNUM+8, (char*)&pcb.pcb_preserved_fp.fr24);
- supply_register(IA64_FR16_REGNUM+9, (char*)&pcb.pcb_preserved_fp.fr25);
- supply_register(IA64_FR16_REGNUM+10,(char*)&pcb.pcb_preserved_fp.fr26);
- supply_register(IA64_FR16_REGNUM+11,(char*)&pcb.pcb_preserved_fp.fr27);
- supply_register(IA64_FR16_REGNUM+12,(char*)&pcb.pcb_preserved_fp.fr28);
- supply_register(IA64_FR16_REGNUM+13,(char*)&pcb.pcb_preserved_fp.fr29);
- supply_register(IA64_FR16_REGNUM+14,(char*)&pcb.pcb_preserved_fp.fr30);
- supply_register(IA64_FR16_REGNUM+15,(char*)&pcb.pcb_preserved_fp.fr31);
-
- /* Registers 320-327: branch registers. */
- if (pcb.pcb_special.__spare == ~0UL)
- supply_register(IA64_BR0_REGNUM, (char *)&pcb.pcb_special.rp);
- supply_register(IA64_BR1_REGNUM, (char *)&pcb.pcb_preserved.br1);
- supply_register(IA64_BR2_REGNUM, (char *)&pcb.pcb_preserved.br2);
- supply_register(IA64_BR3_REGNUM, (char *)&pcb.pcb_preserved.br3);
- supply_register(IA64_BR4_REGNUM, (char *)&pcb.pcb_preserved.br4);
- supply_register(IA64_BR5_REGNUM, (char *)&pcb.pcb_preserved.br5);
-
- /* Registers 328-333: misc. other registers. */
- supply_register(IA64_PR_REGNUM, (char *)&pcb.pcb_special.pr);
- if (pcb.pcb_special.__spare == ~0UL) {
- r = pcb.pcb_special.iip + ((pcb.pcb_special.psr >> 41) & 3);
- supply_register(IA64_IP_REGNUM, (char *)&r);
- supply_register(IA64_CFM_REGNUM, (char *)&pcb.pcb_special.cfm);
- } else {
- supply_register(IA64_IP_REGNUM, (char *)&pcb.pcb_special.rp);
- supply_register(IA64_CFM_REGNUM, (char *)&pcb.pcb_special.pfs);
- }
-
- /* Registers 334-461: application registers. */
- supply_register(IA64_RSC_REGNUM, (char *)&pcb.pcb_special.rsc);
- r = pcb.pcb_special.bspstore;
- if (pcb.pcb_special.__spare == ~0UL)
- r += pcb.pcb_special.ndirty;
- else
- r = ia64_bsp_adjust(r, IA64_CFM_SOF(pcb.pcb_special.pfs) -
- IA64_CFM_SOL(pcb.pcb_special.pfs));
- supply_register(IA64_BSP_REGNUM, (char *)&r);
- supply_register(IA64_BSPSTORE_REGNUM, (char *)&r);
- supply_register(IA64_RNAT_REGNUM, (char *)&pcb.pcb_special.rnat);
- supply_register(IA64_UNAT_REGNUM, (char *)&pcb.pcb_special.unat);
- supply_register(IA64_FPSR_REGNUM, (char *)&pcb.pcb_special.fpsr);
- if (pcb.pcb_special.__spare == ~0UL)
- supply_register(IA64_PFS_REGNUM, (char *)&pcb.pcb_special.pfs);
- supply_register(IA64_LC_REGNUM, (char *)&pcb.pcb_preserved.lc);
-}
-
-void
-kgdb_trgt_store_registers(int regno __unused)
-{
- fprintf_unfiltered(gdb_stderr, "XXX: %s\n", __func__);
-}
-
-void
-kgdb_trgt_new_objfile(struct objfile *objfile)
-{
-}
-
-struct kgdb_frame_cache {
- CORE_ADDR bsp;
- CORE_ADDR ip;
- CORE_ADDR sp;
- CORE_ADDR saved_bsp;
-};
-
-#define SPECIAL(x) offsetof(struct trapframe, tf_special) \
- + offsetof(struct _special, x)
-#define SCRATCH(x) offsetof(struct trapframe, tf_scratch) \
- + offsetof(struct _caller_saved, x)
-#define SCRATCH_FP(x) offsetof(struct trapframe, tf_scratch_fp) \
- + offsetof(struct _caller_saved_fp, x)
-
-static int kgdb_trgt_frame_ofs_gr[32] = {
- -1, /* gr0 */
- SPECIAL(gp),
- SCRATCH(gr2), SCRATCH(gr3),
- -1, -1, -1, -1, /* gr4-gr7 */
- SCRATCH(gr8), SCRATCH(gr9), SCRATCH(gr10), SCRATCH(gr11),
- SPECIAL(sp), SPECIAL(tp),
- SCRATCH(gr14), SCRATCH(gr15), SCRATCH(gr16), SCRATCH(gr17),
- SCRATCH(gr18), SCRATCH(gr19), SCRATCH(gr20), SCRATCH(gr21),
- SCRATCH(gr22), SCRATCH(gr23), SCRATCH(gr24), SCRATCH(gr25),
- SCRATCH(gr26), SCRATCH(gr27), SCRATCH(gr28), SCRATCH(gr29),
- SCRATCH(gr30), SCRATCH(gr31)
-};
-
-static int kgdb_trgt_frame_ofs_fr[32] = {
- -1, /* fr0: constant 0.0 */
- -1, /* fr1: constant 1.0 */
- -1, -1, -1, -1, /* fr2-fr5 */
- SCRATCH_FP(fr6), SCRATCH_FP(fr7), SCRATCH_FP(fr8), SCRATCH_FP(fr9),
- SCRATCH_FP(fr10), SCRATCH_FP(fr11), SCRATCH_FP(fr12), SCRATCH_FP(fr13),
- SCRATCH_FP(fr14), SCRATCH_FP(fr15)
-};
-
-static int kgdb_trgt_frame_ofs_br[8] = {
- SPECIAL(rp),
- -1, -1, -1, -1, -1, /* br1-br5 */
- SCRATCH(br6), SCRATCH(br7)
-};
-
-static int kgdb_trgt_frame_ofs_ar[49] = {
- /* ar0-ar15 */
- SPECIAL(rsc),
- -1, /* ar.bsp */
- SPECIAL(bspstore), SPECIAL(rnat),
- -1, -1, -1, -1, -1, /* ar20-ar24 */
- SCRATCH(csd), SCRATCH(ssd),
- -1, -1, -1, -1, -1, /* ar27-ar31 */
- SCRATCH(ccv),
- -1, -1, -1, /* ar33-ar35 */
- SPECIAL(unat),
- -1, -1, -1, /* ar37-ar39 */
- SPECIAL(fpsr),
- -1, -1, -1, -1, -1, -1, -1, /* ar41-ar47 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar48-ar55 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar56-ar63 */
- SPECIAL(pfs)
-};
-
-static struct kgdb_frame_cache *
-kgdb_trgt_frame_cache(struct frame_info *next_frame, void **this_cache)
-{
- char buf[MAX_REGISTER_SIZE];
- struct kgdb_frame_cache *cache;
-
- cache = *this_cache;
- if (cache == NULL) {
- cache = FRAME_OBSTACK_ZALLOC(struct kgdb_frame_cache);
- *this_cache = cache;
- frame_unwind_register(next_frame, IA64_BSP_REGNUM, buf);
- cache->bsp = extract_unsigned_integer(buf,
- register_size(current_gdbarch, IA64_BSP_REGNUM));
- cache->ip = frame_func_unwind(next_frame);
- frame_unwind_register(next_frame, SP_REGNUM, buf);
- cache->sp = extract_unsigned_integer(buf,
- register_size(current_gdbarch, SP_REGNUM));
- }
- return (cache);
-}
-
-static void
-kgdb_trgt_trapframe_this_id(struct frame_info *next_frame, void **this_cache,
- struct frame_id *this_id)
-{
- struct kgdb_frame_cache *cache;
-
- cache = kgdb_trgt_frame_cache(next_frame, this_cache);
- *this_id = frame_id_build_special(cache->sp, cache->ip, cache->bsp);
-}
-
-static void
-kgdb_trgt_trapframe_prev_register(struct frame_info *next_frame,
- void **this_cache, int regnum, int *optimizedp, enum lval_type *lvalp,
- CORE_ADDR *addrp, int *realnump, void *valuep)
-{
- char buf[MAX_REGISTER_SIZE];
- char dummy_valuep[MAX_REGISTER_SIZE];
- struct kgdb_frame_cache *cache;
- CORE_ADDR bsp;
- int ofs, regsz;
-
- regsz = register_size(current_gdbarch, regnum);
-
- if (valuep == NULL)
- valuep = dummy_valuep;
- memset(valuep, 0, regsz);
- *optimizedp = 0;
- *addrp = 0;
- *lvalp = not_lval;
- *realnump = -1;
-
- cache = kgdb_trgt_frame_cache(next_frame, this_cache);
-
- if (regnum == IA64_BSP_REGNUM) {
- if (cache->saved_bsp == 0) {
- target_read_memory(cache->sp + 16 + SPECIAL(bspstore),
- buf, regsz);
- bsp = extract_unsigned_integer(buf, regsz);
- target_read_memory(cache->sp + 16 + SPECIAL(ndirty),
- buf, regsz);
- bsp += extract_unsigned_integer(buf, regsz);
- cache->saved_bsp = bsp;
- }
- store_unsigned_integer(valuep, regsz, cache->saved_bsp);
- return;
- }
- if (regnum == IA64_PR_REGNUM)
- ofs = SPECIAL(pr);
- else if (regnum == IA64_IP_REGNUM)
- ofs = SPECIAL(iip);
- else if (regnum == IA64_PSR_REGNUM)
- ofs = SPECIAL(psr);
- else if (regnum == IA64_CFM_REGNUM)
- ofs = SPECIAL(cfm);
- else if (regnum >= IA64_GR0_REGNUM && regnum <= IA64_GR31_REGNUM)
- ofs = kgdb_trgt_frame_ofs_gr[regnum - IA64_GR0_REGNUM];
- else if (regnum >= IA64_FR0_REGNUM && regnum <= IA64_FR15_REGNUM)
- ofs = kgdb_trgt_frame_ofs_fr[regnum - IA64_FR0_REGNUM];
- else if (regnum >= IA64_BR0_REGNUM && regnum <= IA64_BR7_REGNUM)
- ofs = kgdb_trgt_frame_ofs_br[regnum - IA64_BR0_REGNUM];
- else if (regnum >= IA64_RSC_REGNUM && regnum <= IA64_PFS_REGNUM)
- ofs = kgdb_trgt_frame_ofs_ar[regnum - IA64_RSC_REGNUM];
- else
- ofs = -1;
- if (ofs == -1)
- return;
-
- *addrp = cache->sp + 16 + ofs;
- *lvalp = lval_memory;
- target_read_memory(*addrp, valuep, regsz);
-}
-
-static const struct frame_unwind kgdb_trgt_trapframe_unwind = {
- UNKNOWN_FRAME,
- &kgdb_trgt_trapframe_this_id,
- &kgdb_trgt_trapframe_prev_register
-};
-
-const struct frame_unwind *
-kgdb_trgt_trapframe_sniffer(struct frame_info *next_frame)
-{
- char *pname;
- CORE_ADDR ip;
-
- ip = frame_func_unwind(next_frame);
- pname = NULL;
- find_pc_partial_function(ip, &pname, NULL, NULL);
- if (pname == NULL)
- return (NULL);
- if (strncmp(pname, "ivt_", 4) == 0)
- return (&kgdb_trgt_trapframe_unwind);
- /* printf("%s: %lx =%s\n", __func__, ip, pname); */
- return (NULL);
-}
diff --git a/lib/Makefile b/lib/Makefile
index 62062a8..05fab01 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -44,7 +44,6 @@ SUBDIR= ${SUBDIR_ORDERED} \
libdevstat \
libdwarf \
libedit \
- ${_libefi} \
libexecinfo \
libexpat \
libfetch \
@@ -237,11 +236,6 @@ _librtld_db= librtld_db
_libvmmapi= libvmmapi
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-_libefi= libefi
-_libsmb= libsmb
-.endif
-
.if ${MACHINE_CPUARCH} == "mips"
_libproc= libproc
_librtld_db= librtld_db
diff --git a/lib/clang/include/IA64GenAsmWriter.inc b/lib/clang/include/IA64GenAsmWriter.inc
deleted file mode 100644
index dddc793..0000000
--- a/lib/clang/include/IA64GenAsmWriter.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-/* $FreeBSD$ */
-#include "IA64GenAsmWriter.inc.h"
diff --git a/lib/clang/include/IA64GenDAGISel.inc b/lib/clang/include/IA64GenDAGISel.inc
deleted file mode 100644
index c6ae3dc..0000000
--- a/lib/clang/include/IA64GenDAGISel.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-/* $FreeBSD$ */
-#include "IA64GenDAGISel.inc.h"
diff --git a/lib/clang/include/IA64GenInstrInfo.inc b/lib/clang/include/IA64GenInstrInfo.inc
deleted file mode 100644
index 7fe83f6..0000000
--- a/lib/clang/include/IA64GenInstrInfo.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-/* $FreeBSD$ */
-#include "IA64GenInstrInfo.inc.h"
diff --git a/lib/clang/include/IA64GenRegisterInfo.inc b/lib/clang/include/IA64GenRegisterInfo.inc
deleted file mode 100644
index 89405ed..0000000
--- a/lib/clang/include/IA64GenRegisterInfo.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-/* $FreeBSD$ */
-#include "IA64GenRegisterInfo.inc.h"
diff --git a/lib/csu/ia64/Makefile b/lib/csu/ia64/Makefile
deleted file mode 100644
index b12e888..0000000
--- a/lib/csu/ia64/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-# $FreeBSD$
-
-.PATH: ${.CURDIR}/../common
-
-SRCS= crti.S crtn.S
-OBJS= ${SRCS:N*.h:R:S/$/.o/g}
-OBJS+= crt1.o gcrt1.o Scrt1.o
-
-all: ${OBJS}
-
-CLEANFILES= ${OBJS}
-CLEANFILES+= crt1_.o gcrt1_.o Scrt1_.o
-CLEANFILES+= crtbrand.o gcrtbrand.o Scrtbrand.o
-CLEANFILES+= crtbrand.s gcrtbrand.s Scrtbrand.s
-
-crt1_.o: crt1.S
- ${CC} ${CFLAGS} -c -o ${.TARGET} ${.ALLSRC}
-
-# See the comment in lib/csu/common/crtbrand.c for the reason crtbrand.c is not
-# directly compiled to .o files.
-
-crtbrand.s: crtbrand.c
- ${CC} ${CFLAGS} -S -o ${.TARGET} ${.ALLSRC}
- sed -i "" -e '/\.note\.ABI-tag/s/progbits/note/' ${.TARGET}
-
-crtbrand.o: crtbrand.s
- ${CC} ${ACFLAGS} -c -o ${.TARGET} crtbrand.s
-
-crt1.o: crt1_.o crtbrand.o
- ${LD} ${LDFLAGS} -r -o ${.TARGET} crt1_.o crtbrand.o
-
-gcrt1_.o: crt1.S
- ${CC} ${CFLAGS} -DGCRT -c -o ${.TARGET} ${.ALLSRC}
-
-gcrtbrand.s: crtbrand.c
- ${CC} ${CFLAGS} -DGCRT -S -o ${.TARGET} ${.ALLSRC}
- sed -i "" -e '/\.note\.ABI-tag/s/progbits/note/' ${.TARGET}
-
-gcrtbrand.o: gcrtbrand.s
- ${CC} ${ACFLAGS} -c -o ${.TARGET} gcrtbrand.s
-
-gcrt1.o: gcrt1_.o gcrtbrand.o
- ${LD} ${LDFLAGS} -r -o ${.TARGET} ${.ALLSRC}
-
-Scrt1_.o: crt1.S
- ${CC} ${CFLAGS} -fPIC -DPIC -c -o ${.TARGET} ${.ALLSRC}
-
-Scrtbrand.s: crtbrand.c
- ${CC} ${CFLAGS} -fPIC -DPIC -S -o ${.TARGET} ${.ALLSRC}
- sed -i "" -e '/\.note\.ABI-tag/s/progbits/note/' ${.TARGET}
-
-Scrtbrand.o: Scrtbrand.s
- ${CC} ${ACFLAGS} -c -o ${.TARGET} Scrtbrand.s
-
-Scrt1.o: Scrt1_.o Scrtbrand.o
- ${LD} ${LDFLAGS} -r -o ${.TARGET} ${.ALLSRC}
-
-realinstall:
- ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${OBJS} ${DESTDIR}${LIBDIR}
-
-.include <bsd.lib.mk>
diff --git a/lib/csu/ia64/crt1.S b/lib/csu/ia64/crt1.S
deleted file mode 100644
index 6ff9cd9..0000000
--- a/lib/csu/ia64/crt1.S
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
- .text
-
-/*
- * void _start(char **ap, struct ps_strings *, void (*cleanup)(void));
- */
-#define AP in0
-#define CLEANUP in2
-
-#define GP loc0
-#define ARGC loc1
-#define ARGV loc2
-#define ENVP loc3
-
- .global _start
- .type _start, @function
- .proc _start
-_start:
- .prologue
- .save rp, r0
- .body
-{ .mlx
- alloc r14=ar.pfs,3,4,3,0
- movl r15=@gprel(1f)
-}
-1:
-{ .mmi
- ld4 ARGC=[AP]
- adds ARGV=8,AP
- mov r16=ip
- ;;
-}
-{ .mmi
- sub gp=r16,r15
- sub GP=r16,r15
- shladd r14=ARGC,3,AP
- ;;
-}
-{ .mii
- addl r15=@ltoff(environ),gp
- cmp4.ge p6,p7=0,ARGC
- adds ENVP=16,r14
- ;;
-}
-{ .mmi
- ld8 r14=[r15]
-(p7) ld8 r15=[ARGV]
- addl r16=@gprel(__progname),gp
- ;;
-}
-{ .mib
- st8 [r14]=ENVP
-(p7) cmp.eq p6,p0=0,r15
-(p6) br.dpnt .L1
- ;;
-}
- /* Normalize __progname. */
-{ .mmi
- st8 [r16]=r15
- ld1 r14=[r15],1
- nop 0
- ;;
-}
-.L0:
-{ .mib
- cmp4.eq p7,p0=0,r14
- cmp4.eq p6,p0=0x2f,r14
-(p7) br.dptk .L1
- ;;
-}
-{ .mmb
-(p6) st8 [r16]=r15
- ld1 r14=[r15],1
- br.dptk.many .L0
-}
-.L1:
-{ .mib
- cmp.ne p7,p0=0,CLEANUP
- mov out0=CLEANUP
-(p7) br.call.sptk b0=atexit
- ;;
-}
-{ .mfb
- mov gp=GP
- nop 0
- br.call.sptk b0=_init_tls
-}
-#ifdef GCRT
-{ .mmi
- mov gp=GP
- ;;
- addl r14=@ltoff(@fptr(_mcleanup)),gp
- nop 0
- ;;
-}
-{ .mfb
- ld8 out0=[r14]
- nop 0
- br.call.sptk b0=atexit
- ;;
-}
-#endif
-{ .mmi
- mov gp=GP
- ;;
- addl r14=@ltoff(@fptr(_fini)),gp
- nop 0
- ;;
-}
-{ .mfb
- ld8 out0=[r14]
- nop 0
- br.call.sptk b0=atexit
- ;;
-}
-#ifdef GCRT
-{ .mmi
- mov gp=GP
- ;;
- addl r14=@ltoff(eprol),gp
- addl r15=@ltoff(etext),gp
- ;;
-}
-{ .mmb
- ld8 out0=[r14]
- ld8 out1=[r15]
- br.call.sptk b0=monstartup
- ;;
-}
-#endif
-{ .mfb
- mov gp=GP
- nop 0
- br.call.sptk b0=_init
- ;;
-}
-{ .mmi
- mov gp=GP
- mov out0=ARGC
- mov out1=ARGV
-}
-{ .mfb
- mov out2=ENVP
- nop 0
- br.call.sptk b0=main
- ;;
-}
-{ .mib
- mov gp=GP
- mov out0=r8
- br.call.sptk b0=exit
- ;;
-}
- .endp _start
-
-#ifdef GCRT
-eprol:
-#endif
-
- .rodata
-.empty: stringz ""
-
- .sdata
- .global __progname
- .size __progname,8
- .type __progname,@object
-__progname: data8 .empty
-
- .common environ,8,8
diff --git a/lib/csu/ia64/crti.S b/lib/csu/ia64/crti.S
deleted file mode 100644
index 66ef948..0000000
--- a/lib/csu/ia64/crti.S
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * Copyright (c) 2001 Peter Wemm <peter@FreeBSD.org>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * This file (and its companion crtn.S) form the terminators of the
- * .init and .fini sections.
- */
- .file "crti.S"
-
- .section .init,"ax",@progbits
- .global _init#
- .proc _init#
-_init:
- .regstk 0,2,0,0
- .prologue 12,loc0
- .save ar.pfs,loc1
- alloc loc1=ar.pfs,0,2,0,0
- mov loc0=b0 /* Save return addr */
- .body
- .endp _init#
-
- .section .fini,"ax",@progbits
- .global _fini#
- .proc _fini#
-_fini:
- .regstk 0,2,0,0
- .prologue 12,loc0
- .save ar.pfs,loc1
- alloc loc1=ar.pfs,0,2,0,0
- mov loc0=b0 /* Save return addr */
- .body
- .endp _fini#
diff --git a/lib/csu/ia64/crtn.S b/lib/csu/ia64/crtn.S
deleted file mode 100644
index 681fba3..0000000
--- a/lib/csu/ia64/crtn.S
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * Copyright (c) 2001 Peter Wemm <peter@FreeBSD.org>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
- .file "crtn.S"
-
- .section .init,"ax",@progbits
- .regstk 0,2,0,0
- mov b0=loc0 /* Recover return addr */
- mov ar.pfs=loc1
- br.ret.sptk.many b0
-
- .section .fini,"ax",@progbits
- .regstk 0,2,0,0
- mov b0=loc0 /* Recover return addr */
- mov ar.pfs=loc1
- br.ret.sptk.many b0
diff --git a/lib/libarchive/Makefile b/lib/libarchive/Makefile
index bbe03a0..1460329 100644
--- a/lib/libarchive/Makefile
+++ b/lib/libarchive/Makefile
@@ -41,7 +41,7 @@ SHARED_CFLAGS+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=const
.endif
.if ${MACHINE_ARCH:Marm*} != "" || ${MACHINE_ARCH:Mmips*} != "" || \
- ${MACHINE_ARCH:Msparc64*} != "" || ${MACHINE_ARCH:Mia64*} != ""
+ ${MACHINE_ARCH:Msparc64*} != ""
NO_WCAST_ALIGN= yes
.if ${MACHINE_ARCH:M*64*} == ""
CFLAGS+= -DPPMD_32BIT
diff --git a/lib/libc/Makefile b/lib/libc/Makefile
index 6b84f23..9ce6162 100644
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -80,7 +80,6 @@ NOASM=
.include "${LIBC_SRCTOP}/nls/Makefile.inc"
.include "${LIBC_SRCTOP}/posix1e/Makefile.inc"
.if ${LIBC_ARCH} != "amd64" && \
- ${LIBC_ARCH} != "ia64" && \
${LIBC_ARCH} != "powerpc64" && \
${LIBC_ARCH} != "sparc64" && \
${MACHINE_ARCH:Mmipsn32*} == "" && \
diff --git a/lib/libc/gen/tls.c b/lib/libc/gen/tls.c
index 4b083da..5219418 100644
--- a/lib/libc/gen/tls.c
+++ b/lib/libc/gen/tls.c
@@ -62,7 +62,7 @@ void _rtld_free_tls(void *tls, size_t tcbsize, size_t tcbalign);
void *__libc_allocate_tls(void *oldtls, size_t tcbsize, size_t tcbalign);
void __libc_free_tls(void *tls, size_t tcbsize, size_t tcbalign);
-#if defined(__ia64__) || defined(__amd64__)
+#if defined(__amd64__)
#define TLS_TCB_ALIGN 16
#elif defined(__powerpc__) || defined(__i386__) || defined(__arm__) || \
defined(__sparc64__) || defined(__mips__)
@@ -71,8 +71,7 @@ void __libc_free_tls(void *tls, size_t tcbsize, size_t tcbalign);
#error TLS_TCB_ALIGN undefined for target architecture
#endif
-#if defined(__arm__) || defined(__ia64__) || defined(__mips__) || \
- defined(__powerpc__)
+#if defined(__arm__) || defined(__mips__) || defined(__powerpc__)
#define TLS_VARIANT_I
#endif
#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__)
diff --git a/lib/libc/ia64/Makefile.inc b/lib/libc/ia64/Makefile.inc
deleted file mode 100644
index 16565c6..0000000
--- a/lib/libc/ia64/Makefile.inc
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-#
-# Machine dependent definitions for the ia64 architecture.
-#
-
-# Long double is 80 bits
-GDTOASRCS+=strtorx.c
-MDSRCS+=machdep_ldisx.c
-SYM_MAPS+=${LIBC_SRCTOP}/ia64/Symbol.map
diff --git a/lib/libc/ia64/SYS.h b/lib/libc/ia64/SYS.h
deleted file mode 100644
index eb019a2..0000000
--- a/lib/libc/ia64/SYS.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* $NetBSD: SYS.h,v 1.5 1997/05/02 18:15:15 kleink Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-#include <sys/syscall.h>
-
-#define CALLSYS_ERROR(name) \
- CALLSYS_NOERROR(name); \
- cmp.ne p6,p0=r0,r10; \
-(p6) br.cond.sptk.few .cerror
-
-
-#define SYSCALL(name) \
-ENTRY(__sys_ ## name,0); /* XXX # of args? */ \
- WEAK_ALIAS(name, __sys_ ## name); \
- WEAK_ALIAS(_ ## name, __sys_ ## name); \
- CALLSYS_ERROR(name)
-
-#define SYSCALL_NOERROR(name) \
-ENTRY(__sys_ ## name,0); /* XXX # of args? */ \
- WEAK_ALIAS(name, __sys_ ## name); \
- WEAK_ALIAS(_ ## name, __sys_ ## name); \
- CALLSYS_NOERROR(name)
-
-#define RSYSCALL(name) \
- SYSCALL(name); \
- br.ret.sptk.few rp; \
-END(__sys_ ## name)
-
-#define PSEUDO(name) \
-ENTRY(__sys_ ## name,0); /* XXX # of args? */ \
- WEAK_ALIAS(_ ## name, __sys_ ## name); \
- CALLSYS_ERROR(name); \
- br.ret.sptk.few rp; \
-END(__sys_ ## name);
diff --git a/lib/libc/ia64/Symbol.map b/lib/libc/ia64/Symbol.map
deleted file mode 100644
index 7a31a51..0000000
--- a/lib/libc/ia64/Symbol.map
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $FreeBSD$
- */
-
-/*
- * This only needs to contain symbols that are not listed in
- * symbol maps from other parts of libc (i.e., not found in
- * stdlib/Symbol.map, string/Symbol.map, sys/Symbol.map, ...).
- */
-FBSD_1.0 {
- /* PSEUDO syscalls */
- _exit;
-
- mcount;
- _setjmp;
- _longjmp;
- fabs;
- __flt_rounds;
- fpgetmask;
- fpgetround;
- fpsetmask;
- fpsetround;
- __infinity;
- __nan;
- makecontext;
- setjmp;
- longjmp;
- sigsetjmp;
- siglongjmp;
- htonl;
- htons;
- ntohl;
- ntohs;
- vfork;
- brk;
- exect;
- sbrk;
-};
-
-FBSDprivate_1.0 {
- /* PSEUDO syscalls */
- __sys_getlogin;
- _getlogin;
- __sys_exit;
-
- _set_tp;
- __divdf3;
- __divdi3;
- __divsf3;
- __divsi3;
- __moddi3;
- __modsi3;
- __udivdi3;
- __udivsi3;
- __umoddi3;
- __umodsi3;
- _mcount;
- ___longjmp;
- __makecontext;
- __longjmp;
- signalcontext;
- __signalcontext;
- __siglongjmp;
- _Unwind_FindTableEntry;
- __sys_vfork;
- _vfork;
- _end;
- minbrk;
- .cerror;
- curbrk;
-};
diff --git a/lib/libc/ia64/_fpmath.h b/lib/libc/ia64/_fpmath.h
deleted file mode 100644
index 936ce23..0000000
--- a/lib/libc/ia64/_fpmath.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*-
- * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org>
- * Copyright (c) 2002, 2003 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/endian.h>
-
-union IEEEl2bits {
- long double e;
- struct {
-#if _BYTE_ORDER == _LITTLE_ENDIAN
- unsigned int manl :32;
- unsigned int manh :32;
- unsigned int exp :15;
- unsigned int sign :1;
- unsigned long junk :48;
-#else /* _BIG_ENDIAN */
- unsigned long junk :48;
- unsigned int sign :1;
- unsigned int exp :15;
- unsigned int manh :32;
- unsigned int manl :32;
-#endif
- } bits;
- struct {
-#if _BYTE_ORDER == _LITTLE_ENDIAN
- unsigned long man :64;
- unsigned int expsign :16;
- unsigned long junk :48;
-#else /* _BIG_ENDIAN */
- unsigned long junk :48;
- unsigned int expsign :16;
- unsigned long man :64;
-#endif
- } xbits;
-};
-
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-#define LDBL_NBIT 0x80000000
-#define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT)
-#else /* _BIG_ENDIAN */
-/*
- * XXX This doesn't look right. Very few machines have a different
- * endianness for integers and floating-point, and in nextafterl()
- * we assume that none do. If you have an environment for testing
- * this, please let me know. --das
- */
-#define LDBL_NBIT 0x80
-#define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT)
-#endif
-
-#define LDBL_MANH_SIZE 32
-#define LDBL_MANL_SIZE 32
-
-#define LDBL_TO_ARRAY32(u, a) do { \
- (a)[0] = (uint32_t)(u).bits.manl; \
- (a)[1] = (uint32_t)(u).bits.manh; \
-} while (0)
diff --git a/lib/libc/ia64/arith.h b/lib/libc/ia64/arith.h
deleted file mode 100644
index 6726528..0000000
--- a/lib/libc/ia64/arith.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * MD header for contrib/gdtoa
- *
- * $FreeBSD$
- */
-
-/*
- * NOTE: The definitions in this file must be correct or strtod(3) and
- * floating point formats in printf(3) will break! The file can be
- * generated by running contrib/gdtoa/arithchk.c on the target
- * architecture. See contrib/gdtoa/gdtoaimp.h for details.
- */
-
-#include <machine/endian.h>
-
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-
-#define IEEE_8087
-#define Arith_Kind_ASL 1
-#define Long int
-#define Intcast (int)(long)
-#define Double_Align
-#define X64_bit_pointers
-
-#else /* _BYTE_ORDER == _LITTLE_ENDIAN */
-
-#define IEEE_MC68k
-#define Arith_Kind_ASL 2
-#define Long int
-#define Intcast (int)(long)
-#define Double_Align
-#define X64_bit_pointers
-#ifdef gcc_bug /* XXX Why does arithchk report sudden underflow here? */
-#define Sudden_Underflow
-#endif
-
-#endif
diff --git a/lib/libc/ia64/gd_qnan.h b/lib/libc/ia64/gd_qnan.h
deleted file mode 100644
index 3992386..0000000
--- a/lib/libc/ia64/gd_qnan.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * MD header for contrib/gdtoa
- *
- * This file can be generated by compiling and running contrib/gdtoa/qnan.c
- * on the target architecture after arith.h has been generated.
- *
- * $FreeBSD$
- */
-
-#define f_QNAN 0x7fc00000
-#define d_QNAN0 0x0
-#define d_QNAN1 0x7ff80000
-#define ld_QNAN0 0x0
-#define ld_QNAN1 0xc0000000
-#define ld_QNAN2 0x7fff
-#define ld_QNAN3 0x0
-#define ldus_QNAN0 0x0
-#define ldus_QNAN1 0x0
-#define ldus_QNAN2 0x0
-#define ldus_QNAN3 0xc000
-#define ldus_QNAN4 0x7fff
diff --git a/lib/libc/ia64/gen/Makefile.inc b/lib/libc/ia64/gen/Makefile.inc
deleted file mode 100644
index 1e3373a..0000000
--- a/lib/libc/ia64/gen/Makefile.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-
-SRCS+= __divdf3.S __divdi3.S __divsf3.S __divsi3.S __moddi3.S __modsi3.S \
- __udivdi3.S __udivsi3.S __umoddi3.S __umodsi3.S _mcount.S _set_tp.c \
- _setjmp.S fabs.S flt_rounds.c fpgetmask.c fpgetround.c fpsetmask.c \
- fpsetround.c getcontextx.c infinity.c ldexp.c makecontext.c setjmp.S \
- signalcontext.c sigsetjmp.S
-
-# The following may go away if function _Unwind_FindTableEntry()
-# will be part of GCC.
-SRCS+= unwind.c
diff --git a/lib/libc/ia64/gen/__divdf3.S b/lib/libc/ia64/gen/__divdf3.S
deleted file mode 100644
index 58425d9..0000000
--- a/lib/libc/ia64/gen/__divdf3.S
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
- .section .text
-
-ENTRY(__divdf3, 0)
-{ .mfi
- // a is in f8
- // b is in f9
-
- // predicate registers used: p6
- // floating-point registers used: f6, f7, f8, f9, f10, f11
-
- // load a, the first argument, in f6
- nop.m 0
- mov f6=f8
- nop.i 0
-} { .mfi
- // load b, the second argument, in f7
- nop.m 0
- mov f7=f9
- nop.i 0;;
-} { .mfi
-
- // BEGIN DOUBLE PRECISION LATENCY-OPTIMIZED DIVIDE ALGORITHM
-
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s0 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // q0 = a * y0 in f9
- (p6) fma.s1 f9=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // e0 = 1 - b * y0 in f10
- (p6) fnma.s1 f10=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // q1 = q0 + e0 * q0 in f9
- (p6) fma.s1 f9=f10,f9,f9
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f10,f10,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f10,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f9,f9
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (8)
- // e2 = e1 * e1 in f10
- (p6) fma.s1 f10=f11,f11,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (9)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (10)
- // q3 = q2 + e2 * q2 in f9
- (p6) fma.d.s1 f9=f10,f9,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (11)
- // y3 = y2 + e2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (12)
- // r0 = a - b * q3 in f6
- (p6) fnma.d.s1 f6=f7,f9,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (13)
- // q4 = q3 + r0 * y3 in f8
- (p6) fma.d.s0 f8=f6,f8,f9
- nop.i 0;;
-
- // END DOUBLE PRECISION LATENCY-OPTIMIZED DIVIDE ALGORITHM
-
-} { .mib
- nop.m 0
- nop.i 0
- // return
- br.ret.sptk b0;;
-}
-
-END(__divdf3)
-
diff --git a/lib/libc/ia64/gen/__divdi3.S b/lib/libc/ia64/gen/__divdi3.S
deleted file mode 100644
index 92e2911..0000000
--- a/lib/libc/ia64/gen/__divdi3.S
+++ /dev/null
@@ -1,143 +0,0 @@
-.file "__divdi3.s"
-
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-.section .text
-.proc __divdi3#
-.align 32
-.global __divdi3#
-.align 32
-
-// 64-bit signed integer divide
-
-__divdi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mmi
-
- // 64-BIT SIGNED INTEGER DIVIDE BEGINS HERE
-
- setf.sig f8=r32
- setf.sig f9=r33
- nop.i 0;;
-} { .mfb
- nop.m 0
- fcvt.xf f6=f8
- nop.b 0
-} { .mfb
- nop.m 0
- fcvt.xf f7=f9
- nop.b 0;;
-} { .mfi
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // e0 = 1 - b * y0 in f9
- (p6) fnma.s1 f9=f7,f8,f1
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // q0 = a * y0 in f10
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f9,f9,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // q1 = q0 + e0 * q0 in f10
- (p6) fma.s1 f10=f9,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f9,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // r2 = a - b * q2 in f10
- (p6) fnma.s1 f10=f7,f9,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (10)
- // q3 = q2 + r2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f9
- nop.i 0;;
-} { .mfb
- nop.m 0
- // Step (11)
- // q = trunc (q3)
- fcvt.fx.trunc.s1 f8=f8
- nop.b 0;;
-} { .mmi
- // quotient will be in r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 64-BIT SIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __divdi3
diff --git a/lib/libc/ia64/gen/__divsf3.S b/lib/libc/ia64/gen/__divsf3.S
deleted file mode 100644
index fe7bcb4..0000000
--- a/lib/libc/ia64/gen/__divsf3.S
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-ENTRY(__divsf3, 0)
-{ .mfi
- // a is in f8
- // b is in f9
-
- // general registers used: r31, r32, r33, r34
- // predicate registers used: p6
- // floating-point registers used: f6, f7, f8
-
- nop.m 0
- // load a, the first argument, in f6
- mov f6=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // load b, the second argument, in f7
- mov f7=f9
- nop.i 0;;
-} { .mfi
-
- // BEGIN SINGLE PRECISION LATENCY-OPTIMIZED DIVIDE ALGORITHM
-
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s0 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // q0 = a * y0 in f6
- (p6) fma.s1 f6=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // e0 = 1 - b * y0 in f7
- (p6) fnma.s1 f7=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // q1 = q0 + e0 * q0 in f6
- (p6) fma.s1 f6=f7,f6,f6
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // e1 = e0 * e0 in f7
- (p6) fma.s1 f7=f7,f7,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // q2 = q1 + e1 * q1 in f6
- (p6) fma.s1 f6=f7,f6,f6
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (7)
- // e2 = e1 * e1 in f7
- (p6) fma.s1 f7=f7,f7,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // q3 = q2 + e2 * q2 in f6
- (p6) fma.d.s1 f6=f7,f6,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // q3' = q3 in f8
- (p6) fma.s.s0 f8=f6,f1,f0
- nop.i 0;;
-
- // END SINGLE PRECISION LATENCY-OPTIMIZED DIVIDE ALGORITHM
-
-} { .mmb
- nop.m 0
- nop.m 0
- // return
- br.ret.sptk b0;;
-}
-
-END(__divsf3)
diff --git a/lib/libc/ia64/gen/__divsi3.S b/lib/libc/ia64/gen/__divsi3.S
deleted file mode 100644
index 4c82e32..0000000
--- a/lib/libc/ia64/gen/__divsi3.S
+++ /dev/null
@@ -1,125 +0,0 @@
-.file "__divsi3.s"
-
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-.section .text
-
-// 32-bit signed integer divide
-
-.proc __divsi3#
-.align 32
-.global __divsi3#
-.align 32
-
-__divsi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mii
- nop.m 0
-
- // 32-BIT SIGNED INTEGER DIVIDE BEGINS HERE
-
- // general register used:
- // r32 - 32-bit signed integer dividend
- // r33 - 32-bit signed integer divisor
- // r8 - 32-bit signed integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9
- // predicate registers used: p6
-
- sxt4 r32=r32
- sxt4 r33=r33;;
-} { .mmb
- setf.sig f6=r32
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- nop.m 0
- fcvt.xf f6=f6
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xf f7=f7
- mov r2 = 0x0ffdd;;
-} { .mfi
- setf.exp f9 = r2
- // (1) y0
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (2) q0 = a * y0
- (p6) fma.s1 f6=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // (3) e0 = 1 - b * y0
- (p6) fnma.s1 f7=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (4) q1 = q0 + e0 * q0
- (p6) fma.s1 f6=f7,f6,f6
- nop.i 0
-} { .mfi
- nop.m 0
- // (5) e1 = e0 * e0 + 2^-34
- (p6) fma.s1 f7=f7,f7,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (6) q2 = q1 + e1 * q1
- (p6) fma.s1 f8=f7,f6,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (7) q = trunc(q2)
- fcvt.fx.trunc.s1 f8=f8
- nop.i 0;;
-} { .mmi
- // quotient will be in the least significant 32 bits of r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 32-BIT SIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __divsi3
diff --git a/lib/libc/ia64/gen/__moddi3.S b/lib/libc/ia64/gen/__moddi3.S
deleted file mode 100644
index e15f964..0000000
--- a/lib/libc/ia64/gen/__moddi3.S
+++ /dev/null
@@ -1,160 +0,0 @@
-.file "__moddi3.s"
-
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-.section .text
-
-// 64-bit signed integer remainder
-
-.proc __moddi3#
-.align 32
-.global __moddi3#
-.align 32
-
-__moddi3:
-
-{ .mii
- alloc r31=ar.pfs,3,0,0,0
- nop.i 0
- nop.i 0
-} { .mmb
-
- // 64-BIT SIGNED INTEGER REMAINDER BEGINS HERE
-
- // general register used:
- // r32 - 64-bit signed integer dividend
- // r33 - 64-bit signed integer divisor
- // r8 - 64-bit signed integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9, f10, f11, f12
- // predicate registers used: p6
-
- setf.sig f12=r32 // holds an in integer form
- setf.sig f7=r33
- nop.b 0
-} { .mlx
- nop.m 0
- //movl r2=0x8000000000000000;;
- movl r2=0xffffffffffffffff;;
-} { .mfi
- // get the 2's complement of b
- sub r33=r0,r33
- fcvt.xf f6=f12
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xf f7=f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // q0 = a * y0 in f10
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // e0 = 1 - b * y0 in f9
- (p6) fnma.s1 f9=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // q1 = q0 + e0 * q0 in f10
- (p6) fma.s1 f10=f9,f10,f10
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f9,f9,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f9,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // r2 = a - b * q2 in f10
- (p6) fnma.s1 f10=f7,f9,f6
- nop.i 0;;
-} { .mfi
- setf.sig f7=r33
- // Step (10)
- // q3 = q2 + r2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (11) q = trunc(q3)
- fcvt.fx.trunc.s1 f8=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (12) r = a + (-b) * q
- xma.l f8=f8,f7,f12
- nop.i 0;;
-} { .mib
- getf.sig r8=f8
- nop.i 0
- nop.b 0
-}
-
- // 64-BIT SIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mib
- nop.m 0
- nop.i 0
- br.ret.sptk b0;;
-}
-
-.endp __moddi3
diff --git a/lib/libc/ia64/gen/__modsi3.S b/lib/libc/ia64/gen/__modsi3.S
deleted file mode 100644
index 1939493..0000000
--- a/lib/libc/ia64/gen/__modsi3.S
+++ /dev/null
@@ -1,132 +0,0 @@
-.file "__modsi3.s"
-
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-.section .text
-
-// 32-bit signed integer remainder
-
-.proc __modsi3#
-.align 32
-.global __modsi3#
-.align 32
-
-__modsi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mii
- nop.m 0
-
- // 32-BIT SIGNED INTEGER REMAINDER BEGINS HERE
-
- // general register used:
- // r32 - 32-bit signed integer dividend
- // r33 - 32-bit signed integer divisor
- // r8 - 32-bit signed integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9, f10, f11
- // predicate registers used: p6
-
- sxt4 r32=r32
- sxt4 r33=r33;;
-} { .mmb
- setf.sig f11=r32
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- // get 2's complement of b
- sub r33=r0,r33
- fcvt.xf f6=f11
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xf f7=f7
- mov r2 = 0x0ffdd;;
-} { .mfi
- setf.exp f9 = r2
- // (1) y0
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (2) q0 = a * y0
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // (3) e0 = 1 - b * y0
- (p6) fnma.s1 f8=f7,f8,f1
- nop.i 0;;
-} { .mfi
- // 2's complement of b
- setf.sig f7=r33
- // (4) q1 = q0 + e0 * q0
- (p6) fma.s1 f10=f8,f10,f10
- nop.i 0
-} { .mfi
- nop.m 0
- // (5) e1 = e0 * e0 + 2^-34
- (p6) fma.s1 f8=f8,f8,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (6) q2 = q1 + e1 * q1
- (p6) fma.s1 f8=f8,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (7) q = trunc(q2)
- fcvt.fx.trunc.s1 f8=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (8) r = a + (-b) * q
- xma.l f8=f8,f7,f11
- nop.i 0;;
-} { .mmi
- // remainder will be in the least significant 32 bits of r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 32-BIT SIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __modsi3
diff --git a/lib/libc/ia64/gen/__udivdi3.S b/lib/libc/ia64/gen/__udivdi3.S
deleted file mode 100644
index 1233e8a..0000000
--- a/lib/libc/ia64/gen/__udivdi3.S
+++ /dev/null
@@ -1,144 +0,0 @@
-.file "__udivdi3.s"
-
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-.section .text
-.proc __udivdi3#
-.align 32
-.global __udivdi3#
-.align 32
-
-// 64-bit unsigned integer divide
-
-__udivdi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-}
-
-{ .mmi
-
- // 64-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
-
- setf.sig f8=r32
- setf.sig f9=r33
- nop.i 0;;
-} { .mfb
- nop.m 0
- fma.s1 f6=f8,f1,f0
- nop.b 0
-} { .mfb
- nop.m 0
- fma.s1 f7=f9,f1,f0
- nop.b 0;;
-} { .mfi
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // e0 = 1 - b * y0 in f9
- (p6) fnma.s1 f9=f7,f8,f1
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // q0 = a * y0 in f10
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f9,f9,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // q1 = q0 + e0 * q0 in f10
- (p6) fma.s1 f10=f9,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f9,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // r2 = a - b * q2 in f10
- (p6) fnma.s1 f10=f7,f9,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (10)
- // q3 = q2 + r2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f9
- nop.i 0;;
-} { .mfb
- nop.m 0
- // (11) q = trunc(q3)
- fcvt.fxu.trunc.s1 f8=f8
- nop.b 0;;
-} { .mmi
- // quotient will be in r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 64-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __udivdi3
diff --git a/lib/libc/ia64/gen/__udivsi3.S b/lib/libc/ia64/gen/__udivsi3.S
deleted file mode 100644
index 25959b8..0000000
--- a/lib/libc/ia64/gen/__udivsi3.S
+++ /dev/null
@@ -1,125 +0,0 @@
-.file "__udivsi3.s"
-
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-.section .text
-
-// 32-bit unsigned integer divide
-
-.proc __udivsi3#
-.align 32
-.global __udivsi3#
-.align 32
-
-__udivsi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mii
- nop.m 0
-
- // 32-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
-
- // general register used:
- // r32 - 32-bit unsigned integer dividend
- // r33 - 32-bit unsigned integer divisor
- // r8 - 32-bit unsigned integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9
- // predicate registers used: p6
-
- zxt4 r32=r32
- zxt4 r33=r33;;
-} { .mmb
- setf.sig f6=r32
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- nop.m 0
- fcvt.xf f6=f6
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xf f7=f7
- mov r2 = 0x0ffdd;;
-} { .mfi
- setf.exp f9 = r2
- // (1) y0
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (2) q0 = a * y0
- (p6) fma.s1 f6=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // (3) e0 = 1 - b * y0
- (p6) fnma.s1 f7=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (4) q1 = q0 + e0 * q0
- (p6) fma.s1 f6=f7,f6,f6
- nop.i 0
-} { .mfi
- nop.m 0
- // (5) e1 = e0 * e0 + 2^-34
- (p6) fma.s1 f7=f7,f7,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (6) q2 = q1 + e1 * q1
- (p6) fma.s1 f8=f7,f6,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (7) q = trunc(q2)
- fcvt.fxu.trunc.s1 f8=f8
- nop.i 0;;
-} { .mmi
- // quotient will be in the least significant 32 bits of r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 32-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __udivsi3
diff --git a/lib/libc/ia64/gen/__umoddi3.S b/lib/libc/ia64/gen/__umoddi3.S
deleted file mode 100644
index 509c62b..0000000
--- a/lib/libc/ia64/gen/__umoddi3.S
+++ /dev/null
@@ -1,156 +0,0 @@
-.file "__umoddi3.s"
-
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-.section .text
-
- // 64-bit unsigned integer remainder
-
-.proc __umoddi3#
-.align 32
-.global __umoddi3#
-.align 32
-
-__umoddi3:
-
-{ .mii
- alloc r31=ar.pfs,3,0,0,0
- nop.i 0
- nop.i 0
-} { .mmb
-
- // 64-BIT UNSIGNED INTEGER REMAINDER BEGINS HERE
-
- // general register used:
- // r32 - 64-bit unsigned integer dividend
- // r33 - 64-bit unsigned integer divisor
- // r8 - 64-bit unsigned integer result
- // floating-point registers used: f6, f7, f8, f9, f10, f11, f12
- // predicate registers used: p6
-
- setf.sig f12=r32 // holds an in integer form
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- // get 2's complement of b
- sub r33=r0,r33
- fcvt.xuf.s1 f6=f12
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xuf.s1 f7=f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // q0 = a * y0 in f10
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // e0 = 1 - b * y0 in f9
- (p6) fnma.s1 f9=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // q1 = q0 + e0 * q0 in f10
- (p6) fma.s1 f10=f9,f10,f10
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f9,f9,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f9,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // r2 = a - b * q2 in f10
- (p6) fnma.s1 f10=f7,f9,f6
- nop.i 0;;
-} { .mfi
- // f7=-b
- setf.sig f7=r33
- // Step (10)
- // q3 = q2 + r2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (11) q = trunc(q3)
- fcvt.fxu.trunc.s1 f8=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (12) r = a + (-b) * q
- xma.l f8=f8,f7,f12
- nop.i 0;;
-} { .mib
- getf.sig r8=f8
- nop.i 0
- nop.b 0
-}
-
- // 64-BIT UNSIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mib
- nop.m 0
- nop.i 0
- br.ret.sptk b0;;
-}
-
-.endp __umoddi3
diff --git a/lib/libc/ia64/gen/__umodsi3.S b/lib/libc/ia64/gen/__umodsi3.S
deleted file mode 100644
index 697db2e..0000000
--- a/lib/libc/ia64/gen/__umodsi3.S
+++ /dev/null
@@ -1,132 +0,0 @@
-.file "__umodsi3.s"
-
-//
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-.section .text
-
-// 32-bit unsigned integer remainder
-
-.proc __umodsi3#
-.align 32
-.global __umodsi3#
-.align 32
-
-__umodsi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mii
- nop.m 0
-
- // 32-BIT UNSIGNED INTEGER REMAINDER BEGINS HERE
-
- // general register used:
- // r32 - 32-bit unsigned integer dividend
- // r33 - 32-bit unsigned integer divisor
- // r8 - 32-bit unsigned integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9, f10, f11
- // predicate registers used: p6
-
- zxt4 r32=r32
- zxt4 r33=r33;;
-} { .mmb
- setf.sig f11=r32
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- nop.m 0
- fcvt.xf f6=f11
- nop.i 0
-} { .mfi
- // get 2's complement of b
- sub r33=r0,r33
- fcvt.xf f7=f7
- mov r2 = 0x0ffdd;;
-} { .mfi
- setf.exp f9 = r2
- // (1) y0
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (2) q0 = a * y0
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // (3) e0 = 1 - b * y0
- (p6) fnma.s1 f8=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (4) q1 = q0 + e0 * q0
- (p6) fma.s1 f10=f8,f10,f10
- nop.i 0
-} { .mfi
- // get 2's complement of b
- setf.sig f7=r33
- // (5) e1 = e0 * e0 + 2^-34
- (p6) fma.s1 f8=f8,f8,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (6) q2 = q1 + e1 * q1
- (p6) fma.s1 f8=f8,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (7) q = trunc(q2)
- fcvt.fxu.trunc.s1 f8=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (8) r = a + (-b) * q
- xma.l f8=f8,f7,f11
- nop.i 0;;
-} { .mmi
- // remainder will be in the least significant 32 bits of r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 32-BIT UNSIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __umodsi3
diff --git a/lib/libc/ia64/gen/_mcount.S b/lib/libc/ia64/gen/_mcount.S
deleted file mode 100644
index d9e9b76..0000000
--- a/lib/libc/ia64/gen/_mcount.S
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
- .text
-
-/*
- * Important registers:
- * r8 structure return address
- * r15 static link (nested routines)
- * rp our return address
- * in0 caller's ar.pfs
- * in1 caller's gp
- * in2 caller's rp
- * in3 GOT entry
- * ar.pfs our pfs
- */
-ENTRY_NOPROFILE(_mcount, 4)
- alloc loc0 = ar.pfs, 4, 4, 2, 0
- mov loc1 = r8
- mov loc2 = rp
- mov loc3 = r15
- ;;
- mov out0 = in2
- mov out1 = rp
- br.call.sptk rp = __mcount
- ;;
-1:
- mov gp = in1
- mov r14 = ip
- mov b7 = loc2
- ;;
- add r14 = 2f - 1b, r14
- mov ar.pfs = loc0
- mov rp = in2
- ;;
- mov r15 = loc3
- mov b7 = r14
- mov b6 = loc2
- mov r8 = loc1
- mov r14 = in0
- br.ret.sptk b7
- ;;
-2:
- mov ar.pfs = r14
- br.sptk b6
- ;;
-END(_mcount)
-
-WEAK_ALIAS(mcount, _mcount)
diff --git a/lib/libc/ia64/gen/_set_tp.c b/lib/libc/ia64/gen/_set_tp.c
deleted file mode 100644
index 901e901..0000000
--- a/lib/libc/ia64/gen/_set_tp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * Copyright (c) 2004 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-void
-_set_tp(void *tpval)
-{
-
- __asm __volatile("mov r13 = %0" :: "r"(tpval));
-}
diff --git a/lib/libc/ia64/gen/_setjmp.S b/lib/libc/ia64/gen/_setjmp.S
deleted file mode 100644
index 3966e83..0000000
--- a/lib/libc/ia64/gen/_setjmp.S
+++ /dev/null
@@ -1,310 +0,0 @@
-//
-// Copyright (c) 1999, 2000
-// Intel Corporation.
-// All rights reserved.
-//
-// 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 Intel Corporation and
-// its contributors.
-//
-// 4. Neither the name of Intel Corporation or its contributors may be
-// used to endorse or promote products derived from this software
-// without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION 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 INTEL CORPORATION 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.
-//
-//
-
-//
-// Module Name:
-//
-// setjmp.s
-//
-// Abstract:
-//
-// Contains an implementation of setjmp and longjmp for the
-// IA-64 architecture.
-
- .file "setjmp.s"
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#define LOCORE
-#include <machine/setjmp.h>
-
-// int _setjmp(struct jmp_buffer *)
-//
-// Setup a non-local goto.
-//
-// Description:
-//
-// SetJump stores the current register set in the area pointed to
-// by "save". It returns zero. Subsequent calls to "LongJump" will
-// restore the registers and return non-zero to the same location.
-//
-// On entry, r32 contains the pointer to the jmp_buffer
-//
-
-ENTRY(_setjmp, 1)
- add r10 = J_PREDS, r32 // skip Unats & pfs save area
- add r11 = J_BSP, r32
- //
- // save immediate context
- //
- mov r2 = ar.bsp // save backing store pointer
- mov r3 = pr // save predicates
- flushrs
- ;;
- //
- // save user Unat register
- //
- mov r16 = ar.lc // save loop count register
- mov r14 = ar.unat // save user Unat register
-
- st8 [r10] = r3, J_LC-J_PREDS
- st8 [r11] = r2, J_R4-J_BSP
- ;;
- st8 [r10] = r16, J_R5-J_LC
- st8 [r32] = r14, J_NATS // Note: Unat at the
- // beginning of the save area
- mov r15 = ar.pfs
- ;;
- //
- // save preserved general registers & NaT's
- //
- .mem.offset 0,0
- st8.spill [r11] = r4, J_R6-J_R4
- .mem.offset 8,0
- st8.spill [r10] = r5, J_R7-J_R5
- ;;
- .mem.offset 16,0
- st8.spill [r11] = r6, J_SP-J_R6
- .mem.offset 24,0
- st8.spill [r10] = r7, J_F3-J_R7
- ;;
- st8.spill [r11] = sp, J_F2-J_SP
- mov r16 = ar.rsc
- ;;
- //
- // save spilled Unat and pfs registers
- //
- mov r2 = ar.unat // save Unat register after spill
- mov ar.rsc = r0
- ;;
- st8 [r32] = r2, J_PFS-J_NATS // save unat for spilled regs
- mov r17 = ar.rnat
- ;;
- st8 [r32] = r15, J_RNAT-J_PFS // save pfs
- mov ar.rsc = r16
- //
- // save floating registers
- //
- stf.spill [r11] = f2, J_F4-J_F2
- stf.spill [r10] = f3, J_F5-J_F3
- ;;
- stf.spill [r11] = f4, J_F16-J_F4
- stf.spill [r10] = f5, J_F17-J_F5
- ;;
- stf.spill [r11] = f16, J_F18-J_F16
- stf.spill [r10] = f17, J_F19-J_F17
- ;;
- stf.spill [r11] = f18, J_F20-J_F18
- stf.spill [r10] = f19, J_F21-J_F19
- ;;
- stf.spill [r11] = f20, J_F22-J_F20
- stf.spill [r10] = f21, J_F23-J_F21
- ;;
- stf.spill [r11] = f22, J_F24-J_F22
- stf.spill [r10] = f23, J_F25-J_F23
- ;;
- stf.spill [r11] = f24, J_F26-J_F24
- stf.spill [r10] = f25, J_F27-J_F25
- ;;
- stf.spill [r11] = f26, J_F28-J_F26
- stf.spill [r10] = f27, J_F29-J_F27
- ;;
- stf.spill [r11] = f28, J_F30-J_F28
- stf.spill [r10] = f29, J_F31-J_F29
- ;;
- stf.spill [r11] = f30, J_FPSR-J_F30
- stf.spill [r10] = f31, J_B0-J_F31 // size of f31 + fpsr
- ;;
- st8 [r32] = r17
- //
- // save FPSR register & branch registers
- //
- mov r2 = ar.fpsr // save fpsr register
- mov r3 = b0
- ;;
- st8 [r11] = r2, J_B1-J_FPSR
- st8 [r10] = r3, J_B2-J_B0
- mov r2 = b1
- mov r3 = b2
- ;;
- st8 [r11] = r2, J_B3-J_B1
- st8 [r10] = r3, J_B4-J_B2
- mov r2 = b3
- mov r3 = b4
- ;;
- st8 [r11] = r2, J_B5-J_B3
- st8 [r10] = r3
- mov r2 = b5
- ;;
- st8 [r11] = r2
- ;;
- //
- // return
- //
- mov r8 = r0 // return 0 from setjmp
- mov ar.unat = r14 // restore unat
- br.ret.sptk b0
-
-END(_setjmp)
-
-
-//
-// void _longjmp(struct jmp_buffer *, int val)
-//
-// Perform a non-local goto.
-//
-// Description:
-//
-// LongJump initializes the register set to the values saved by a
-// previous 'SetJump' and jumps to the return location saved by that
-// 'SetJump'. This has the effect of unwinding the stack and returning
-// for a second time to the 'SetJump'.
-//
-
- WEAK_ALIAS(_longjmp,___longjmp)
-ENTRY(___longjmp, 2)
- mov r14 = ar.rsc // get user RSC conf
- mov r8 = r33 // return value
- add r10 = J_PFS, r32 // get address of pfs
- ;;
- mov ar.rsc = r0
- add r11 = J_NATS, r32
- add r17 = J_RNAT, r32
- ;;
- ld8 r15 = [r10], J_BSP-J_PFS // get pfs
- ld8 r2 = [r11], J_LC-J_NATS // get unat for spilled regs
- mov r31 = r32
- ;;
- loadrs
- mov ar.unat = r2
- cmp.eq p6,p0=0,r8 // Return value 0?
- ;;
- ld8 r16 = [r10], J_PREDS-J_BSP // get backing store pointer
- ld8 r17 = [r17] // ar.rnat
- mov ar.pfs = r15
- ;;
- mov ar.bspstore = r16
-(p6) add r8 = 1, r0
- ;;
- mov ar.rnat = r17
- mov ar.rsc = r14 // restore RSC conf
-
- ld8 r3 = [r11], J_R4-J_LC // get lc register
- ld8 r2 = [r10], J_R5-J_PREDS // get predicates
- ;;
- mov pr = r2, -1
- mov ar.lc = r3
- //
- // restore preserved general registers & NaT's
- //
- ld8.fill r4 = [r11], J_R6-J_R4
- ;;
- ld8.fill r5 = [r10], J_R7-J_R5
- ld8.fill r6 = [r11], J_SP-J_R6
- ;;
- ld8.fill r7 = [r10], J_F2-J_R7
- ld8.fill sp = [r11], J_F3-J_SP
- ;;
- //
- // restore floating registers
- //
- ldf.fill f2 = [r10], J_F4-J_F2
- ldf.fill f3 = [r11], J_F5-J_F3
- ;;
- ldf.fill f4 = [r10], J_F16-J_F4
- ldf.fill f5 = [r11], J_F17-J_F5
- ;;
- ldf.fill f16 = [r10], J_F18-J_F16
- ldf.fill f17 = [r11], J_F19-J_F17
- ;;
- ldf.fill f18 = [r10], J_F20-J_F18
- ldf.fill f19 = [r11], J_F21-J_F19
- ;;
- ldf.fill f20 = [r10], J_F22-J_F20
- ldf.fill f21 = [r11], J_F23-J_F21
- ;;
- ldf.fill f22 = [r10], J_F24-J_F22
- ldf.fill f23 = [r11], J_F25-J_F23
- ;;
- ldf.fill f24 = [r10], J_F26-J_F24
- ldf.fill f25 = [r11], J_F27-J_F25
- ;;
- ldf.fill f26 = [r10], J_F28-J_F26
- ldf.fill f27 = [r11], J_F29-J_F27
- ;;
- ldf.fill f28 = [r10], J_F30-J_F28
- ldf.fill f29 = [r11], J_F31-J_F29
- ;;
- ldf.fill f30 = [r10], J_FPSR-J_F30
- ldf.fill f31 = [r11], J_B0-J_F31 ;;
-
- //
- // restore branch registers and fpsr
- //
- ld8 r16 = [r10], J_B1-J_FPSR // get fpsr
- ld8 r17 = [r11], J_B2-J_B0 // get return pointer
- ;;
- mov ar.fpsr = r16
- mov b0 = r17
- ld8 r2 = [r10], J_B3-J_B1
- ld8 r3 = [r11], J_B4-J_B2
- ;;
- mov b1 = r2
- mov b2 = r3
- ld8 r2 = [r10], J_B5-J_B3
- ld8 r3 = [r11]
- ;;
- mov b3 = r2
- mov b4 = r3
- ld8 r2 = [r10]
- ld8 r21 = [r31] // get user unat
- ;;
- mov b5 = r2
- mov ar.unat = r21
-
- //
- // invalidate ALAT
- //
- invala ;;
-
- br.ret.sptk b0
-
-END(___longjmp)
diff --git a/lib/libc/ia64/gen/fabs.S b/lib/libc/ia64/gen/fabs.S
deleted file mode 100644
index 036d492..0000000
--- a/lib/libc/ia64/gen/fabs.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-ENTRY(fabs, 1)
- fabs fret0=farg0
- br.ret.sptk.few rp
-END(fabs)
diff --git a/lib/libc/ia64/gen/flt_rounds.c b/lib/libc/ia64/gen/flt_rounds.c
deleted file mode 100644
index d650965..0000000
--- a/lib/libc/ia64/gen/flt_rounds.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Written by J.T. Conklin, Apr 10, 1995
- * Public domain.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <float.h>
-
-static const int map[] = {
- 1, /* round to nearest */
- 3, /* round to zero */
- 2, /* round to negative infinity */
- 0 /* round to positive infinity */
-};
-
-int
-__flt_rounds(void)
-{
- int x;
-
- __asm("mov %0=ar.fpsr" : "=r" (x));
- return (map[(x >> 10) & 0x03]);
-}
diff --git a/lib/libc/ia64/gen/fpgetmask.c b/lib/libc/ia64/gen/fpgetmask.c
deleted file mode 100644
index ac166e2..0000000
--- a/lib/libc/ia64/gen/fpgetmask.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <ieeefp.h>
-
-fp_except_t
-fpgetmask(void)
-{
- u_int64_t fpsr;
-
- __asm __volatile("mov %0=ar.fpsr" : "=r" (fpsr));
- return (~fpsr & 0x3d);
-}
diff --git a/lib/libc/ia64/gen/fpgetround.c b/lib/libc/ia64/gen/fpgetround.c
deleted file mode 100644
index 6f5e8cc..0000000
--- a/lib/libc/ia64/gen/fpgetround.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/types.h>
-#include <ieeefp.h>
-
-fp_rnd_t
-fpgetround(void)
-{
- uint64_t fpsr;
-
- __asm __volatile("mov %0=ar.fpsr" : "=r"(fpsr));
- return ((fp_rnd_t)((fpsr >> 10) & 3));
-}
diff --git a/lib/libc/ia64/gen/fpsetmask.c b/lib/libc/ia64/gen/fpsetmask.c
deleted file mode 100644
index d959dc6..0000000
--- a/lib/libc/ia64/gen/fpsetmask.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <ieeefp.h>
-
-fp_except_t
-fpsetmask(fp_except_t mask)
-{
- u_int64_t fpsr;
- u_int64_t oldmask;
-
- __asm __volatile("mov %0=ar.fpsr" : "=r" (fpsr));
- oldmask = ~fpsr & 0x3d;
- fpsr = (fpsr & ~0x3d) | (~mask & 0x3d);
- __asm __volatile("mov ar.fpsr=%0" :: "r" (fpsr));
- return (oldmask);
-}
diff --git a/lib/libc/ia64/gen/fpsetround.c b/lib/libc/ia64/gen/fpsetround.c
deleted file mode 100644
index db2eef1..0000000
--- a/lib/libc/ia64/gen/fpsetround.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/types.h>
-#include <ieeefp.h>
-
-fp_rnd_t
-fpsetround(fp_rnd_t rnd)
-{
- uint64_t fpsr;
- fp_rnd_t prev;
-
- __asm __volatile("mov %0=ar.fpsr" : "=r"(fpsr));
- prev = (fp_rnd_t)((fpsr >> 10) & 3);
- fpsr = (fpsr & ~0xC00ULL) | ((unsigned int)rnd << 10);
- __asm __volatile("mov ar.fpsr=%0" :: "r"(fpsr));
- return (prev);
-}
diff --git a/lib/libc/ia64/gen/getcontextx.c b/lib/libc/ia64/gen/getcontextx.c
deleted file mode 100644
index 54f8513..0000000
--- a/lib/libc/ia64/gen/getcontextx.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2011 Konstantin Belousov <kib@FreeBSD.org>
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/ucontext.h>
-#include <errno.h>
-#include <stdlib.h>
-
-int
-__getcontextx_size(void)
-{
-
- return (sizeof(ucontext_t));
-}
-
-int
-__fillcontextx2(char *ctx)
-{
-
- return (0);
-}
-
-int
-__fillcontextx(char *ctx)
-{
- ucontext_t *ucp;
-
- ucp = (ucontext_t *)ctx;
- return (getcontext(ucp));
-}
-
-__weak_reference(__getcontextx, getcontextx);
-
-ucontext_t *
-__getcontextx(void)
-{
- char *ctx;
- int error;
-
- ctx = malloc(__getcontextx_size());
- if (ctx == NULL)
- return (NULL);
- if (__fillcontextx(ctx) == -1) {
- error = errno;
- free(ctx);
- errno = error;
- return (NULL);
- }
- return ((ucontext_t *)ctx);
-}
diff --git a/lib/libc/ia64/gen/infinity.c b/lib/libc/ia64/gen/infinity.c
deleted file mode 100644
index 1ae92a8..0000000
--- a/lib/libc/ia64/gen/infinity.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* $NetBSD: infinity.c,v 1.1 1995/02/10 17:50:23 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/endian.h>
-#include <math.h>
-
-/* bytes for +Infinity on an ia64 (IEEE double format) */
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-const union __infinity_un __infinity = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } };
-#else /* _BIG_ENDIAN */
-const union __infinity_un __infinity = { { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } };
-#endif
-
-/* bytes for NaN */
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-const union __nan_un __nan = { { 0, 0, 0xc0, 0xff } };
-#else /* _BIG_ENDIAN */
-const union __nan_un __nan = { { 0xff, 0xc0, 0, 0 } };
-#endif
diff --git a/lib/libc/ia64/gen/makecontext.c b/lib/libc/ia64/gen/makecontext.c
deleted file mode 100644
index bee47f1..0000000
--- a/lib/libc/ia64/gen/makecontext.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/ucontext.h>
-#include <machine/fpu.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-struct fdesc {
- uint64_t ip;
- uint64_t gp;
-};
-
-typedef void (*func_t)(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t,
- uint64_t, uint64_t, uint64_t);
-
-static __inline uint64_t *
-spill(uint64_t *bsp, uint64_t arg)
-{
- *bsp++ = arg;
- if (((intptr_t)bsp & 0x1ff) == 0x1f8)
- *bsp++ = 0;
- return (bsp);
-}
-
-static void
-ctx_wrapper(ucontext_t *ucp, func_t func, uint64_t *args)
-{
-
- (*func)(args[0], args[1], args[2], args[3], args[4], args[5], args[6],
- args[7]);
- if (ucp->uc_link == NULL)
- exit(0);
- setcontext((const ucontext_t *)ucp->uc_link);
- /* should never get here */
- abort();
- /* NOTREACHED */
-}
-
-__weak_reference(__makecontext, makecontext);
-
-void
-__makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
-{
- uint64_t *args, *bsp;
- va_list ap;
- int i;
-
- /*
- * Drop the ball completely if something's not right. We only
- * support general registers as arguments and not more than 8
- * of them. Things get hairy if we need to support FP registers
- * (alignment issues) or more than 8 arguments (stack based).
- */
- if (argc < 0 || argc > 8 || ucp == NULL ||
- ucp->uc_stack.ss_sp == NULL || (ucp->uc_stack.ss_size & 15) ||
- ((intptr_t)ucp->uc_stack.ss_sp & 15) ||
- ucp->uc_stack.ss_size < MINSIGSTKSZ)
- abort();
-
- /*
- * Copy the arguments of function 'func' onto the (memory) stack.
- * Always take up space for 8 arguments.
- */
- va_start(ap, argc);
- args = (uint64_t*)(ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size) - 8;
- i = 0;
- while (i < argc)
- args[i++] = va_arg(ap, uint64_t);
- while (i < 8)
- args[i++] = 0;
- va_end(ap);
-
- /*
- * Push (spill) the arguments of the context wrapper onto the register
- * stack. They get loaded by the RSE on a context switch.
- */
- bsp = (uint64_t*)ucp->uc_stack.ss_sp;
- bsp = spill(bsp, (intptr_t)ucp);
- bsp = spill(bsp, (intptr_t)func);
- bsp = spill(bsp, (intptr_t)args);
-
- /*
- * Setup the MD portion of the context.
- */
- memset(&ucp->uc_mcontext, 0, sizeof(ucp->uc_mcontext));
- ucp->uc_mcontext.mc_special.sp = (intptr_t)args - 16;
- ucp->uc_mcontext.mc_special.bspstore = (intptr_t)bsp;
- ucp->uc_mcontext.mc_special.pfs = (3 << 7) | 3;
- ucp->uc_mcontext.mc_special.rsc = 0xf;
- ucp->uc_mcontext.mc_special.rp = ((struct fdesc*)ctx_wrapper)->ip;
- ucp->uc_mcontext.mc_special.gp = ((struct fdesc*)ctx_wrapper)->gp;
- ucp->uc_mcontext.mc_special.fpsr = IA64_FPSR_DEFAULT;
-}
diff --git a/lib/libc/ia64/gen/setjmp.S b/lib/libc/ia64/gen/setjmp.S
deleted file mode 100644
index a2b56d6..0000000
--- a/lib/libc/ia64/gen/setjmp.S
+++ /dev/null
@@ -1,82 +0,0 @@
-/* $NetBSD: setjmp.S,v 1.3 1997/12/05 02:06:27 thorpej Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#define LOCORE
-#include <machine/setjmp.h>
-
-/*
- * C library -- setjmp, longjmp
- *
- * longjmp(a,v)
- * will generate a "return(v)" from
- * the last call to
- * setjmp(a)
- * by restoring registers from the stack,
- * and the previous signal state.
- */
-
-ENTRY(setjmp, 1)
- alloc loc0=ar.pfs,1,2,3,0
- mov loc1=rp
- ;;
- mov out0=1 // how = SIG_BLOCK
- mov out1=0 // set = NULL
- add out2=J_SIGSET,in0 // oset = &jb[J_SIGSET]
- br.call.sptk.few rp=__sys_sigprocmask
- ;;
- mov rp=loc1
- mov r14=loc0
- ;;
- alloc r15=ar.pfs,1,0,0,0 // drop register frame
- ;;
- mov ar.pfs=r14 // restore ar.pfs
- br.sptk.many _setjmp // finish saving state
-END(setjmp)
-
- WEAK_ALIAS(longjmp,__longjmp)
-ENTRY(__longjmp, 2)
- alloc loc0=ar.pfs,2,2,3,0
- mov loc1=rp
- ;;
- mov out0=3 // how = SIG_SETMASK
- add out1=J_SIGSET,in0 // set = &jb[J_SIGSET]
- mov out2=0 // oset = NULL
- br.call.sptk.few rp=__sys_sigprocmask
- ;;
- mov rp=loc1
- mov r14=loc0
- ;;
- alloc r15=ar.pfs,2,0,0,0 // drop register frame
- ;;
- mov ar.pfs=r14 // restore ar.pfs
- br.sptk.many _longjmp // finish restoring state
-END(__longjmp)
diff --git a/lib/libc/ia64/gen/signalcontext.c b/lib/libc/ia64/gen/signalcontext.c
deleted file mode 100644
index b47daf3..0000000
--- a/lib/libc/ia64/gen/signalcontext.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/ucontext.h>
-#include <machine/fpu.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
-
-struct fdesc {
- uint64_t ip;
- uint64_t gp;
-};
-
-typedef void (*handler_t)(uint64_t, uint64_t, uint64_t);
-
-static __inline uint64_t *
-spill(uint64_t *bsp, uint64_t arg)
-{
- *bsp++ = arg;
- if (((intptr_t)bsp & 0x1ff) == 0x1f8)
- *bsp++ = 0;
- return (bsp);
-}
-
-static void
-ctx_wrapper(ucontext_t *ucp, handler_t func, uint64_t *args)
-{
-
- (*func)(args[0], args[1], args[2]);
- if (ucp->uc_link == NULL)
- exit(0);
- setcontext((const ucontext_t *)ucp->uc_link);
- /* should never get here */
- abort();
- /* NOTREACHED */
-}
-
-__weak_reference(__signalcontext, signalcontext);
-
-int
-__signalcontext(ucontext_t *ucp, int sig, __sighandler_t *func)
-{
- uint64_t *args, *bsp;
- siginfo_t *sig_si;
- ucontext_t *sig_uc;
- uint64_t sp;
-
- /* Bail out if we don't have a valid ucontext pointer. */
- if (ucp == NULL)
- abort();
-
- /*
- * Build a signal frame and copy the arguments of signal handler
- * 'func' onto the (memory) stack. We only need 3 arguments, but
- * we create room for 4 so that we are 16-byte aligned.
- */
- sp = (ucp->uc_mcontext.mc_special.sp - sizeof(ucontext_t)) & ~15UL;
- sig_uc = (ucontext_t*)sp;
- bcopy(ucp, sig_uc, sizeof(*sig_uc));
- sp = (sp - sizeof(siginfo_t)) & ~15UL;
- sig_si = (siginfo_t*)sp;
- bzero(sig_si, sizeof(*sig_si));
- sig_si->si_signo = sig;
- sp -= 4 * sizeof(uint64_t);
- args = (uint64_t*)sp;
- args[0] = sig;
- args[1] = (intptr_t)sig_si;
- args[2] = (intptr_t)sig_uc;
-
- /*
- * Push (spill) the arguments of the context wrapper onto the register
- * stack. They get loaded by the RSE on a context switch.
- */
- bsp = (uint64_t*)ucp->uc_mcontext.mc_special.bspstore;
- bsp = spill(bsp, (intptr_t)ucp);
- bsp = spill(bsp, (intptr_t)func);
- bsp = spill(bsp, (intptr_t)args);
-
- /*
- * Setup the ucontext of the signal handler.
- */
- memset(&ucp->uc_mcontext, 0, sizeof(ucp->uc_mcontext));
- ucp->uc_link = sig_uc;
- sigdelset(&ucp->uc_sigmask, sig);
- ucp->uc_mcontext.mc_special.sp = (intptr_t)args - 16;
- ucp->uc_mcontext.mc_special.bspstore = (intptr_t)bsp;
- ucp->uc_mcontext.mc_special.pfs = (3 << 7) | 3;
- ucp->uc_mcontext.mc_special.rsc = 0xf;
- ucp->uc_mcontext.mc_special.rp = ((struct fdesc*)ctx_wrapper)->ip;
- ucp->uc_mcontext.mc_special.gp = ((struct fdesc*)ctx_wrapper)->gp;
- ucp->uc_mcontext.mc_special.fpsr = IA64_FPSR_DEFAULT;
- return (0);
-}
diff --git a/lib/libc/ia64/gen/sigsetjmp.S b/lib/libc/ia64/gen/sigsetjmp.S
deleted file mode 100644
index 9f02a26..0000000
--- a/lib/libc/ia64/gen/sigsetjmp.S
+++ /dev/null
@@ -1,66 +0,0 @@
-/* $NetBSD: sigsetjmp.S,v 1.2 1996/10/17 03:08:07 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#define LOCORE
-#include <machine/setjmp.h>
-
-/*
- * C library -- sigsetjmp, siglongjmp
- *
- * siglongjmp(a,v)
- * will generate a "return(v)" from
- * the last call to
- * sigsetjmp(a, mask)
- * by restoring registers from the stack.
- * If `mask' is non-zero, the previous signal
- * state will be restored.
- */
-
-ENTRY(sigsetjmp, 2)
- add r14=J_SIGMASK,in0 // place to save mask
- cmp.ne p6,p7=0,in1 // save signal state?
- ;;
- st8 [r14]=in1 // save mask value
-(p6) br.cond.dptk.many setjmp
-(p7) br.cond.dpnt.many _setjmp
-END(sigsetjmp)
-
- WEAK_ALIAS(siglongjmp,__siglongjmp)
-ENTRY(__siglongjmp, 2)
- add r14=J_SIGMASK,in0 // address of mask value
- ;;
- ld8 r14=[r14]
- ;;
- cmp.ne p6,p7=0,r14 // did we save signals?
-(p6) br.cond.dptk.many longjmp
-(p7) br.cond.dpnt.many _longjmp
-END(__siglongjmp)
diff --git a/lib/libc/ia64/gen/unwind.c b/lib/libc/ia64/gen/unwind.c
deleted file mode 100644
index 7afd0ef..0000000
--- a/lib/libc/ia64/gen/unwind.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2002 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/types.h>
-
-#include <assert.h>
-#include <dlfcn.h>
-#include <stdlib.h>
-
-#include <machine/elf.h>
-
-#ifndef PT_IA_64_UNWIND
-#define PT_IA_64_UNWIND 0x70000001
-#endif
-
-#define SANITY 0
-
-struct ia64_unwind_entry
-{
- Elf64_Addr start;
- Elf64_Addr end;
- Elf64_Addr descr;
-};
-
-struct ia64_unwind_entry *
-_Unwind_FindTableEntry(const void *pc, unsigned long *pseg, unsigned long *pgp)
-{
- Dl_info info;
- Elf_Dyn *dyn;
- Elf_Ehdr *ehdr;
- Elf_Phdr *phdr;
- char *p, *p_top;
- struct ia64_unwind_entry *unw, *res;
- register unsigned long gp __asm__("gp"); /* XXX assumes gcc */
- unsigned long reloc, vaddr;
- size_t l, m, r;
-
- if (!dladdr(pc, &info))
- return NULL;
-
- ehdr = (Elf_Ehdr*)info.dli_fbase;
-
-#if SANITY
- assert(IS_ELF(*ehdr));
- assert(ehdr->e_ident[EI_CLASS] == ELFCLASS64);
- assert(ehdr->e_ident[EI_DATA] == ELFDATA2LSB);
- assert(ehdr->e_machine == EM_IA_64);
-#endif
-
- reloc = (ehdr->e_type == ET_DYN) ? (uintptr_t)info.dli_fbase : 0;
- *pgp = gp;
- *pseg = 0UL;
- res = NULL;
-
- p = (char*)info.dli_fbase + ehdr->e_phoff;
- p_top = p + ehdr->e_phnum * ehdr->e_phentsize;
- while (p < p_top) {
- phdr = (Elf_Phdr*)p;
- vaddr = phdr->p_vaddr + reloc;
-
- switch (phdr->p_type) {
- case PT_DYNAMIC:
- dyn = (Elf_Dyn*)vaddr;
- while (dyn->d_tag != DT_NULL) {
- if (dyn->d_tag == DT_PLTGOT) {
- *pgp = dyn->d_un.d_ptr + reloc;
- break;
- }
- dyn++;
- }
- break;
- case PT_LOAD:
- if (pc >= (void*)vaddr &&
- pc < (void*)(vaddr + phdr->p_memsz))
- *pseg = vaddr;
- break;
- case PT_IA_64_UNWIND:
-#if SANITY
- assert(*pseg != 0UL);
- assert(res == NULL);
-#endif
- unw = (struct ia64_unwind_entry*)vaddr;
- l = 0;
- r = phdr->p_memsz / sizeof(struct ia64_unwind_entry);
- while (l < r) {
- m = (l + r) >> 1;
- res = unw + m;
- if (pc < (void*)(res->start + *pseg))
- r = m;
- else if (pc >= (void*)(res->end + *pseg))
- l = m + 1;
- else
- break; /* found */
- }
- if (l >= r)
- res = NULL;
- break;
- }
-
- p += ehdr->e_phentsize;
- }
-
- return res;
-}
diff --git a/lib/libc/ia64/string/Makefile.inc b/lib/libc/ia64/string/Makefile.inc
deleted file mode 100644
index 7bbcc8d..0000000
--- a/lib/libc/ia64/string/Makefile.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-# $FreeBSD$
-
-MDSRCS+= bcopy.S bzero.S ffs.S memcpy.S memmove.S
diff --git a/lib/libc/ia64/string/bcopy.S b/lib/libc/ia64/string/bcopy.S
deleted file mode 100644
index 34aac19..0000000
--- a/lib/libc/ia64/string/bcopy.S
+++ /dev/null
@@ -1,95 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * Not the fastest bcopy in the world.
- */
-ENTRY(bcopy, 3)
-
- cmp.le p6,p0=in2,r0 // bail if len <= 0
-(p6) br.ret.spnt.few rp
-
- sub r14=in1,in0 ;; // check for overlap
- cmp.ltu p6,p0=r14,in2 // dst-src < len
-(p6) br.cond.spnt.few 5f
-
- extr.u r14=in0,0,3 // src & 7
- extr.u r15=in1,0,3 ;; // dst & 7
- cmp.eq p6,p0=r14,r15 // different alignment?
-(p6) br.cond.spnt.few 2f // branch if same alignment
-
-1: ld1 r14=[in0],1 ;; // copy bytewise
- st1 [in1]=r14,1
- add in2=-1,in2 ;; // len--
- cmp.ne p6,p0=r0,in2
-(p6) br.cond.dptk.few 1b // loop
- br.ret.sptk.few rp // done
-
-2: cmp.eq p6,p0=r14,r0 // aligned?
-(p6) br.cond.sptk.few 4f
-
-3: ld1 r14=[in0],1 ;; // copy bytewise
- st1 [in1]=r14,1
- extr.u r15=in0,0,3 // src & 7
- add in2=-1,in2 ;; // len--
- cmp.eq p6,p0=r0,in2 // done?
- cmp.eq p7,p0=r0,r15 ;; // aligned now?
-(p6) br.ret.spnt.few rp // return if done
-(p7) br.cond.spnt.few 4f // go to main copy
- br.cond.sptk.few 3b // more bytes to copy
-
- // At this point, in2 is non-zero
-
-4: mov r14=8 ;;
- cmp.ltu p6,p0=in2,r14 ;; // len < 8?
-(p6) br.cond.spnt.few 1b // byte copy the end
- ld8 r15=[in0],8 ;; // copy word
- st8 [in1]=r15,8
- add in2=-8,in2 ;; // len -= 8
- cmp.ne p6,p0=r0,in2 // done?
-(p6) br.cond.spnt.few 4b // again
-
- br.ret.sptk.few rp // return
-
- // Don't bother optimising overlap case
-
-5: add in0=in0,in2
- add in1=in1,in2 ;;
- add in0=-1,in0
- add in1=-1,in1 ;;
-
-6: ld1 r14=[in0],-1 ;;
- st1 [in1]=r14,-1
- add in2=-1,in2 ;;
- cmp.ne p6,p0=r0,in2
-(p6) br.cond.spnt.few 6b
-
- br.ret.sptk.few rp
-
-END(bcopy)
diff --git a/lib/libc/ia64/string/bzero.S b/lib/libc/ia64/string/bzero.S
deleted file mode 100644
index 0963c36..0000000
--- a/lib/libc/ia64/string/bzero.S
+++ /dev/null
@@ -1,81 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-ENTRY(bzero, 2)
-
- cmp.le p6,p0=in1,r0 // bail if len <= 0
-(p6) br.ret.spnt.few rp
- ;;
- mov r14=ar.lc // save ar.lc
-
- cmp.ltu p6,p0=17,in1 // check for small
-(p6) br.dptk.few 3f
-
-1: add r15=-1,in1 ;;
- mov ar.lc=r15 ;;
-2: st1 [in0]=r0,1 // zero one byte
- br.cloop.sptk.few 2b // loop
-
- ;;
- mov ar.lc=r14 // done
- br.ret.sptk.few rp
-
- // Zero up to 8byte alignment
-
-3: tbit.nz p6,p0=in0,0 ;;
-(p6) st1 [in0]=r0,1
-(p6) add in1=-1,in1 ;;
-
- tbit.nz p6,p0=in0,1 ;;
-(p6) st2 [in0]=r0,2
-(p6) add in1=-2,in1 ;;
-
- tbit.nz p6,p0=in0,2 ;;
-(p6) st4 [in0]=r0,4
-(p6) add in1=-4,in1
-
- ;;
- shr.u r15=in1,3 // word count
- extr.u in1=in1,0,3 ;; // trailing bytes
- cmp.eq p6,p0=r15,r0 // check for zero
- cmp.ne p7,p0=in1,r0
-(p6) br.dpnt.few 1b // zero last bytes
-
- add r15=-1,r15 ;;
- mov ar.lc=r15 ;;
-4: st8 [in0]=r0,8
- br.cloop.sptk.few 4b
-
-(p7) br.dpnt.few 1b // zero last bytes
-
- ;;
- mov ar.lc=r14 // done
- br.ret.sptk.few rp
-
-END(bzero)
diff --git a/lib/libc/ia64/string/ffs.S b/lib/libc/ia64/string/ffs.S
deleted file mode 100644
index d99d765..0000000
--- a/lib/libc/ia64/string/ffs.S
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $NetBSD: ffs.S,v 1.3 1996/10/17 03:08:13 cgd Exp $ */
-
-/*
- * Copyright (c) 1995 Christopher G. Demetriou
- * All rights reserved.
- *
- * 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 Christopher G. Demetriou
- * for the NetBSD Project.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-ENTRY(ffs, 1)
- sxt4 r14=in0 ;;
- cmp.eq p6,p0=r14,r0
-(p6) br.dpnt.few Lallzero
-
- /*
- * Initialize return value (ret0), and set up r15 so that it
- * contains the mask with only the lowest bit set.
- */
- sub r15=r0,r14
- mov ret0=1 ;;
- and r15=r14,r15 ;;
-
- extr.u r16=r15,0,8 ;;
- cmp.ne p6,p0=r0,r16
-(p6) br.dptk.few Ldo8
-
- /*
- * If lower 16 bits empty, add 16 to result and use upper 16.
- */
- extr.u r16=r15,0,16 ;;
- cmp.ne p6,p0=r0,r16
-(p6) br.dptk.few Ldo16
- extr.u r15=r15,16,16
- add ret0=16,ret0 ;;
-
-Ldo16:
- /*
- * If lower 8 bits empty, add 8 to result and use upper 8.
- */
- extr.u r16=r15,0,8 ;;
- cmp.ne p6,p0=r0,r16
-(p6) br.dptk.few Ldo8
- extr.u r15=r15,8,24
- add ret0=8,ret0 ;;
-
-Ldo8:
- and r16=0x0f,r15 /* lower 4 of 8 empty? */
- and r17=0x33,r15 /* lower 2 of each 4 empty? */
- and r18=0x55,r15 ;; /* lower 1 of each 2 empty? */
- cmp.ne p6,p0=r16,r0
- cmp.ne p7,p0=r17,r0
- cmp.ne p8,p0=r18,r0
-
- /* If lower 4 bits empty, add 4 to result. */
-(p6) br.dptk.few Ldo4
- add ret0=4,ret0 ;;
-
-Ldo4: /* If lower 2 bits of each 4 empty, add 2 to result. */
-(p7) br.dptk.few Ldo2
- add ret0=2,ret0 ;;
-
-Ldo2: /* If lower bit of each 2 empty, add 1 to result. */
-(p8) br.dptk.few Ldone
- add ret0=1,ret0
-
-Ldone:
- br.ret.sptk.few rp
-
-Lallzero:
- mov ret0=0
- br.ret.sptk.few rp
-END(ffs)
diff --git a/lib/libc/ia64/string/memcpy.S b/lib/libc/ia64/string/memcpy.S
deleted file mode 100644
index d7557c1..0000000
--- a/lib/libc/ia64/string/memcpy.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-ENTRY(memcpy,3)
- mov r8 = in0
- mov in0 = in1
- ;;
- mov in1 = r8
- br.sptk.few bcopy
-END(memcpy)
diff --git a/lib/libc/ia64/string/memmove.S b/lib/libc/ia64/string/memmove.S
deleted file mode 100644
index 19fa8af..0000000
--- a/lib/libc/ia64/string/memmove.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-ENTRY(memmove,3)
- mov r8 = in0
- mov in0 = in1
- ;;
- mov in1 = r8
- br.sptk.few bcopy
-END(memmove)
diff --git a/lib/libc/ia64/sys/Makefile.inc b/lib/libc/ia64/sys/Makefile.inc
deleted file mode 100644
index b3bacd4..0000000
--- a/lib/libc/ia64/sys/Makefile.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-# $FreeBSD$
-
-SRCS+= __vdso_gettc.c
-
-MDASM+= Ovfork.S brk.S cerror.S exect.S fork.S getcontext.S pipe.S ptrace.S \
- sbrk.S setlogin.S sigreturn.S swapcontext.S
-
-# Don't generate default code for these syscalls:
-NOASM= break.o exit.o getlogin.o openbsd_poll.o sstk.o vfork.o yield.o
-
-PSEUDO= _getlogin.o _exit.o
-.if ${MK_SYSCALL_COMPAT} != "no"
-PSEUDO+= _pread.o _pwrite.o _lseek.o _mmap.o _ftruncate.o _truncate.o
-.endif
diff --git a/lib/libc/ia64/sys/Ovfork.S b/lib/libc/ia64/sys/Ovfork.S
deleted file mode 100644
index 6eb6958..0000000
--- a/lib/libc/ia64/sys/Ovfork.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-SYSCALL(vfork)
- cmp.ne p7,p0=ret1,r0 /* ret1!=0 for child */
- ;;
-(p7) mov ret0=r0
- br.ret.sptk.few rp
-END(__sys_vfork)
diff --git a/lib/libc/ia64/sys/__vdso_gettc.c b/lib/libc/ia64/sys/__vdso_gettc.c
deleted file mode 100644
index b99bbc4..0000000
--- a/lib/libc/ia64/sys/__vdso_gettc.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * Copyright (c) 2013 Konstantin Belousov <kib@FreeBSD.org>
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/vdso.h>
-#include <errno.h>
-
-#pragma weak __vdso_gettc
-u_int
-__vdso_gettc(const struct vdso_timehands *th)
-{
-
- return (0);
-}
-
-#pragma weak __vdso_gettimekeep
-int
-__vdso_gettimekeep(struct vdso_timekeep **tk)
-{
-
- return (ENOSYS);
-}
diff --git a/lib/libc/ia64/sys/brk.S b/lib/libc/ia64/sys/brk.S
deleted file mode 100644
index fee1728..0000000
--- a/lib/libc/ia64/sys/brk.S
+++ /dev/null
@@ -1,57 +0,0 @@
-/* $NetBSD: brk.S,v 1.4 1996/10/17 03:08:15 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl _end
-IMPORT(curbrk, 8)
-
- .data
-EXPORT(minbrk)
- .quad _end
-
- .text
-ENTRY(brk, 1)
- add r14=@ltoff(minbrk),gp ;;
- ld8 r14=[r14] ;;
- ld8 r14=[r14] ;;
- cmp.ltu p6,p0=r32,r14 ;;
-(p6) mov r32=r14 ;;
- st8 [sp]=r32
- CALLSYS_ERROR(break)
- ld8 r15=[sp]
- add r14=@ltoff(curbrk),gp ;;
- ld8 r14=[r14] ;;
- st8 [r14]=r15
- mov ret0=0
- br.ret.sptk.few rp
-END(brk)
diff --git a/lib/libc/ia64/sys/cerror.S b/lib/libc/ia64/sys/cerror.S
deleted file mode 100644
index ca0b0c7..0000000
--- a/lib/libc/ia64/sys/cerror.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-
-ENTRY(.cerror, 0)
- alloc loc0=ar.pfs,0,3,1,0
- ;;
- mov loc1=rp
- mov loc2=ret0
- mov out0=ret0
- ;;
- br.call.sptk.few rp=__error
- st4 [ret0]=loc2
- ;;
- mov ret0=-1
- mov ar.pfs=loc0
- mov rp=loc1
- ;;
- br.ret.sptk.few rp
-END(.cerror)
diff --git a/lib/libc/ia64/sys/exect.S b/lib/libc/ia64/sys/exect.S
deleted file mode 100644
index 817d3b1..0000000
--- a/lib/libc/ia64/sys/exect.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* $NetBSD: exect.S,v 1.2 1996/10/17 03:08:18 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-ENTRY(exect, 3)
- CALLSYS_ERROR(execve)
- br.ret.sptk.few rp
-END(exect)
diff --git a/lib/libc/ia64/sys/fork.S b/lib/libc/ia64/sys/fork.S
deleted file mode 100644
index 5b09f77..0000000
--- a/lib/libc/ia64/sys/fork.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-SYSCALL(fork)
- cmp.ne p7,p0=ret1,r0 /* ret1!=0 for child */
- ;;
-(p7) mov ret0=r0
- br.ret.sptk.few rp
-END(__sys_fork)
diff --git a/lib/libc/ia64/sys/getcontext.S b/lib/libc/ia64/sys/getcontext.S
deleted file mode 100644
index 0ec6f92..0000000
--- a/lib/libc/ia64/sys/getcontext.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-ENTRY(__sys_getcontext,2)
- WEAK_ALIAS(getcontext, __sys_getcontext)
- WEAK_ALIAS(_getcontext, __sys_getcontext)
- flushrs
- ;;
- CALLSYS_ERROR(getcontext)
- br.ret.sptk.few rp
-END(__sys_getcontext)
diff --git a/lib/libc/ia64/sys/pipe.S b/lib/libc/ia64/sys/pipe.S
deleted file mode 100644
index a6413df..0000000
--- a/lib/libc/ia64/sys/pipe.S
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $NetBSD: pipe.S,v 1.1 1995/02/10 17:50:35 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-ENTRY(__sys_pipe, 1)
- WEAK_ALIAS(pipe, __sys_pipe)
- WEAK_ALIAS(_pipe, __sys_pipe)
- st8 [sp]=r32
- CALLSYS_ERROR(pipe)
- ld8 r14=[sp]
- ;;
- st4 [r14]=ret0,4
- ;;
- st4 [r14]=ret1
- mov ret0=0
- br.ret.sptk.few rp
-END(__sys_pipe)
diff --git a/lib/libc/ia64/sys/ptrace.S b/lib/libc/ia64/sys/ptrace.S
deleted file mode 100644
index b6d3abd..0000000
--- a/lib/libc/ia64/sys/ptrace.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* $NetBSD: ptrace.S,v 1.4 1996/11/08 00:51:24 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-ENTRY(ptrace, 4)
- add r14=@ltoff(errno),gp ;;
- ld8 r14=[r14] ;;
- st4 [r14]=r0
- CALLSYS_ERROR(ptrace)
- br.ret.sptk.few rp
-END(ptrace)
diff --git a/lib/libc/ia64/sys/sbrk.S b/lib/libc/ia64/sys/sbrk.S
deleted file mode 100644
index 98b5ce9..0000000
--- a/lib/libc/ia64/sys/sbrk.S
+++ /dev/null
@@ -1,63 +0,0 @@
-/* $NetBSD: sbrk.S,v 1.4 1996/10/17 03:08:20 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl _end
-
- .data
-EXPORT(curbrk)
- .quad _end
-
- .text
-ENTRY(sbrk, 1)
- add r14 = @ltoff(curbrk), gp
- ;;
- ld8 r14 = [r14]
- cmp.eq p6, p0 = r32, r0
- ;;
- ld8 ret0 = [r14]
-(p6) br.ret.sptk.few rp
- ;;
- add r32 = ret0, r32
- ;;
- st8 [sp] = r32
- CALLSYS_ERROR(break)
- ld8 r15 = [sp]
- add r14 = @ltoff(curbrk), gp
- ;;
- ld8 r14 = [r14]
- ;;
- ld8 ret0 = [r14]
- st8 [r14] = r15
- br.ret.sptk.few rp
-END(sbrk)
diff --git a/lib/libc/ia64/sys/setlogin.S b/lib/libc/ia64/sys/setlogin.S
deleted file mode 100644
index 1d29a40..0000000
--- a/lib/libc/ia64/sys/setlogin.S
+++ /dev/null
@@ -1,42 +0,0 @@
-/* $NetBSD: setlogin.S,v 1.1 1995/02/10 17:50:39 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-IMPORT(_logname_valid, 4) /* in getlogin() */
-
-SYSCALL(setlogin)
- add r14=@ltoff(_logname_valid),gp ;;
- ld8 r14=[r14] ;;
- st4 [r14]=r0 /* clear it */
- br.ret.sptk.few rp
-END(__sys_setlogin)
diff --git a/lib/libc/ia64/sys/sigreturn.S b/lib/libc/ia64/sys/sigreturn.S
deleted file mode 100644
index 2c7a710..0000000
--- a/lib/libc/ia64/sys/sigreturn.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* $NetBSD: sigreturn.S,v 1.1 1995/02/10 17:50:42 cgd Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-/*
- * We must preserve the state of the registers as the user has set them up.
- * However, that doesn't involve any special work on the ia64.
- * (XXX PROFILING)
- */
-
-RSYSCALL(sigreturn)
diff --git a/lib/libc/ia64/sys/swapcontext.S b/lib/libc/ia64/sys/swapcontext.S
deleted file mode 100644
index 210189f..0000000
--- a/lib/libc/ia64/sys/swapcontext.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
-ENTRY(__sys_swapcontext,2)
- WEAK_ALIAS(swapcontext, __sys_swapcontext)
- WEAK_ALIAS(_swapcontext, __sys_swapcontext)
- flushrs
- ;;
- CALLSYS_ERROR(swapcontext)
- br.ret.sptk.few rp
-END(__sys_swapcontext)
diff --git a/lib/libc/mips/arith.h b/lib/libc/mips/arith.h
index 02d6d2e..61f3930 100644
--- a/lib/libc/mips/arith.h
+++ b/lib/libc/mips/arith.h
@@ -18,9 +18,6 @@
#define Double_Align
#else
/* TODO: Generate these values on a LE machine */
-/* Current values were stolen from ia64 except the
- * Xpointer define.
- */
#define IEEE_8087
#define Arith_Kind_ASL 1
#define Long int
diff --git a/lib/libc/xdr/xdr_float.c b/lib/libc/xdr/xdr_float.c
index 8051649..1135806 100644
--- a/lib/libc/xdr/xdr_float.c
+++ b/lib/libc/xdr/xdr_float.c
@@ -63,7 +63,7 @@ __FBSDID("$FreeBSD$");
#if defined(__m68k__) || defined(__sparc__) || defined(__i386__) || \
defined(__mips__) || defined(__ns32k__) || defined(__alpha__) || \
- defined(__arm__) || defined(__ppc__) || defined(__ia64__) || \
+ defined(__arm__) || defined(__ppc__) || \
defined(__arm26__) || defined(__sparc64__) || defined(__amd64__)
#include <machine/endian.h>
#define IEEEFP
diff --git a/lib/libkvm/kvm_amd64.c b/lib/libkvm/kvm_amd64.c
index 65d697c..9a5ec64 100644
--- a/lib/libkvm/kvm_amd64.c
+++ b/lib/libkvm/kvm_amd64.c
@@ -81,7 +81,7 @@ struct vmstate {
/*
* Map the ELF headers into the process' address space. We do this in two
* steps: first the ELF header itself and using that information the whole
- * set of headers. (Taken from kvm_ia64.c)
+ * set of headers.
*/
static int
_kvm_maphdrs(kvm_t *kd, size_t sz)
@@ -105,7 +105,6 @@ _kvm_maphdrs(kvm_t *kd, size_t sz)
/*
* Translate a physical memory address to a file-offset in the crash-dump.
- * (Taken from kvm_ia64.c)
*/
static size_t
_kvm_pa2off(kvm_t *kd, uint64_t pa, off_t *ofs)
diff --git a/lib/libkvm/kvm_i386.c b/lib/libkvm/kvm_i386.c
index 601126b..45f0a5e 100644
--- a/lib/libkvm/kvm_i386.c
+++ b/lib/libkvm/kvm_i386.c
@@ -87,7 +87,7 @@ struct vmstate {
/*
* Map the ELF headers into the process' address space. We do this in two
* steps: first the ELF header itself and using that information the whole
- * set of headers. (Taken from kvm_ia64.c)
+ * set of headers.
*/
static int
_kvm_maphdrs(kvm_t *kd, size_t sz)
@@ -111,7 +111,6 @@ _kvm_maphdrs(kvm_t *kd, size_t sz)
/*
* Translate a physical memory address to a file-offset in the crash-dump.
- * (Taken from kvm_ia64.c)
*/
static size_t
_kvm_pa2off(kvm_t *kd, uint64_t pa, off_t *ofs)
diff --git a/lib/libkvm/kvm_ia64.c b/lib/libkvm/kvm_ia64.c
deleted file mode 100644
index 5db7e1e..0000000
--- a/lib/libkvm/kvm_ia64.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: kvm_alpha.c,v 1.7.2.1 1997/11/02 20:34:26 mellon Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <sys/types.h>
-#include <sys/elf64.h>
-#include <sys/mman.h>
-
-#ifndef CROSS_LIBKVM
-#include <machine/atomic.h>
-#include <machine/bootinfo.h>
-#include <machine/elf.h>
-#include <machine/pte.h>
-#else
-#include "../../sys/ia64/include/atomic.h"
-#include "../../sys/ia64/include/bootinfo.h"
-#include "../../sys/ia64/include/elf.h"
-#include "../../sys/ia64/include/pte.h"
-#endif
-
-#include <kvm.h>
-#include <limits.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "kvm_private.h"
-
-#define REGION_BASE(n) (((uint64_t)(n)) << 61)
-#define REGION_ADDR(x) ((x) & ((1LL<<61)-1LL))
-
-#define NKPTEPG(ps) ((ps) / sizeof(struct ia64_lpte))
-#define NKPTEDIR(ps) ((ps) >> 3)
-#define KPTE_PTE_INDEX(va,ps) (((va)/(ps)) % NKPTEPG(ps))
-#define KPTE_DIR0_INDEX(va,ps) ((((va)/(ps)) / NKPTEPG(ps)) / NKPTEDIR(ps))
-#define KPTE_DIR1_INDEX(va,ps) ((((va)/(ps)) / NKPTEPG(ps)) % NKPTEDIR(ps))
-
-#define PBVM_BASE 0x9ffc000000000000UL
-#define PBVM_PGSZ (64 * 1024)
-
-typedef size_t (a2p_f)(kvm_t *, uint64_t, off_t *);
-
-struct vmstate {
- void *mmapbase;
- size_t mmapsize;
- size_t pagesize;
- u_long kptdir;
- u_long *pbvm_pgtbl;
- u_int pbvm_pgtblsz;
- a2p_f *kvatop;
-};
-
-/*
- * Map the ELF headers into the process' address space. We do this in two
- * steps: first the ELF header itself and using that information the whole
- * set of headers.
- */
-static int
-ia64_maphdrs(kvm_t *kd, size_t sz)
-{
- struct vmstate *vm = kd->vmst;
-
- /* munmap() previous mmap(). */
- if (vm->mmapbase != NULL) {
- munmap(vm->mmapbase, vm->mmapsize);
- vm->mmapbase = NULL;
- }
-
- vm->mmapsize = sz;
- vm->mmapbase = mmap(NULL, sz, PROT_READ, MAP_PRIVATE, kd->pmfd, 0);
- if (vm->mmapbase == MAP_FAILED) {
- _kvm_err(kd, kd->program, "cannot mmap corefile");
- return (-1);
- }
-
- return (0);
-}
-
-/*
- * Physical core support.
- */
-
-static size_t
-phys_addr2off(kvm_t *kd, uint64_t pa, off_t *ofs, size_t pgsz)
-{
- Elf64_Ehdr *e;
- Elf64_Phdr *p;
- int n;
-
- if (pa != REGION_ADDR(pa))
- goto fail;
-
- e = (Elf64_Ehdr *)(kd->vmst->mmapbase);
- n = e->e_phnum;
- p = (Elf64_Phdr *)(void *)((uintptr_t)(void *)e + e->e_phoff);
- while (n && (pa < p->p_paddr || pa >= p->p_paddr + p->p_memsz))
- p++, n--;
- if (n == 0)
- goto fail;
-
- *ofs = (pa - p->p_paddr) + p->p_offset;
- if (pgsz == 0)
- return (p->p_memsz - (pa - p->p_paddr));
- return (pgsz - ((size_t)pa & (pgsz - 1)));
-
- fail:
- _kvm_err(kd, kd->program, "invalid physical address %#jx",
- (uintmax_t)pa);
- return (0);
-}
-
-static size_t
-phys_kvatop(kvm_t *kd, uint64_t va, off_t *ofs)
-{
- struct ia64_lpte pte;
- uint64_t pa, pgaddr, pt0addr, pt1addr;
- size_t pgno, pgsz, pt0no, pt1no;
-
- if (va >= REGION_BASE(6)) {
- /* Regions 6 and 7: direct mapped. */
- pa = REGION_ADDR(va);
- return (phys_addr2off(kd, pa, ofs, 0));
- } else if (va >= REGION_BASE(5)) {
- /* Region 5: Kernel Virtual Memory. */
- va = REGION_ADDR(va);
- pgsz = kd->vmst->pagesize;
- pt0no = KPTE_DIR0_INDEX(va, pgsz);
- pt1no = KPTE_DIR1_INDEX(va, pgsz);
- pgno = KPTE_PTE_INDEX(va, pgsz);
- if (pt0no >= NKPTEDIR(pgsz))
- goto fail;
- pt0addr = kd->vmst->kptdir + (pt0no << 3);
- if (kvm_read(kd, pt0addr, &pt1addr, 8) != 8)
- goto fail;
- if (pt1addr == 0)
- goto fail;
- pt1addr += pt1no << 3;
- if (kvm_read(kd, pt1addr, &pgaddr, 8) != 8)
- goto fail;
- if (pgaddr == 0)
- goto fail;
- pgaddr += pgno * sizeof(pte);
- if (kvm_read(kd, pgaddr, &pte, sizeof(pte)) != sizeof(pte))
- goto fail;
- if (!(pte.pte & PTE_PRESENT))
- goto fail;
- pa = (pte.pte & PTE_PPN_MASK) + (va & (pgsz - 1));
- return (phys_addr2off(kd, pa, ofs, pgsz));
- } else if (va >= PBVM_BASE) {
- /* Region 4: Pre-Boot Virtual Memory (PBVM). */
- va -= PBVM_BASE;
- pgsz = PBVM_PGSZ;
- pt0no = va / pgsz;
- if (pt0no >= (kd->vmst->pbvm_pgtblsz >> 3))
- goto fail;
- pt0addr = kd->vmst->pbvm_pgtbl[pt0no];
- if (!(pt0addr & PTE_PRESENT))
- goto fail;
- pa = (pt0addr & PTE_PPN_MASK) + va % pgsz;
- return (phys_addr2off(kd, pa, ofs, pgsz));
- }
-
- fail:
- _kvm_err(kd, kd->program, "invalid kernel virtual address %#jx",
- (uintmax_t)va);
- *ofs = -1;
- return (0);
-}
-
-static ssize_t
-phys_read(kvm_t *kd, uint64_t pa, void *buf, size_t bufsz)
-{
- off_t ofs;
- size_t sz;
-
- sz = phys_addr2off(kd, pa, &ofs, 0);
- if (sz < bufsz)
- return ((ssize_t)sz);
-
- if (lseek(kd->pmfd, ofs, 0) == -1)
- return (-1);
- return (read(kd->pmfd, buf, bufsz));
-}
-
-/*
- * Virtual core support (aka minidump).
- */
-
-static size_t
-virt_addr2off(kvm_t *kd, uint64_t va, off_t *ofs, size_t pgsz)
-{
- Elf64_Ehdr *e;
- Elf64_Phdr *p;
- int n;
-
- if (va < REGION_BASE(4))
- goto fail;
-
- e = (Elf64_Ehdr *)(kd->vmst->mmapbase);
- n = e->e_phnum;
- p = (Elf64_Phdr *)(void *)((uintptr_t)(void *)e + e->e_phoff);
- while (n && (va < p->p_vaddr || va >= p->p_vaddr + p->p_memsz))
- p++, n--;
- if (n == 0)
- goto fail;
-
- *ofs = (va - p->p_vaddr) + p->p_offset;
- if (pgsz == 0)
- return (p->p_memsz - (va - p->p_vaddr));
- return (pgsz - ((size_t)va & (pgsz - 1)));
-
- fail:
- _kvm_err(kd, kd->program, "invalid virtual address %#jx",
- (uintmax_t)va);
- return (0);
-}
-
-static size_t
-virt_kvatop(kvm_t *kd, uint64_t va, off_t *ofs)
-{
-
- return (virt_addr2off(kd, va, ofs, 0));
-}
-
-/*
- * KVM architecture support functions.
- */
-
-void
-_kvm_freevtop(kvm_t *kd)
-{
- struct vmstate *vm = kd->vmst;
-
- if (vm->pbvm_pgtbl != NULL)
- free(vm->pbvm_pgtbl);
- if (vm->mmapbase != NULL)
- munmap(vm->mmapbase, vm->mmapsize);
- free(vm);
- kd->vmst = NULL;
-}
-
-int
-_kvm_initvtop(kvm_t *kd)
-{
- struct bootinfo bi;
- struct nlist nl[2];
- uint64_t va;
- Elf64_Ehdr *ehdr;
- size_t hdrsz;
- ssize_t sz;
-
- kd->vmst = (struct vmstate *)_kvm_malloc(kd, sizeof(*kd->vmst));
- if (kd->vmst == NULL) {
- _kvm_err(kd, kd->program, "cannot allocate vm");
- return (-1);
- }
-
-#ifndef CROSS_LIBKVM
- kd->vmst->pagesize = getpagesize();
-#else
- kd->vmst->pagesize = 8192;
-#endif
-
- if (ia64_maphdrs(kd, sizeof(Elf64_Ehdr)) == -1)
- return (-1);
-
- ehdr = kd->vmst->mmapbase;
- hdrsz = ehdr->e_phoff + ehdr->e_phentsize * ehdr->e_phnum;
- if (ia64_maphdrs(kd, hdrsz) == -1)
- return (-1);
-
- kd->vmst->kvatop = (ehdr->e_flags & EF_IA_64_ABSOLUTE) ?
- phys_kvatop : virt_kvatop;
-
- /*
- * Load the PBVM page table. We need this to resolve PBVM addresses.
- * The PBVM page table is obtained from the bootinfo structure, of
- * which the address is given to us in e_entry. If e_entry is 0, then
- * this is assumed to be a pre-PBVM kernel.
- * Note that the address of the bootinfo structure is either physical
- * or virtual, depending on whether the core is physical or virtual.
- */
- if (ehdr->e_entry != 0 && (ehdr->e_flags & EF_IA_64_ABSOLUTE) != 0) {
- sz = phys_read(kd, ehdr->e_entry, &bi, sizeof(bi));
- if (sz != sizeof(bi)) {
- _kvm_err(kd, kd->program,
- "cannot read bootinfo at physical address %#jx",
- (uintmax_t)ehdr->e_entry);
- return (-1);
- }
- if (bi.bi_magic != BOOTINFO_MAGIC) {
- _kvm_err(kd, kd->program, "invalid bootinfo");
- return (-1);
- }
- kd->vmst->pbvm_pgtbl = _kvm_malloc(kd, bi.bi_pbvm_pgtblsz);
- if (kd->vmst->pbvm_pgtbl == NULL) {
- _kvm_err(kd, kd->program, "cannot allocate page table");
- return (-1);
- }
- kd->vmst->pbvm_pgtblsz = bi.bi_pbvm_pgtblsz;
- sz = phys_read(kd, bi.bi_pbvm_pgtbl, kd->vmst->pbvm_pgtbl,
- bi.bi_pbvm_pgtblsz);
- if (sz != bi.bi_pbvm_pgtblsz) {
- _kvm_err(kd, kd->program,
- "cannot read page table at physical address %#jx",
- (uintmax_t)bi.bi_pbvm_pgtbl);
- return (-1);
- }
- } else {
- kd->vmst->pbvm_pgtbl = NULL;
- kd->vmst->pbvm_pgtblsz = 0;
- }
-
- /*
- * At this point we've got enough information to use kvm_read() for
- * direct mapped (ie region 6 and region 7) address, such as symbol
- * addresses/values.
- */
-
- nl[0].n_name = "ia64_kptdir";
- nl[1].n_name = 0;
-
- if (kvm_nlist(kd, nl) != 0) {
- _kvm_err(kd, kd->program, "bad namelist");
- return (-1);
- }
-
- if (kvm_read(kd, (nl[0].n_value), &va, sizeof(va)) != sizeof(va)) {
- _kvm_err(kd, kd->program, "cannot read kptdir");
- return (-1);
- }
-
- if (va == REGION_BASE(5)) {
- _kvm_err(kd, kd->program, "kptdir is itself virtual");
- return (-1);
- }
-
- kd->vmst->kptdir = va;
- return (0);
-}
-
-int
-_kvm_kvatop(kvm_t *kd, u_long va, off_t *ofs)
-{
- size_t sz;
-
- sz = kd->vmst->kvatop(kd, va, ofs);
- return ((sz > INT_MAX) ? INT_MAX : sz);
-}
diff --git a/lib/libstand/Makefile b/lib/libstand/Makefile
index 0e074d2..72b201e 100644
--- a/lib/libstand/Makefile
+++ b/lib/libstand/Makefile
@@ -57,12 +57,10 @@ SRCS+= ntoh.c
# string functions from libc
.PATH: ${.CURDIR}/../libc/string
-.if ${MACHINE_CPUARCH} != "ia64"
SRCS+= bcmp.c bcopy.c bzero.c ffs.c memccpy.c memchr.c memcmp.c memcpy.c \
memmove.c memset.c qdivrem.c strcat.c strchr.c strcmp.c strcpy.c \
strcspn.c strlen.c strncat.c strncmp.c strncpy.c strpbrk.c \
strrchr.c strsep.c strspn.c strstr.c strtok.c swab.c
-.endif
.if ${MACHINE_CPUARCH} == "arm"
.PATH: ${.CURDIR}/../libc/arm/gen
@@ -83,17 +81,6 @@ SRCS+= aeabi_memcmp.S aeabi_memcpy.S aeabi_memmove.S aeabi_memset.S
.endif
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-.PATH: ${.CURDIR}/../libc/ia64/string
-SRCS+= bcmp.c bcopy.S bzero.S ffs.S memccpy.c memchr.c memcmp.c memcpy.S \
- memmove.S memset.c strcat.c strchr.c strcmp.c strcpy.c strcspn.c \
- strlen.c strncat.c strncmp.c strncpy.c strpbrk.c strrchr.c strsep.c \
- strspn.c strstr.c strtok.c swab.c
-
-.PATH: ${.CURDIR}/../libc/ia64/gen
-SRCS+= __divdi3.S __divsi3.S __moddi3.S __modsi3.S
-SRCS+= __udivdi3.S __udivsi3.S __umoddi3.S __umodsi3.S
-.endif
.if ${MACHINE_CPUARCH} == "powerpc"
.PATH: ${.CURDIR}/../libc/quad
SRCS+= ashldi3.c ashrdi3.c
diff --git a/lib/libthr/arch/ia64/Makefile.inc b/lib/libthr/arch/ia64/Makefile.inc
deleted file mode 100644
index 795aa99..0000000
--- a/lib/libthr/arch/ia64/Makefile.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-# $FreeBSD$
-
-SRCS+= _umtx_op_err.S pthread_md.c
diff --git a/lib/libthr/arch/ia64/ia64/_umtx_op_err.S b/lib/libthr/arch/ia64/ia64/_umtx_op_err.S
deleted file mode 100644
index a712210..0000000
--- a/lib/libthr/arch/ia64/ia64/_umtx_op_err.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * Copyright (c) 2009 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/syscall.h>
-
-ENTRY(_umtx_op_err, 5)
- CALLSYS_NOERROR(_umtx_op)
- br.ret.sptk.few rp
-END(_umtx_op_err)
diff --git a/lib/libthr/arch/ia64/ia64/pthread_md.c b/lib/libthr/arch/ia64/ia64/pthread_md.c
deleted file mode 100644
index c2ad71a..0000000
--- a/lib/libthr/arch/ia64/ia64/pthread_md.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2003 Daniel Eischen <deischen@freebsd.org>
- * Copyright (c) 2005 David Xu <davidxu@freebsd.org>
- * All rights reserved.
- *
- * 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. Neither the name of the author 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/types.h>
-#include <rtld_tls.h>
-
-#include "pthread_md.h"
-
-/*
- * The constructors.
- */
-struct tcb *
-_tcb_ctor(struct pthread *thread, int initial)
-{
- struct tcb *tcb;
-
- tcb = _rtld_allocate_tls((initial) ? _tcb_get() : NULL,
- sizeof(struct tcb), 16);
- if (tcb)
- tcb->tcb_thread = thread;
- return (tcb);
-}
-
-void
-_tcb_dtor(struct tcb *tcb)
-{
- _rtld_free_tls(tcb, sizeof(struct tcb), 16);
-}
diff --git a/lib/libthr/arch/ia64/include/pthread_md.h b/lib/libthr/arch/ia64/include/pthread_md.h
deleted file mode 100644
index 69b3eec..0000000
--- a/lib/libthr/arch/ia64/include/pthread_md.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _PTHREAD_MD_H_
-#define _PTHREAD_MD_H_
-
-#include <stddef.h>
-
-#define CPU_SPINWAIT
-
-#define HAS__UMTX_OP_ERR 1
-
-#define DTV_OFFSET offsetof(struct tcb, tcb_dtv)
-
-/*
- * Variant I tcb. The structure layout is fixed, don't blindly
- * change it!
- */
-struct tcb {
- void *tcb_dtv;
- struct pthread *tcb_thread;
-};
-
-/*
- * The tcb constructors.
- */
-struct tcb *_tcb_ctor(struct pthread *, int);
-void _tcb_dtor(struct tcb *);
-
-/* Called from the thread to set its private data. */
-static __inline void
-_tcb_set(struct tcb *tcb)
-{
- register struct tcb *tp __asm("%r13");
-
- __asm __volatile("mov %0 = %1;;" : "=r"(tp) : "r"(tcb));
-}
-
-static __inline struct tcb *
-_tcb_get(void)
-{
- register struct tcb *tp __asm("%r13");
-
- return (tp);
-}
-
-extern struct pthread *_thr_initial;
-
-static __inline struct pthread *
-_get_curthread(void)
-{
- if (_thr_initial)
- return (_tcb_get()->tcb_thread);
- return (NULL);
-}
-
-#endif /* _PTHREAD_MD_H_ */
diff --git a/lib/libthread_db/arch/ia64/libpthread_md.c b/lib/libthread_db/arch/ia64/libpthread_md.c
deleted file mode 100644
index f5f12d3..0000000
--- a/lib/libthread_db/arch/ia64/libpthread_md.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/procfs.h>
-#include <thread_db.h>
-#include <ucontext.h>
-
-#include "libpthread_db.h"
-
-void
-pt_reg_to_ucontext(const struct reg *r __unused, ucontext_t *uc __unused)
-{
-}
-
-void
-pt_ucontext_to_reg(const ucontext_t *uc __unused, struct reg *r __unused)
-{
-}
-
-void
-pt_fpreg_to_ucontext(const struct fpreg* r __unused, ucontext_t *uc __unused)
-{
-}
-
-void
-pt_ucontext_to_fpreg(const ucontext_t *uc __unused, struct fpreg *r __unused)
-{
-}
-
-void
-pt_md_init(void)
-{
-}
-
-int
-pt_reg_sstep(struct reg *reg __unused, int step __unused)
-{
- return (0);
-}
diff --git a/lib/msun/ia64/Makefile.inc b/lib/msun/ia64/Makefile.inc
deleted file mode 100644
index c941c66..0000000
--- a/lib/msun/ia64/Makefile.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-ARCH_SRCS = s_fma.S s_fmaf.S s_fmal.S
-LDBL_PREC = 64
-SYM_MAPS += ${.CURDIR}/ia64/Symbol.map
diff --git a/lib/msun/ia64/Symbol.map b/lib/msun/ia64/Symbol.map
deleted file mode 100644
index c92e75d..0000000
--- a/lib/msun/ia64/Symbol.map
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * $FreeBSD$
- */
-FBSD_1.0 {
- feupdateenv;
-};
-
-FBSD_1.3 {
- fesetexceptflag;
- feraiseexcept;
- fegetenv;
- feholdexcept;
-};
diff --git a/lib/msun/ia64/fenv.c b/lib/msun/ia64/fenv.c
deleted file mode 100644
index 09d2d4e..0000000
--- a/lib/msun/ia64/fenv.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * Copyright (c) 2004 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/types.h>
-
-#define __fenv_static
-#include "fenv.h"
-
-#ifdef __GNUC_GNU_INLINE__
-#error "This file must be compiled with C99 'inline' semantics"
-#endif
-
-const fenv_t __fe_dfl_env = 0x0009804c8a70033fULL;
-
-extern inline int feclearexcept(int __excepts);
-extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
-extern inline int fesetexceptflag(const fexcept_t *__flagp, int __excepts);
-extern inline int feraiseexcept(int __excepts);
-extern inline int fetestexcept(int __excepts);
-extern inline int fegetround(void);
-extern inline int fesetround(int __round);
-extern inline int fegetenv(fenv_t *__envp);
-extern inline int feholdexcept(fenv_t *__envp);
-extern inline int fesetenv(const fenv_t *__envp);
-
-/*
- * It doesn't pay to inline feupdateenv() because it includes one of
- * the rare uses of feraiseexcept() where the argument is not a
- * constant. Thus, no dead code elimination can occur, resulting in
- * significant bloat.
- */
-int
-feupdateenv(const fenv_t *envp)
-{
- fenv_t fpsr;
-
- __stfpsr(&fpsr);
- __ldfpsr(*envp);
- feraiseexcept((fpsr >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
- return (0);
-}
diff --git a/lib/msun/ia64/fenv.h b/lib/msun/ia64/fenv.h
deleted file mode 100644
index 0f001db..0000000
--- a/lib/msun/ia64/fenv.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/*-
- * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _FENV_H_
-#define _FENV_H_
-
-#include <sys/_types.h>
-
-#ifndef __fenv_static
-#define __fenv_static static
-#endif
-
-typedef __uint64_t fenv_t;
-typedef __uint16_t fexcept_t;
-
-/* Exception flags */
-#define FE_INVALID 0x01
-#define FE_DENORMAL 0x02
-#define FE_DIVBYZERO 0x04
-#define FE_OVERFLOW 0x08
-#define FE_UNDERFLOW 0x10
-#define FE_INEXACT 0x20
-#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_DENORMAL | FE_INEXACT | \
- FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
-
-/* Rounding modes */
-#define FE_TONEAREST 0x0000
-#define FE_DOWNWARD 0x0400
-#define FE_UPWARD 0x0800
-#define FE_TOWARDZERO 0x0c00
-#define _ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | \
- FE_UPWARD | FE_TOWARDZERO)
-
-__BEGIN_DECLS
-
-/* Default floating-point environment */
-extern const fenv_t __fe_dfl_env;
-#define FE_DFL_ENV (&__fe_dfl_env)
-
-#define _FPUSW_SHIFT 13
-
-#define __stfpsr(__r) __asm __volatile("mov %0=ar.fpsr" : "=r" (*(__r)))
-#define __ldfpsr(__r) __asm __volatile("mov ar.fpsr=%0;;" : : "r" (__r))
-
-__fenv_static inline int
-feclearexcept(int __excepts)
-{
- fenv_t __fpsr;
-
- __stfpsr(&__fpsr);
- __fpsr &= ~((fenv_t)__excepts << _FPUSW_SHIFT);
- __ldfpsr(__fpsr);
- return (0);
-}
-
-__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
-{
- fenv_t __fpsr;
-
- __stfpsr(&__fpsr);
- *__flagp = (fexcept_t)(__fpsr >> _FPUSW_SHIFT) & __excepts;
- return (0);
-}
-
-__fenv_static inline int
-fesetexceptflag(const fexcept_t *__flagp, int __excepts)
-{
- fenv_t __fpsr;
-
- __stfpsr(&__fpsr);
- __fpsr &= ~((fenv_t)__excepts << _FPUSW_SHIFT);
- __fpsr |= (fenv_t)(__excepts & *__flagp) << _FPUSW_SHIFT;
- __ldfpsr(__fpsr);
- return (0);
-}
-
-/*
- * It is worthwhile to use the inline version of this function iff it
- * is called with arguments that are compile-time constants (due to
- * dead code elimination). Unfortunately, gcc isn't smart enough to
- * figure this out automatically, and there's no way to tell it.
- * We assume that constant arguments will be the common case.
- */
-__fenv_static inline int
-feraiseexcept(int __excepts)
-{
- volatile double d;
-
- /*
- * With a compiler that supports the FENV_ACCESS pragma
- * properly, simple expressions like '0.0 / 0.0' should
- * be sufficient to generate traps. Unfortunately, we
- * need to bring a volatile variable into the equation
- * to prevent incorrect optimizations.
- */
- if (__excepts & FE_INVALID) {
- d = 0.0;
- d = 0.0 / d;
- }
- if (__excepts & FE_DIVBYZERO) {
- d = 0.0;
- d = 1.0 / d;
- }
- if (__excepts & FE_OVERFLOW) {
- d = 0x1.ffp1023;
- d *= 2.0;
- }
- if (__excepts & FE_UNDERFLOW) {
- d = 0x1p-1022;
- d /= 0x1p1023;
- }
- if (__excepts & FE_INEXACT) {
- d = 0x1p-1022;
- d += 1.0;
- }
- return (0);
-}
-
-__fenv_static inline int
-fetestexcept(int __excepts)
-{
- fenv_t __fpsr;
-
- __stfpsr(&__fpsr);
- return ((__fpsr >> _FPUSW_SHIFT) & __excepts);
-}
-
-
-__fenv_static inline int
-fegetround(void)
-{
- fenv_t __fpsr;
-
- __stfpsr(&__fpsr);
- return (__fpsr & _ROUND_MASK);
-}
-
-__fenv_static inline int
-fesetround(int __round)
-{
- fenv_t __fpsr;
-
- if (__round & ~_ROUND_MASK)
- return (-1);
- __stfpsr(&__fpsr);
- __fpsr &= ~_ROUND_MASK;
- __fpsr |= __round;
- __ldfpsr(__fpsr);
- return (0);
-}
-
-__fenv_static inline int
-fegetenv(fenv_t *__envp)
-{
-
- __stfpsr(__envp);
- return (0);
-}
-
-__fenv_static inline int
-feholdexcept(fenv_t *__envp)
-{
- fenv_t __fpsr;
-
- __stfpsr(&__fpsr);
- *__envp = __fpsr;
- __fpsr &= ~((fenv_t)FE_ALL_EXCEPT << _FPUSW_SHIFT);
- __fpsr |= FE_ALL_EXCEPT;
- __ldfpsr(__fpsr);
- return (0);
-}
-
-__fenv_static inline int
-fesetenv(const fenv_t *__envp)
-{
-
- __ldfpsr(*__envp);
- return (0);
-}
-
-int feupdateenv(const fenv_t *__envp);
-
-#if __BSD_VISIBLE
-
-/* We currently provide no external definitions of the functions below. */
-
-static inline int
-feenableexcept(int __mask)
-{
- fenv_t __newfpsr, __oldfpsr;
-
- __stfpsr(&__oldfpsr);
- __newfpsr = __oldfpsr & ~(__mask & FE_ALL_EXCEPT);
- __ldfpsr(__newfpsr);
- return (~__oldfpsr & FE_ALL_EXCEPT);
-}
-
-static inline int
-fedisableexcept(int __mask)
-{
- fenv_t __newfpsr, __oldfpsr;
-
- __stfpsr(&__oldfpsr);
- __newfpsr = __oldfpsr | (__mask & FE_ALL_EXCEPT);
- __ldfpsr(__newfpsr);
- return (~__oldfpsr & FE_ALL_EXCEPT);
-}
-
-static inline int
-fegetexcept(void)
-{
- fenv_t __fpsr;
-
- __stfpsr(&__fpsr);
- return (~__fpsr & FE_ALL_EXCEPT);
-}
-
-#endif /* __BSD_VISIBLE */
-
-__END_DECLS
-
-#endif /* !_FENV_H_ */
diff --git a/lib/msun/ia64/s_fma.S b/lib/msun/ia64/s_fma.S
deleted file mode 100644
index 3fed386..0000000
--- a/lib/msun/ia64/s_fma.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$")
-
-ENTRY(fma, 3)
-{
- fma.d f8 = f8, f9, f10
- br.ret.sptk b0
-}
-END(fma)
diff --git a/lib/msun/ia64/s_fmaf.S b/lib/msun/ia64/s_fmaf.S
deleted file mode 100644
index c12fb03..0000000
--- a/lib/msun/ia64/s_fmaf.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$")
-
-ENTRY(fmaf, 3)
-{
- fma.s f8 = f8, f9, f10
- br.ret.sptk b0
-}
-END(fmaf)
diff --git a/lib/msun/ia64/s_fmal.S b/lib/msun/ia64/s_fmal.S
deleted file mode 100644
index 4ae01cc..0000000
--- a/lib/msun/ia64/s_fmal.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$")
-
-ENTRY(fmal, 3)
-{
- fma f8 = f8, f9, f10
- br.ret.sptk b0
-}
-END(fmal)
diff --git a/lib/msun/sparc64/fenv.h b/lib/msun/sparc64/fenv.h
index d17361f..0faf08d 100644
--- a/lib/msun/sparc64/fenv.h
+++ b/lib/msun/sparc64/fenv.h
@@ -108,9 +108,9 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts)
}
/*
- * In contrast with the ia64 platform, it seems to be worthwhile to
- * inline this function on sparc64 even when the arguments are not
- * compile-time constants. Perhaps this depends on the register window.
+ * It seems to be worthwhile to inline this function even when the
+ * arguments are not compile-time constants. Perhaps this depends
+ * on the register window.
*/
__fenv_static inline int
feraiseexcept(int __excepts)
diff --git a/lib/msun/src/math.h b/lib/msun/src/math.h
index fc4becc..0c6b704 100644
--- a/lib/msun/src/math.h
+++ b/lib/msun/src/math.h
@@ -69,10 +69,6 @@ extern const union __nan_un {
#define math_errhandling MATH_ERREXCEPT
#define FP_FAST_FMAF 1
-#ifdef __ia64__
-#define FP_FAST_FMA 1
-#define FP_FAST_FMAL 1
-#endif
/* Symbolic constants to classify floating point numbers. */
#define FP_INFINITE 0x01
diff --git a/lib/ncurses/ncurses/Makefile b/lib/ncurses/ncurses/Makefile
index 428ec80..3c2e5d9 100644
--- a/lib/ncurses/ncurses/Makefile
+++ b/lib/ncurses/ncurses/Makefile
@@ -55,7 +55,7 @@ HAVE_TERMIOS_H= 1
HAVE_TERMIO_H= 0
HAVE_VSSCANF= 1
HEADER_STDBOOL= 1
-# XXX amd64, ia64 1L and int
+# XXX amd64 1L and int
ONEUL= 1UL
TYPEOF_CHTYPE= long
TYPEOF_MMASK_T= long
diff --git a/libexec/rtld-elf/ia64/Makefile.inc b/libexec/rtld-elf/ia64/Makefile.inc
deleted file mode 100644
index e8c0da7..0000000
--- a/libexec/rtld-elf/ia64/Makefile.inc
+++ /dev/null
@@ -1 +0,0 @@
-# $FreeBSD$
diff --git a/libexec/rtld-elf/ia64/reloc.c b/libexec/rtld-elf/ia64/reloc.c
deleted file mode 100644
index 1a41cb3..0000000
--- a/libexec/rtld-elf/ia64/reloc.c
+++ /dev/null
@@ -1,658 +0,0 @@
-/*-
- * Copyright 1996, 1997, 1998, 1999 John D. Polstra.
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-/*
- * Dynamic linker for ELF.
- *
- * John Polstra <jdp@polstra.com>.
- */
-
-#include <sys/param.h>
-#include <sys/mman.h>
-#include <machine/ia64_cpu.h>
-
-#include <dlfcn.h>
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "debug.h"
-#include "rtld.h"
-
-extern Elf_Dyn _DYNAMIC;
-
-/*
- * Macros for loading/storing unaligned 64-bit values. These are
- * needed because relocations can point to unaligned data. This
- * occurs in the DWARF2 exception frame tables generated by the
- * compiler, for instance.
- *
- * We don't use these when relocating jump slots and GOT entries,
- * since they are guaranteed to be aligned.
- *
- * XXX dfr stub for now.
- */
-#define load64(p) (*(u_int64_t *) (p))
-#define store64(p, v) (*(u_int64_t *) (p) = (v))
-
-/* Allocate an @fptr. */
-
-#define FPTR_CHUNK_SIZE 64
-
-struct fptr_chunk {
- struct fptr fptrs[FPTR_CHUNK_SIZE];
-};
-
-static struct fptr_chunk first_chunk;
-static struct fptr_chunk *current_chunk = &first_chunk;
-static struct fptr *next_fptr = &first_chunk.fptrs[0];
-static struct fptr *last_fptr = &first_chunk.fptrs[FPTR_CHUNK_SIZE];
-
-/*
- * We use static storage initially so that we don't have to call
- * malloc during init_rtld().
- */
-static struct fptr *
-alloc_fptr(Elf_Addr target, Elf_Addr gp)
-{
- struct fptr* fptr;
-
- if (next_fptr == last_fptr) {
- current_chunk = xmalloc(sizeof(struct fptr_chunk));
- next_fptr = &current_chunk->fptrs[0];
- last_fptr = &current_chunk->fptrs[FPTR_CHUNK_SIZE];
- }
- fptr = next_fptr;
- next_fptr++;
- fptr->target = target;
- fptr->gp = gp;
- return fptr;
-}
-
-static struct fptr **
-alloc_fptrs(Obj_Entry *obj, bool mapped)
-{
- struct fptr **fptrs;
- size_t fbytes;
-
- fbytes = obj->dynsymcount * sizeof(struct fptr *);
-
- /*
- * Avoid malloc, if requested. Happens when relocating
- * rtld itself on startup.
- */
- if (mapped) {
- fptrs = mmap(NULL, fbytes, PROT_READ|PROT_WRITE,
- MAP_ANON, -1, 0);
- if (fptrs == MAP_FAILED)
- fptrs = NULL;
- } else {
- fptrs = xcalloc(1, fbytes);
- }
-
- /*
- * This assertion is necessary to guarantee function pointer
- * uniqueness
- */
- assert(fptrs != NULL);
-
- return (obj->priv = fptrs);
-}
-
-static void
-free_fptrs(Obj_Entry *obj, bool mapped)
-{
- struct fptr **fptrs;
- size_t fbytes;
-
- fptrs = obj->priv;
- if (fptrs == NULL)
- return;
-
- fbytes = obj->dynsymcount * sizeof(struct fptr *);
- if (mapped)
- munmap(fptrs, fbytes);
- else
- free(fptrs);
- obj->priv = NULL;
-}
-
-/* Relocate a non-PLT object with addend. */
-static int
-reloc_non_plt_obj(Obj_Entry *obj_rtld, Obj_Entry *obj, const Elf_Rela *rela,
- SymCache *cache, int flags, RtldLockState *lockstate)
-{
- struct fptr **fptrs;
- Elf_Addr *where = (Elf_Addr *) (obj->relocbase + rela->r_offset);
-
- switch (ELF_R_TYPE(rela->r_info)) {
- case R_IA_64_REL64LSB:
- /*
- * We handle rtld's relocations in rtld_start.S
- */
- if (obj != obj_rtld)
- store64(where,
- load64(where) + (Elf_Addr) obj->relocbase);
- break;
-
- case R_IA_64_DIR64LSB: {
- const Elf_Sym *def;
- const Obj_Entry *defobj;
- Elf_Addr target;
-
- def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj,
- flags, cache, lockstate);
- if (def == NULL)
- return -1;
-
- target = (def->st_shndx != SHN_UNDEF)
- ? (Elf_Addr)(defobj->relocbase + def->st_value) : 0;
- store64(where, target + rela->r_addend);
- break;
- }
-
- case R_IA_64_FPTR64LSB: {
- /*
- * We have to make sure that all @fptr references to
- * the same function are identical so that code can
- * compare function pointers.
- */
- const Elf_Sym *def;
- const Obj_Entry *defobj;
- struct fptr *fptr = 0;
- Elf_Addr target, gp;
- int sym_index;
-
- def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj,
- SYMLOOK_IN_PLT | flags, cache, lockstate);
- if (def == NULL) {
- /*
- * XXX r_debug_state is problematic and find_symdef()
- * returns NULL for it. This probably has something to
- * do with symbol versioning (r_debug_state is in the
- * symbol map). If we return -1 in that case we abort
- * relocating rtld, which typically is fatal. So, for
- * now just skip the symbol when we're relocating
- * rtld. We don't care about r_debug_state unless we
- * are being debugged.
- */
- if (obj != obj_rtld)
- return -1;
- break;
- }
-
- if (def->st_shndx != SHN_UNDEF) {
- target = (Elf_Addr)(defobj->relocbase + def->st_value);
- gp = (Elf_Addr)defobj->pltgot;
-
- /* rtld is allowed to reference itself only */
- assert(!obj->rtld || obj == defobj);
- fptrs = defobj->priv;
- if (fptrs == NULL)
- fptrs = alloc_fptrs((Obj_Entry *) defobj,
- obj->rtld);
-
- sym_index = def - defobj->symtab;
-
- /*
- * Find the @fptr, using fptrs as a helper.
- */
- if (fptrs)
- fptr = fptrs[sym_index];
- if (!fptr) {
- fptr = alloc_fptr(target, gp);
- if (fptrs)
- fptrs[sym_index] = fptr;
- }
- } else
- fptr = NULL;
-
- store64(where, (Elf_Addr)fptr);
- break;
- }
-
- case R_IA_64_IPLTLSB: {
- /*
- * Relocation typically used to populate C++ virtual function
- * tables. It creates a 128-bit function descriptor at the
- * specified memory address.
- */
- const Elf_Sym *def;
- const Obj_Entry *defobj;
- struct fptr *fptr;
- Elf_Addr target, gp;
-
- def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj,
- flags, cache, lockstate);
- if (def == NULL)
- return -1;
-
- if (def->st_shndx != SHN_UNDEF) {
- target = (Elf_Addr)(defobj->relocbase + def->st_value);
- gp = (Elf_Addr)defobj->pltgot;
- } else {
- target = 0;
- gp = 0;
- }
-
- fptr = (void*)where;
- store64(&fptr->target, target);
- store64(&fptr->gp, gp);
- break;
- }
-
- case R_IA_64_DTPMOD64LSB: {
- const Elf_Sym *def;
- const Obj_Entry *defobj;
-
- def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj,
- flags, cache, lockstate);
- if (def == NULL)
- return -1;
-
- store64(where, defobj->tlsindex);
- break;
- }
-
- case R_IA_64_DTPREL64LSB: {
- const Elf_Sym *def;
- const Obj_Entry *defobj;
-
- def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj,
- flags, cache, lockstate);
- if (def == NULL)
- return -1;
-
- store64(where, def->st_value + rela->r_addend);
- break;
- }
-
- case R_IA_64_TPREL64LSB: {
- const Elf_Sym *def;
- const Obj_Entry *defobj;
-
- def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj,
- flags, cache, lockstate);
- if (def == NULL)
- return -1;
-
- /*
- * We lazily allocate offsets for static TLS as we
- * see the first relocation that references the
- * TLS block. This allows us to support (small
- * amounts of) static TLS in dynamically loaded
- * modules. If we run out of space, we generate an
- * error.
- */
- if (!defobj->tls_done) {
- if (!allocate_tls_offset((Obj_Entry*) defobj)) {
- _rtld_error("%s: No space available for static "
- "Thread Local Storage", obj->path);
- return -1;
- }
- }
-
- store64(where, defobj->tlsoffset + def->st_value + rela->r_addend);
- break;
- }
-
- case R_IA_64_NONE:
- break;
-
- default:
- _rtld_error("%s: Unsupported relocation type %u"
- " in non-PLT relocations\n", obj->path,
- (unsigned int)ELF_R_TYPE(rela->r_info));
- return -1;
- }
-
- return(0);
-}
-
-/* Process the non-PLT relocations. */
-int
-reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags,
- RtldLockState *lockstate)
-{
- const Elf_Rel *rellim;
- const Elf_Rel *rel;
- const Elf_Rela *relalim;
- const Elf_Rela *rela;
- SymCache *cache;
- int bytes = obj->dynsymcount * sizeof(SymCache);
- int r = -1;
-
- /*
- * The dynamic loader may be called from a thread, we have
- * limited amounts of stack available so we cannot use alloca().
- */
- cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0);
- if (cache == MAP_FAILED)
- cache = NULL;
-
- /* Perform relocations without addend if there are any: */
- rellim = (const Elf_Rel *) ((caddr_t) obj->rel + obj->relsize);
- for (rel = obj->rel; obj->rel != NULL && rel < rellim; rel++) {
- Elf_Rela locrela;
-
- locrela.r_info = rel->r_info;
- locrela.r_offset = rel->r_offset;
- locrela.r_addend = 0;
- if (reloc_non_plt_obj(obj_rtld, obj, &locrela, cache, flags,
- lockstate))
- goto done;
- }
-
- /* Perform relocations with addend if there are any: */
- relalim = (const Elf_Rela *) ((caddr_t) obj->rela + obj->relasize);
- for (rela = obj->rela; obj->rela != NULL && rela < relalim; rela++) {
- if (reloc_non_plt_obj(obj_rtld, obj, rela, cache, flags,
- lockstate))
- goto done;
- }
-
- r = 0;
-done:
- if (cache)
- munmap(cache, bytes);
-
- /*
- * Release temporarily mapped fptrs if relocating
- * rtld object itself. A new table will be created
- * in make_function_pointer using malloc when needed.
- */
- if (obj->rtld && obj->priv)
- free_fptrs(obj, true);
-
- return (r);
-}
-
-/* Process the PLT relocations. */
-int
-reloc_plt(Obj_Entry *obj)
-{
- /* All PLT relocations are the same kind: Elf_Rel or Elf_Rela. */
- if (obj->pltrelsize != 0) {
- const Elf_Rel *rellim;
- const Elf_Rel *rel;
-
- rellim = (const Elf_Rel *)
- ((char *)obj->pltrel + obj->pltrelsize);
- for (rel = obj->pltrel; rel < rellim; rel++) {
- Elf_Addr *where;
-
- assert(ELF_R_TYPE(rel->r_info) == R_IA_64_IPLTLSB);
-
- /* Relocate the @fptr pointing into the PLT. */
- where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
- *where += (Elf_Addr)obj->relocbase;
- }
- } else {
- const Elf_Rela *relalim;
- const Elf_Rela *rela;
-
- relalim = (const Elf_Rela *)
- ((char *)obj->pltrela + obj->pltrelasize);
- for (rela = obj->pltrela; rela < relalim; rela++) {
- Elf_Addr *where;
-
- assert(ELF_R_TYPE(rela->r_info) == R_IA_64_IPLTLSB);
-
- /* Relocate the @fptr pointing into the PLT. */
- where = (Elf_Addr *)(obj->relocbase + rela->r_offset);
- *where += (Elf_Addr)obj->relocbase;
- }
- }
- return 0;
-}
-
-int
-reloc_iresolve(Obj_Entry *obj, struct Struct_RtldLockState *lockstate)
-{
-
- /* XXX not implemented */
- return (0);
-}
-
-int
-reloc_gnu_ifunc(Obj_Entry *obj, int flags,
- struct Struct_RtldLockState *lockstate)
-{
-
- /* XXX not implemented */
- return (0);
-}
-
-/* Relocate the jump slots in an object. */
-int
-reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate)
-{
- if (obj->jmpslots_done)
- return 0;
- /* All PLT relocations are the same kind: Elf_Rel or Elf_Rela. */
- if (obj->pltrelsize != 0) {
- const Elf_Rel *rellim;
- const Elf_Rel *rel;
-
- rellim = (const Elf_Rel *)
- ((char *)obj->pltrel + obj->pltrelsize);
- for (rel = obj->pltrel; rel < rellim; rel++) {
- Elf_Addr *where;
- const Elf_Sym *def;
- const Obj_Entry *defobj;
-
- assert(ELF_R_TYPE(rel->r_info) == R_IA_64_IPLTLSB);
- where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
- def = find_symdef(ELF_R_SYM(rel->r_info), obj,
- &defobj, SYMLOOK_IN_PLT | flags, NULL, lockstate);
- if (def == NULL)
- return -1;
- reloc_jmpslot(where,
- (Elf_Addr)(defobj->relocbase
- + def->st_value),
- defobj, obj, rel);
- }
- } else {
- const Elf_Rela *relalim;
- const Elf_Rela *rela;
-
- relalim = (const Elf_Rela *)
- ((char *)obj->pltrela + obj->pltrelasize);
- for (rela = obj->pltrela; rela < relalim; rela++) {
- Elf_Addr *where;
- const Elf_Sym *def;
- const Obj_Entry *defobj;
-
- where = (Elf_Addr *)(obj->relocbase + rela->r_offset);
- def = find_symdef(ELF_R_SYM(rela->r_info), obj,
- &defobj, SYMLOOK_IN_PLT | flags, NULL, lockstate);
- if (def == NULL)
- return -1;
- reloc_jmpslot(where,
- (Elf_Addr)(defobj->relocbase
- + def->st_value),
- defobj, obj, (Elf_Rel *)rela);
- }
- }
- obj->jmpslots_done = true;
- return 0;
-}
-
-/* Fixup the jump slot at "where" to transfer control to "target". */
-Elf_Addr
-reloc_jmpslot(Elf_Addr *where, Elf_Addr target, const Obj_Entry *obj,
- const Obj_Entry *refobj, const Elf_Rel *rel)
-{
- Elf_Addr stubaddr;
-
- dbg(" reloc_jmpslot: where=%p, target=%p, gp=%p",
- (void *)where, (void *)target, (void *)obj->pltgot);
- stubaddr = *where;
- if (stubaddr != target) {
-
- /*
- * Point this @fptr directly at the target. Update the
- * gp value first so that we don't break another cpu
- * which is currently executing the PLT entry.
- */
- where[1] = (Elf_Addr) obj->pltgot;
- ia64_mf();
- where[0] = target;
- ia64_mf();
- }
-
- /*
- * The caller needs an @fptr for the adjusted entry. The PLT
- * entry serves this purpose nicely.
- */
- return (Elf_Addr) where;
-}
-
-/*
- * XXX ia64 doesn't seem to have copy relocations.
- *
- * Returns 0 on success, -1 on failure.
- */
-int
-do_copy_relocations(Obj_Entry *dstobj)
-{
-
- return 0;
-}
-
-/*
- * Return the @fptr representing a given function symbol.
- */
-void *
-make_function_pointer(const Elf_Sym *sym, const Obj_Entry *obj)
-{
- struct fptr **fptrs = obj->priv;
- int index = sym - obj->symtab;
-
- if (!fptrs) {
- /*
- * This should only happen for something like
- * dlsym("dlopen"). Actually, I'm not sure it can ever
- * happen.
- */
- fptrs = alloc_fptrs((Obj_Entry *) obj, false);
- }
- if (!fptrs[index]) {
- Elf_Addr target, gp;
- target = (Elf_Addr) (obj->relocbase + sym->st_value);
- gp = (Elf_Addr) obj->pltgot;
- fptrs[index] = alloc_fptr(target, gp);
- }
- return fptrs[index];
-}
-
-void
-call_initfini_pointer(const Obj_Entry *obj, Elf_Addr target)
-{
- struct fptr fptr;
-
- fptr.gp = (Elf_Addr) obj->pltgot;
- fptr.target = target;
- dbg(" initfini: target=%p, gp=%p",
- (void *) fptr.target, (void *) fptr.gp);
- ((InitFunc) &fptr)();
-}
-
-void
-call_init_pointer(const Obj_Entry *obj, Elf_Addr target)
-{
- struct fptr fptr;
-
- fptr.gp = (Elf_Addr) obj->pltgot;
- fptr.target = target;
- dbg(" initfini: target=%p, gp=%p",
- (void *) fptr.target, (void *) fptr.gp);
- ((InitArrFunc) &fptr)(main_argc, main_argv, environ);
-}
-
-/* Initialize the special PLT entries. */
-void
-init_pltgot(Obj_Entry *obj)
-{
- const Elf_Dyn *dynp;
- Elf_Addr *pltres = 0;
-
- /*
- * When there are no PLT relocations, the DT_IA_64_PLT_RESERVE entry
- * is bogus. Do not setup the BOR pointers in that case. An example
- * of where this happens is /usr/lib/libxpg4.so.3.
- */
- if (obj->pltrelasize == 0 && obj->pltrelsize == 0)
- return;
-
- /*
- * Find the PLT RESERVE section.
- */
- for (dynp = obj->dynamic; dynp->d_tag != DT_NULL; dynp++) {
- if (dynp->d_tag == DT_IA_64_PLT_RESERVE)
- pltres = (u_int64_t *)
- (obj->relocbase + dynp->d_un.d_ptr);
- }
- if (!pltres)
- errx(1, "Can't find DT_IA_64_PLT_RESERVE entry");
-
- /*
- * The PLT RESERVE section is used to get values to pass to
- * _rtld_bind when lazy binding.
- */
- pltres[0] = (Elf_Addr) obj;
- pltres[1] = FPTR_TARGET(_rtld_bind_start);
- pltres[2] = FPTR_GP(_rtld_bind_start);
-}
-
-void
-allocate_initial_tls(Obj_Entry *list)
-{
- void *tpval;
-
- /*
- * Fix the size of the static TLS block by using the maximum
- * offset allocated so far and adding a bit for dynamic modules to
- * use.
- */
- tls_static_space = tls_last_offset + tls_last_size + RTLD_STATIC_TLS_EXTRA;
-
- tpval = allocate_tls(list, NULL, TLS_TCB_SIZE, 16);
- __asm __volatile("mov r13 = %0" :: "r"(tpval));
-}
-
-void *__tls_get_addr(unsigned long module, unsigned long offset)
-{
- register Elf_Addr** tp __asm__("r13");
-
- return tls_get_addr_common(tp, module, offset);
-}
diff --git a/libexec/rtld-elf/ia64/rtld_machdep.h b/libexec/rtld-elf/ia64/rtld_machdep.h
deleted file mode 100644
index b00a90fc..0000000
--- a/libexec/rtld-elf/ia64/rtld_machdep.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 John D. Polstra.
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef RTLD_MACHDEP_H
-#define RTLD_MACHDEP_H 1
-
-#include <sys/types.h>
-#include <machine/atomic.h>
-
-/*
- * Macros for cracking ia64 function pointers.
- */
-struct fptr {
- Elf_Addr target;
- Elf_Addr gp;
-};
-
-#define FPTR_TARGET(f) (((struct fptr *) (f))->target)
-#define FPTR_GP(f) (((struct fptr *) (f))->gp)
-
-/* Return the address of the .dynamic section in the dynamic linker. */
-#define rtld_dynamic(obj) (&_DYNAMIC)
-
-struct Struct_Obj_Entry;
-
-Elf_Addr reloc_jmpslot(Elf_Addr *, Elf_Addr, const struct Struct_Obj_Entry *,
- const struct Struct_Obj_Entry *, const Elf_Rel *);
-void *make_function_pointer(const Elf_Sym *, const struct Struct_Obj_Entry *);
-void call_initfini_pointer(const struct Struct_Obj_Entry *, Elf_Addr);
-void call_init_pointer(const struct Struct_Obj_Entry *, Elf_Addr);
-
-#define TLS_TCB_SIZE 16
-
-#define round(size, align) \
- (((size) + (align) - 1) & ~((align) - 1))
-#define calculate_first_tls_offset(size, align) \
- round(TLS_TCB_SIZE, align)
-#define calculate_tls_offset(prev_offset, prev_size, size, align) \
- round(prev_offset + prev_size, align)
-#define calculate_tls_end(off, size) ((off) + (size))
-
-extern void *__tls_get_addr(unsigned long module, unsigned long offset);
-
-#define RTLD_DEFAULT_STACK_PF_EXEC 0
-#define RTLD_DEFAULT_STACK_EXEC 0
-
-#define RTLD_INIT_PAGESIZES_EARLY 1
-
-#endif
diff --git a/libexec/rtld-elf/ia64/rtld_start.S b/libexec/rtld-elf/ia64/rtld_start.S
deleted file mode 100644
index f41e5e5..0000000
--- a/libexec/rtld-elf/ia64/rtld_start.S
+++ /dev/null
@@ -1,252 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: rtld_start.S,v 1.1 1996/12/16 20:38:09 cgd Exp */
-
-/*
- * Copyright 1996 Matt Thomas <matt@3am-software.com>
- * Copyright 2000 John D. Polstra
- * All rights reserved.
- *
- * 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. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 <machine/asm.h>
-#include <sys/syscall.h>
-
-ENTRY(_rtld_start, 0)
- alloc r2=ar.pfs,3,0,3,0
- ;;
-1: mov r14=ip // calculate gp
- addl r3=@gprel(1b),r0
- ;;
- sub gp=r14,r3
- ;;
- .section .sdata
-2: data4 @ltv(1b) // unrelocated address of 1b
- .align 8
- .previous
- add r15=@gprel(2b),gp
- ;;
- ld8 r15=[r15]
- ;;
- sub out0=r14,r15 // out0 is image base address
- br.call.sptk.many rp=_rtld_reloc // fixup image
-
- add sp=-16,sp // 16 bytes for us, 16 for _rtld
- ;;
- mov out0=in0
- add out1=16,sp // address for exit proc
- add out2=24,sp // address for obj_main
-
- br.call.sptk.many rp=_rtld // r8=_rtld(sp, &exit_proc, &obj_main)
-
- add r16=16,sp // address for exit proc
- ;;
- ld8 r15=[r16] // read exit proc
- add sp=16,sp // readjust stack
- mov b7=r8 // address of real _start
- ;;
- alloc r2=ar.pfs,0,0,3,0 // dump register frame
- mov out2=r15
- ;;
- br.call.sptk.many rp=b7 // transfer to main program
- br.call.sptk.many rp=exit // die
-END(_rtld_start)
-
-/*
- * _rtld_bind_start: lookup a lazy binding and transfer to real target
- *
- * Arguments:
- * r1 gp value for rtld
- * r15 Index in plt
- * r16 Obj_Entry of caller
- * in0-in7 Arguments for target procedure
- * rp Return address back to caller
- */
-ENTRY(_rtld_bind_start, 0)
-{ .mii
- alloc loc0=ar.pfs,8,6,3,0 // space to save r8-r11
- add r17=16-8*16,sp // leave 16 bytes for _rtld_bind
- add r18=32-8*16,sp
- ;;
-} { .mii
- mov loc2=r8 // structure return address
- add sp=-8*16,sp // space to save f8-f15
- mov loc1=rp
- ;;
-} { .mii
- stf.spill [r17]=f8,32 // save float arguments
- mov loc3=r9 // language specific
- mov loc4=r10 // language specific
-} { .mii
- stf.spill [r18]=f9,32
- mov loc5=r11 // language specific
- shl out1=r15,4 // 16 * index
- ;;
-} { .mmi
- stf.spill [r17]=f10,32
- stf.spill [r18]=f11,32
- mov out0=r16 // Obj_Entry for caller
- ;;
-} { .mmi
- stf.spill [r17]=f12,32
- stf.spill [r18]=f13,32
- shladd out1=r15,3,out1 // rela offset = 24 * index
- ;;
-} { .mmb
- stf.spill [r17]=f14,32
- stf.spill [r18]=f15,32
- br.call.sptk.many rp=_rtld_bind
-} { .mii
- ld8 r14=[r8],8 // target address
- add r17=16,sp
- add r18=32,sp
- ;;
-} { .mii
- ld8 r1=[r8] // target gp
- mov ar.pfs=loc0 // clean up
- mov rp=loc1
-} { .mmi
- ldf.fill f8=[r17],32 // restore float arguments
- ldf.fill f9=[r18],32
- mov r8=loc2 // restore structure pointer
- ;;
-} { .mmi
- ldf.fill f10=[r17],32
- ldf.fill f11=[r18],32
- mov r9=loc3
- ;;
-} { .mmi
- ldf.fill f12=[r17],32
- ldf.fill f13=[r18],32
- mov r10=loc4
- ;;
-} { .mmi
- ldf.fill f14=[r17],32
- ldf.fill f15=[r18],32
- mov r11=loc5
- ;;
-} { .mii
- nop.m 0
- mov b7=r14
- add sp=8*16,sp
- ;;
-} { .mib
- alloc r14=ar.pfs,0,0,8,0 // drop our register frame
- nop.i 0
- br.sptk.many b7 // jump to target
-}
-END(_rtld_bind_start)
-
-#define DT_NULL 0 /* Terminating entry. */
-#define DT_RELA 7 /* Address of ElfNN_Rela relocations. */
-#define DT_RELASZ 8 /* Total size of ElfNN_Rela relocations. */
-#define DT_RELAENT 9 /* Size of each ElfNN_Rela relocation entry. */
-
-#define R_IA_64_NONE 0 /* None */
-#define R_IA_64_DIR64LSB 0x27 /* word64 LSB S + A */
-#define R_IA_64_REL64LSB 0x6f /* word64 LSB BD + A */
-
-/*
- * _rtld_reloc: relocate the rtld image, apart from @fptrs.
- *
- * Assumes that rtld was linked at zero and that we only need to
- * handle REL64LSB and DIR64LSB relocations.
- *
- * Arguments:
- * r1 gp value for rtld
- * in0 rtld base address
- */
-STATIC_ENTRY(_rtld_reloc, 1)
- alloc loc0=ar.pfs,1,2,0,0
- mov loc1=rp
- ;;
- movl r15=@gprel(_DYNAMIC) // find _DYNAMIC etc.
- ;;
- add r15=r15,gp // relocate _DYNAMIC etc.
- ;;
-1: ld8 r16=[r15],8 // read r15->d_tag
- ;;
- ld8 r17=[r15],8 // and r15->d_val
- ;;
- cmp.eq p6,p0=DT_NULL,r16 // done?
-(p6) br.cond.dpnt.few 2f
- ;;
- cmp.eq p6,p0=DT_RELA,r16
- ;;
-(p6) add r18=r17,in0 // found rela section
- ;;
- cmp.eq p6,p0=DT_RELASZ,r16
- ;;
-(p6) mov r19=r17 // found rela size
- ;;
- cmp.eq p6,p0=DT_RELAENT,r16
- ;;
-(p6) mov r22=r17 // found rela entry size
- ;;
- br.sptk.few 1b
-
-2:
- ld8 r15=[r18],8 // read r_offset
- ;;
- ld8 r16=[r18],8 // read r_info
- add r15=r15,in0 // relocate r_offset
- ;;
- ld8 r17=[r18],8 // read r_addend
- sub r19=r19,r22 // update relasz
-
- extr.u r23=r16,0,32 // ELF64_R_TYPE(r16)
- ;;
- cmp.eq p6,p0=R_IA_64_NONE,r23
-(p6) br.cond.dpnt.few 3f
- ;;
- cmp.eq p6,p0=R_IA_64_DIR64LSB,r23
- ;;
-(p6) br.cond.dptk.few 4f
- ;;
- cmp.eq p6,p0=R_IA_64_REL64LSB,r23
- ;;
-(p6) br.cond.dptk.few 4f
- ;;
-
-3: cmp.ltu p6,p0=0,r19 // more?
-(p6) br.cond.dptk.few 2b // loop
-
- mov r8=0 // success return value
- ;;
- br.cond.sptk.few 9f // done
-
-4:
- ld8 r16=[r15] // read value
- ;;
- add r16=r16,in0 // relocate it
- ;;
- st8 [r15]=r16 // and store it back
- br.cond.sptk.few 3b
-
-9:
- mov ar.pfs=loc0
- mov rp=loc1
- ;;
- br.ret.sptk.few rp
-
-END(_rtld_reloc)
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 0c53a16..03c92d0 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -3084,9 +3084,7 @@ do_dlsym(void *handle, const char *name, void *retaddr, const Ver_Entry *ve,
const Elf_Sym *def;
SymLook req;
RtldLockState lockstate;
-#ifndef __ia64__
tls_index ti;
-#endif
int res;
def = NULL;
@@ -3191,24 +3189,17 @@ do_dlsym(void *handle, const char *name, void *retaddr, const Ver_Entry *ve,
/*
* The value required by the caller is derived from the value
- * of the symbol. For the ia64 architecture, we need to
- * construct a function descriptor which the caller can use to
- * call the function with the right 'gp' value. For other
- * architectures and for non-functions, the value is simply
- * the relocated value of the symbol.
+ * of the symbol. this is simply the relocated value of the
+ * symbol.
*/
if (ELF_ST_TYPE(def->st_info) == STT_FUNC)
return (make_function_pointer(def, defobj));
else if (ELF_ST_TYPE(def->st_info) == STT_GNU_IFUNC)
return (rtld_resolve_ifunc(defobj, def));
else if (ELF_ST_TYPE(def->st_info) == STT_TLS) {
-#ifdef __ia64__
- return (__tls_get_addr(defobj->tlsindex, def->st_value));
-#else
ti.ti_module = defobj->tlsindex;
ti.ti_offset = def->st_value;
return (__tls_get_addr(&ti));
-#endif
} else
return (defobj->relocbase + def->st_value);
}
@@ -4341,7 +4332,7 @@ tls_get_addr_common(Elf_Addr **dtvp, int index, size_t offset)
return (tls_get_addr_slow(dtvp, index, offset));
}
-#if defined(__arm__) || defined(__ia64__) || defined(__mips__) || defined(__powerpc__)
+#if defined(__arm__) || defined(__mips__) || defined(__powerpc__)
/*
* Allocate Static TLS using the Variant I method.
diff --git a/release/doc/README b/release/doc/README
index 93cc12b..a46779d 100644
--- a/release/doc/README
+++ b/release/doc/README
@@ -99,10 +99,10 @@ element will be included. For example:
<para arch="sparc64">SPARC64-specific text</para>
-The currently-supported architectures are amd64, arm, i386, ia64,
-pc98, powerpc, and sparc64. An element may appear for multiple
-architectures by specifying a comma-separated list of architectures
-(i.e. arch="sparc64,ia64").
+The currently-supported architectures are amd64, arm, i386, pc98,
+powerpc and sparc64. An element may appear for multiple architectures
+by specifying a comma-separated list of architectures
+(i.e. arch="sparc64,amd64").
When creating a translation, make a new directory under this
directory with a language code (paralleling the DocProj directory
diff --git a/release/doc/en_US.ISO8859-1/hardware/article.xml b/release/doc/en_US.ISO8859-1/hardware/article.xml
index 90d4118..8919eef 100644
--- a/release/doc/en_US.ISO8859-1/hardware/article.xml
+++ b/release/doc/en_US.ISO8859-1/hardware/article.xml
@@ -129,10 +129,10 @@
</itemizedlist>
<para>&intel; EM64T is an extended version of IA-32 (x86) and
- different from &intel; IA-64 (Itanium) architecture, which
- &os;/ia64 supports. Some &intel;'s old documentation refers
- to &intel; EM64T as <quote>64-bit extension technology</quote>
- or <quote>IA-32e</quote>.</para>
+ different from &intel; IA-64 (Itanium) architecture. Some
+ &intel;'s old documentation refers to &intel; EM64T as
+ <quote>64-bit extension technology</quote> or
+ <quote>IA-32e</quote>.</para>
<para>Both Uniprocessor (UP) and Symmetric Multi-processor (SMP)
configurations are supported.</para>
@@ -232,41 +232,6 @@
more information.</para>
</sect2>
- <sect2 xml:id="proc-ia64">
- <title>ia64</title>
-
- <para>Currently supported processors are the <link xlink:href="http://people.freebsd.org/~marcel/refs/ia64/itanium/24532003.pdf">&itanium;</link>
- and the <link xlink:href="http://people.freebsd.org/~marcel/refs/ia64/itanium2/25111003.pdf">&itanium;
- 2</link>.</para>
-
- <para>Supported chipsets include:</para>
-
- <itemizedlist>
- <listitem>
- <para>HP zx1</para>
- </listitem>
-
- <listitem>
- <para>&intel; 460GX</para>
- </listitem>
-
- <listitem>
- <para>&intel; E8870</para>
- </listitem>
- </itemizedlist>
-
- <para>Both Uniprocessor (UP) and Symmetric Multi-processor (SMP)
- configurations are supported.</para>
-
- <para>Most devices that can be found in or are compatible with
- &arch.ia64; machines are fully supported. The notable
- exception is the VGA console. The &os; support for VGA
- consoles is at this time too much based on PC hardware and not
- all &arch.ia64; machines have chipsets that provide sufficient
- PC legacy support. As such &man.syscons.4; can not be enabled
- and the use of a serial console is required.</para>
- </sect2>
-
<sect2 xml:id="proc-pc98">
<title>pc98</title>
@@ -651,9 +616,8 @@
<sect2 xml:id="disk">
<title>Disk Controllers</title>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;,
- &arch.sparc64;] IDE/ATA controllers (&man.ata.4;
- driver)</para>
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;, &arch.sparc64;]
+ IDE/ATA controllers (&man.ata.4; driver)</para>
<para>[&arch.pc98;] IDE/ATA controllers (wdc driver)</para>
@@ -1124,8 +1088,8 @@
<para>[&arch.i386;] DigiBoard intelligent serial cards (digi
driver)</para>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;] PCI-Based
- multi-port serial boards (&man.puc.4; driver)</para>
+ <para>[&arch.amd64;, &arch.i386;] PCI-Based multi-port serial
+ boards (&man.puc.4; driver)</para>
<itemizedlist>
<listitem>
@@ -1147,10 +1111,6 @@
</listitem>
<listitem>
- <para>[&arch.ia64;] Diva Serial (GSP) Multiport UART</para>
- </listitem>
-
- <listitem>
<para>[&arch.amd64;, &arch.i386;] Dolphin Peripherals
4025/4035/4036</para>
</listitem>
@@ -1428,7 +1388,7 @@
<sect2 xml:id="usb">
<title>USB Devices</title>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;] A
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;] A
range of USB peripherals are supported; devices known to work
are listed in this section. Owing to the generic nature of
most USB devices, with some exceptions any device of a given
@@ -1436,14 +1396,14 @@
here.</para>
<note>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;]
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
USB Ethernet adapters can be found in the section listing
<link linkend="ethernet">Ethernet
interfaces</link>.</para>
</note>
<note>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;]
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
USB Bluetooth adapters can be found in <link linkend="bluetooth">Bluetooth</link> section.</para>
</note>
@@ -1451,14 +1411,14 @@
&hwlist.uhci;
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;] USB
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;] USB
2.0 controllers using the EHCI interface (&man.ehci.4;
driver)</para>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;]
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
Hubs</para>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;]
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
Keyboards (&man.ukbd.4; driver)</para>
<para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
@@ -1490,7 +1450,7 @@
&hwlist.umodem;
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;] Mice
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;] Mice
(&man.ums.4; driver)</para>
&hwlist.ulpt;
@@ -1569,7 +1529,7 @@
found at <uri xlink:href="http://www.x.org/">http://www.x.org/</uri>.</para>
</note>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;]
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
Keyboards including:</para>
<itemizedlist>
@@ -1588,12 +1548,12 @@
</listitem>
<listitem>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;]
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
USB keyboards (&man.ukbd.4; driver)</para>
</listitem>
</itemizedlist>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;]
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
Pointing devices including:</para>
<itemizedlist>
@@ -1613,7 +1573,7 @@
</listitem>
<listitem>
- <para>[&arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;]
+ <para>[&arch.amd64;, &arch.i386;, &arch.pc98;]
USB mice (&man.ums.4; driver)</para>
</listitem>
</itemizedlist>
diff --git a/release/doc/en_US.ISO8859-1/readme/article.xml b/release/doc/en_US.ISO8859-1/readme/article.xml
index 925ddfc..bfd6aef 100644
--- a/release/doc/en_US.ISO8859-1/readme/article.xml
+++ b/release/doc/en_US.ISO8859-1/readme/article.xml
@@ -68,7 +68,6 @@
<para>&os; is an operating system based on 4.4 BSD Lite for
AMD64 and Intel EM64T based PC hardware (&arch.amd64;),
Intel, AMD, Cyrix or NexGen <quote>x86</quote> based PC hardware (&arch.i386;),
- Intel Itanium Processor based computers (&arch.ia64;),
NEC PC-9801/9821 series PCs and compatibles (&arch.pc98;),
and &ultrasparc; machines (&arch.sparc64;). Versions
for the &arm; (&arch.arm;), &mips; (&arch.mips;), and
@@ -326,7 +325,7 @@
</para>
<para>On platforms that support &man.bsdinstall.8; (currently
- &arch.amd64;, &arch.i386;, &arch.ia64;, &arch.pc98;, and &arch.sparc64;), these documents are generally available via the
+ &arch.amd64;, &arch.i386;, &arch.pc98;, and &arch.sparc64;), these documents are generally available via the
Documentation menu during installation. Once the system is
installed, you can revisit this menu by re-running the
&man.bsdinstall.8; utility.</para>
diff --git a/release/doc/share/examples/Makefile.relnotesng b/release/doc/share/examples/Makefile.relnotesng
index 4f97ee5..9607e28 100644
--- a/release/doc/share/examples/Makefile.relnotesng
+++ b/release/doc/share/examples/Makefile.relnotesng
@@ -6,7 +6,7 @@
# the build tree.
#
-ARCHS= amd64 ia64 i386 pc98 powerpc sparc64
+ARCHS= amd64 i386 pc98 powerpc sparc64
MULTITEXTS=
UNITEXTS= hardware readme relnotes errata
diff --git a/release/doc/share/misc/dev.archlist.txt b/release/doc/share/misc/dev.archlist.txt
index ad7a6af..6872ec0 100644
--- a/release/doc/share/misc/dev.archlist.txt
+++ b/release/doc/share/misc/dev.archlist.txt
@@ -35,43 +35,43 @@
# Empty lines, and lines beginning with "#" are ignored.
# <Driver name><tab><arch>[,<arch>...]
#
-aac i386,ia64,amd64
+aac i386,amd64
adv i386,pc98,amd64
adw i386,pc98,amd64
aha i386
ahb i386
-ahd i386,sparc64,ia64,amd64
+ahd i386,sparc64,amd64
aic i386,pc98,amd64
amd i386,pc98,amd64
arcmsr i386,amd64
asr i386
ath i386,pc98,amd64,sparc64
-aue i386,pc98,ia64,amd64,powerpc
+aue i386,pc98,amd64,powerpc
axe i386,pc98,amd64,powerpc
bce i386,amd64
-bge i386,pc98,sparc64,ia64,amd64
+bge i386,pc98,sparc64,amd64
bktr i386,pc98
bt i386,amd64
bxe i386,amd64
-cdce i386,pc98,ia64,amd64,powerpc
-ciss i386,ia64,amd64
+cdce i386,pc98,amd64,powerpc
+ciss i386,amd64
ce i386,pc98
cm i386
cnw i386,pc98,amd64
cp i386,pc98
ct pc98
ctau i386
-cue i386,pc98,ia64,amd64,powerpc
+cue i386,pc98,amd64,powerpc
cx i386
cxgb i386,amd64
-de i386,pc98,ia64,amd64
-dpt i386,ia64,amd64
+de i386,pc98,amd64
+dpt i386,amd64
ed i386,pc98
ep i386,pc98,amd64
esp sparc64
ex i386,amd64
fe i386,pc98,amd64
-fwohci i386,sparc64,ia64,amd64,powerpc
+fwohci i386,sparc64,amd64,powerpc
hifn i386,pc98,amd64
hpt27xx i386,amd64
hptiop i386,amd64
@@ -79,15 +79,15 @@ hptmv i386,amd64
hptrr i386,amd64
ida i386
ie i386
-iir i386,ia64,amd64
+iir i386,amd64
ips i386,amd64
isci i386,amd64
ixgb i386,amd64
-kue i386,pc98,ia64,amd64,powerpc
+kue i386,pc98,amd64,powerpc
lge i386,pc98,amd64
-mfi i386,ia64,amd64
-mlx i386,ia64,amd64
-mly i386,ia64,amd64
+mfi i386,amd64
+mlx i386,amd64
+mly i386,amd64
msk i386,amd64
mxge i386,amd64
my i386,pc98
@@ -99,9 +99,9 @@ ng_ubt i386,pc98,amd64
nsp i386,pc98
nxge i386,amd64
oce i386,amd64
-ohci i386,pc98,ia64,amd64,powerpc
+ohci i386,pc98,amd64,powerpc
oltr i386
-pcn i386,pc98,ia64,amd64
+pcn i386,pc98,amd64
pst i386
qlxgb amd64
qlxgbe amd64
@@ -113,7 +113,7 @@ rue i386,pc98,amd64
rum i386,amd64
run i386,amd64
safe i386,pc98,amd64
-sbp i386,sparc64,ia64,amd64
+sbp i386,sparc64,amd64
sfgxe amd64
sn i386,amd64
snc pc98
@@ -160,7 +160,7 @@ ubser i386,pc98,amd64
ucycom i386,pc98,amd64
udav i386,pc98,amd64
uftdi i386,pc98,amd64
-uhci i386,pc98,ia64,amd64,powerpc
+uhci i386,pc98,amd64,powerpc
ulpt i386,pc98,amd64,powerpc
umass i386,pc98,amd64,powerpc
umodem i386,pc98,amd64
@@ -170,7 +170,7 @@ urio i386,pc98,amd64,powerpc
uvisor i386,pc98,amd64
uvscom i386,pc98,amd64
vpo i386
-vx i386,pc98,ia64,amd64
+vx i386,pc98,amd64
vxge i386,amd64
wb i386,pc98,amd64
xe i386,amd64
diff --git a/release/doc/share/xml/release.ent b/release/doc/share/xml/release.ent
index 2c36985..bdd58b7 100644
--- a/release/doc/share/xml/release.ent
+++ b/release/doc/share/xml/release.ent
@@ -65,7 +65,6 @@
<!ENTITY arch.amd64 "amd64">
<!ENTITY arch.arm "arm">
<!ENTITY arch.i386 "i386">
-<!ENTITY arch.ia64 "ia64">
<!ENTITY arch.mips "mips">
<!ENTITY arch.pc98 "pc98">
<!ENTITY arch.powerpc "powerpc">
diff --git a/release/ia64/make-memstick.sh b/release/ia64/make-memstick.sh
deleted file mode 100755
index c9ff580..0000000
--- a/release/ia64/make-memstick.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-#
-# This script generates a "memstick image" (image that can be copied to a
-# USB memory stick) from a directory tree. Note that the script does not
-# clean up after itself very well for error conditions on purpose so the
-# problem can be diagnosed (full filesystem most likely but ...).
-#
-# Usage: make-memstick.sh <directory tree> <image filename>
-#
-# $FreeBSD$
-#
-
-PATH=/bin:/usr/bin:/sbin:/usr/sbin
-export PATH
-
-BLOCKSIZE=10240
-
-if [ $# -ne 2 ]; then
- echo "make-memstick.sh /path/to/directory /path/to/image/file"
- exit 1
-fi
-
-if [ ! -d ${1} ]; then
- echo "${1} must be a directory"
- exit 1
-fi
-
-if [ -e ${2} ]; then
- echo "won't overwrite ${2}"
- exit 1
-fi
-
-makefs -B little ${2} ${1}
-if [ $? -ne 0 ]; then
- echo "makefs failed"
- exit 1
-fi
-
diff --git a/release/ia64/mkisoimages.sh b/release/ia64/mkisoimages.sh
deleted file mode 100644
index 20b0153..0000000
--- a/release/ia64/mkisoimages.sh
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/sh
-#
-# Module: mkisoimages.sh
-# Author: Jordan K Hubbard
-# Date: 22 June 2001
-#
-# $FreeBSD$
-#
-# This script is used by release/Makefile to build the (optional) ISO images
-# for a FreeBSD release. It is considered architecture dependent since each
-# platform has a slightly unique way of making bootable CDs. This script
-# is also allowed to generate any number of images since that is more of
-# publishing decision than anything else.
-#
-# Usage:
-#
-# mkisoimages.sh [-b] image-label image-name base-bits-dir [extra-bits-dir]
-#
-# Where -b is passed if the ISO image should be made "bootable" by
-# whatever standards this architecture supports (may be unsupported),
-# image-label is the ISO image label, image-name is the filename of the
-# resulting ISO image, base-bits-dir contains the image contents and
-# extra-bits-dir, if provided, contains additional files to be merged
-# into base-bits-dir as part of making the image.
-
-set -e
-
-if [ "x$1" = "x-b" ]; then
- bootable=yes
- shift
-else
- bootable=no
-fi
-
-if [ $# -lt 3 ]; then
- echo usage: $0 '[-b] label iso-name base-dir [extra-dir]'
- exit 1
-fi
-
-LABEL=`echo $1 | tr '[:lower:]' '[:upper:]'`; shift
-NAME=$1; shift
-BASE=$1; shift
-
-EFIPART=efipart.sys
-
-# To create a bootable CD under EFI, the boot image should be an EFI
-# system partition.
-if [ $bootable = yes ]; then
- EFISZ=65536
- MNT=/mnt
- dd if=/dev/zero of=$EFIPART count=$EFISZ
- md=`mdconfig -a -t vnode -f $EFIPART`
- newfs_msdos -F 12 -S 512 -h 4 -o 0 -s $EFISZ -u 16 $md
- mount -t msdosfs /dev/$md $MNT
- mkdir -p $MNT/efi/boot $MNT/boot $MNT/boot/kernel
- cp -R $BASE/boot/defaults $MNT/boot
- cp $BASE/boot/kernel/kernel $MNT/boot/kernel
- if [ -s $BASE/boot/kernel/ispfw.ko ]; then
- cp $BASE/boot/kernel/ispfw.ko $MNT/boot/kernel
- fi
- cp $BASE/boot/device.hints $MNT/boot
- cp $BASE/boot/loader.* $MNT/boot
- if [ -s $BASE/boot/mfsroot.gz ]; then
- cp $BASE/boot/mfsroot.gz $MNT/boot
- fi
- cp $BASE/boot/color.4th $MNT/boot
- cp $BASE/boot/support.4th $MNT/boot
- cp $BASE/boot/check-password.4th $MNT/boot
- cp $BASE/boot/screen.4th $MNT/boot
- mv $MNT/boot/loader.efi $MNT/efi/boot/bootia64.efi
- echo kern.cam.boot_delay=\"3000\" >> $MNT/boot/loader.conf
- echo vfs.root.mountfrom=\"cd9660:iso9660/$LABEL\" >> $MNT/boot/loader.conf
- umount $MNT
- mdconfig -d -u $md
- BOOTOPTS="-o bootimage=i386;$EFIPART -o no-emul-boot"
-else
- BOOTOPTS=""
-fi
-
-publisher="The FreeBSD Project. http://www.FreeBSD.org/"
-echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $BASE/etc/fstab
-makefs -t cd9660 $BOOTOPTS -o rockridge -o label=$LABEL -o publisher="$publisher" $NAME $BASE $*
-rm $BASE/etc/fstab
-rm -f $EFIPART
-exit 0
diff --git a/rescue/rescue/Makefile b/rescue/rescue/Makefile
index 5de7b72..1e9cb19 100644
--- a/rescue/rescue/Makefile
+++ b/rescue/rescue/Makefile
@@ -136,10 +136,6 @@ CRUNCH_PROGS_sbin+= bsdlabel
CRUNCH_SRCDIR_fdisk= $(.CURDIR)/../../sbin/fdisk_pc98
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-CRUNCH_PROGS_sbin+= mca
-.endif
-
.if ${MACHINE_CPUARCH} == "sparc64"
CRUNCH_PROGS_sbin+= bsdlabel sunlabel
.endif
diff --git a/sbin/Makefile.ia64 b/sbin/Makefile.ia64
deleted file mode 100644
index c1e6a41..0000000
--- a/sbin/Makefile.ia64
+++ /dev/null
@@ -1,3 +0,0 @@
-# $FreeBSD$
-
-SUBDIR += mca
diff --git a/sbin/bsdlabel/bsdlabel.8 b/sbin/bsdlabel/bsdlabel.8
index d31187b..e0f3752 100644
--- a/sbin/bsdlabel/bsdlabel.8
+++ b/sbin/bsdlabel/bsdlabel.8
@@ -109,7 +109,7 @@ argument forces
.Nm
to use a layout suitable for a different architecture.
Current valid values are
-.Cm i386 , amd64 , ia64 ,
+.Cm i386 , amd64 ,
and
.Cm pc98 .
If this option is omitted,
diff --git a/sbin/bsdlabel/bsdlabel.c b/sbin/bsdlabel/bsdlabel.c
index ce5d375..b99c279 100644
--- a/sbin/bsdlabel/bsdlabel.c
+++ b/sbin/bsdlabel/bsdlabel.c
@@ -165,7 +165,6 @@ main(int argc, char *argv[])
case 'm':
if (!strcmp(optarg, "i386") ||
!strcmp(optarg, "amd64") ||
- !strcmp(optarg, "ia64") ||
!strcmp(optarg, "pc98")) {
labelsoffset = 1;
labeloffset = 0;
diff --git a/sbin/fdisk/fdisk.c b/sbin/fdisk/fdisk.c
index 34b96ef..819c1c7 100644
--- a/sbin/fdisk/fdisk.c
+++ b/sbin/fdisk/fdisk.c
@@ -507,7 +507,6 @@ print_part(const struct dos_partition *partp)
static void
init_boot(void)
{
-#ifndef __ia64__
const char *fname;
int fdesc, n;
struct stat sb;
@@ -529,15 +528,6 @@ init_boot(void)
err(1, "%s", fname);
if (n != mboot.bootinst_size)
errx(1, "%s: short read", fname);
-#else
- if (mboot.bootinst != NULL)
- free(mboot.bootinst);
- mboot.bootinst_size = secsize;
- if ((mboot.bootinst = malloc(mboot.bootinst_size)) == NULL)
- errx(1, "unable to allocate boot block buffer");
- memset(mboot.bootinst, 0, mboot.bootinst_size);
- le16enc(&mboot.bootinst[DOSMAGICOFFSET], DOSMAGIC);
-#endif
}
diff --git a/sbin/mca/Makefile b/sbin/mca/Makefile
deleted file mode 100644
index 2616725..0000000
--- a/sbin/mca/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-PROG= mca
-MAN= mca.8
-
-.include <bsd.prog.mk>
diff --git a/sbin/mca/mca.8 b/sbin/mca/mca.8
deleted file mode 100644
index e654d36..0000000
--- a/sbin/mca/mca.8
+++ /dev/null
@@ -1,73 +0,0 @@
-.\" Copyright (c) 2006 Marcel Moolenaar
-.\" All rights reserved.
-.\"
-.\" 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 AUTHOR ``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 AUTHOR 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.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd February 11, 2006
-.Dt MCA 8
-.Os
-.Sh NAME
-.Nm mca
-.Nd "Machine Check Architecture control utility"
-.Sh SYNOPSIS
-.Nm
-.Op Fl d
-.Op Fl f Ar filename
-.Sh DESCRIPTION
-The
-.Nm
-utility provides minimal functionality to dump or display MCA records
-that were saved by the kernel during boot.
-The default behaviour of the
-.Nm
-utility is to display all new MCA records on stdout.
-When the
-.Fl d
-option is given, the records are dumped in binary form.
-The default file to which records are dumped is
-.Pa /var/log/mca.log .
-This can be changed by specifying the
-.Fl f
-option.
-New records are appended to the dump file.
-.Pp
-Previously dumped records can be displayed by giving the name of
-the dump file with the
-.Fl f
-option.
-.Sh FILES
-.Bl -tag -width ".Pa /var/log/mca.log" -compact
-.It Pa /var/log/mca.log
-default dump file
-.El
-.Sh HISTORY
-The
-.Nm
-utility appeared in
-.Fx 5.0
-for ia64.
-.Sh BUGS
-The development of the
-.Nm
-utility is still a work in progress.
diff --git a/sbin/mca/mca.c b/sbin/mca/mca.c
deleted file mode 100644
index ed7bcff..0000000
--- a/sbin/mca/mca.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- * Copyright (c) 2002 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/sysctl.h>
-#include <sys/uuid.h>
-
-/*
- * Hack to make this compile on non-ia64 machines.
- */
-#ifdef __ia64__
-#include <machine/mca.h>
-#else
-#include "../../sys/ia64/include/mca.h"
-#endif
-
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <uuid.h>
-
-#define BCD(x) ((x >> 4) * 10 + (x & 15))
-
-#define HW_MCA_MAX_CPUID 255
-
-static const char hw_mca_count[] = "hw.mca.count";
-static const char hw_mca_first[] = "hw.mca.first";
-static const char hw_mca_last[] = "hw.mca.last";
-static const char hw_mca_recid[] = "hw.mca.%d.%u";
-
-static char default_dumpfile[] = "/var/log/mca.log";
-
-int fl_dump;
-char *file;
-
-static const char *
-severity(int error)
-{
-
- switch (error) {
- case MCA_RH_ERROR_RECOVERABLE:
- return ("recoverable");
- case MCA_RH_ERROR_FATAL:
- return ("fatal");
- case MCA_RH_ERROR_CORRECTED:
- return ("corrected");
- }
-
- return ("unknown");
-}
-
-static const char *
-uuid(uuid_t *id)
-{
- static char buffer[64];
- char *s;
-
- uuid_to_string(id, &s, NULL);
- strcpy(buffer, s);
- free(s);
- return (buffer);
-}
-
-static int
-show_value(int indent, const char *var, const char *fmt, ...)
-{
- va_list ap;
- int len;
-
- len = indent;
- while (indent--)
- putchar(' ');
- len += printf("<%s>", var);
- va_start(ap, fmt);
- len += vprintf(fmt, ap);
- len += printf("</%s>\n", var);
- return (len);
-}
-
-static size_t
-show_header(struct mca_record_header *rh)
-{
-
- printf(" <header>\n");
- show_value(4, "seqnr", "%lld", (long long)rh->rh_seqnr);
- show_value(4, "revision", "%d.%d", BCD(rh->rh_major),
- BCD(rh->rh_minor));
- show_value(4, "severity", "%s", severity(rh->rh_error));
- show_value(4, "length", "%lld", (long long)rh->rh_length);
- show_value(4, "date", "%d%02d/%02d/%02d",
- BCD(rh->rh_time[MCA_RH_TIME_CENT]),
- BCD(rh->rh_time[MCA_RH_TIME_YEAR]),
- BCD(rh->rh_time[MCA_RH_TIME_MON]),
- BCD(rh->rh_time[MCA_RH_TIME_MDAY]));
- show_value(4, "time", "%02d:%02d:%02d",
- BCD(rh->rh_time[MCA_RH_TIME_HOUR]),
- BCD(rh->rh_time[MCA_RH_TIME_MIN]),
- BCD(rh->rh_time[MCA_RH_TIME_SEC]));
- if (rh->rh_flags & MCA_RH_FLAGS_PLATFORM_ID)
- show_value(4, "platform", "%s", uuid(&rh->rh_platform));
- printf(" </header>\n");
- return (rh->rh_length);
-}
-
-static void
-show_cpu_mod(const char *what, int idx, struct mca_cpu_mod *cpu_mod)
-{
- printf(" <%s-%d>\n", what, idx);
- if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_INFO)
- show_value(8, "info", "0x%016llx",
- (long long)cpu_mod->cpu_mod_info);
- if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_REQID)
- show_value(8, "requester", "0x%016llx",
- (long long)cpu_mod->cpu_mod_reqid);
- if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_RSPID)
- show_value(8, "responder", "0x%016llx",
- (long long)cpu_mod->cpu_mod_rspid);
- if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_TGTID)
- show_value(8, "target", "0x%016llx",
- (long long)cpu_mod->cpu_mod_tgtid);
- if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_IP)
- show_value(8, "ip", "0x%016llx",
- (long long)cpu_mod->cpu_mod_ip);
- printf(" </%s-%d>\n", what, idx);
-}
-
-static void
-show_cpu(struct mca_cpu_record *cpu)
-{
- char var[16];
- struct mca_cpu_mod *mod;
- struct mca_cpu_cpuid *cpuid;
-#ifdef notyet
- struct mca_cpu_psi *psi;
-#endif
- int i, n;
-
- printf(" <cpu>\n");
-
- if (cpu->cpu_flags & MCA_CPU_FLAGS_ERRMAP)
- show_value(6, "errmap", "0x%016llx",
- (long long)cpu->cpu_errmap);
- if (cpu->cpu_flags & MCA_CPU_FLAGS_STATE)
- show_value(6, "state", "0x%016llx",
- (long long)cpu->cpu_state);
- if (cpu->cpu_flags & MCA_CPU_FLAGS_CR_LID)
- show_value(6, "cr_lid", "0x%016llx",
- (long long)cpu->cpu_cr_lid);
-
- mod = (struct mca_cpu_mod*)(cpu + 1);
- n = MCA_CPU_FLAGS_CACHE(cpu->cpu_flags);
- for (i = 0; i < n; i++)
- show_cpu_mod("cache", i, mod++);
- n = MCA_CPU_FLAGS_TLB(cpu->cpu_flags);
- for (i = 0; i < n; i++)
- show_cpu_mod("tlb", i, mod++);
- n = MCA_CPU_FLAGS_BUS(cpu->cpu_flags);
- for (i = 0; i < n; i++)
- show_cpu_mod("bus", i, mod++);
- n = MCA_CPU_FLAGS_REG(cpu->cpu_flags);
- for (i = 0; i < n; i++)
- show_cpu_mod("reg", i, mod++);
- n = MCA_CPU_FLAGS_MS(cpu->cpu_flags);
- for (i = 0; i < n; i++)
- show_cpu_mod("ms", i, mod++);
-
- cpuid = (struct mca_cpu_cpuid*)mod;
- for (i = 0; i < 6; i++) {
- sprintf(var, "cpuid-%d", i);
- show_value(6, var, "0x%016llx", (long long)cpuid->cpuid[i]);
- }
-
-#ifdef notyet
- psi = (struct mca_cpu_psi*)(cpuid + 1);
-#endif
- /* TODO: Dump PSI */
-
- printf(" </cpu>\n");
-}
-
-static void
-show_memory(struct mca_mem_record *mem)
-{
- printf(" <memory>\n");
-
- if (mem->mem_flags & MCA_MEM_FLAGS_STATUS)
- show_value(6, "status", "0x%016llx",
- (long long)mem->mem_status);
- if (mem->mem_flags & MCA_MEM_FLAGS_ADDR)
- show_value(6, "address", "0x%016llx",
- (long long)mem->mem_addr);
- if (mem->mem_flags & MCA_MEM_FLAGS_ADDRMASK)
- show_value(6, "mask", "0x%016llx",
- (long long)mem->mem_addrmask);
- if (mem->mem_flags & MCA_MEM_FLAGS_NODE)
- show_value(6, "node", "0x%04x", mem->mem_node);
- if (mem->mem_flags & MCA_MEM_FLAGS_CARD)
- show_value(6, "card", "0x%04x", mem->mem_card);
- if (mem->mem_flags & MCA_MEM_FLAGS_MODULE)
- show_value(6, "module", "0x%04x", mem->mem_module);
- if (mem->mem_flags & MCA_MEM_FLAGS_BANK)
- show_value(6, "bank", "0x%04x", mem->mem_bank);
- if (mem->mem_flags & MCA_MEM_FLAGS_DEVICE)
- show_value(6, "device", "0x%04x", mem->mem_device);
- if (mem->mem_flags & MCA_MEM_FLAGS_ROW)
- show_value(6, "row", "0x%04x", mem->mem_row);
- if (mem->mem_flags & MCA_MEM_FLAGS_COLUMN)
- show_value(6, "column", "0x%04x", mem->mem_column);
- if (mem->mem_flags & MCA_MEM_FLAGS_BITPOS)
- show_value(6, "bit", "0x%04x", mem->mem_bitpos);
- if (mem->mem_flags & MCA_MEM_FLAGS_REQID)
- show_value(6, "requester", "0x%016llx",
- (long long)mem->mem_reqid);
- if (mem->mem_flags & MCA_MEM_FLAGS_RSPID)
- show_value(6, "responder", "0x%016llx",
- (long long)mem->mem_rspid);
- if (mem->mem_flags & MCA_MEM_FLAGS_TGTID)
- show_value(6, "target", "0x%016llx",
- (long long)mem->mem_tgtid);
- if (mem->mem_flags & MCA_MEM_FLAGS_BUSDATA)
- show_value(6, "status", "0x%016llx",
- (long long)mem->mem_busdata);
- if (mem->mem_flags & MCA_MEM_FLAGS_OEM_ID)
- show_value(6, "oem", "%s", uuid(&mem->mem_oem_id));
- /* TODO: Dump OEM data */
-
- printf(" </memory>\n");
-}
-
-static void
-show_sel(void)
-{
- printf(" # SEL\n");
-}
-
-static void
-show_pci_bus(struct mca_pcibus_record *pcibus)
-{
- printf(" <pci-bus>\n");
-
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_STATUS)
- show_value(6, "status", "0x%016llx",
- (long long)pcibus->pcibus_status);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_ERROR)
- show_value(6, "error", "0x%04x", pcibus->pcibus_error);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_BUS)
- show_value(6, "bus", "0x%04x", pcibus->pcibus_bus);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_ADDR)
- show_value(6, "address", "0x%016llx",
- (long long)pcibus->pcibus_addr);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_DATA)
- show_value(6, "data", "0x%016llx",
- (long long)pcibus->pcibus_data);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_CMD)
- show_value(6, "cmd", "0x%016llx",
- (long long)pcibus->pcibus_cmd);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_REQID)
- show_value(6, "requester", "0x%016llx",
- (long long)pcibus->pcibus_reqid);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_RSPID)
- show_value(6, "responder", "0x%016llx",
- (long long)pcibus->pcibus_rspid);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_TGTID)
- show_value(6, "target", "0x%016llx",
- (long long)pcibus->pcibus_tgtid);
- if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_OEM_ID)
- show_value(6, "oem", "%s", uuid(&pcibus->pcibus_oem_id));
- /* TODO: Dump OEM data */
-
- printf(" </pci-bus>\n");
-}
-
-static void
-show_smbios(void)
-{
- printf(" # SMBIOS\n");
-}
-
-static void
-show_pci_dev(struct mca_pcidev_record *pcidev)
-{
- printf(" <pci-dev>\n");
-
- if (pcidev->pcidev_flags & MCA_PCIDEV_FLAGS_STATUS)
- show_value(6, "status", "0x%016llx",
- (long long)pcidev->pcidev_status);
- if (pcidev->pcidev_flags & MCA_PCIDEV_FLAGS_INFO) {
- show_value(6, "vendor", "0x%04x",
- pcidev->pcidev_info.info_vendor);
- show_value(6, "device", "0x%04x",
- pcidev->pcidev_info.info_device);
- show_value(6, "class", "0x%06x",
- MCA_PCIDEV_INFO_CLASS(pcidev->pcidev_info.info_ccfn));
- show_value(6, "function", "0x%02x",
- MCA_PCIDEV_INFO_FUNCTION(pcidev->pcidev_info.info_ccfn));
- show_value(6, "slot", "0x%02x", pcidev->pcidev_info.info_slot);
- show_value(6, "bus", "0x%04x", pcidev->pcidev_info.info_bus);
- show_value(6, "segment", "0x%04x",
- pcidev->pcidev_info.info_segment);
- }
- /* TODO: dump registers */
- /* TODO: Dump OEM data */
-
- printf(" </pci-dev>\n");
-}
-
-static void
-show_generic(void)
-{
- printf(" # GENERIC\n");
-}
-
-static size_t
-show_section(struct mca_section_header *sh)
-{
- static uuid_t uuid_cpu = MCA_UUID_CPU;
- static uuid_t uuid_memory = MCA_UUID_MEMORY;
- static uuid_t uuid_sel = MCA_UUID_SEL;
- static uuid_t uuid_pci_bus = MCA_UUID_PCI_BUS;
- static uuid_t uuid_smbios = MCA_UUID_SMBIOS;
- static uuid_t uuid_pci_dev = MCA_UUID_PCI_DEV;
- static uuid_t uuid_generic = MCA_UUID_GENERIC;
-
- printf(" <section>\n");
- show_value(4, "uuid", "%s", uuid(&sh->sh_uuid));
- show_value(4, "revision", "%d.%d", BCD(sh->sh_major),
- BCD(sh->sh_minor));
-
- if (uuid_equal(&sh->sh_uuid, &uuid_cpu, NULL))
- show_cpu((void*)(sh + 1));
- else if (uuid_equal(&sh->sh_uuid, &uuid_memory, NULL))
- show_memory((void*)(sh + 1));
- else if (uuid_equal(&sh->sh_uuid, &uuid_sel, NULL))
- show_sel();
- else if (uuid_equal(&sh->sh_uuid, &uuid_pci_bus, NULL))
- show_pci_bus((void*)(sh + 1));
- else if (uuid_equal(&sh->sh_uuid, &uuid_smbios, NULL))
- show_smbios();
- else if (uuid_equal(&sh->sh_uuid, &uuid_pci_dev, NULL))
- show_pci_dev((void*)(sh + 1));
- else if (uuid_equal(&sh->sh_uuid, &uuid_generic, NULL))
- show_generic();
-
- printf(" </section>\n");
- return (sh->sh_length);
-}
-
-static void
-show(char *data, const char *mib)
-{
- size_t reclen, seclen;
-
- if (mib != NULL)
- printf("<!-- MIB: %s -->\n", mib);
-
- printf("<record>\n");
- reclen = show_header((void*)data) - sizeof(struct mca_record_header);
- data += sizeof(struct mca_record_header);
- while (reclen > sizeof(struct mca_section_header)) {
- seclen = show_section((void*)data);
- reclen -= seclen;
- data += seclen;
- }
- printf("</record>\n");
-}
-
-static void
-showall(char *buf, size_t buflen)
-{
- struct mca_record_header *rh;
- size_t reclen;
-
- do {
- if (buflen < sizeof(struct mca_record_header))
- return;
-
- rh = (void*)buf;
- reclen = rh->rh_length;
- if (buflen < reclen)
- return;
-
- show(buf, NULL);
-
- buf += reclen;
- buflen -= reclen;
- }
- while (1);
-}
-
-static void
-dump(char *data)
-{
- struct mca_record_header *rh;
- const char *fn;
- int fd;
-
- rh = (void*)data;
- fn = (file) ? file : default_dumpfile;
- fd = open(fn, O_WRONLY|O_CREAT|O_APPEND, 0660);
- if (fd == -1)
- err(2, "open(%s)", fn);
- if (write(fd, (void*)rh, rh->rh_length) == -1)
- err(2, "write(%s)", fn);
- close(fd);
-}
-
-static void
-usage(void)
-{
-
- fprintf(stderr, "usage: mca [-df]\n");
- exit (1);
-}
-
-int
-main(int argc, char **argv)
-{
- char mib[32];
- char *buf;
- size_t len;
- int ch, error, fd;
- int count, first, last, cpuid;
-
- while ((ch = getopt(argc, argv, "df:")) != -1) {
- switch(ch) {
- case 'd': /* dump */
- fl_dump = 1;
- break;
- case 'f':
- if (file)
- free(file); /* XXX complain! */
- file = strdup(optarg);
- break;
- default:
- usage();
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if (file == NULL || fl_dump) {
- len = sizeof(count);
- if (sysctlbyname(hw_mca_count, &count, &len, NULL, 0) == -1)
- err(1, hw_mca_count);
-
- if (count == 0)
- errx(0, "no error records found");
-
- len = sizeof(first);
- if (sysctlbyname(hw_mca_first, &first, &len, NULL, 0) == -1)
- err(1, hw_mca_first);
-
- len = sizeof(last);
- if (sysctlbyname(hw_mca_last, &last, &len, NULL, 0) == -1)
- err(1, hw_mca_last);
-
- cpuid = 0;
- error = 0;
- while (count && first <= last) {
- do {
- sprintf(mib, hw_mca_recid, first, cpuid);
- len = 0;
- ch = sysctlbyname(mib, NULL, &len, NULL, 0);
- error = (ch == -1) ? errno : 0;
- if (error != ENOENT)
- break;
- cpuid++;
- } while (cpuid <= HW_MCA_MAX_CPUID);
- if (error == ENOENT && cpuid > HW_MCA_MAX_CPUID) {
- first++;
- cpuid = 0;
- continue;
- }
- if (error)
- errc(1, error, "%s(1)", mib);
-
- buf = malloc(len);
- if (buf == NULL)
- err(1, "buffer");
-
- if (sysctlbyname(mib, buf, &len, NULL, 0) == -1)
- err(1, "%s(2)", mib);
-
- if (fl_dump)
- dump(buf);
- else
- show(buf, mib);
-
- free(buf);
- count--;
- if (cpuid == HW_MCA_MAX_CPUID) {
- first++;
- cpuid = 0;
- } else
- cpuid++;
- }
- } else {
- fd = open(file, O_RDONLY);
- if (fd == -1)
- err(1, "open(%s)", file);
-
- len = lseek(fd, 0LL, SEEK_END);
- buf = mmap(NULL, len, PROT_READ, 0U, fd, 0LL);
- if (buf == MAP_FAILED)
- err(1, "mmap(%s)", file);
-
- showall(buf, len);
-
- munmap(buf, len);
- close(fd);
- }
-
- return (0);
-}
diff --git a/secure/lib/libcrypto/opensslconf-ia64.h b/secure/lib/libcrypto/opensslconf-ia64.h
deleted file mode 100644
index f3abe66..0000000
--- a/secure/lib/libcrypto/opensslconf-ia64.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/* $FreeBSD$ */
-/* opensslconf.h */
-/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
-
-/* OpenSSL was configured with the following options: */
-#ifndef OPENSSL_DOING_MAKEDEPEND
-
-
-#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
-# define OPENSSL_NO_EC_NISTP_64_GCC_128
-#endif
-#ifndef OPENSSL_NO_GMP
-# define OPENSSL_NO_GMP
-#endif
-#ifndef OPENSSL_NO_JPAKE
-# define OPENSSL_NO_JPAKE
-#endif
-#ifndef OPENSSL_NO_KRB5
-# define OPENSSL_NO_KRB5
-#endif
-#ifndef OPENSSL_NO_MD2
-# define OPENSSL_NO_MD2
-#endif
-#ifndef OPENSSL_NO_SCTP
-# define OPENSSL_NO_SCTP
-#endif
-#ifndef OPENSSL_NO_STORE
-# define OPENSSL_NO_STORE
-#endif
-
-#endif /* OPENSSL_DOING_MAKEDEPEND */
-
-#ifndef OPENSSL_THREADS
-# define OPENSSL_THREADS
-#endif
-#ifndef OPENSSL_NO_ASM
-# define OPENSSL_NO_ASM
-#endif
-#ifndef OPENSSL_NO_STATIC_ENGINE
-# define OPENSSL_NO_STATIC_ENGINE
-#endif
-
-/* The OPENSSL_NO_* macros are also defined as NO_* if the application
- asks for it. This is a transient feature that is provided for those
- who haven't had the time to do the appropriate changes in their
- applications. */
-#ifdef OPENSSL_ALGORITHM_DEFINES
-# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128)
-# define NO_EC_NISTP_64_GCC_128
-# endif
-# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP)
-# define NO_GMP
-# endif
-# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE)
-# define NO_JPAKE
-# endif
-# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
-# define NO_KRB5
-# endif
-# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2)
-# define NO_MD2
-# endif
-# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP)
-# define NO_SCTP
-# endif
-# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE)
-# define NO_STORE
-# endif
-#endif
-
-/* crypto/opensslconf.h.in */
-
-/* Generate 80386 code? */
-#undef I386_ONLY
-
-#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
-#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
-#define ENGINESDIR "/usr/lib/engines"
-#define OPENSSLDIR "/etc/ssl"
-#endif
-#endif
-
-#undef OPENSSL_UNISTD
-#define OPENSSL_UNISTD <unistd.h>
-
-#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
-
-#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
-#define IDEA_INT unsigned int
-#endif
-
-#if defined(HEADER_MD2_H) && !defined(MD2_INT)
-#define MD2_INT unsigned int
-#endif
-
-#if defined(HEADER_RC2_H) && !defined(RC2_INT)
-/* I need to put in a mod for the alpha - eay */
-#define RC2_INT unsigned int
-#endif
-
-#if defined(HEADER_RC4_H)
-#if !defined(RC4_INT)
-/* using int types make the structure larger but make the code faster
- * on most boxes I have tested - up to %20 faster. */
-/*
- * I don't know what does "most" mean, but declaring "int" is a must on:
- * - Intel P6 because partial register stalls are very expensive;
- * - elder Alpha because it lacks byte load/store instructions;
- */
-#define RC4_INT unsigned int
-#endif
-#if !defined(RC4_CHUNK)
-/*
- * This enables code handling data aligned at natural CPU word
- * boundary. See crypto/rc4/rc4_enc.c for further details.
- */
-#undef RC4_CHUNK
-#endif
-#endif
-
-#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG)
-/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
- * %20 speed up (longs are 8 bytes, int's are 4). */
-#ifndef DES_LONG
-#define DES_LONG unsigned int
-#endif
-#endif
-
-#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
-#define CONFIG_HEADER_BN_H
-#undef BN_LLONG
-
-/* Should we define BN_DIV2W here? */
-
-/* Only one for the following should be defined */
-#define SIXTY_FOUR_BIT_LONG
-#undef SIXTY_FOUR_BIT
-#undef THIRTY_TWO_BIT
-#endif
-
-#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
-#define CONFIG_HEADER_RC4_LOCL_H
-/* if this is defined data[i] is used instead of *data, this is a %20
- * speedup on x86 */
-#undef RC4_INDEX
-#endif
-
-#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
-#define CONFIG_HEADER_BF_LOCL_H
-#undef BF_PTR
-#endif /* HEADER_BF_LOCL_H */
-
-#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
-#define CONFIG_HEADER_DES_LOCL_H
-#ifndef DES_DEFAULT_OPTIONS
-/* the following is tweaked from a config script, that is why it is a
- * protected undef/define */
-#ifndef DES_PTR
-#define DES_PTR
-#endif
-
-/* This helps C compiler generate the correct code for multiple functional
- * units. It reduces register dependancies at the expense of 2 more
- * registers */
-#ifndef DES_RISC1
-#undef DES_RISC1
-#endif
-
-#ifndef DES_RISC2
-#define DES_RISC2
-#endif
-
-#if defined(DES_RISC1) && defined(DES_RISC2)
-YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
-#endif
-
-/* Unroll the inner loop, this sometimes helps, sometimes hinders.
- * Very mucy CPU dependant */
-#ifndef DES_UNROLL
-#undef DES_UNROLL
-#endif
-
-/* These default values were supplied by
- * Peter Gutman <pgut001@cs.auckland.ac.nz>
- * They are only used if nothing else has been defined */
-#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
-/* Special defines which change the way the code is built depending on the
- CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
- even newer MIPS CPU's, but at the moment one size fits all for
- optimization options. Older Sparc's work better with only UNROLL, but
- there's no way to tell at compile time what it is you're running on */
-
-#if defined( sun ) /* Newer Sparc's */
-# define DES_PTR
-# define DES_RISC1
-# define DES_UNROLL
-#elif defined( __ultrix ) /* Older MIPS */
-# define DES_PTR
-# define DES_RISC2
-# define DES_UNROLL
-#elif defined( __osf1__ ) /* Alpha */
-# define DES_PTR
-# define DES_RISC2
-#elif defined ( _AIX ) /* RS6000 */
- /* Unknown */
-#elif defined( __hpux ) /* HP-PA */
- /* Unknown */
-#elif defined( __aux ) /* 68K */
- /* Unknown */
-#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
-# define DES_UNROLL
-#elif defined( __sgi ) /* Newer MIPS */
-# define DES_PTR
-# define DES_RISC2
-# define DES_UNROLL
-#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
-# define DES_PTR
-# define DES_RISC1
-# define DES_UNROLL
-#endif /* Systems-specific speed defines */
-#endif
-
-#endif /* DES_DEFAULT_OPTIONS */
-#endif /* HEADER_DES_LOCL_H */
diff --git a/share/dict/freebsd b/share/dict/freebsd
index c97170f..2321038 100644
--- a/share/dict/freebsd
+++ b/share/dict/freebsd
@@ -79,7 +79,6 @@ ISBN
ISDN
ISP
Iomega
-Itanium
JDK
JRE
JSP
diff --git a/share/examples/etc/make.conf b/share/examples/etc/make.conf
index 7676e67..ca0ea36 100644
--- a/share/examples/etc/make.conf
+++ b/share/examples/etc/make.conf
@@ -40,7 +40,6 @@
# (VIA CPUs) c7, c3-2, c3
# AMD64 architecture: amdfam10, opteron-sse3, athlon64-sse3, k8-sse3,
# opteron, athlon64, k8, core2, nocona
-# Intel ia64 architecture: itanium2, itanium
# SPARC-V9 architecture: v9 (generic 64-bit V9), ultrasparc (default
# if omitted), ultrasparc3
# Additionally the following CPU types are recognized by clang:
diff --git a/share/man/man4/acpi.4 b/share/man/man4/acpi.4
index 80c567f..8196c43 100644
--- a/share/man/man4/acpi.4
+++ b/share/man/man4/acpi.4
@@ -580,7 +580,7 @@ and
.Xr iasl 8
utilities and some ACPI knowledge.
.Sh COMPATIBILITY
-ACPI is only found and supported on i386/ia32, ia64, and amd64.
+ACPI is only found and supported on i386/ia32 and amd64.
.Sh SEE ALSO
.Xr kenv 1 ,
.Xr acpi_thermal 4 ,
diff --git a/share/man/man4/aout.4 b/share/man/man4/aout.4
index a15ab97..8e7b02b 100644
--- a/share/man/man4/aout.4
+++ b/share/man/man4/aout.4
@@ -40,7 +40,7 @@ executable format was used before the release of
Since i386 was the only supported architecture at that time,
.Xr a.out 5
executables can only be activated on platforms that support
-execution of i386 code, such as i386, amd64 and (partially) ia64.
+execution of i386 code, such as i386 and amd64.
.Pp
To add kernel support for old syscalls and old syscall invocation methods,
place the following options in the kernel configuration file:
diff --git a/share/man/man4/inet.4 b/share/man/man4/inet.4
index 238cdbd..0b7a108 100644
--- a/share/man/man4/inet.4
+++ b/share/man/man4/inet.4
@@ -56,10 +56,9 @@ protocol.
Internet addresses are four byte quantities, stored in
network standard format (on little endian machines, such as the
.Tn alpha ,
-.Tn amd64 ,
-.Tn i386
+.Tn amd64
and
-.Tn ia64
+.Tn i386
these are word and byte reversed).
The include file
.In netinet/in.h
diff --git a/share/man/man4/smp.4 b/share/man/man4/smp.4
index 890898f..a1b8c09 100644
--- a/share/man/man4/smp.4
+++ b/share/man/man4/smp.4
@@ -39,7 +39,7 @@ kernel implements symmetric multi-processor support.
Support for multi-processor systems is present for all Tier-1
architectures on
.Fx .
-Currently, this includes amd64, i386, ia64, and sparc64.
+Currently, this includes amd64, i386 and sparc64.
Support is enabled using
.Cd options SMP .
It is permissible to use the SMP kernel configuration on non-SMP equipped
@@ -158,6 +158,6 @@ in
.Bsx .
.Pp
.Fx 5.0
-also introduced support for SMP on the ia64 and sparc64 architectures.
+also introduced support for SMP on the sparc64 architecture.
.Sh AUTHORS
.An Steve Passe Aq Mt fsmp@FreeBSD.org
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index 81b2c32..dd4049b 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -1,7 +1,7 @@
.\" DO NOT EDIT-- this file is automatically generated.
-.\" from FreeBSD: head/tools/build/options/makeman 255964 2013-10-01 07:22:04Z des
+.\" from FreeBSD: stable/10/tools/build/options/makeman 255964 2013-10-01 07:22:04Z des
.\" $FreeBSD$
-.Dd June 29, 2014
+.Dd July 4, 2014
.Dt SRC.CONF 5
.Os
.Sh NAME
@@ -78,1071 +78,49 @@ The following list provides a name and short description for variables
that can be used for source builds.
.Bl -tag -width indent
.It Va WITHOUT_ACCT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ACCT 223201 2011-06-17 20:47:44Z ed
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_ACCT 223201 2011-06-17 20:47:44Z ed
Set to not build process accounting tools such as
.Xr accton 8
and
.Xr sa 8 .
.It Va WITHOUT_ACPI
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ACPI 156932 2006-03-21 07:50:50Z ru
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_ACPI 156932 2006-03-21 07:50:50Z ru
Set to not build
.Xr acpiconf 8 ,
.Xr acpidump 8
and related programs.
.It Va WITHOUT_AMD
-.\" from FreeBSD: head/tools/build/options/WITHOUT_AMD 183242 2008-09-21 22:02:26Z sam
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_AMD 183242 2008-09-21 22:02:26Z sam
Set to not build
.Xr amd 8 ,
and related programs.
.It Va WITHOUT_APM
-.\" from FreeBSD: head/tools/build/options/WITHOUT_APM 183242 2008-09-21 22:02:26Z sam
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_APM 183242 2008-09-21 22:02:26Z sam
Set to not build
.Xr apm 8 ,
.Xr apmd 8
and related programs.
.It Va WITHOUT_ARM_EABI
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ARM_EABI 253396 2013-07-16 19:15:19Z andrew
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_ARM_EABI 253396 2013-07-16 19:15:19Z andrew
Set the ARM ABI to OABI.
.It Va WITHOUT_ASSERT_DEBUG
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ASSERT_DEBUG 162215 2006-09-11 13:55:27Z ru
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_ASSERT_DEBUG 162215 2006-09-11 13:55:27Z ru
Set to compile programs and libraries without the
.Xr assert 3
checks.
.It Va WITHOUT_AT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_AT 183242 2008-09-21 22:02:26Z sam
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_AT 183242 2008-09-21 22:02:26Z sam
Set to not build
.Xr at 1
and related utilities.
.It Va WITHOUT_ATM
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ATM 156932 2006-03-21 07:50:50Z ru
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_ATM 156932 2006-03-21 07:50:50Z ru
Set to not build
programs and libraries related to ATM networking.
.It Va WITHOUT_AUDIT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_AUDIT 156932 2006-03-21 07:50:50Z ru
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_AUDIT 156932 2006-03-21 07:50:50Z ru
Set to not build audit support into system programs.
.It Va WITHOUT_AUTHPF
-.\" from FreeBSD: head/tools/build/options/WITHOUT_AUTHPF 156932 2006-03-21 07:50:50Z ru
+.\" from FreeBSD: stable/10/tools/build/options/WITHOUT_AUTHPF 156932 2006-03-21 07:50:50Z ru
Set to not build
.Xr authpf 8 .
-.It Va WITHOUT_BINUTILS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_BINUTILS 266158 2014-05-15 16:51:45Z brooks
-Set to not build or install binutils (as, c++-filt, gconv,
-ld, nm, objcopy, objdump, readelf, size and strip) as part
-of the normal system build.
-The resulting system cannot build programs from source.
-.It Va WITHOUT_BINUTILS_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_BINUTILS_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
-Set to not build binutils (as, c++-filt, gconv,
-ld, nm, objcopy, objdump, readelf, size and strip)
-as part of the bootstrap process.
-.Bf -symbolic
-The option does not work for build targets unless some alternative
-toolchain is provided.
-.Ef
-.It Va WITHOUT_BLUETOOTH
-.\" from FreeBSD: head/tools/build/options/WITHOUT_BLUETOOTH 156932 2006-03-21 07:50:50Z ru
-Set to not build Bluetooth related kernel modules, programs and libraries.
-.It Va WITHOUT_BOOT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_BOOT 156932 2006-03-21 07:50:50Z ru
-Set to not build the boot blocks and loader.
-.It Va WITHOUT_BSD_CPIO
-.\" from FreeBSD: head/tools/build/options/WITHOUT_BSD_CPIO 179813 2008-06-16 05:48:15Z dougb
-Set to not build the BSD licensed version of cpio based on
-.Xr libarchive 3 .
-.It Va WITH_BSD_GREP
-.\" from FreeBSD: head/tools/build/options/WITH_BSD_GREP 222273 2011-05-25 01:04:12Z obrien
-Install BSD-licensed grep as '[ef]grep' instead of GNU grep.
-.It Va WITHOUT_BSNMP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_BSNMP 183306 2008-09-23 16:15:42Z sam
-Set to not build or install
-.Xr bsnmpd 1
-and related libraries and data files.
-.It Va WITHOUT_BZIP2
-.\" from FreeBSD: head/tools/build/options/WITHOUT_BZIP2 174550 2007-12-12 16:43:17Z ru
-Set to not build contributed bzip2 software as a part of the base system.
-.Bf -symbolic
-The option has no effect yet.
-.Ef
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_BZIP2_SUPPORT
-.El
-.It Va WITHOUT_BZIP2_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_BZIP2_SUPPORT 166255 2007-01-26 10:19:08Z delphij
-Set to build some programs without optional bzip2 support.
-.It Va WITHOUT_CALENDAR
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CALENDAR 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr calendar 1 .
-.It Va WITHOUT_CAPSICUM
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CAPSICUM 229319 2012-01-02 21:57:58Z rwatson
-Set to not build Capsicum support into system programs.
-.It Va WITHOUT_CASPER
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CASPER 258838 2013-12-02 08:21:28Z pjd
-Set to not build Casper program and related libraries.
-.It Va WITHOUT_CDDL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CDDL 163861 2006-11-01 09:02:11Z jb
-Set to not build code licensed under Sun's CDDL.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_CTF
-.It
-.Va WITHOUT_ZFS
-.El
-.It Va WITHOUT_CLANG
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG 264660 2014-04-18 17:03:58Z imp
-Set to not build the Clang C/C++ compiler during the regular phase of the build.
-.Pp
-It is a default setting on
-arm/armeb, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32 and sparc64/sparc64.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_CLANG_EXTRAS
-.It
-.Va WITHOUT_CLANG_FULL
-.El
-.It Va WITH_CLANG
-.\" from FreeBSD: head/tools/build/options/WITH_CLANG 264660 2014-04-18 17:03:58Z imp
-Set to build the Clang C/C++ compiler during the normal phase of the build.
-.Pp
-It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386, pc98/i386, powerpc/powerpc and powerpc/powerpc64.
-.It Va WITHOUT_CLANG_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
-Set to not build the Clang C/C++ compiler during the bootstrap phase of the build.
-You must enable wither gcc or clang bootstrap to be able to build the system,
-unless an alternative compiiler is provided via
-XCC.
-.Pp
-It is a default setting on
-arm/armeb, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32 and sparc64/sparc64.
-.It Va WITH_CLANG_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITH_CLANG_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
-Set to build the Clang C/C++ compiler during the bootstrap phase of the build.
-.Pp
-It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386, pc98/i386, powerpc/powerpc and powerpc/powerpc64.
-.It Va WITH_CLANG_EXTRAS
-.\" from FreeBSD: head/tools/build/options/WITH_CLANG_EXTRAS 231057 2012-02-05 23:56:22Z dim
-Set to build additional clang and llvm tools, such as bugpoint.
-.It Va WITHOUT_CLANG_FULL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG_FULL 246259 2013-02-02 22:28:29Z dim
-Set to avoid building the ARCMigrate, Rewriter and StaticAnalyzer components of
-the Clang C/C++ compiler.
-.Pp
-It is a default setting on
-arm/arm, arm/armeb, arm/armv6, arm/armv6hf, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32 and sparc64/sparc64.
-.It Va WITH_CLANG_FULL
-.\" from FreeBSD: head/tools/build/options/WITH_CLANG_FULL 246259 2013-02-02 22:28:29Z dim
-Set to build the ARCMigrate, Rewriter and StaticAnalyzer components of the
-Clang C/C++ compiler.
-.Pp
-It is a default setting on
-amd64/amd64, i386/i386, pc98/i386, powerpc/powerpc and powerpc/powerpc64.
-.It Va WITHOUT_CLANG_IS_CC
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG_IS_CC 242629 2012-11-05 21:53:23Z brooks
-Set to install the GCC compiler as
-.Pa /usr/bin/cc ,
-.Pa /usr/bin/c++
-and
-.Pa /usr/bin/cpp .
-.Pp
-It is a default setting on
-arm/armeb, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
-.It Va WITH_CLANG_IS_CC
-.\" from FreeBSD: head/tools/build/options/WITH_CLANG_IS_CC 235342 2012-05-12 16:12:36Z gjb
-Set to install the Clang C/C++ compiler as
-.Pa /usr/bin/cc ,
-.Pa /usr/bin/c++
-and
-.Pa /usr/bin/cpp .
-.Pp
-It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
-.It Va WITHOUT_CPP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CPP 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr cpp 1 .
-.It Va WITHOUT_CROSS_COMPILER
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CROSS_COMPILER 264660 2014-04-18 17:03:58Z imp
-Set to not build any cross compiler in the cross-tools stage of buildworld.
-If you are compiling a different version of
-.Fx
-than what is installed on the system, you will need to provide an alternate
-compiler with XCC to ensure success.
-If you are compiling with an identical version of
-.Fx
-to the host, this option may be safely used.
-This option may also be safe when the host version of
-.Fx
-is close to the sources being built, but all bets are off if there have
-been any changes to the toolchain between the versions.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_BINUTILS_BOOTSTRAP
-.It
-.Va WITHOUT_CLANG_BOOTSTRAP
-.It
-.Va WITHOUT_GCC_BOOTSTRAP
-.El
-.It Va WITHOUT_CRYPT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CRYPT 156932 2006-03-21 07:50:50Z ru
-Set to not build any crypto code.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_KERBEROS
-.It
-.Va WITHOUT_KERBEROS_SUPPORT
-.It
-.Va WITHOUT_OPENSSH
-.It
-.Va WITHOUT_OPENSSL
-.El
-.Pp
-When set, the following options are also in effect:
-.Pp
-.Bl -inset -compact
-.It Va WITHOUT_GSSAPI
-(unless
-.Va WITH_GSSAPI
-is set explicitly)
-.El
-.It Va WITH_CTF
-.\" from FreeBSD: head/tools/build/options/WITH_CTF 228159 2011-11-30 18:22:44Z fjoe
-Set to compile with CTF (Compact C Type Format) data.
-CTF data encapsulates a reduced form of debugging information
-similar to DWARF and the venerable stabs and is required for DTrace.
-.It Va WITHOUT_CTM
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CTM 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr ctm 1
-and related utilities.
-.It Va WITHOUT_CXX
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CXX 220402 2011-04-06 20:19:07Z uqs
-Set to not build
-.Xr g++ 1
-and related libraries.
-It will also prevent building of
-.Xr gperf 1
-and
-.Xr devd 8 .
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_CLANG
-.It
-.Va WITHOUT_CLANG_EXTRAS
-.It
-.Va WITHOUT_CLANG_FULL
-.It
-.Va WITHOUT_GROFF
-.El
-.It Va WITH_DEBUG_FILES
-.\" from FreeBSD: head/tools/build/options/WITH_DEBUG_FILES 251512 2013-06-07 21:40:02Z emaste
-Set to strip debug info into a separate file for each executable binary
-and shared library.
-The debug files will be placed in a subdirectory of
-.Pa /usr/lib/debug
-and are located automatically by
-.Xr gdb 1 .
-.It Va WITHOUT_DICT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_DICT 156932 2006-03-21 07:50:50Z ru
-Set to not build the Webster dictionary files.
-.It Va WITHOUT_DMAGENT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_DMAGENT 262335 2014-02-22 13:05:23Z bapt
-Set to not build dma Mail Transport Agent
-.It Va WITHOUT_DOCCOMPRESS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_DOCCOMPRESS 266752 2014-05-27 15:52:27Z gjb
-Set to not to install compressed system documentation.
-Only the uncompressed version will be installed.
-.It Va WITHOUT_DYNAMICROOT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_DYNAMICROOT 156932 2006-03-21 07:50:50Z ru
-Set this if you do not want to link
-.Pa /bin
-and
-.Pa /sbin
-dynamically.
-.It Va WITHOUT_ED_CRYPTO
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ED_CRYPTO 235660 2012-05-19 20:05:27Z marcel
-Set to build
-.Xr ed 1
-without support for encryption/decryption.
-.It Va WITH_EISA
-.\" from FreeBSD: head/tools/build/options/WITH_EISA 264654 2014-04-18 16:53:06Z imp
-Set to build EISA kernel modules.
-.It Va WITHOUT_EXAMPLES
-.\" from FreeBSD: head/tools/build/options/WITHOUT_EXAMPLES 156938 2006-03-21 09:06:24Z ru
-Set to avoid installing examples to
-.Pa /usr/share/examples/ .
-.It Va WITHOUT_FDT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_FDT 221539 2011-05-06 19:10:27Z ru
-Set to not build Flattened Device Tree support as part of the base system.
-This includes the device tree compiler (dtc) and libfdt support library.
-.It Va WITHOUT_FLOPPY
-.\" from FreeBSD: head/tools/build/options/WITHOUT_FLOPPY 221540 2011-05-06 19:13:03Z ru
-Set to not build or install programs
-for operating floppy disk driver.
-.It Va WITH_FMAKE
-.\" from FreeBSD: head/tools/build/options/WITH_FMAKE 266752 2014-05-27 15:52:27Z gjb
-Causes the old FreeBSD
-.Xr make 1
-program to be built and installed as fmake.
-.It Va WITHOUT_FMTREE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_FMTREE 261299 2014-01-30 21:37:43Z brooks
-Set to not build and install
-.Pa /usr/sbin/fmtree .
-.It Va WITHOUT_FORTH
-.\" from FreeBSD: head/tools/build/options/WITHOUT_FORTH 156932 2006-03-21 07:50:50Z ru
-Set to build bootloaders without Forth support.
-.It Va WITHOUT_FP_LIBC
-.\" from FreeBSD: head/tools/build/options/WITHOUT_FP_LIBC 156932 2006-03-21 07:50:50Z ru
-Set to build
-.Nm libc
-without floating-point support.
-.It Va WITHOUT_FREEBSD_UPDATE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_FREEBSD_UPDATE 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr freebsd-update 8 .
-.It Va WITHOUT_GAMES
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GAMES 156932 2006-03-21 07:50:50Z ru
-Set to not build games.
-.It Va WITHOUT_GCC
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GCC 264660 2014-04-18 17:03:58Z imp
-Set to not build and install gcc and g++ as part of the normal build process.
-.Pp
-It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf and i386/i386.
-.It Va WITH_GCC
-.\" from FreeBSD: head/tools/build/options/WITH_GCC 255326 2013-09-06 20:49:48Z zeising
-Set to build and install gcc and g++.
-.Pp
-It is a default setting on
-arm/armeb, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, pc98/i386, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
-.It Va WITHOUT_GCC_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GCC_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
-Set to not build gcc and g++ as part of the bootstrap process.
-You must enable wither gcc or clang bootstrap to be able to build the system,
-unless an alternative compiiler is provided via
-XCC.
-.Pp
-It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf and i386/i386.
-.It Va WITH_GCC_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITH_GCC_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
-Set to build gcc and g++ as part of the bootstrap process.
-.Pp
-It is a default setting on
-arm/armeb, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, pc98/i386, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
-.It Va WITHOUT_GCOV
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GCOV 156932 2006-03-21 07:50:50Z ru
-Set to not build the
-.Xr gcov 1
-tool.
-.It Va WITHOUT_GDB
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GDB 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr gdb 1 .
-.It Va WITHOUT_GNU
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GNU 174550 2007-12-12 16:43:17Z ru
-Set to not build contributed GNU software as a part of the base system.
-This option can be useful if the system built must not contain any code
-covered by the GNU Public License due to legal reasons.
-.Bf -symbolic
-The option has no effect yet.
-.Ef
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_GNU_SUPPORT
-.El
-.It Va WITHOUT_GNUCXX
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GNUCXX 255321 2013-09-06 20:08:03Z theraven
-Do not build the GNU C++ stack (g++, libstdc++).
-This is the default on platforms where clang is the system compiler.
-.Pp
-It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
-.It Va WITH_GNUCXX
-.\" from FreeBSD: head/tools/build/options/WITH_GNUCXX 255321 2013-09-06 20:08:03Z theraven
-Build the GNU C++ stack (g++, libstdc++).
-This is the default on platforms where gcc is the system compiler.
-.Pp
-It is a default setting on
-arm/armeb, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
-.It Va WITHOUT_GNU_GREP_COMPAT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GNU_GREP_COMPAT 266752 2014-05-27 15:52:27Z gjb
-Set this option to omit the gnu extentions to grep from being included in
-BSD grep.
-.It Va WITHOUT_GNU_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GNU_SUPPORT 156932 2006-03-21 07:50:50Z ru
-Set to build some programs without optional GNU support.
-.It Va WITHOUT_GPIB
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GPIB 156932 2006-03-21 07:50:50Z ru
-Set to not build GPIB bus support.
-.It Va WITHOUT_GPIO
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GPIO 228081 2011-11-28 17:54:34Z dim
-Set to not build
-.Xr gpioctl 8
-as part of the base system.
-.It Va WITHOUT_GPL_DTC
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GPL_DTC 264515 2014-04-15 20:41:55Z imp
-Set to build the BSD licensed version of the device tree compiler, instead of the
-GPL'd one from elinux.org.
-.It Va WITHOUT_GROFF
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GROFF 218941 2011-02-22 08:13:49Z uqs
-Set to not build
-.Xr groff 1
-and
-.Xr vgrind 1 .
-You should consider installing the textproc/groff port to not break
-.Xr man 1 .
-.It Va WITHOUT_GSSAPI
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GSSAPI 174548 2007-12-12 16:39:32Z ru
-Set to not build libgssapi.
-.It Va WITH_HESIOD
-.\" from FreeBSD: head/tools/build/options/WITH_HESIOD 156932 2006-03-21 07:50:50Z ru
-Set to build Hesiod support.
-.It Va WITHOUT_HTML
-.\" from FreeBSD: head/tools/build/options/WITHOUT_HTML 156932 2006-03-21 07:50:50Z ru
-Set to not build HTML docs.
-.It Va WITHOUT_ICONV
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ICONV 254919 2013-08-26 17:15:56Z antoine
-Set to not build iconv as part of libc.
-.It Va WITHOUT_INET
-.\" from FreeBSD: head/tools/build/options/WITHOUT_INET 221266 2011-04-30 17:58:28Z bz
-Set to not build programs and libraries related to IPv4 networking.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_INET_SUPPORT
-.El
-.It Va WITHOUT_INET6
-.\" from FreeBSD: head/tools/build/options/WITHOUT_INET6 156932 2006-03-21 07:50:50Z ru
-Set to not build
-programs and libraries related to IPv6 networking.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_INET6_SUPPORT
-.El
-.It Va WITHOUT_INET6_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_INET6_SUPPORT 156932 2006-03-21 07:50:50Z ru
-Set to build libraries, programs, and kernel modules without IPv6 support.
-.It Va WITHOUT_INET_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_INET_SUPPORT 221266 2011-04-30 17:58:28Z bz
-Set to build libraries, programs, and kernel modules without IPv4 support.
-.It Va WITHOUT_INFO
-.\" from FreeBSD: head/tools/build/options/WITHOUT_INFO 156932 2006-03-21 07:50:50Z ru
-Set to not make or install
-.Xr info 5
-files.
-.It Va WITHOUT_INSTALLLIB
-.\" from FreeBSD: head/tools/build/options/WITHOUT_INSTALLLIB 174497 2007-12-09 21:56:21Z dougb
-Set this if you do not want to install optional libraries.
-For example when creating a
-.Xr nanobsd 8
-image.
-.It Va WITH_INSTALL_AS_USER
-.\" from FreeBSD: head/tools/build/options/WITH_INSTALL_AS_USER 238021 2012-07-02 20:24:01Z marcel
-Set to make install targets succeed for non-root users by installing
-files with owner and group attributes set to that of the user running
-the
-.Xr make 1
-command.
-The user still has to set the
-.Va DESTDIR
-variable to point to a directory where the user has write permissions.
-.It Va WITHOUT_IPFILTER
-.\" from FreeBSD: head/tools/build/options/WITHOUT_IPFILTER 156932 2006-03-21 07:50:50Z ru
-Set to not build IP Filter package.
-.It Va WITHOUT_IPFW
-.\" from FreeBSD: head/tools/build/options/WITHOUT_IPFW 183242 2008-09-21 22:02:26Z sam
-Set to not build IPFW tools.
-.It Va WITHOUT_JAIL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_JAIL 249966 2013-04-27 04:09:09Z eadler
-Set to not build tools for the support of jails; e.g.,
-.Xr jail 8 .
-.It Va WITHOUT_KDUMP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_KDUMP 240690 2012-09-19 11:38:37Z zeising
-Set to not build
-.Xr kdump 1
-and
-.Xr truss 1 .
-.It Va WITHOUT_KERBEROS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_KERBEROS 174549 2007-12-12 16:42:03Z ru
-Set this if you do not want to build Kerberos 5 (KTH Heimdal).
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_KERBEROS_SUPPORT
-.El
-.Pp
-When set, the following options are also in effect:
-.Pp
-.Bl -inset -compact
-.It Va WITHOUT_GSSAPI
-(unless
-.Va WITH_GSSAPI
-is set explicitly)
-.El
-.It Va WITHOUT_KERBEROS_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_KERBEROS_SUPPORT 251794 2013-06-15 20:29:07Z eadler
-Set to build some programs without Kerberos support, like
-.Xr ssh 1 ,
-.Xr telnet 1 ,
-.Xr sshd 8 ,
-and
-.Xr telnetd 8 .
-.It Va WITHOUT_KVM
-.\" from FreeBSD: head/tools/build/options/WITHOUT_KVM 174550 2007-12-12 16:43:17Z ru
-Set to not build the
-.Nm libkvm
-library as a part of the base system.
-.Bf -symbolic
-The option has no effect yet.
-.Ef
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_KVM_SUPPORT
-.El
-.It Va WITHOUT_KVM_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_KVM_SUPPORT 170644 2007-06-13 02:08:04Z sepotvin
-Set to build some programs without optional
-.Nm libkvm
-support.
-.It Va WITHOUT_LDNS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LDNS 255591 2013-09-15 13:11:13Z des
-Setting this variable will prevent the LDNS library from being built.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_LDNS_UTILS
-.It
-.Va WITHOUT_UNBOUND
-.El
-.It Va WITHOUT_LDNS_UTILS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LDNS_UTILS 255850 2013-09-24 14:33:31Z des
-Setting this variable will prevent building the LDNS utilities
-.Xr drill 1
-and
-.Xr host 1 .
-.It Va WITHOUT_LEGACY_CONSOLE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LEGACY_CONSOLE 249966 2013-04-27 04:09:09Z eadler
-Set to not build programs that support a legacy PC console; e.g.,
-.Xr kbdcontrol 8
-and
-.Xr vidcontrol 8 .
-.It Va WITHOUT_LIB32
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LIB32 156932 2006-03-21 07:50:50Z ru
-On amd64, set to not build 32-bit library set and a
-.Nm ld-elf32.so.1
-runtime linker.
-.It Va WITHOUT_LIBCPLUSPLUS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LIBCPLUSPLUS 246262 2013-02-02 22:42:46Z dim
-Set to avoid building libcxxrt and libc++.
-.It Va WITHOUT_LIBPTHREAD
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LIBPTHREAD 188848 2009-02-20 11:09:55Z mtm
-Set to not build the
-.Nm libpthread
-providing library,
-.Nm libthr .
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_LIBTHR
-.El
-.It Va WITHOUT_LIBTHR
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LIBTHR 156932 2006-03-21 07:50:50Z ru
-Set to not build the
-.Nm libthr
-(1:1 threading)
-library.
-.It Va WITH_LLDB
-.\" from FreeBSD: head/tools/build/options/WITH_LLDB 255722 2013-09-20 01:52:02Z emaste
-Set to build the LLDB debugger.
-.It Va WITHOUT_LOCALES
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LOCALES 156932 2006-03-21 07:50:50Z ru
-Set to not build localization files; see
-.Xr locale 1 .
-.It Va WITHOUT_LOCATE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LOCATE 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr locate 1
-and related programs.
-.It Va WITHOUT_LPR
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LPR 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr lpr 1
-and related programs.
-.It Va WITHOUT_LS_COLORS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LS_COLORS 235660 2012-05-19 20:05:27Z marcel
-Set to build
-.Xr ls 1
-without support for colors to distinguish file types.
-.It Va WITHOUT_LZMA_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_LZMA_SUPPORT 245171 2013-01-08 18:37:12Z obrien
-Set to build some programs without optional lzma compression support.
-.It Va WITHOUT_MAIL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_MAIL 183242 2008-09-21 22:02:26Z sam
-Set to not build any mail support (MUA or MTA).
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_DMAGENT
-.It
-.Va WITHOUT_MAILWRAPPER
-.It
-.Va WITHOUT_SENDMAIL
-.El
-.It Va WITHOUT_MAILWRAPPER
-.\" from FreeBSD: head/tools/build/options/WITHOUT_MAILWRAPPER 156932 2006-03-21 07:50:50Z ru
-Set to not build the
-.Xr mailwrapper 8
-MTA selector.
-.It Va WITHOUT_MAKE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_MAKE 183242 2008-09-21 22:02:26Z sam
-Set to not install
-.Xr make 1
-and related support files.
-.It Va WITHOUT_MAN
-.\" from FreeBSD: head/tools/build/options/WITHOUT_MAN 156932 2006-03-21 07:50:50Z ru
-Set to not build manual pages.
-When set, the following options are also in effect:
-.Pp
-.Bl -inset -compact
-.It Va WITHOUT_MAN_UTILS
-(unless
-.Va WITH_MAN_UTILS
-is set explicitly)
-.El
-.It Va WITHOUT_MANCOMPRESS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_MANCOMPRESS 266752 2014-05-27 15:52:27Z gjb
-Set to not to install compressed man pages.
-Only the uncompressed versions will be installed.
-.It Va WITHOUT_MAN_UTILS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_MAN_UTILS 208322 2010-05-20 00:07:21Z jkim
-Set to not build utilities for manual pages,
-.Xr apropos 1 ,
-.Xr catman 1 ,
-.Xr makewhatis 1 ,
-.Xr man 1 ,
-.Xr whatis 1 ,
-.Xr manctl 8 ,
-and related support files.
-.It Va WITH_NAND
-.\" from FreeBSD: head/tools/build/options/WITH_NAND 235537 2012-05-17 10:11:18Z gber
-Set to build the NAND Flash components.
-.It Va WITHOUT_NDIS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NDIS 183242 2008-09-21 22:02:26Z sam
-Set to not build programs and libraries
-related to NDIS emulation support.
-.It Va WITHOUT_NETCAT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NETCAT 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr nc 1
-utility.
-.It Va WITHOUT_NETGRAPH
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NETGRAPH 183242 2008-09-21 22:02:26Z sam
-Set to not build applications to support
-.Xr netgraph 4 .
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_ATM
-.It
-.Va WITHOUT_BLUETOOTH
-.It
-.Va WITHOUT_NETGRAPH_SUPPORT
-.El
-.It Va WITHOUT_NETGRAPH_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NETGRAPH_SUPPORT 183305 2008-09-23 16:11:15Z sam
-Set to build libraries, programs, and kernel modules without netgraph support.
-.It Va WITHOUT_NIS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NIS 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr NIS 8
-support and related programs.
-If set, you might need to adopt your
-.Xr nsswitch.conf 5
-and remove
-.Sq nis
-entries.
-.It Va WITHOUT_NLS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NLS 156932 2006-03-21 07:50:50Z ru
-Set to not build NLS catalogs.
-.It Va WITHOUT_NLS_CATALOGS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NLS_CATALOGS 156932 2006-03-21 07:50:50Z ru
-Set to not build NLS catalog support for
-.Xr csh 1 .
-.It Va WITHOUT_NS_CACHING
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NS_CACHING 172803 2007-10-19 14:01:25Z ru
-Set to disable name caching in the
-.Pa nsswitch
-subsystem.
-The generic caching daemon,
-.Xr nscd 8 ,
-will not be built either if this option is set.
-.It Va WITHOUT_NTP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_NTP 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr ntpd 8
-and related programs.
-.It Va WITH_OFED
-.\" from FreeBSD: head/tools/build/options/WITH_OFED 228081 2011-11-28 17:54:34Z dim
-Set to build the
-.Dq "OpenFabrics Enterprise Distribution"
-Infiniband software stack.
-.It Va WITH_OPENLDAP
-.\" from FreeBSD: head/tools/build/options/WITH_OPENLDAP 264902 2014-04-24 23:17:31Z imp
-Enable building openldap support for kerberos.
-.It Va WITHOUT_OPENSSH
-.\" from FreeBSD: head/tools/build/options/WITHOUT_OPENSSH 156932 2006-03-21 07:50:50Z ru
-Set to not build OpenSSH.
-.It Va WITH_OPENSSH_NONE_CIPHER
-.\" from FreeBSD: head/tools/build/options/WITH_OPENSSH_NONE_CIPHER 245527 2013-01-17 01:51:04Z bz
-Set to include the "None" cipher support in OpenSSH and its libraries.
-Additional adjustments may need to be done to system configuration
-files, such as
-.Xr sshd_config 5 ,
-to enable this cipher.
-Please see
-.Pa /usr/src/crypto/openssh/README.hpn
-for full details.
-.It Va WITHOUT_OPENSSL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_OPENSSL 156932 2006-03-21 07:50:50Z ru
-Set to not build OpenSSL.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_KERBEROS
-.It
-.Va WITHOUT_KERBEROS_SUPPORT
-.It
-.Va WITHOUT_OPENSSH
-.El
-.Pp
-When set, the following options are also in effect:
-.Pp
-.Bl -inset -compact
-.It Va WITHOUT_GSSAPI
-(unless
-.Va WITH_GSSAPI
-is set explicitly)
-.El
-.It Va WITHOUT_PAM
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PAM 174550 2007-12-12 16:43:17Z ru
-Set to not build PAM library and modules.
-.Bf -symbolic
-This option is deprecated and does nothing.
-.Ef
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_PAM_SUPPORT
-.El
-.It Va WITHOUT_PAM_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PAM_SUPPORT 156932 2006-03-21 07:50:50Z ru
-Set to build some programs without PAM support, particularly
-.Xr ftpd 8
-and
-.Xr ppp 8 .
-.It Va WITHOUT_PC_SYSINSTALL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PC_SYSINSTALL 245606 2013-01-18 15:57:09Z eadler
-Set to not build
-.Xr pc-sysinstall 8
-and related programs.
-.It Va WITHOUT_PF
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PF 156932 2006-03-21 07:50:50Z ru
-Set to not build PF firewall package.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_AUTHPF
-.El
-.It Va WITH_PIE
-.\" from FreeBSD: head/tools/build/options/WITH_PIE 267233 2014-06-08 17:29:31Z bdrewery
-Enable building of Position-Independent Executables (PIEs).
-.It Va WITHOUT_PKGBOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PKGBOOTSTRAP 258924 2013-12-04 15:58:42Z bdrewery
-Set to not build
-.Xr pkg 7
-bootstrap tool.
-.It Va WITHOUT_PMC
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PMC 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr pmccontrol 8
-and related programs.
-.It Va WITHOUT_PORTSNAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PORTSNAP 183242 2008-09-21 22:02:26Z sam
-Set to not build or install
-.Xr portsnap 8
-and related files.
-.It Va WITHOUT_PPP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PPP 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr ppp 8
-and related programs.
-.It Va WITHOUT_PROFILE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_PROFILE 228196 2011-12-02 09:09:54Z fjoe
-Set to avoid compiling profiled libraries.
-.It Va WITHOUT_QUOTAS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_QUOTAS 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr quota 8
-and related programs.
-.It Va WITHOUT_RCMDS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_RCMDS 156932 2006-03-21 07:50:50Z ru
-Disable building of the
-.Bx
-r-commands.
-This includes
-.Xr rlogin 1 ,
-.Xr rsh 1 ,
-etc.
-.It Va WITHOUT_RCS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_RCS 256198 2013-10-09 17:07:20Z gjb
-Set to not build
-.Xr rcs 1
-and related utilities.
-.It Va WITHOUT_RESCUE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_RESCUE 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr rescue 8 .
-.It Va WITHOUT_ROUTED
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ROUTED 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr routed 8
-utility.
-.It Va WITHOUT_SENDMAIL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SENDMAIL 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr sendmail 8
-and related programs.
-.It Va WITHOUT_SETUID_LOGIN
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SETUID_LOGIN 156932 2006-03-21 07:50:50Z ru
-Set this to disable the installation of
-.Xr login 1
-as a set-user-ID root program.
-.It Va WITHOUT_SHAREDOCS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SHAREDOCS 156932 2006-03-21 07:50:50Z ru
-Set to not build the
-.Bx 4.4
-legacy docs.
-.It Va WITH_SHARED_TOOLCHAIN
-.\" from FreeBSD: head/tools/build/options/WITH_SHARED_TOOLCHAIN 235342 2012-05-12 16:12:36Z gjb
-Set to build the toolchain binaries shared.
-The set includes
-.Xr cc 1 ,
-.Xr make 1
-and necessary utilities like assembler, linker and library archive manager.
-.It Va WITH_SORT_THREADS
-.\" from FreeBSD: head/tools/build/options/WITH_SORT_THREADS 264158 2014-04-05 18:00:45Z imp
-Set to enable threads in
-.Xr sort 1 .
-.It Va WITHOUT_SOURCELESS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SOURCELESS 230972 2012-02-04 00:54:43Z rmh
-Set to not build kernel modules that include sourceless code (either microcode or native code for host CPU).
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_SOURCELESS_HOST
-.It
-.Va WITHOUT_SOURCELESS_UCODE
-.El
-.It Va WITHOUT_SOURCELESS_HOST
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SOURCELESS_HOST 230972 2012-02-04 00:54:43Z rmh
-Set to not build kernel modules that include sourceless native code for host CPU.
-.It Va WITHOUT_SOURCELESS_UCODE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SOURCELESS_UCODE 230972 2012-02-04 00:54:43Z rmh
-Set to not build kernel modules that include sourceless microcode.
-.It Va WITHOUT_SSP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SSP 180012 2008-06-25 21:33:28Z ru
-Set to not build world with propolice stack smashing protection.
-.It Va WITH_SVN
-.\" from FreeBSD: head/tools/build/options/WITH_SVN 252561 2013-07-03 12:36:47Z zeising
-Set to install
-.Xr svnlite 1
-as
-.Xr svn 1 .
-.It Va WITHOUT_SVNLITE
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SVNLITE 252561 2013-07-03 12:36:47Z zeising
-Set to not build
-.Xr svnlite 1
-and related programs.
-.It Va WITHOUT_SYMVER
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SYMVER 169649 2007-05-17 05:03:24Z deischen
-Set to disable symbol versioning when building shared libraries.
-.It Va WITHOUT_SYSCALL_COMPAT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SYSCALL_COMPAT 265826 2014-05-10 16:37:28Z imp
-Do not include some compatible syscall wrappers in libc.
-.It Va WITHOUT_SYSCONS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SYSCONS 156932 2006-03-21 07:50:50Z ru
-Set to not build
-.Xr syscons 4
-support files such as keyboard maps, fonts, and screen output maps.
-.It Va WITHOUT_SYSINSTALL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_SYSINSTALL 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr sysinstall 8
-and related programs.
-.It Va WITHOUT_TCSH
-.\" from FreeBSD: head/tools/build/options/WITHOUT_TCSH 156932 2006-03-21 07:50:50Z ru
-Set to not build and install
-.Pa /bin/csh
-(which is
-.Xr tcsh 1 ) .
-.It Va WITHOUT_TELNET
-.\" from FreeBSD: head/tools/build/options/WITHOUT_TELNET 183242 2008-09-21 22:02:26Z sam
-Set to not build
-.Xr telnet 8
-and related programs.
-.It Va WITH_TESTS
-.\" from FreeBSD: head/tools/build/options/WITH_TESTS 267432 2014-06-13 00:05:06Z gjb
-Set to install the
-.Fx
-Test Suite in
-.Pa /usr/tests/ .
-See
-.Xr tests 7
-for more details.
-.It Va WITHOUT_TEXTPROC
-.\" from FreeBSD: head/tools/build/options/WITHOUT_TEXTPROC 183242 2008-09-21 22:02:26Z sam
-Set to not build
-programs used for text processing.
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_GROFF
-.El
-.It Va WITHOUT_TOOLCHAIN
-.\" from FreeBSD: head/tools/build/options/WITHOUT_TOOLCHAIN 174550 2007-12-12 16:43:17Z ru
-Set to not install
-programs used for program development,
-compilers, debuggers etc.
-.Bf -symbolic
-The option does not work for build targets.
-.Ef
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_BINUTILS
-.It
-.Va WITHOUT_CLANG
-.It
-.Va WITHOUT_CLANG_EXTRAS
-.It
-.Va WITHOUT_CLANG_FULL
-.It
-.Va WITHOUT_GCC
-.It
-.Va WITHOUT_GDB
-.El
-.It Va WITHOUT_UNBOUND
-.\" from FreeBSD: head/tools/build/options/WITHOUT_UNBOUND 255597 2013-09-15 14:51:23Z des
-Set to not build
-.Xr unbound 8
-and related programs.
-.It Va WITHOUT_USB
-.\" from FreeBSD: head/tools/build/options/WITHOUT_USB 156932 2006-03-21 07:50:50Z ru
-Set to not build USB-related programs and libraries.
-.It Va WITH_USB_GADGET_EXAMPLES
-.\" from FreeBSD: head/tools/build/options/WITH_USB_GADGET_EXAMPLES 254919 2013-08-26 17:15:56Z antoine
-Set to build USB gadget kernel modules.
-.It Va WITHOUT_UTMPX
-.\" from FreeBSD: head/tools/build/options/WITHOUT_UTMPX 231530 2012-02-11 20:28:42Z ed
-Set to not build user accounting tools such as
-.Xr last 1 ,
-.Xr users 1 ,
-.Xr who 1 ,
-.Xr ac 8 ,
-.Xr lastlogin 8
-and
-.Xr utx 8 .
-.It Va WITHOUT_VI
-.\" from FreeBSD: head/tools/build/options/WITHOUT_VI 264903 2014-04-24 23:17:40Z imp
-Set to not build and install vi, view, ex and related programs.
-.It Va WITHOUT_VT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_VT 268022 2014-06-30 00:20:12Z emaste
-Set to not build
-.Xr vt 4
-support files (fonts and keymaps).
-.It Va WITHOUT_WARNS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_WARNS 265830 2014-05-10 16:37:53Z imp
-Set this to not add warning flags to the compiler invocations.
-Useful as a temporary workaround when code enters the tree
-which triggers warnings in environments that differ from the
-original develoepr.
-.It Va WITHOUT_WIRELESS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_WIRELESS 183242 2008-09-21 22:02:26Z sam
-Set to not build programs used for 802.11 wireless networks; especially
-.Xr wpa_supplicant 8
-and
-.Xr hostapd 8 .
-When set, it also enforces the following options:
-.Pp
-.Bl -item -compact
-.It
-.Va WITHOUT_WIRELESS_SUPPORT
-.El
-.It Va WITHOUT_WIRELESS_SUPPORT
-.\" from FreeBSD: head/tools/build/options/WITHOUT_WIRELESS_SUPPORT 183305 2008-09-23 16:11:15Z sam
-Set to build libraries, programs, and kernel modules without
-802.11 wireless support.
-.It Va WITHOUT_WPA_SUPPLICANT_EAPOL
-.\" from FreeBSD: head/tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL 156932 2006-03-21 07:50:50Z ru
-Build
-.Xr wpa_supplicant 8
-without support for the IEEE 802.1X protocol and without
-support for EAP-PEAP, EAP-TLS, EAP-LEAP, and EAP-TTLS
-protocols (usable only via 802.1X).
-.It Va WITHOUT_ZFS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ZFS 168409 2007-04-06 02:13:30Z pjd
-Set to not build ZFS file system.
-.It Va WITHOUT_ZONEINFO
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ZONEINFO 235342 2012-05-12 16:12:36Z gjb
-Set to not build the timezone database.
-.El
-.Sh FILES
-.Bl -tag -compact -width Pa
-.It Pa /etc/src.conf
-.It Pa /usr/share/mk/bsd.own.mk
-.El
-.Sh SEE ALSO
-.Xr make 1 ,
-.Xr make.conf 5 ,
-.Xr build 7 ,
-.Xr ports 7
-.Sh HISTORY
-The
-.Nm
-file appeared in
-.Fx 7.0 .
-.Sh AUTHORS
-This manual page was autogenerated.
diff --git a/share/man/man9/atomic.9 b/share/man/man9/atomic.9
index 44d800e..a9ce842 100644
--- a/share/man/man9/atomic.9
+++ b/share/man/man9/atomic.9
@@ -169,10 +169,6 @@ On the
.Tn i386
architecture, the cache coherency model requires that the hardware perform
this task, thus the atomic operations are atomic across multiple processors.
-On the
-.Tn ia64
-architecture, coherency is only guaranteed for pages that are configured to
-using a caching policy of either uncached or write back.
.Ss Semantics
This section describes the semantics of each operation using a C like notation.
.Bl -hang
diff --git a/share/man/man9/get_cyclecount.9 b/share/man/man9/get_cyclecount.9
index afdb5d2..ed57e4e 100644
--- a/share/man/man9/get_cyclecount.9
+++ b/share/man/man9/get_cyclecount.9
@@ -78,11 +78,6 @@ processors use the
.Li TSC
register.
.Pp
-The
-.Tn IA64
-processors use the
-.Li AR.ITC
-register.
.Sh SEE ALSO
.Xr binuptime 9
.Sh HISTORY
diff --git a/share/mk/bsd.cpu.mk b/share/mk/bsd.cpu.mk
index 553351c..f858a49 100644
--- a/share/mk/bsd.cpu.mk
+++ b/share/mk/bsd.cpu.mk
@@ -10,8 +10,6 @@ _CPUCFLAGS =
MACHINE_CPU = i486
. elif ${MACHINE_CPUARCH} == "amd64"
MACHINE_CPU = amd64 sse2 sse mmx
-. elif ${MACHINE_CPUARCH} == "ia64"
-MACHINE_CPU = itanium
. elif ${MACHINE_CPUARCH} == "powerpc"
MACHINE_CPU = aim
. elif ${MACHINE_CPUARCH} == "sparc64"
@@ -234,10 +232,6 @@ MACHINE_CPU = ssse3 sse3
MACHINE_CPU = sse3
. endif
MACHINE_CPU += amd64 sse2 sse mmx
-. elif ${MACHINE_CPUARCH} == "ia64"
-. if ${CPUTYPE} == "itanium"
-MACHINE_CPU = itanium
-. endif
. elif ${MACHINE_ARCH} == "powerpc"
. if ${CPUTYPE} == "e500"
MACHINE_CPU = booke
diff --git a/share/mk/bsd.endian.mk b/share/mk/bsd.endian.mk
index 15306a0..565d1aa 100644
--- a/share/mk/bsd.endian.mk
+++ b/share/mk/bsd.endian.mk
@@ -2,7 +2,6 @@
.if ${MACHINE_ARCH} == "amd64" || \
${MACHINE_ARCH} == "i386" || \
- ${MACHINE_ARCH} == "ia64" || \
${MACHINE_ARCH} == "arm" || \
${MACHINE_ARCH} == "armv6" || \
${MACHINE_ARCH} == "armv6hf" || \
diff --git a/share/mk/bsd.sys.mk b/share/mk/bsd.sys.mk
index f019e5e..58d6171 100644
--- a/share/mk/bsd.sys.mk
+++ b/share/mk/bsd.sys.mk
@@ -126,12 +126,12 @@ CFLAGS.clang+= -fno-dwarf2-cfi-asm
# but not yet.
CXXFLAGS.clang+= -Wno-c++11-extensions
-.if ${MK_SSP} != "no" && ${MACHINE_CPUARCH} != "ia64" && \
+.if ${MK_SSP} != "no" && \
${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
# Don't use -Wstack-protector as it breaks world with -Werror.
SSP_CFLAGS?= -fstack-protector
CFLAGS+= ${SSP_CFLAGS}
-.endif # SSP && !IA64 && !ARM && !MIPS
+.endif # SSP && !ARM && !MIPS
# Allow user-specified additional warning flags, plus compiler specific flag overrides.
# Unless we've overriden this...
diff --git a/sys/Makefile b/sys/Makefile
index a440e72..dc1d5e9 100644
--- a/sys/Makefile
+++ b/sys/Makefile
@@ -8,7 +8,7 @@ CSCOPEDIRS= boot bsm cam cddl compat conf contrib crypto ddb dev fs gdb \
pci rpc security sys ufs vm xdr xen ${CSCOPE_ARCHDIR}
.if !defined(CSCOPE_ARCHDIR)
.if defined(ALL_ARCH)
-CSCOPE_ARCHDIR = amd64 arm i386 ia64 mips pc98 powerpc sparc64 x86
+CSCOPE_ARCHDIR = amd64 arm i386 mips pc98 powerpc sparc64 x86
.else
CSCOPE_ARCHDIR = ${MACHINE}
.if ${MACHINE} != ${MACHINE_CPUARCH}
diff --git a/sys/boot/Makefile.ia64 b/sys/boot/Makefile.ia64
deleted file mode 100644
index 256201d..0000000
--- a/sys/boot/Makefile.ia64
+++ /dev/null
@@ -1,4 +0,0 @@
-# $FreeBSD$
-
-SUBDIR+= efi
-SUBDIR+= zfs
diff --git a/sys/boot/common/Makefile.inc b/sys/boot/common/Makefile.inc
index 2a4d561..5aae7548 100644
--- a/sys/boot/common/Makefile.inc
+++ b/sys/boot/common/Makefile.inc
@@ -7,8 +7,6 @@ SRCS+= module.c panic.c
.if ${MACHINE} == "i386" || ${MACHINE_CPUARCH} == "amd64"
SRCS+= load_elf32.c load_elf32_obj.c reloc_elf32.c
SRCS+= load_elf64.c load_elf64_obj.c reloc_elf64.c
-.elif ${MACHINE_CPUARCH} == "ia64"
-SRCS+= load_elf64.c load_elf64_obj.c reloc_elf64.c
.elif ${MACHINE} == "pc98"
SRCS+= load_elf32.c load_elf32_obj.c reloc_elf32.c
.elif ${MACHINE_CPUARCH} == "arm"
diff --git a/sys/boot/efi/include/amd64/pe.h b/sys/boot/efi/include/amd64/pe.h
index 1120464..f8033c5 100644
--- a/sys/boot/efi/include/amd64/pe.h
+++ b/sys/boot/efi/include/amd64/pe.h
@@ -498,7 +498,6 @@ typedef struct _IMAGE_BASE_RELOCATION {
#define IMAGE_REL_BASED_HIGHLOW 3
#define IMAGE_REL_BASED_HIGHADJ 4
#define IMAGE_REL_BASED_MIPS_JMPADDR 5
-#define IMAGE_REL_BASED_IA64_IMM64 9
#define IMAGE_REL_BASED_DIR64 10
//
diff --git a/sys/boot/efi/include/efiapi.h b/sys/boot/efi/include/efiapi.h
index 187fe29..b955338 100644
--- a/sys/boot/efi/include/efiapi.h
+++ b/sys/boot/efi/include/efiapi.h
@@ -314,10 +314,6 @@ EFI_STATUS
#define EFI_IMAGE_MACHINE_IA32 0x014c
#endif
-#if !defined(EFI_IMAGE_MACHINE_IA64)
-#define EFI_IMAGE_MACHINE_IA64 0x0200
-#endif
-
#if !defined(EFI_IMAGE_MACHINE_EBC)
#define EFI_IMAGE_MACHINE_EBC 0x0EBC
#endif
diff --git a/sys/boot/efi/include/i386/pe.h b/sys/boot/efi/include/i386/pe.h
index 0381a44..e2ae25c 100644
--- a/sys/boot/efi/include/i386/pe.h
+++ b/sys/boot/efi/include/i386/pe.h
@@ -498,7 +498,6 @@ typedef struct _IMAGE_BASE_RELOCATION {
#define IMAGE_REL_BASED_HIGHLOW 3
#define IMAGE_REL_BASED_HIGHADJ 4
#define IMAGE_REL_BASED_MIPS_JMPADDR 5
-#define IMAGE_REL_BASED_IA64_IMM64 9
#define IMAGE_REL_BASED_DIR64 10
//
diff --git a/sys/boot/efi/include/ia64/efibind.h b/sys/boot/efi/include/ia64/efibind.h
deleted file mode 100644
index 21f0d25..0000000
--- a/sys/boot/efi/include/ia64/efibind.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/* $FreeBSD$ */
-/*++
-
-Copyright (c) 1999 - 2003 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efefind.h
-
-Abstract:
-
- EFI to compile bindings
-
-
-
-
-Revision History
-
---*/
-
-#pragma pack()
-
-
-#ifdef __FreeBSD__
-#include <sys/stdint.h>
-#else
-//
-// Basic int types of various widths
-//
-
-#if (__STDC_VERSION__ < 199901L )
-
- // No ANSI C 1999/2000 stdint.h integer width declarations
-
- #if _MSC_EXTENSIONS
-
- // Use Microsoft C compiler integer width declarations
-
- typedef unsigned __int64 uint64_t;
- typedef __int64 int64_t;
- typedef unsigned __int32 uint32_t;
- typedef __int32 int32_t;
- typedef unsigned __int16 uint16_t;
- typedef __int16 int16_t;
- typedef unsigned __int8 uint8_t;
- typedef __int8 int8_t;
- #else
- #ifdef UNIX_LP64
-
- // Use LP64 programming model from C_FLAGS for integer width declarations
-
- typedef unsigned long uint64_t;
- typedef long int64_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #else
-
- // Assume P64 programming model from C_FLAGS for integer width declarations
-
- typedef unsigned long long uint64_t;
- typedef long long int64_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #endif
- #endif
-#endif
-#endif /* __FreeBSD__ */
-
-//
-// Basic EFI types of various widths
-//
-
-
-typedef uint64_t UINT64;
-typedef int64_t INT64;
-typedef uint32_t UINT32;
-typedef int32_t INT32;
-typedef uint16_t UINT16;
-typedef int16_t INT16;
-typedef uint8_t UINT8;
-typedef int8_t INT8;
-
-
-#undef VOID
-#define VOID void
-
-
-typedef int64_t INTN;
-typedef uint64_t UINTN;
-
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// BugBug: Code to debug
-//
-#define BIT63 0x8000000000000000
-
-#define PLATFORM_IOBASE_ADDRESS (0xffffc000000 | BIT63)
-#define PORT_TO_MEMD(_Port) (PLATFORM_IOBASE_ADDRESS | ( ( ( (_Port) & 0xfffc) << 10 ) | ( (_Port) & 0x0fff) ) )
-
-//
-// Macro's with casts make this much easier to use and read.
-//
-#define PORT_TO_MEM8D(_Port) (*(UINT8 *)(PORT_TO_MEMD(_Port)))
-#define POST_CODE(_Data) (PORT_TO_MEM8D(0x80) = (_Data))
-//
-// BugBug: End Debug Code!!!
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-#define EFIERR(a) (0x8000000000000000 | a)
-#define EFI_ERROR_MASK 0x8000000000000000
-#define EFIERR_OEM(a) (0xc000000000000000 | a)
-
-#define BAD_POINTER 0xFBFBFBFBFBFBFBFB
-#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFF
-
-#pragma intrinsic (__break)
-#define BREAKPOINT() __break(0)
-
-//
-// Pointers must be aligned to these address to function
-// you will get an alignment fault if this value is less than 8
-//
-#define MIN_ALIGNMENT_SIZE 8
-
-#define ALIGN_VARIABLE(Value , Adjustment) \
- (UINTN) Adjustment = 0; \
- if((UINTN)Value % MIN_ALIGNMENT_SIZE) \
- (UINTN)Adjustment = MIN_ALIGNMENT_SIZE - ((UINTN)Value % MIN_ALIGNMENT_SIZE); \
- Value = (UINTN)Value + (UINTN)Adjustment
-
-//
-// Define macros to create data structure signatures.
-//
-
-#define EFI_SIGNATURE_16(A,B) ((A) | (B<<8))
-#define EFI_SIGNATURE_32(A,B,C,D) (EFI_SIGNATURE_16(A,B) | (EFI_SIGNATURE_16(C,D) << 16))
-#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) | ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) << 32))
-
-//
-// EFIAPI - prototype calling convention for EFI function pointers
-// BOOTSERVICE - prototype for implementation of a boot service interface
-// RUNTIMESERVICE - prototype for implementation of a runtime service interface
-// RUNTIMEFUNCTION - prototype for implementation of a runtime function that is not a service
-// RUNTIME_CODE - pragma macro for declaring runtime code
-//
-
-#ifndef EFIAPI // Forces EFI calling conventions reguardless of compiler options
- #if _MSC_EXTENSIONS
- #define EFIAPI __cdecl // Force C calling convention for Microsoft C compiler
- #else
- #define EFIAPI // Substitute expresion to force C calling convention
- #endif
-#endif
-
-#define BOOTSERVICE
-#define RUNTIMESERVICE
-#define RUNTIMEFUNCTION
-
-#define RUNTIME_CODE(a) alloc_text("rtcode", a)
-#define BEGIN_RUNTIME_DATA() data_seg("rtdata")
-#define END_RUNTIME_DATA() data_seg()
-
-#define VOLATILE volatile
-
-//
-// BugBug: Need to find out if this is portable accross compliers.
-//
-void __mfa (void);
-#pragma intrinsic (__mfa)
-#define MEMORY_FENCE() __mfa()
-
-#ifdef EFI_NO_INTERFACE_DECL
- #define EFI_FORWARD_DECLARATION(x)
- #define EFI_INTERFACE_DECL(x)
-#else
- #define EFI_FORWARD_DECLARATION(x) typedef struct _##x x
- #define EFI_INTERFACE_DECL(x) typedef struct x
-#endif
-
-//
-// When build similiar to FW, then link everything together as
-// one big module.
-//
-
-#define EFI_DRIVER_ENTRY_POINT(InitFunction)
-
-#define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \
- (_if)->LoadInternal(type, name, entry)
-// entry(NULL, ST)
-
-#ifdef __FreeBSD__
-#define INTERFACE_DECL(x) struct x
-#else
-//
-// Some compilers don't support the forward reference construct:
-// typedef struct XXXXX
-//
-// The following macro provide a workaround for such cases.
-//
-#ifdef NO_INTERFACE_DECL
-#define INTERFACE_DECL(x)
-#else
-#define INTERFACE_DECL(x) typedef struct x
-#endif
-#endif
diff --git a/sys/boot/efi/include/ia64/pe.h b/sys/boot/efi/include/ia64/pe.h
deleted file mode 100644
index 24480a5..0000000
--- a/sys/boot/efi/include/ia64/pe.h
+++ /dev/null
@@ -1,637 +0,0 @@
-/* $FreeBSD$ */
-/*
- PE32+ header file
- */
-#ifndef _PE_H
-#define _PE_H
-
-#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ
-#define IMAGE_OS2_SIGNATURE 0x454E // NE
-#define IMAGE_OS2_SIGNATURE_LE 0x454C // LE
-#define IMAGE_NT_SIGNATURE 0x00004550 // PE00
-#define IMAGE_EDOS_SIGNATURE 0x44454550 // PEED
-
-/*****************************************************************************
- * The following stuff comes from winnt.h from the ia64sdk, plus the Plabel for
- * loading EM executables.
- *****************************************************************************/
-//
-// Intel IA64 specific
-//
-
-#define IMAGE_REL_BASED_IA64_IMM64 9
-#define IMAGE_REL_BASED_IA64_DIR64 10
-
-struct Plabel {
- UINT64 EntryPoint;
- UINT64 NewGP;
-};
-
-typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
- UINT16 e_magic; // Magic number
- UINT16 e_cblp; // Bytes on last page of file
- UINT16 e_cp; // Pages in file
- UINT16 e_crlc; // Relocations
- UINT16 e_cparhdr; // Size of header in paragraphs
- UINT16 e_minalloc; // Minimum extra paragraphs needed
- UINT16 e_maxalloc; // Maximum extra paragraphs needed
- UINT16 e_ss; // Initial (relative) SS value
- UINT16 e_sp; // Initial SP value
- UINT16 e_csum; // Checksum
- UINT16 e_ip; // Initial IP value
- UINT16 e_cs; // Initial (relative) CS value
- UINT16 e_lfarlc; // File address of relocation table
- UINT16 e_ovno; // Overlay number
- UINT16 e_res[4]; // Reserved words
- UINT16 e_oemid; // OEM identifier (for e_oeminfo)
- UINT16 e_oeminfo; // OEM information; e_oemid specific
- UINT16 e_res2[10]; // Reserved words
- UINT32 e_lfanew; // File address of new exe header
- } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
-
-typedef struct _IMAGE_OS2_HEADER { // OS/2 .EXE header
- UINT16 ne_magic; // Magic number
- UINT8 ne_ver; // Version number
- UINT8 ne_rev; // Revision number
- UINT16 ne_enttab; // Offset of Entry Table
- UINT16 ne_cbenttab; // Number of bytes in Entry Table
- UINT32 ne_crc; // Checksum of whole file
- UINT16 ne_flags; // Flag UINT16
- UINT16 ne_autodata; // Automatic data segment number
- UINT16 ne_heap; // Initial heap allocation
- UINT16 ne_stack; // Initial stack allocation
- UINT32 ne_csip; // Initial CS:IP setting
- UINT32 ne_sssp; // Initial SS:SP setting
- UINT16 ne_cseg; // Count of file segments
- UINT16 ne_cmod; // Entries in Module Reference Table
- UINT16 ne_cbnrestab; // Size of non-resident name table
- UINT16 ne_segtab; // Offset of Segment Table
- UINT16 ne_rsrctab; // Offset of Resource Table
- UINT16 ne_restab; // Offset of resident name table
- UINT16 ne_modtab; // Offset of Module Reference Table
- UINT16 ne_imptab; // Offset of Imported Names Table
- UINT32 ne_nrestab; // Offset of Non-resident Names Table
- UINT16 ne_cmovent; // Count of movable entries
- UINT16 ne_align; // Segment alignment shift count
- UINT16 ne_cres; // Count of resource segments
- UINT8 ne_exetyp; // Target Operating system
- UINT8 ne_flagsothers; // Other .EXE flags
- UINT16 ne_pretthunks; // offset to return thunks
- UINT16 ne_psegrefbytes; // offset to segment ref. bytes
- UINT16 ne_swaparea; // Minimum code swap area size
- UINT16 ne_expver; // Expected Windows version number
- } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
-
-//
-// File header format.
-//
-
-typedef struct _IMAGE_FILE_HEADER {
- UINT16 Machine;
- UINT16 NumberOfSections;
- UINT32 TimeDateStamp;
- UINT32 PointerToSymbolTable;
- UINT32 NumberOfSymbols;
- UINT16 SizeOfOptionalHeader;
- UINT16 Characteristics;
-} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
-
-#define IMAGE_SIZEOF_FILE_HEADER 20
-
-#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file.
-#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references).
-#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file.
-#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file.
-#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed.
-#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine.
-#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file
-#define IMAGE_FILE_SYSTEM 0x1000 // System File.
-#define IMAGE_FILE_DLL 0x2000 // File is a DLL.
-#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed.
-
-#define IMAGE_FILE_MACHINE_UNKNOWN 0
-#define IMAGE_FILE_MACHINE_I386 0x14c // Intel 386.
-#define IMAGE_FILE_MACHINE_R3000 0x162 // MIPS little-endian, 0540 big-endian
-#define IMAGE_FILE_MACHINE_R4000 0x166 // MIPS little-endian
-#define IMAGE_FILE_MACHINE_ALPHA 0x184 // Alpha_AXP
-#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian
-#define IMAGE_FILE_MACHINE_TAHOE 0x7cc // Intel EM machine
-//
-// Directory format.
-//
-
-typedef struct _IMAGE_DATA_DIRECTORY {
- UINT32 VirtualAddress;
- UINT32 Size;
-} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
-
-#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
-
-
-typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
- UINT16 Magic;
- UINT8 MajorLinkerVersion;
- UINT8 MinorLinkerVersion;
- UINT32 SizeOfCode;
- UINT32 SizeOfInitializedData;
- UINT32 SizeOfUninitializedData;
- UINT32 AddressOfEntryPoint;
- UINT32 BaseOfCode;
- UINT32 BaseOfData;
- UINT32 BaseOfBss;
- UINT32 GprMask;
- UINT32 CprMask[4];
- UINT32 GpValue;
-} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER;
-
-typedef struct _IMAGE_OPTIONAL_HEADER {
- UINT16 Magic;
- UINT8 MajorLinkerVersion;
- UINT8 MinorLinkerVersion;
- UINT32 SizeOfCode;
- UINT32 SizeOfInitializedData;
- UINT32 SizeOfUninitializedData;
- UINT32 AddressOfEntryPoint;
- UINT32 BaseOfCode;
- // UINT32 BaseOfData;
- UINT64 ImageBase;
- UINT32 SectionAlignment;
- UINT32 FileAlignment;
- UINT16 MajorOperatingSystemVersion;
- UINT16 MinorOperatingSystemVersion;
- UINT16 MajorImageVersion;
- UINT16 MinorImageVersion;
- UINT16 MajorSubsystemVersion;
- UINT16 MinorSubsystemVersion;
- UINT32 Win32VersionValue;
- UINT32 SizeOfImage;
- UINT32 SizeOfHeaders;
- UINT32 CheckSum;
- UINT16 Subsystem;
- UINT16 DllCharacteristics;
- UINT64 SizeOfStackReserve;
- UINT64 SizeOfStackCommit;
- UINT64 SizeOfHeapReserve;
- UINT64 SizeOfHeapCommit;
- UINT32 LoaderFlags;
- UINT32 NumberOfRvaAndSizes;
- IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
-
-
-#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
-#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
-#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
-#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 244
-
-#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
-#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
-#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
-
-typedef struct _IMAGE_NT_HEADERS {
- UINT32 Signature;
- IMAGE_FILE_HEADER FileHeader;
- IMAGE_OPTIONAL_HEADER OptionalHeader;
-} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
-
-typedef struct _IMAGE_ROM_HEADERS {
- IMAGE_FILE_HEADER FileHeader;
- IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
-} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS;
-
-#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \
- ((UINT32)ntheader + \
- FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \
- ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \
- ))
-
-
-// Subsystem Values
-
-#define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem.
-#define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem.
-#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem.
-#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem.
-#define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem.
-#define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image run in the Posix character subsystem.
-
-
-// Directory Entries
-
-#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory
-#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory
-#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory
-#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory
-#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory
-#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table
-#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory
-#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // Description String
-#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // Machine Value (MIPS GP)
-#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory
-#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory
-
-//
-// Section header format.
-//
-
-#define IMAGE_SIZEOF_SHORT_NAME 8
-
-typedef struct _IMAGE_SECTION_HEADER {
- UINT8 Name[IMAGE_SIZEOF_SHORT_NAME];
- union {
- UINT32 PhysicalAddress;
- UINT32 VirtualSize;
- } Misc;
- UINT32 VirtualAddress;
- UINT32 SizeOfRawData;
- UINT32 PointerToRawData;
- UINT32 PointerToRelocations;
- UINT32 PointerToLinenumbers;
- UINT16 NumberOfRelocations;
- UINT16 NumberOfLinenumbers;
- UINT32 Characteristics;
-} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
-
-#define IMAGE_SIZEOF_SECTION_HEADER 40
-
-#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved.
-
-#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code.
-#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data.
-#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data.
-
-#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved.
-#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information.
-#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image.
-#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat.
-
-#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 //
-#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 //
-#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 //
-#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 //
-#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified.
-#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 //
-#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 //
-
-#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded.
-#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable.
-#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable.
-#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable.
-#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable.
-#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable.
-#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable.
-
-//
-// Symbol format.
-//
-
-
-#define IMAGE_SIZEOF_SYMBOL 18
-
-//
-// Section values.
-//
-// Symbols have a section number of the section in which they are
-// defined. Otherwise, section numbers have the following meanings:
-//
-
-#define IMAGE_SYM_UNDEFINED (UINT16)0 // Symbol is undefined or is common.
-#define IMAGE_SYM_ABSOLUTE (UINT16)-1 // Symbol is an absolute value.
-#define IMAGE_SYM_DEBUG (UINT16)-2 // Symbol is a special debug item.
-
-//
-// Type (fundamental) values.
-//
-
-#define IMAGE_SYM_TYPE_NULL 0 // no type.
-#define IMAGE_SYM_TYPE_VOID 1 //
-#define IMAGE_SYM_TYPE_CHAR 2 // type character.
-#define IMAGE_SYM_TYPE_SHORT 3 // type short integer.
-#define IMAGE_SYM_TYPE_INT 4 //
-#define IMAGE_SYM_TYPE_LONG 5 //
-#define IMAGE_SYM_TYPE_FLOAT 6 //
-#define IMAGE_SYM_TYPE_DOUBLE 7 //
-#define IMAGE_SYM_TYPE_STRUCT 8 //
-#define IMAGE_SYM_TYPE_UNION 9 //
-#define IMAGE_SYM_TYPE_ENUM 10 // enumeration.
-#define IMAGE_SYM_TYPE_MOE 11 // member of enumeration.
-#define IMAGE_SYM_TYPE_BYTE 12 //
-#define IMAGE_SYM_TYPE_WORD 13 //
-#define IMAGE_SYM_TYPE_UINT 14 //
-#define IMAGE_SYM_TYPE_DWORD 15 //
-
-//
-// Type (derived) values.
-//
-
-#define IMAGE_SYM_DTYPE_NULL 0 // no derived type.
-#define IMAGE_SYM_DTYPE_POINTER 1 // pointer.
-#define IMAGE_SYM_DTYPE_FUNCTION 2 // function.
-#define IMAGE_SYM_DTYPE_ARRAY 3 // array.
-
-//
-// Storage classes.
-//
-
-#define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE )-1
-#define IMAGE_SYM_CLASS_NULL 0
-#define IMAGE_SYM_CLASS_AUTOMATIC 1
-#define IMAGE_SYM_CLASS_EXTERNAL 2
-#define IMAGE_SYM_CLASS_STATIC 3
-#define IMAGE_SYM_CLASS_REGISTER 4
-#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
-#define IMAGE_SYM_CLASS_LABEL 6
-#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
-#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
-#define IMAGE_SYM_CLASS_ARGUMENT 9
-#define IMAGE_SYM_CLASS_STRUCT_TAG 10
-#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
-#define IMAGE_SYM_CLASS_UNION_TAG 12
-#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
-#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
-#define IMAGE_SYM_CLASS_ENUM_TAG 15
-#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
-#define IMAGE_SYM_CLASS_REGISTER_PARAM 17
-#define IMAGE_SYM_CLASS_BIT_FIELD 18
-#define IMAGE_SYM_CLASS_BLOCK 100
-#define IMAGE_SYM_CLASS_FUNCTION 101
-#define IMAGE_SYM_CLASS_END_OF_STRUCT 102
-#define IMAGE_SYM_CLASS_FILE 103
-// new
-#define IMAGE_SYM_CLASS_SECTION 104
-#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
-
-// type packing constants
-
-#define N_BTMASK 017
-#define N_TMASK 060
-#define N_TMASK1 0300
-#define N_TMASK2 0360
-#define N_BTSHFT 4
-#define N_TSHIFT 2
-
-// MACROS
-
-//
-// Communal selection types.
-//
-
-#define IMAGE_COMDAT_SELECT_NODUPLICATES 1
-#define IMAGE_COMDAT_SELECT_ANY 2
-#define IMAGE_COMDAT_SELECT_SAME_SIZE 3
-#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
-#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
-
-#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
-#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
-#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
-
-
-//
-// Relocation format.
-//
-
-typedef struct _IMAGE_RELOCATION {
- UINT32 VirtualAddress;
- UINT32 SymbolTableIndex;
- UINT16 Type;
-} IMAGE_RELOCATION;
-
-#define IMAGE_SIZEOF_RELOCATION 10
-
-//
-// I386 relocation types.
-//
-
-#define IMAGE_REL_I386_ABSOLUTE 0 // Reference is absolute, no relocation is necessary
-#define IMAGE_REL_I386_DIR16 01 // Direct 16-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_REL16 02 // PC-relative 16-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_DIR32 06 // Direct 32-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_DIR32NB 07 // Direct 32-bit reference to the symbols virtual address, base not included
-#define IMAGE_REL_I386_SEG12 011 // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address
-#define IMAGE_REL_I386_SECTION 012
-#define IMAGE_REL_I386_SECREL 013
-#define IMAGE_REL_I386_REL32 024 // PC-relative 32-bit reference to the symbols virtual address
-
-//
-// MIPS relocation types.
-//
-
-#define IMAGE_REL_MIPS_ABSOLUTE 0 // Reference is absolute, no relocation is necessary
-#define IMAGE_REL_MIPS_REFHALF 01
-#define IMAGE_REL_MIPS_REFWORD 02
-#define IMAGE_REL_MIPS_JMPADDR 03
-#define IMAGE_REL_MIPS_REFHI 04
-#define IMAGE_REL_MIPS_REFLO 05
-#define IMAGE_REL_MIPS_GPREL 06
-#define IMAGE_REL_MIPS_LITERAL 07
-#define IMAGE_REL_MIPS_SECTION 012
-#define IMAGE_REL_MIPS_SECREL 013
-#define IMAGE_REL_MIPS_REFWORDNB 042
-#define IMAGE_REL_MIPS_PAIR 045
-
-//
-// Alpha Relocation types.
-//
-
-#define IMAGE_REL_ALPHA_ABSOLUTE 0x0
-#define IMAGE_REL_ALPHA_REFLONG 0x1
-#define IMAGE_REL_ALPHA_REFQUAD 0x2
-#define IMAGE_REL_ALPHA_GPREL32 0x3
-#define IMAGE_REL_ALPHA_LITERAL 0x4
-#define IMAGE_REL_ALPHA_LITUSE 0x5
-#define IMAGE_REL_ALPHA_GPDISP 0x6
-#define IMAGE_REL_ALPHA_BRADDR 0x7
-#define IMAGE_REL_ALPHA_HINT 0x8
-#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x9
-#define IMAGE_REL_ALPHA_REFHI 0xA
-#define IMAGE_REL_ALPHA_REFLO 0xB
-#define IMAGE_REL_ALPHA_PAIR 0xC
-#define IMAGE_REL_ALPHA_MATCH 0xD
-#define IMAGE_REL_ALPHA_SECTION 0xE
-#define IMAGE_REL_ALPHA_SECREL 0xF
-#define IMAGE_REL_ALPHA_REFLONGNB 0x10
-
-//
-// IBM PowerPC relocation types.
-//
-
-#define IMAGE_REL_PPC_ABSOLUTE 0x0000 // NOP
-#define IMAGE_REL_PPC_ADDR64 0x0001 // 64-bit address
-#define IMAGE_REL_PPC_ADDR32 0x0002 // 32-bit address
-#define IMAGE_REL_PPC_ADDR24 0x0003 // 26-bit address, shifted left 2 (branch absolute)
-#define IMAGE_REL_PPC_ADDR16 0x0004 // 16-bit address
-#define IMAGE_REL_PPC_ADDR14 0x0005 // 16-bit address, shifted left 2 (load doubleword)
-#define IMAGE_REL_PPC_REL24 0x0006 // 26-bit PC-relative offset, shifted left 2 (branch relative)
-#define IMAGE_REL_PPC_REL14 0x0007 // 16-bit PC-relative offset, shifted left 2 (br cond relative)
-#define IMAGE_REL_PPC_TOCREL16 0x0008 // 16-bit offset from TOC base
-#define IMAGE_REL_PPC_TOCREL14 0x0009 // 16-bit offset from TOC base, shifted left 2 (load doubleword)
-
-#define IMAGE_REL_PPC_ADDR32NB 0x000A // 32-bit addr w/o image base
-#define IMAGE_REL_PPC_SECREL 0x000B // va of containing section (as in an image sectionhdr)
-#define IMAGE_REL_PPC_SECTION 0x000C // sectionheader number
-#define IMAGE_REL_PPC_IFGLUE 0x000D // substitute TOC restore instruction iff symbol is glue code
-#define IMAGE_REL_PPC_IMGLUE 0x000E // symbol is glue code; virtual address is TOC restore instruction
-
-#define IMAGE_REL_PPC_TYPEMASK 0x00FF // mask to isolate above values in IMAGE_RELOCATION.Type
-
-// Flag bits in IMAGE_RELOCATION.TYPE
-
-#define IMAGE_REL_PPC_NEG 0x0100 // subtract reloc value rather than adding it
-#define IMAGE_REL_PPC_BRTAKEN 0x0200 // fix branch prediction bit to predict branch taken
-#define IMAGE_REL_PPC_BRNTAKEN 0x0400 // fix branch prediction bit to predict branch not taken
-#define IMAGE_REL_PPC_TOCDEFN 0x0800 // toc slot defined in file (or, data in toc)
-
-//
-// Based relocation format.
-//
-
-typedef struct _IMAGE_BASE_RELOCATION {
- UINT32 VirtualAddress;
- UINT32 SizeOfBlock;
-// UINT16 TypeOffset[1];
-} IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION;
-
-#define IMAGE_SIZEOF_BASE_RELOCATION 8
-
-//
-// Based relocation types.
-//
-
-#define IMAGE_REL_BASED_ABSOLUTE 0
-#define IMAGE_REL_BASED_HIGH 1
-#define IMAGE_REL_BASED_LOW 2
-#define IMAGE_REL_BASED_HIGHLOW 3
-#define IMAGE_REL_BASED_HIGHADJ 4
-#define IMAGE_REL_BASED_MIPS_JMPADDR 5
-#define IMAGE_REL_BASED_IA64_IMM64 9
-#define IMAGE_REL_BASED_DIR64 10
-
-//
-// Line number format.
-//
-
-typedef struct _IMAGE_LINENUMBER {
- union {
- UINT32 SymbolTableIndex; // Symbol table index of function name if Linenumber is 0.
- UINT32 VirtualAddress; // Virtual address of line number.
- } Type;
- UINT16 Linenumber; // Line number.
-} IMAGE_LINENUMBER;
-
-#define IMAGE_SIZEOF_LINENUMBER 6
-
-//
-// Archive format.
-//
-
-#define IMAGE_ARCHIVE_START_SIZE 8
-#define IMAGE_ARCHIVE_START "!<arch>\n"
-#define IMAGE_ARCHIVE_END "`\n"
-#define IMAGE_ARCHIVE_PAD "\n"
-#define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
-#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
-
-typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
- UINT8 Name[16]; // File member name - `/' terminated.
- UINT8 Date[12]; // File member date - decimal.
- UINT8 UserID[6]; // File member user id - decimal.
- UINT8 GroupID[6]; // File member group id - decimal.
- UINT8 Mode[8]; // File member mode - octal.
- UINT8 Size[10]; // File member size - decimal.
- UINT8 EndHeader[2]; // String to end header.
-} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER;
-
-#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
-
-//
-// DLL support.
-//
-
-//
-// Export Format
-//
-
-typedef struct _IMAGE_EXPORT_DIRECTORY {
- UINT32 Characteristics;
- UINT32 TimeDateStamp;
- UINT16 MajorVersion;
- UINT16 MinorVersion;
- UINT32 Name;
- UINT32 Base;
- UINT32 NumberOfFunctions;
- UINT32 NumberOfNames;
- UINT32 AddressOfFunctions;
- UINT32 AddressOfNames;
- UINT32 AddressOfNameOrdinals;
-} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
-
-//
-// Import Format
-//
-
-typedef struct _IMAGE_IMPORT_BY_NAME {
- UINT16 Hint;
- UINT8 Name[1];
-} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
-
-typedef struct _IMAGE_THUNK_DATA {
- union {
- UINT32 Function;
- UINT32 Ordinal;
- PIMAGE_IMPORT_BY_NAME AddressOfData;
- } u1;
-} IMAGE_THUNK_DATA, *PIMAGE_THUNK_DATA;
-
-#define IMAGE_ORDINAL_FLAG 0x80000000
-#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
-#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff)
-
-typedef struct _IMAGE_IMPORT_DESCRIPTOR {
- UINT32 Characteristics;
- UINT32 TimeDateStamp;
- UINT32 ForwarderChain;
- UINT32 Name;
- PIMAGE_THUNK_DATA FirstThunk;
-} IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR;
-
-#define IMAGE_DEBUG_TYPE_CODEVIEW 2
-
-typedef struct {
- UINT32 Characteristics;
- UINT32 TimeDateStamp;
- UINT16 MajorVersion;
- UINT16 MinorVersion;
- UINT32 Type;
- UINT32 SizeOfData;
- UINT32 RVA;
- UINT32 FileOffset;
-} IMAGE_DEBUG_DIRECTORY_ENTRY;
-
-#define CODEVIEW_SIGNATURE_NB10 0x3031424E // "NB10"
-
-typedef struct {
- UINT32 Signature; // "NB10"
- UINT32 Unknown;
- UINT32 Unknown2;
- UINT32 Unknown3;
- //
- // Filename of .PDB goes here
- //
-} EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY;
-
-#define CODEVIEW_SIGNATURE_RSDS 0x53445352 // "RSDS"
-
-typedef struct {
- UINT32 Signature; // "RSDS"
- UINT32 Unknown;
- UINT32 Unknown2;
- UINT32 Unknown3;
- UINT32 Unknown4;
- UINT32 Unknown5;
- //
- // Filename of .PDB goes here
- //
-} EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY;
-
-#endif
diff --git a/sys/boot/ficl/ia64/sysdep.c b/sys/boot/ficl/ia64/sysdep.c
deleted file mode 100644
index 00b0d4a..0000000
--- a/sys/boot/ficl/ia64/sysdep.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************
-** s y s d e p . c
-** Forth Inspired Command Language
-** Author: John Sadler (john_sadler@alum.mit.edu)
-** Created: 16 Oct 1997
-** Implementations of FICL external interface functions...
-**
-*******************************************************************/
-
-/* $FreeBSD$ */
-
-#ifdef TESTMAIN
-#include <stdio.h>
-#include <stdlib.h>
-#else
-#include <stand.h>
-#endif
-#include "ficl.h"
-
-/*
-******************* FreeBSD P O R T B E G I N S H E R E ******************** Michael Smith
-*/
-
-#if PORTABLE_LONGMULDIV == 0
-DPUNS ficlLongMul(FICL_UNS x, FICL_UNS y)
-{
- DPUNS q;
- u_int64_t qx;
-
- qx = (u_int64_t)x * (u_int64_t) y;
-
- q.hi = (u_int32_t)( qx >> 32 );
- q.lo = (u_int32_t)( qx & 0xFFFFFFFFL);
-
- return q;
-}
-
-UNSQR ficlLongDiv(DPUNS q, FICL_UNS y)
-{
- UNSQR result;
- u_int64_t qx, qh;
-
- qh = q.hi;
- qx = (qh << 32) | q.lo;
-
- result.quot = qx / y;
- result.rem = qx % y;
-
- return result;
-}
-#endif
-
-void ficlTextOut(FICL_VM *pVM, char *msg, int fNewline)
-{
- IGNORE(pVM);
-
- while(*msg != 0)
- putchar(*(msg++));
- if (fNewline)
- putchar('\n');
-
- return;
-}
-
-void *ficlMalloc (size_t size)
-{
- return malloc(size);
-}
-
-void *ficlRealloc (void *p, size_t size)
-{
- return realloc(p, size);
-}
-
-void ficlFree (void *p)
-{
- free(p);
-}
-
-
-/*
-** Stub function for dictionary access control - does nothing
-** by default, user can redefine to guarantee exclusive dict
-** access to a single thread for updates. All dict update code
-** is guaranteed to be bracketed as follows:
-** ficlLockDictionary(TRUE);
-** <code that updates dictionary>
-** ficlLockDictionary(FALSE);
-**
-** Returns zero if successful, nonzero if unable to acquire lock
-** befor timeout (optional - could also block forever)
-*/
-#if FICL_MULTITHREAD
-int ficlLockDictionary(short fLock)
-{
- IGNORE(fLock);
- return 0;
-}
-#endif /* FICL_MULTITHREAD */
-
-
diff --git a/sys/boot/ficl/ia64/sysdep.h b/sys/boot/ficl/ia64/sysdep.h
deleted file mode 100644
index 08bc0e1..0000000
--- a/sys/boot/ficl/ia64/sysdep.h
+++ /dev/null
@@ -1,434 +0,0 @@
-/*******************************************************************
- s y s d e p . h
-** Forth Inspired Command Language
-** Author: John Sadler (john_sadler@alum.mit.edu)
-** Created: 16 Oct 1997
-** Ficl system dependent types and prototypes...
-**
-** Note: Ficl also depends on the use of "assert" when
-** FICL_ROBUST is enabled. This may require some consideration
-** in firmware systems since assert often
-** assumes stderr/stdout.
-** $Id: sysdep.h,v 1.11 2001/12/05 07:21:34 jsadler Exp $
-*******************************************************************/
-/*
-** Copyright (c) 1997-2001 John Sadler (john_sadler@alum.mit.edu)
-** All rights reserved.
-**
-** Get the latest Ficl release at http://ficl.sourceforge.net
-**
-** I am interested in hearing from anyone who uses ficl. If you have
-** a problem, a success story, a defect, an enhancement request, or
-** if you would like to contribute to the ficl release, please
-** contact me by email at the address above.
-**
-** L I C E N S E and D I S C L A I M E R
-**
-** 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 AUTHOR 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 AUTHOR 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.
-**
-** $Id: sysdep.h,v 1.6 2001-04-26 21:41:55-07 jsadler Exp jsadler $
-*/
-
-/* $FreeBSD$ */
-
-#if !defined (__SYSDEP_H__)
-#define __SYSDEP_H__
-
-#include <sys/types.h>
-
-#include <stddef.h> /* size_t, NULL */
-#include <setjmp.h>
-#include <assert.h>
-
-#if !defined IGNORE /* Macro to silence unused param warnings */
-#define IGNORE(x) &x
-#endif
-
-/*
-** TRUE and FALSE for C boolean operations, and
-** portable 32 bit types for CELLs
-**
-*/
-#if !defined TRUE
-#define TRUE 1
-#endif
-#if !defined FALSE
-#define FALSE 0
-#endif
-
-/*
-** System dependent data type declarations...
-*/
-#if !defined INT32
-#define INT32 int
-#endif
-
-#if !defined UNS32
-#define UNS32 unsigned int
-#endif
-
-#if !defined UNS16
-#define UNS16 unsigned short
-#endif
-
-#if !defined UNS8
-#define UNS8 unsigned char
-#endif
-
-#if !defined NULL
-#define NULL ((void *)0)
-#endif
-
-/*
-** FICL_UNS and FICL_INT must have the same size as a void* on
-** the target system. A CELL is a union of void*, FICL_UNS, and
-** FICL_INT.
-** (11/2000: same for FICL_FLOAT)
-*/
-#if !defined FICL_INT
-#define FICL_INT long
-#endif
-
-#if !defined FICL_UNS
-#define FICL_UNS unsigned long
-#endif
-
-#if !defined FICL_FLOAT
-#define FICL_FLOAT float
-#endif
-
-/*
-** Ficl presently supports values of 32 and 64 for BITS_PER_CELL
-*/
-#if !defined BITS_PER_CELL
-#define BITS_PER_CELL 64
-#endif
-
-#if ((BITS_PER_CELL != 32) && (BITS_PER_CELL != 64))
- Error!
-#endif
-
-typedef struct
-{
- FICL_UNS hi;
- FICL_UNS lo;
-} DPUNS;
-
-typedef struct
-{
- FICL_UNS quot;
- FICL_UNS rem;
-} UNSQR;
-
-typedef struct
-{
- FICL_INT hi;
- FICL_INT lo;
-} DPINT;
-
-typedef struct
-{
- FICL_INT quot;
- FICL_INT rem;
-} INTQR;
-
-
-/*
-** B U I L D C O N T R O L S
-*/
-
-#if !defined (FICL_MINIMAL)
-#define FICL_MINIMAL 0
-#endif
-#if (FICL_MINIMAL)
-#define FICL_WANT_SOFTWORDS 0
-#define FICL_WANT_FILE 0
-#define FICL_WANT_FLOAT 0
-#define FICL_WANT_USER 0
-#define FICL_WANT_LOCALS 0
-#define FICL_WANT_DEBUGGER 0
-#define FICL_WANT_OOP 0
-#define FICL_PLATFORM_EXTEND 0
-#define FICL_MULTITHREAD 0
-#define FICL_ROBUST 0
-#define FICL_EXTENDED_PREFIX 0
-#endif
-
-/*
-** FICL_PLATFORM_EXTEND
-** Includes words defined in ficlCompilePlatform
-*/
-#if !defined (FICL_PLATFORM_EXTEND)
-#define FICL_PLATFORM_EXTEND 1
-#endif
-
-
-/*
-** FICL_WANT_FILE
-** Includes the FILE and FILE-EXT wordset and associated code. Turn this off if you do not
-** have a filesystem!
-** Contributed by Larry Hastings
-*/
-#if !defined (FICL_WANT_FILE)
-#define FICL_WANT_FILE 0
-#endif
-
-/*
-** FICL_WANT_FLOAT
-** Includes a floating point stack for the VM, and words to do float operations.
-** Contributed by Guy Carver
-*/
-#if !defined (FICL_WANT_FLOAT)
-#define FICL_WANT_FLOAT 0
-#endif
-
-/*
-** FICL_WANT_DEBUGGER
-** Inludes a simple source level debugger
-*/
-#if !defined (FICL_WANT_DEBUGGER)
-#define FICL_WANT_DEBUGGER 1
-#endif
-
-/*
-** FICL_EXTENDED_PREFIX enables a bunch of extra prefixes in prefix.c and prefix.fr (if
-** included as part of softcore.c)
-*/
-#if !defined FICL_EXTENDED_PREFIX
-#define FICL_EXTENDED_PREFIX 0
-#endif
-
-/*
-** User variables: per-instance variables bound to the VM.
-** Kinda like thread-local storage. Could be implemented in a
-** VM private dictionary, but I've chosen the lower overhead
-** approach of an array of CELLs instead.
-*/
-#if !defined FICL_WANT_USER
-#define FICL_WANT_USER 1
-#endif
-
-#if !defined FICL_USER_CELLS
-#define FICL_USER_CELLS 16
-#endif
-
-/*
-** FICL_WANT_LOCALS controls the creation of the LOCALS wordset and
-** a private dictionary for local variable compilation.
-*/
-#if !defined FICL_WANT_LOCALS
-#define FICL_WANT_LOCALS 1
-#endif
-
-/* Max number of local variables per definition */
-#if !defined FICL_MAX_LOCALS
-#define FICL_MAX_LOCALS 16
-#endif
-
-/*
-** FICL_WANT_OOP
-** Inludes object oriented programming support (in softwords)
-** OOP support requires locals and user variables!
-*/
-#if !(FICL_WANT_LOCALS) || !(FICL_WANT_USER)
-#if !defined (FICL_WANT_OOP)
-#define FICL_WANT_OOP 0
-#endif
-#endif
-
-#if !defined (FICL_WANT_OOP)
-#define FICL_WANT_OOP 1
-#endif
-
-/*
-** FICL_WANT_SOFTWORDS
-** Controls inclusion of all softwords in softcore.c
-*/
-#if !defined (FICL_WANT_SOFTWORDS)
-#define FICL_WANT_SOFTWORDS 1
-#endif
-
-/*
-** FICL_MULTITHREAD enables dictionary mutual exclusion
-** wia the ficlLockDictionary system dependent function.
-** Note: this implementation is experimental and poorly
-** tested. Further, it's unnecessary unless you really
-** intend to have multiple SESSIONS (poor choice of name
-** on my part) - that is, threads that modify the dictionary
-** at the same time.
-*/
-#if !defined FICL_MULTITHREAD
-#define FICL_MULTITHREAD 0
-#endif
-
-/*
-** PORTABLE_LONGMULDIV causes ficlLongMul and ficlLongDiv to be
-** defined in C in sysdep.c. Use this if you cannot easily
-** generate an inline asm definition
-*/
-#if !defined (PORTABLE_LONGMULDIV)
-#define PORTABLE_LONGMULDIV 0
-#endif
-
-/*
-** INLINE_INNER_LOOP causes the inner interpreter to be inline code
-** instead of a function call. This is mainly because MS VC++ 5
-** chokes with an internal compiler error on the function version.
-** in release mode. Sheesh.
-*/
-#if !defined INLINE_INNER_LOOP
-#if defined _DEBUG
-#define INLINE_INNER_LOOP 0
-#else
-#define INLINE_INNER_LOOP 1
-#endif
-#endif
-
-/*
-** FICL_ROBUST enables bounds checking of stacks and the dictionary.
-** This will detect stack over and underflows and dictionary overflows.
-** Any exceptional condition will result in an assertion failure.
-** (As generated by the ANSI assert macro)
-** FICL_ROBUST == 1 --> stack checking in the outer interpreter
-** FICL_ROBUST == 2 also enables checking in many primitives
-*/
-
-#if !defined FICL_ROBUST
-#define FICL_ROBUST 2
-#endif
-
-/*
-** FICL_DEFAULT_STACK Specifies the default size (in CELLs) of
-** a new virtual machine's stacks, unless overridden at
-** create time.
-*/
-#if !defined FICL_DEFAULT_STACK
-#define FICL_DEFAULT_STACK 128
-#endif
-
-/*
-** FICL_DEFAULT_DICT specifies the number of CELLs to allocate
-** for the system dictionary by default. The value
-** can be overridden at startup time as well.
-** FICL_DEFAULT_ENV specifies the number of cells to allot
-** for the environment-query dictionary.
-*/
-#if !defined FICL_DEFAULT_DICT
-#define FICL_DEFAULT_DICT 12288
-#endif
-
-#if !defined FICL_DEFAULT_ENV
-#define FICL_DEFAULT_ENV 260
-#endif
-
-/*
-** FICL_DEFAULT_VOCS specifies the maximum number of wordlists in
-** the dictionary search order. See Forth DPANS sec 16.3.3
-** (file://dpans16.htm#16.3.3)
-*/
-#if !defined FICL_DEFAULT_VOCS
-#define FICL_DEFAULT_VOCS 16
-#endif
-
-/*
-** FICL_MAX_PARSE_STEPS controls the size of an array in the FICL_SYSTEM structure
-** that stores pointers to parser extension functions. I would never expect to have
-** more than 8 of these, so that's the default limit. Too many of these functions
-** will probably exact a nasty performance penalty.
-*/
-#if !defined FICL_MAX_PARSE_STEPS
-#define FICL_MAX_PARSE_STEPS 8
-#endif
-
-/*
-** FICL_ALIGN is the power of two to which the dictionary
-** pointer address must be aligned. This value is usually
-** either 1 or 2, depending on the memory architecture
-** of the target system; 2 is safe on any 16 or 32 bit
-** machine. 3 would be appropriate for a 64 bit machine.
-*/
-#if !defined FICL_ALIGN
-#define FICL_ALIGN 3
-#define FICL_ALIGN_ADD ((1 << FICL_ALIGN) - 1)
-#endif
-
-/*
-** System dependent routines --
-** edit the implementations in sysdep.c to be compatible
-** with your runtime environment...
-** ficlTextOut sends a NULL terminated string to the
-** default output device - used for system error messages
-** ficlMalloc and ficlFree have the same semantics as malloc and free
-** in standard C
-** ficlLongMul multiplies two UNS32s and returns a 64 bit unsigned
-** product
-** ficlLongDiv divides an UNS64 by an UNS32 and returns UNS32 quotient
-** and remainder
-*/
-struct vm;
-void ficlTextOut(struct vm *pVM, char *msg, int fNewline);
-void *ficlMalloc (size_t size);
-void ficlFree (void *p);
-void *ficlRealloc(void *p, size_t size);
-/*
-** Stub function for dictionary access control - does nothing
-** by default, user can redefine to guarantee exclusive dict
-** access to a single thread for updates. All dict update code
-** must be bracketed as follows:
-** ficlLockDictionary(TRUE);
-** <code that updates dictionary>
-** ficlLockDictionary(FALSE);
-**
-** Returns zero if successful, nonzero if unable to acquire lock
-** before timeout (optional - could also block forever)
-**
-** NOTE: this function must be implemented with lock counting
-** semantics: nested calls must behave properly.
-*/
-#if FICL_MULTITHREAD
-int ficlLockDictionary(short fLock);
-#else
-#define ficlLockDictionary(x) 0 /* ignore */
-#endif
-
-/*
-** 64 bit integer math support routines: multiply two UNS32s
-** to get a 64 bit product, & divide the product by an UNS32
-** to get an UNS32 quotient and remainder. Much easier in asm
-** on a 32 bit CPU than in C, which usually doesn't support
-** the double length result (but it should).
-*/
-DPUNS ficlLongMul(FICL_UNS x, FICL_UNS y);
-UNSQR ficlLongDiv(DPUNS q, FICL_UNS y);
-
-
-/*
-** FICL_HAVE_FTRUNCATE indicates whether the current OS supports
-** the ftruncate() function (available on most UNIXes). This
-** function is necessary to provide the complete File-Access wordset.
-*/
-#if !defined (FICL_HAVE_FTRUNCATE)
-#define FICL_HAVE_FTRUNCATE 0
-#endif
-
-
-#endif /*__SYSDEP_H__*/
diff --git a/sys/boot/ficl/loader.c b/sys/boot/ficl/loader.c
index f39b1eb..349a7c6 100644
--- a/sys/boot/ficl/loader.c
+++ b/sys/boot/ficl/loader.c
@@ -800,15 +800,9 @@ void ficlCompilePlatform(FICL_SYSTEM *pSys)
ficlSetEnv(pSys, "arch-pc98", FICL_TRUE);
#elif defined(__i386__)
ficlSetEnv(pSys, "arch-i386", FICL_TRUE);
- ficlSetEnv(pSys, "arch-ia64", FICL_FALSE);
- ficlSetEnv(pSys, "arch-powerpc", FICL_FALSE);
-#elif defined(__ia64__)
- ficlSetEnv(pSys, "arch-i386", FICL_FALSE);
- ficlSetEnv(pSys, "arch-ia64", FICL_TRUE);
ficlSetEnv(pSys, "arch-powerpc", FICL_FALSE);
#elif defined(__powerpc__)
ficlSetEnv(pSys, "arch-i386", FICL_FALSE);
- ficlSetEnv(pSys, "arch-ia64", FICL_FALSE);
ficlSetEnv(pSys, "arch-powerpc", FICL_TRUE);
#endif
diff --git a/sys/boot/ia64/Makefile b/sys/boot/ia64/Makefile
deleted file mode 100644
index 5f24fb2..0000000
--- a/sys/boot/ia64/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# $FreeBSD$
-
-SUBDIR= common efi
-
-# In the ski sub-directory, one can build a loader for use under Ski.
-# Ski is an Itanium simulator, originally developed by HP. It's not
-# supported anymore in FreeBSD, but left for reference and education.
-# SUBDIR += ski
-
-.include <bsd.subdir.mk>
diff --git a/sys/boot/ia64/Makefile.inc b/sys/boot/ia64/Makefile.inc
deleted file mode 100644
index e63fb54..0000000
--- a/sys/boot/ia64/Makefile.inc
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-
-BINDIR?= /boot
-
-# Options used when building standalone components
-CFLAGS+= -ffreestanding -fshort-wchar -Wformat
-LDFLAGS+= -nostdlib
-
-.include "../Makefile.inc"
diff --git a/sys/boot/ia64/common/Makefile b/sys/boot/ia64/common/Makefile
deleted file mode 100644
index ef2737f..0000000
--- a/sys/boot/ia64/common/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-# $FreeBSD$
-
-.include <src.opts.mk>
-MK_SSP= no
-
-LIB= ia64
-INTERNALLIB=
-
-SRCS= autoload.c bootinfo.c copy.c devicename.c exec.c icache.c
-
-CFLAGS+= -I${.CURDIR}/../../efi/include
-CFLAGS+= -I${.CURDIR}/../../efi/include/${MACHINE_CPUARCH}
-CFLAGS+= -I${.CURDIR}/../../..
-CFLAGS+= -I${.CURDIR}/../../../../lib/libstand
-
-.if ${MK_FORTH} != "no"
-BOOT_FORTH= yes
-CFLAGS+= -DBOOT_FORTH
-CFLAGS+= -I${.CURDIR}/../../ficl
-CFLAGS+= -I${.CURDIR}/../../ficl/${MACHINE_CPUARCH}
-.endif
-
-.PATH: ${.CURDIR}/../../common
-.include "${.CURDIR}/../../common/Makefile.inc"
-
-CFLAGS+= -I${.CURDIR}/../../common
-
-FILES+= loader.help
-CLEANFILES+= loader.help
-loader.help: help.common
- cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk \
- > ${.TARGET}
-
-.PATH: ${.CURDIR}/../../forth
-FILES+= loader.4th support.4th loader.conf
-FILES+= screen.4th frames.4th
-FILES+= beastie.4th brand.4th check-password.4th color.4th delay.4th
-FILES+= menu.4th menu-commands.4th menusets.4th shortcuts.4th version.4th
-.if !exists(${DESTDIR}/boot/loader.rc)
-FILES+= loader.rc
-.endif
-.if !exists(${DESTDIR}/boot/menu.rc)
-FILES+= menu.rc
-.endif
-FILESDIR_loader.conf= /boot/defaults
-
-.include <bsd.lib.mk>
diff --git a/sys/boot/ia64/common/autoload.c b/sys/boot/ia64/common/autoload.c
deleted file mode 100644
index ea334b9..0000000
--- a/sys/boot/ia64/common/autoload.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-int
-ia64_autoload(void)
-{
-
- return (0);
-}
diff --git a/sys/boot/ia64/common/bootinfo.c b/sys/boot/ia64/common/bootinfo.c
deleted file mode 100644
index 04e8ba2..0000000
--- a/sys/boot/ia64/common/bootinfo.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <sys/linker.h>
-#include <sys/boot.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "libia64.h"
-
-static const char howto_switches[] = "aCdrgDmphsv";
-static int howto_masks[] = {
- RB_ASKNAME, RB_CDROM, RB_KDB, RB_DFLTROOT, RB_GDB, RB_MULTIPLE,
- RB_MUTE, RB_PAUSE, RB_SERIAL, RB_SINGLE, RB_VERBOSE
-};
-
-int
-bi_getboothowto(char *kargs)
-{
- const char *sw;
- char *opts;
- int howto, i;
-
- howto = 0;
-
- /* Get the boot options from the environment first. */
- for (i = 0; howto_names[i].ev != NULL; i++) {
- if (getenv(howto_names[i].ev) != NULL)
- howto |= howto_names[i].mask;
- }
-
- /* Parse kargs */
- if (kargs == NULL)
- return (howto);
-
- opts = strchr(kargs, '-');
- while (opts != NULL) {
- while (*(++opts) != '\0') {
- sw = strchr(howto_switches, *opts);
- if (sw == NULL)
- break;
- howto |= howto_masks[sw - howto_switches];
- }
- opts = strchr(opts, '-');
- }
-
- return (howto);
-}
-
-/*
- * Copy the environment into the load area starting at (addr).
- * Each variable is formatted as <name>=<value>, with a single nul
- * separating each variable, and a double nul terminating the environment.
- */
-vm_offset_t
-bi_copyenv(vm_offset_t start)
-{
- struct env_var *ep;
- vm_offset_t addr, last;
- size_t len;
-
- addr = last = start;
-
- /* Traverse the environment. */
- for (ep = environ; ep != NULL; ep = ep->ev_next) {
- len = strlen(ep->ev_name);
- if (ia64_copyin(ep->ev_name, addr, len) != len)
- break;
- addr += len;
- if (ia64_copyin("=", addr, 1) != 1)
- break;
- addr++;
- if (ep->ev_value != NULL) {
- len = strlen(ep->ev_value);
- if (ia64_copyin(ep->ev_value, addr, len) != len)
- break;
- addr += len;
- }
- if (ia64_copyin("", addr, 1) != 1)
- break;
- last = ++addr;
- }
-
- if (ia64_copyin("", last++, 1) != 1)
- last = start;
- return(last);
-}
-
-/*
- * Copy module-related data into the load area, where it can be
- * used as a directory for loaded modules.
- *
- * Module data is presented in a self-describing format. Each datum
- * is preceded by a 32-bit identifier and a 32-bit size field.
- *
- * Currently, the following data are saved:
- *
- * MOD_NAME (variable) module name (string)
- * MOD_TYPE (variable) module type (string)
- * MOD_ARGS (variable) module parameters (string)
- * MOD_ADDR sizeof(vm_offset_t) module load address
- * MOD_SIZE sizeof(size_t) module size
- * MOD_METADATA (variable) type-specific metadata
- */
-#define COPY32(v, a) { \
- u_int32_t x = (v); \
- ia64_copyin(&x, a, sizeof(x)); \
- a += sizeof(x); \
-}
-
-#define MOD_STR(t, a, s) { \
- COPY32(t, a); \
- COPY32(strlen(s) + 1, a); \
- ia64_copyin(s, a, strlen(s) + 1); \
- a += roundup(strlen(s) + 1, sizeof(u_int64_t));\
-}
-
-#define MOD_NAME(a, s) MOD_STR(MODINFO_NAME, a, s)
-#define MOD_TYPE(a, s) MOD_STR(MODINFO_TYPE, a, s)
-#define MOD_ARGS(a, s) MOD_STR(MODINFO_ARGS, a, s)
-
-#define MOD_VAR(t, a, s) { \
- COPY32(t, a); \
- COPY32(sizeof(s), a); \
- ia64_copyin(&s, a, sizeof(s)); \
- a += roundup(sizeof(s), sizeof(u_int64_t)); \
-}
-
-#define MOD_ADDR(a, s) MOD_VAR(MODINFO_ADDR, a, s)
-#define MOD_SIZE(a, s) MOD_VAR(MODINFO_SIZE, a, s)
-
-#define MOD_METADATA(a, mm) { \
- COPY32(MODINFO_METADATA | mm->md_type, a); \
- COPY32(mm->md_size, a); \
- ia64_copyin(mm->md_data, a, mm->md_size); \
- a += roundup(mm->md_size, sizeof(u_int64_t));\
-}
-
-#define MOD_END(a) { \
- COPY32(MODINFO_END, a); \
- COPY32(0, a); \
-}
-
-vm_offset_t
-bi_copymodules(vm_offset_t addr)
-{
- struct preloaded_file *fp;
- struct file_metadata *md;
-
- /* Start with the first module on the list, should be the kernel. */
- for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) {
- /* The name field must come first. */
- MOD_NAME(addr, fp->f_name);
- MOD_TYPE(addr, fp->f_type);
- if (fp->f_args)
- MOD_ARGS(addr, fp->f_args);
- MOD_ADDR(addr, fp->f_addr);
- MOD_SIZE(addr, fp->f_size);
- for (md = fp->f_metadata; md != NULL; md = md->md_next) {
- if (!(md->md_type & MODINFOMD_NOCOPY))
- MOD_METADATA(addr, md);
- }
- }
- MOD_END(addr);
- return(addr);
-}
-
-/*
- * Load the information expected by the kernel.
- *
- * - The kernel environment is copied into kernel space.
- * - Module metadata are formatted and placed in kernel space.
- */
-int
-ia64_bootinfo(struct preloaded_file *fp, struct bootinfo **res)
-{
- struct bootinfo bi;
- struct preloaded_file *xp;
- struct file_metadata *md;
- struct devdesc *rootdev;
- char *rootdevname;
- vm_offset_t addr, ssym, esym;
- int error;
-
- *res = NULL;
- bzero(&bi, sizeof(struct bootinfo));
- bi.bi_magic = BOOTINFO_MAGIC;
- bi.bi_version = 1;
- bi.bi_boothowto = bi_getboothowto(fp->f_args);
-
- /*
- * Allow the environment variable 'rootdev' to override the supplied
- * device. This should perhaps go to MI code and/or have $rootdev
- * tested/set by MI code before launching the kernel.
- */
- rootdevname = getenv("rootdev");
- ia64_getdev((void**)&rootdev, rootdevname, NULL);
- if (rootdev != NULL) {
- /* Try reading /etc/fstab to select the root device. */
- getrootmount(ia64_fmtdev(rootdev));
- free(rootdev);
- }
-
- md = file_findmetadata(fp, MODINFOMD_SSYM);
- ssym = (md != NULL) ? *((vm_offset_t *)&(md->md_data)) : 0;
- md = file_findmetadata(fp, MODINFOMD_ESYM);
- esym = (md != NULL) ? *((vm_offset_t *)&(md->md_data)) : 0;
- if (ssym != 0 && esym != 0) {
- bi.bi_symtab = ssym;
- bi.bi_esymtab = esym;
- }
-
- /* Find the last module in the chain. */
- addr = 0;
- for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) {
- if (addr < (xp->f_addr + xp->f_size))
- addr = xp->f_addr + xp->f_size;
- }
-
- addr = (addr + 15) & ~15;
-
- /* Copy module list and metadata. */
- bi.bi_modulep = addr;
- addr = bi_copymodules(addr);
- if (addr <= bi.bi_modulep) {
- addr = bi.bi_modulep;
- bi.bi_modulep = 0;
- }
-
- addr = (addr + 15) & ~15;
-
- /* Copy our environment. */
- bi.bi_envp = addr;
- addr = bi_copyenv(addr);
- if (addr <= bi.bi_envp) {
- addr = bi.bi_envp;
- bi.bi_envp = 0;
- }
-
- addr = (addr + 15) & ~15;
- bi.bi_kernend = addr;
-
- error = ia64_platform_bootinfo(&bi, res);
- if (error)
- return (error);
-
- if (IS_LEGACY_KERNEL()) {
- if (*res == NULL)
- return (EDOOFUS);
-
- bcopy(&bi, *res, sizeof(bi));
- return (0);
- }
-
- bi.bi_pbvm_pgtbl = (uintptr_t)ia64_pgtbl;
- bi.bi_pbvm_pgtblsz = ia64_pgtblsz;
- ia64_copyin((void *)bi.bi_memmap, addr, bi.bi_memmap_size);
- bi.bi_memmap = addr;
- addr = (addr + bi.bi_memmap_size + 15) & ~15;
- bi.bi_kernend = addr + sizeof(bi);
- ia64_copyin(&bi, addr, sizeof(bi));
- *res = (void *)addr;
- return (0);
-}
diff --git a/sys/boot/ia64/common/copy.c b/sys/boot/ia64/common/copy.c
deleted file mode 100644
index b14386e..0000000
--- a/sys/boot/ia64/common/copy.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <machine/param.h>
-#include <machine/pte.h>
-
-#include "libia64.h"
-
-u_int ia64_legacy_kernel;
-
-uint64_t *ia64_pgtbl;
-uint32_t ia64_pgtblsz;
-
-static int
-pgtbl_extend(u_int idx)
-{
- vm_paddr_t pa;
- uint64_t *pgtbl;
- uint32_t pgtblsz;
- u_int pot;
-
- pgtblsz = (idx + 1) << 3;
-
- /* The minimum size is 4KB. */
- if (pgtblsz < 4096)
- pgtblsz = 4096;
-
- /* Find the next higher power of 2. */
- pgtblsz--;
- for (pot = 1; pot < 32; pot <<= 1)
- pgtblsz = pgtblsz | (pgtblsz >> pot);
- pgtblsz++;
-
- /* The maximum size is 1MB. */
- if (pgtblsz > 1048576)
- return (ENOMEM);
-
- /* Make sure the size is a valid (mappable) page size. */
- if (pgtblsz == 32*1024 || pgtblsz == 128*1024 || pgtblsz == 512*1024)
- pgtblsz <<= 1;
-
- /* Allocate naturally aligned memory. */
- pa = ia64_platform_alloc(0, pgtblsz);
- if (pa == ~0UL)
- return (ENOMEM);
- pgtbl = (void *)pa;
-
- /* Initialize new page table. */
- if (ia64_pgtbl != NULL && ia64_pgtbl != pgtbl)
- bcopy(ia64_pgtbl, pgtbl, ia64_pgtblsz);
- bzero(pgtbl + (ia64_pgtblsz >> 3), pgtblsz - ia64_pgtblsz);
-
- if (ia64_pgtbl != NULL && ia64_pgtbl != pgtbl)
- ia64_platform_free(0, (uintptr_t)ia64_pgtbl, ia64_pgtblsz);
-
- ia64_pgtbl = pgtbl;
- ia64_pgtblsz = pgtblsz;
- return (0);
-}
-
-void *
-ia64_va2pa(vm_offset_t va, size_t *len)
-{
- uint64_t pa, pte;
- u_int idx, ofs;
- int error;
-
- /* Backward compatibility. */
- if (va >= IA64_RR_BASE(7)) {
- ia64_legacy_kernel = 1;
- pa = IA64_RR_MASK(va);
- return ((void *)pa);
- }
-
- if (va < IA64_PBVM_BASE) {
- error = EINVAL;
- goto fail;
- }
-
- ia64_legacy_kernel = 0;
-
- idx = (va - IA64_PBVM_BASE) >> IA64_PBVM_PAGE_SHIFT;
- if (idx >= (ia64_pgtblsz >> 3)) {
- error = pgtbl_extend(idx);
- if (error)
- goto fail;
- }
-
- ofs = va & IA64_PBVM_PAGE_MASK;
- pte = ia64_pgtbl[idx];
- if ((pte & PTE_PRESENT) == 0) {
- pa = ia64_platform_alloc(va - ofs, IA64_PBVM_PAGE_SIZE);
- if (pa == ~0UL) {
- error = ENOMEM;
- goto fail;
- }
- pte = PTE_AR_RWX | PTE_DIRTY | PTE_ACCESSED | PTE_PRESENT;
- pte |= (pa & PTE_PPN_MASK);
- ia64_pgtbl[idx] = pte;
- }
- pa = (pte & PTE_PPN_MASK) + ofs;
-
- /* We can not cross page boundaries (in general). */
- if (*len + ofs > IA64_PBVM_PAGE_SIZE)
- *len = IA64_PBVM_PAGE_SIZE - ofs;
-
- return ((void *)pa);
-
- fail:
- *len = 0;
- return (NULL);
-}
-
-ssize_t
-ia64_copyin(const void *src, vm_offset_t va, size_t len)
-{
- void *pa;
- ssize_t res;
- size_t sz;
-
- res = 0;
- while (len > 0) {
- sz = len;
- pa = ia64_va2pa(va, &sz);
- if (sz == 0)
- break;
- bcopy(src, pa, sz);
- len -= sz;
- res += sz;
- va += sz;
- }
- return (res);
-}
-
-ssize_t
-ia64_copyout(vm_offset_t va, void *dst, size_t len)
-{
- void *pa;
- ssize_t res;
- size_t sz;
-
- res = 0;
- while (len > 0) {
- sz = len;
- pa = ia64_va2pa(va, &sz);
- if (sz == 0)
- break;
- bcopy(pa, dst, sz);
- len -= sz;
- res += sz;
- va += sz;
- }
- return (res);
-}
-
-uint64_t
-ia64_loadaddr(u_int type, void *data, uint64_t addr)
-{
- uint64_t align;
-
- /*
- * Align ELF objects at PBVM page boundaries. Align all other
- * objects at cache line boundaries for good measure.
- */
- align = (type == LOAD_ELF) ? IA64_PBVM_PAGE_SIZE : CACHE_LINE_SIZE;
- return ((addr + align - 1) & ~(align - 1));
-}
-
-ssize_t
-ia64_readin(int fd, vm_offset_t va, size_t len)
-{
- void *pa;
- ssize_t res, s;
- size_t sz;
-
- res = 0;
- while (len > 0) {
- sz = len;
- pa = ia64_va2pa(va, &sz);
- if (sz == 0)
- break;
- s = read(fd, pa, sz);
- if (s <= 0)
- break;
- len -= s;
- res += s;
- va += s;
- }
- return (res);
-}
diff --git a/sys/boot/ia64/common/devicename.c b/sys/boot/ia64/common/devicename.c
deleted file mode 100644
index 08d9b54..0000000
--- a/sys/boot/ia64/common/devicename.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-#include <sys/disklabel.h>
-#include "bootstrap.h"
-
-#include <efi.h>
-#include <efilib.h>
-
-static int ia64_parsedev(struct devdesc **, const char *, const char **);
-
-/*
- * Point (dev) at an allocated device specifier for the device matching the
- * path in (devspec). If it contains an explicit device specification,
- * use that. If not, use the default device.
- */
-int
-ia64_getdev(void **vdev, const char *devspec, const char **path)
-{
- struct devdesc **dev = (struct devdesc **)vdev;
- int rv;
-
- /*
- * If it looks like this is just a path and no device, then
- * use the current device instead.
- */
- if (devspec == NULL || *devspec == '/' || !strchr(devspec, ':')) {
- rv = ia64_parsedev(dev, getenv("currdev"), NULL);
- if (rv == 0 && path != NULL)
- *path = devspec;
- return (rv);
- }
-
- /* Parse the device name off the beginning of the devspec. */
- return (ia64_parsedev(dev, devspec, path));
-}
-
-/*
- * Point (dev) at an allocated device specifier matching the string version
- * at the beginning of (devspec). Return a pointer to the remaining
- * text in (path).
- *
- * In all cases, the beginning of (devspec) is compared to the names
- * of known devices in the device switch, and then any following text
- * is parsed according to the rules applied to the device type.
- *
- * For disk-type devices, the syntax is:
- *
- * fs<unit>:
- */
-static int
-ia64_parsedev(struct devdesc **dev, const char *devspec, const char **path)
-{
- struct devdesc *idev;
- struct devsw *dv;
- char *cp;
- const char *np;
- int i, err;
-
- /* minimum length check */
- if (strlen(devspec) < 2)
- return (EINVAL);
-
- /* look for a device that matches */
- for (i = 0; devsw[i] != NULL; i++) {
- dv = devsw[i];
- if (!strncmp(devspec, dv->dv_name, strlen(dv->dv_name)))
- break;
- }
- if (devsw[i] == NULL)
- return (ENOENT);
-
- idev = malloc(sizeof(struct devdesc));
- if (idev == NULL)
- return (ENOMEM);
-
- idev->d_dev = dv;
- idev->d_type = dv->dv_type;
- idev->d_unit = -1;
-
- err = 0;
- np = devspec + strlen(dv->dv_name);
- if (*np != '\0' && *np != ':') {
- idev->d_unit = strtol(np, &cp, 0);
- if (cp == np) {
- idev->d_unit = -1;
- free(idev);
- return (EUNIT);
- }
- }
- if (*cp != '\0' && *cp != ':') {
- free(idev);
- return (EINVAL);
- }
-
- if (path != NULL)
- *path = (*cp == 0) ? cp : cp + 1;
- if (dev != NULL)
- *dev = idev;
- else
- free(idev);
- return (0);
-}
-
-char *
-ia64_fmtdev(void *vdev)
-{
- struct devdesc *dev = (struct devdesc *)vdev;
- static char buf[32]; /* XXX device length constant? */
-
- switch(dev->d_type) {
- case DEVT_NONE:
- strcpy(buf, "(no device)");
- break;
-
- default:
- sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit);
- break;
- }
-
- return(buf);
-}
-
-/*
- * Set currdev to suit the value being supplied in (value)
- */
-int
-ia64_setcurrdev(struct env_var *ev, int flags, const void *value)
-{
- struct devdesc *ncurr;
- int rv;
-
- rv = ia64_parsedev(&ncurr, value, NULL);
- if (rv != 0)
- return(rv);
-
- free(ncurr);
- env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL);
- return (0);
-}
diff --git a/sys/boot/ia64/common/exec.c b/sys/boot/ia64/common/exec.c
deleted file mode 100644
index b721f97..0000000
--- a/sys/boot/ia64/common/exec.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-
-#include <sys/param.h>
-#include <sys/linker.h>
-#include <machine/elf.h>
-#include <machine/ia64_cpu.h>
-#include <machine/pte.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "libia64.h"
-
-static u_int itr_idx = 0;
-static u_int dtr_idx = 0;
-
-static vm_offset_t ia64_text_start;
-static size_t ia64_text_size;
-
-static vm_offset_t ia64_data_start;
-static size_t ia64_data_size;
-
-static int elf64_exec(struct preloaded_file *amp);
-static int elf64_obj_exec(struct preloaded_file *amp);
-
-static struct file_format ia64_elf = {
- elf64_loadfile,
- elf64_exec
-};
-static struct file_format ia64_elf_obj = {
- elf64_obj_loadfile,
- elf64_obj_exec
-};
-
-struct file_format *file_formats[] = {
- &ia64_elf,
- &ia64_elf_obj,
- NULL
-};
-
-static u_int
-sz2shft(vm_offset_t ofs, vm_size_t sz)
-{
- vm_size_t s;
- u_int shft;
-
- shft = 12; /* Start with 4K */
- s = 1 << shft;
- while (s <= sz) {
- shft++;
- s <<= 1;
- }
- do {
- shft--;
- s >>= 1;
- } while (ofs & (s - 1));
-
- return (shft);
-}
-
-/*
- * Entered with psr.ic and psr.i both zero.
- */
-static void
-enter_kernel(uint64_t start, struct bootinfo *bi)
-{
-
- __asm __volatile("srlz.i;;");
- __asm __volatile("mov cr.ipsr=%0"
- :: "r"(IA64_PSR_IC
- | IA64_PSR_DT
- | IA64_PSR_RT
- | IA64_PSR_IT
- | IA64_PSR_BN));
- __asm __volatile("mov cr.iip=%0" :: "r"(start));
- __asm __volatile("mov cr.ifs=r0;;");
- __asm __volatile("mov ar.rsc=0;; flushrs;;");
- __asm __volatile("mov r8=%0" :: "r" (bi));
- __asm __volatile("rfi;;");
-
- /* NOTREACHED */
-}
-
-static u_int
-mmu_wire(vm_offset_t va, vm_paddr_t pa, u_int pgshft, u_int acc)
-{
- pt_entry_t pte;
-
- /* Round up to the smallest possible page size. */
- if (pgshft < 12)
- pgshft = 12;
- /* Truncate to the largest possible page size (256MB). */
- if (pgshft > 28)
- pgshft = 28;
- /* Round down to a valid (mappable) page size. */
- if (pgshft > 14 && (pgshft & 1) != 0)
- pgshft--;
-
- pte = PTE_PRESENT | PTE_MA_WB | PTE_ACCESSED | PTE_DIRTY |
- PTE_PL_KERN | (acc & PTE_AR_MASK) | (pa & PTE_PPN_MASK);
-
- __asm __volatile("mov cr.ifa=%0" :: "r"(va));
- __asm __volatile("mov cr.itir=%0" :: "r"(pgshft << 2));
- __asm __volatile("srlz.d;;");
-
- __asm __volatile("ptr.d %0,%1" :: "r"(va), "r"(pgshft << 2));
- __asm __volatile("srlz.d;;");
- __asm __volatile("itr.d dtr[%0]=%1" :: "r"(dtr_idx), "r"(pte));
- __asm __volatile("srlz.d;;");
- dtr_idx++;
-
- if (acc == PTE_AR_RWX || acc == PTE_AR_RX) {
- __asm __volatile("ptr.i %0,%1;;" :: "r"(va), "r"(pgshft << 2));
- __asm __volatile("srlz.i;;");
- __asm __volatile("itr.i itr[%0]=%1;;" :: "r"(itr_idx), "r"(pte));
- __asm __volatile("srlz.i;;");
- itr_idx++;
- }
-
- return (pgshft);
-}
-
-static void
-mmu_setup_legacy(uint64_t entry)
-{
-
- /*
- * Region 6 is direct mapped UC and region 7 is direct mapped
- * WC. The details of this is controlled by the Alt {I,D}TLB
- * handlers. Here we just make sure that they have the largest
- * possible page size to minimise TLB usage.
- */
- ia64_set_rr(IA64_RR_BASE(6), (6 << 8) | (28 << 2));
- ia64_set_rr(IA64_RR_BASE(7), (7 << 8) | (28 << 2));
- __asm __volatile("srlz.i;;");
-
- mmu_wire(entry, IA64_RR_MASK(entry), 28, PTE_AR_RWX);
-}
-
-static void
-mmu_setup_paged(struct bootinfo *bi)
-{
- void *pa;
- size_t sz;
- u_int shft;
-
- ia64_set_rr(IA64_RR_BASE(IA64_PBVM_RR),
- (IA64_PBVM_RR << 8) | (IA64_PBVM_PAGE_SHIFT << 2));
- __asm __volatile("srlz.i;;");
-
- /* Wire the PBVM page table. */
- mmu_wire(IA64_PBVM_PGTBL, (uintptr_t)ia64_pgtbl,
- sz2shft(IA64_PBVM_PGTBL, ia64_pgtblsz), PTE_AR_RW);
-
- /* Wire as much of the text segment as we can. */
- sz = ia64_text_size; /* XXX */
- pa = ia64_va2pa(ia64_text_start, &ia64_text_size);
- ia64_text_size = sz; /* XXX */
- shft = sz2shft(ia64_text_start, ia64_text_size);
- shft = mmu_wire(ia64_text_start, (uintptr_t)pa, shft, PTE_AR_RWX);
- ia64_copyin(&shft, (uintptr_t)&bi->bi_text_mapped, 4);
-
- /* Wire as much of the data segment as well. */
- sz = ia64_data_size; /* XXX */
- pa = ia64_va2pa(ia64_data_start, &ia64_data_size);
- ia64_data_size = sz; /* XXX */
- shft = sz2shft(ia64_data_start, ia64_data_size);
- shft = mmu_wire(ia64_data_start, (uintptr_t)pa, shft, PTE_AR_RW);
- ia64_copyin(&shft, (uintptr_t)&bi->bi_data_mapped, 4);
-
- /* Update the bootinfo with the number of TRs used. */
- ia64_copyin(&itr_idx, (uintptr_t)&bi->bi_itr_used, 4);
- ia64_copyin(&dtr_idx, (uintptr_t)&bi->bi_dtr_used, 4);
-}
-
-static int
-elf64_exec(struct preloaded_file *fp)
-{
- struct bootinfo *bi;
- struct file_metadata *md;
- Elf_Ehdr *hdr;
- int error;
-
- md = file_findmetadata(fp, MODINFOMD_ELFHDR);
- if (md == NULL)
- return (EINVAL);
-
- error = ia64_bootinfo(fp, &bi);
- if (error)
- return (error);
-
- hdr = (Elf_Ehdr *)&(md->md_data);
- printf("Entering %s at 0x%lx...\n", fp->f_name, hdr->e_entry);
-
- error = ia64_platform_enter(fp->f_name);
- if (error)
- return (error);
-
- __asm __volatile("rsm psr.ic|psr.i;;");
- __asm __volatile("srlz.i;;");
-
- if (IS_LEGACY_KERNEL())
- mmu_setup_legacy(hdr->e_entry);
- else
- mmu_setup_paged(bi);
-
- enter_kernel(hdr->e_entry, bi);
- /* NOTREACHED */
- return (EDOOFUS);
-}
-
-static int
-elf64_obj_exec(struct preloaded_file *fp)
-{
-
- printf("%s called for preloaded file %p (=%s):\n", __func__, fp,
- fp->f_name);
- return (ENOSYS);
-}
-
-void
-ia64_loadseg(Elf_Ehdr *eh, Elf_Phdr *ph, uint64_t delta)
-{
-
- if (eh->e_type != ET_EXEC)
- return;
-
- if (ph->p_flags & PF_X) {
- ia64_text_start = ph->p_vaddr + delta;
- ia64_text_size = ph->p_memsz;
-
- ia64_sync_icache(ia64_text_start, ia64_text_size);
- } else {
- ia64_data_start = ph->p_vaddr + delta;
- ia64_data_size = ph->p_memsz;
- }
-}
-
diff --git a/sys/boot/ia64/common/icache.c b/sys/boot/ia64/common/icache.c
deleted file mode 100644
index 77a35d7..0000000
--- a/sys/boot/ia64/common/icache.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * Copyright (c) 2011 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <machine/ia64_cpu.h>
-
-#include "libia64.h"
-
-void
-ia64_sync_icache(vm_offset_t va, size_t sz)
-{
- uintptr_t pa;
- size_t cnt, max;
-
- while (sz > 0) {
- max = sz;
- pa = (uintptr_t)ia64_va2pa(va, &max);
- for (cnt = 0; cnt < max; cnt += 32)
- ia64_fc_i(pa + cnt);
- ia64_sync_i();
- va += max;
- sz -= max;
- }
- ia64_srlz_i();
-}
diff --git a/sys/boot/ia64/common/libia64.h b/sys/boot/ia64/common/libia64.h
deleted file mode 100644
index 4bc7638..0000000
--- a/sys/boot/ia64/common/libia64.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _LIBIA64_H_
-#define _LIBIA64_H_
-
-#include <bootstrap.h>
-#include <ia64/include/bootinfo.h>
-#include <machine/vmparam.h>
-
-#define IS_LEGACY_KERNEL() (ia64_legacy_kernel)
-
-/*
- * Portability functions provided by the loader
- * implementation specific to the platform.
- */
-vm_paddr_t ia64_platform_alloc(vm_offset_t, vm_size_t);
-void ia64_platform_free(vm_offset_t, vm_paddr_t, vm_size_t);
-int ia64_platform_bootinfo(struct bootinfo *, struct bootinfo **);
-int ia64_platform_enter(const char *);
-
-/*
- * Functions and variables provided by the ia64 common code
- * and shared by all loader implementations.
- */
-extern u_int ia64_legacy_kernel;
-
-extern uint64_t *ia64_pgtbl;
-extern uint32_t ia64_pgtblsz;
-
-int ia64_autoload(void);
-int ia64_bootinfo(struct preloaded_file *, struct bootinfo **);
-uint64_t ia64_loadaddr(u_int, void *, uint64_t);
-#ifdef __elfN
-void ia64_loadseg(Elf_Ehdr *, Elf_Phdr *, uint64_t);
-#else
-void ia64_loadseg(void *, void *, uint64_t);
-#endif
-
-ssize_t ia64_copyin(const void *, vm_offset_t, size_t);
-ssize_t ia64_copyout(vm_offset_t, void *, size_t);
-void ia64_sync_icache(vm_offset_t, size_t);
-ssize_t ia64_readin(int, vm_offset_t, size_t);
-void *ia64_va2pa(vm_offset_t, size_t *);
-
-char *ia64_fmtdev(struct devdesc *);
-int ia64_getdev(void **, const char *, const char **);
-int ia64_setcurrdev(struct env_var *, int, const void *);
-
-#endif /* !_LIBIA64_H_ */
diff --git a/sys/boot/ia64/efi/Makefile b/sys/boot/ia64/efi/Makefile
deleted file mode 100644
index fc11d6e..0000000
--- a/sys/boot/ia64/efi/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-# $FreeBSD$
-
-MAN=
-
-.include <src.opts.mk>
-MK_SSP= no
-
-PROG= loader.sym
-INTERNALPROG=
-SRCS= conf.c efimd.c main.c pal.S start.S vers.c
-
-.PATH: ${.CURDIR}/../../../${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
-
-CFLAGS+= -I${.CURDIR}/../common
-CFLAGS+= -I${.CURDIR}/../../common
-CFLAGS+= -I${.CURDIR}/../../efi/include
-CFLAGS+= -I${.CURDIR}/../../efi/include/${MACHINE_CPUARCH}
-CFLAGS+= -I${.CURDIR}/../../..
-CFLAGS+= -I${.CURDIR}/../../../../lib/libstand
-
-LDSCRIPT= ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
-LDFLAGS= -Wl,-T${LDSCRIPT} -shared -symbolic
-
-${PROG}: ${LDSCRIPT}
-
-NEWVERSWHAT= "EFI boot" ${MACHINE_CPUARCH}
-
-vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
- sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
-
-OBJCOPY?= objcopy
-OBJDUMP?= objdump
-
-FILES= loader.efi
-FILESMODE_loader.efi= ${BINMODE}
-
-loader.efi: loader.sym
- if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \
- ${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \
- rm ${.ALLSRC}; \
- exit 1; \
- fi
- ${OBJCOPY} -j .data -j .dynamic -j .dynstr -j .dynsym -j .hash \
- -j .rela.dyn -j .reloc -j .sdata -j .text \
- --target=efi-app-${MACHINE_CPUARCH} ${.ALLSRC} ${.TARGET}
-
-CLEANFILES= vers.c loader.efi
-
-LIBIA64= ${.OBJDIR}/../common/libia64.a
-LIBEFI= ${.OBJDIR}/../../efi/libefi/libefi.a
-.if ${MK_FORTH} != "no"
-LIBFICL= ${.OBJDIR}/../../ficl/libficl.a
-.endif
-
-DPADD= ${LIBIA64} ${LIBFICL} ${LIBEFI} ${LIBSTAND}
-LDADD= -Wl,--whole-archive ${LIBIA64} -Wl,--no-whole-archive \
- ${LIBFICL} ${LIBEFI} -lstand
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/ia64/efi/conf.c b/sys/boot/ia64/efi/conf.c
deleted file mode 100644
index 0e0d129..0000000
--- a/sys/boot/ia64/efi/conf.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*-
- * Copyright (c) 1997
- * Matthias Drochner. All rights reserved.
- *
- * 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 for the NetBSD Project
- * by Matthias Drochner.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- *
- * $NetBSD: conf.c,v 1.2 1997/03/22 09:03:29 thorpej Exp $
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <efi.h>
-#include <efilib.h>
-
-/*
- * We could use linker sets for some or all of these, but
- * then we would have to control what ended up linked into
- * the bootstrap. So it's easier to conditionalise things
- * here.
- *
- * XXX rename these arrays to be consistent and less namespace-hostile
- */
-
-/* Exported for libstand */
-struct devsw *devsw[] = {
- &efipart_dev,
- &efinet_dev,
- NULL
-};
-
-struct fs_ops *file_system[] = {
- &dosfs_fsops,
- &ufs_fsops,
- &cd9660_fsops,
- &nfs_fsops,
- &gzipfs_fsops,
- NULL
-};
-
-struct netif_driver *netif_drivers[] = {
- &efinetif,
- NULL
-};
-
-/*
- * Consoles
- *
- * We don't prototype these in efiboot.h because they require
- * data structures from bootstrap.h as well.
- */
-extern struct console efi_console;
-
-struct console *consoles[] = {
- &efi_console,
- NULL
-};
diff --git a/sys/boot/ia64/efi/efimd.c b/sys/boot/ia64/efi/efimd.c
deleted file mode 100644
index 0b29e12..0000000
--- a/sys/boot/ia64/efi/efimd.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/*-
- * Copyright (c) 2004, 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include <libia64.h>
-
-#define EFI_INTEL_FPSWA \
- {0xc41b6531,0x97b9,0x11d3,{0x9a,0x29,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
-
-static EFI_GUID fpswa_guid = EFI_INTEL_FPSWA;
-
-/* DIG64 Headless Console & Debug Port Table. */
-#define HCDP_TABLE_GUID \
- {0xf951938d,0x620b,0x42ef,{0x82,0x79,0xa8,0x4b,0x79,0x61,0x78,0x98}}
-
-static EFI_GUID hcdp_guid = HCDP_TABLE_GUID;
-
-static EFI_MEMORY_DESCRIPTOR *memmap;
-static UINTN memmapsz;
-static UINTN mapkey;
-static UINTN descsz;
-static UINT32 descver;
-
-#define IA64_EFI_CHUNK_SIZE (32 * 1048576)
-static vm_paddr_t ia64_efi_chunk;
-
-#define IA64_EFI_PGTBLSZ_MAX 1048576
-static vm_paddr_t ia64_efi_pgtbl;
-static vm_size_t ia64_efi_pgtblsz;
-
-/* Don't allocate memory below the boundary */
-#define IA64_EFI_ALLOC_BOUNDARY 1048576
-
-static int
-ia64_efi_memmap_update(void)
-{
- EFI_STATUS status;
-
- if (memmap != NULL) {
- free(memmap);
- memmap = NULL;
- }
-
- memmapsz = 0;
- BS->GetMemoryMap(&memmapsz, NULL, &mapkey, &descsz, &descver);
- if (memmapsz == 0)
- return (FALSE);
- memmap = malloc(memmapsz);
- if (memmap == NULL)
- return (FALSE);
-
- status = BS->GetMemoryMap(&memmapsz, memmap, &mapkey, &descsz,
- &descver);
- if (EFI_ERROR(status)) {
- free(memmap);
- memmap = NULL;
- return (FALSE);
- }
-
- return (TRUE);
-}
-
-/*
- * Returns 0 on failure. Successful allocations return an address
- * larger or equal to IA64_EFI_ALLOC_BOUNDARY.
- */
-static vm_paddr_t
-ia64_efi_alloc(vm_size_t sz)
-{
- EFI_PHYSICAL_ADDRESS pa;
- EFI_MEMORY_DESCRIPTOR *mm;
- uint8_t *mmiter, *mmiterend;
- vm_size_t memsz;
- UINTN npgs;
- EFI_STATUS status;
-
- /* We can't allocate less than a page */
- if (sz < EFI_PAGE_SIZE)
- return (0);
-
- /* The size must be a power of 2. */
- if (sz & (sz - 1))
- return (0);
-
- if (!ia64_efi_memmap_update())
- return (0);
-
- mmiter = (void *)memmap;
- mmiterend = mmiter + memmapsz;
- for (; mmiter < mmiterend; mmiter += descsz) {
- mm = (void *)mmiter;
- if (mm->Type != EfiConventionalMemory)
- continue;
- memsz = mm->NumberOfPages * EFI_PAGE_SIZE;
- if (mm->PhysicalStart + memsz <= IA64_EFI_ALLOC_BOUNDARY)
- continue;
- /*
- * XXX We really should make sure the memory is local to the
- * BSP.
- */
- pa = (mm->PhysicalStart < IA64_EFI_ALLOC_BOUNDARY) ?
- IA64_EFI_ALLOC_BOUNDARY : mm->PhysicalStart;
- pa = (pa + sz - 1) & ~(sz - 1);
- if (pa + sz > mm->PhysicalStart + memsz)
- continue;
-
- npgs = EFI_SIZE_TO_PAGES(sz);
- status = BS->AllocatePages(AllocateAddress, EfiLoaderData,
- npgs, &pa);
- if (!EFI_ERROR(status))
- return (pa);
- }
-
- printf("%s: unable to allocate %lx bytes\n", __func__, sz);
- return (0);
-}
-
-vm_paddr_t
-ia64_platform_alloc(vm_offset_t va, vm_size_t sz)
-{
- vm_paddr_t pa;
-
- if (va == 0) {
- /* Page table itself. */
- if (sz > IA64_EFI_PGTBLSZ_MAX)
- return (~0UL);
- if (ia64_efi_pgtbl == 0)
- ia64_efi_pgtbl = ia64_efi_alloc(IA64_EFI_PGTBLSZ_MAX);
- if (ia64_efi_pgtbl != 0)
- ia64_efi_pgtblsz = sz;
- return (ia64_efi_pgtbl);
- } else if (va < IA64_PBVM_BASE) {
- /* Should not happen. */
- return (~0UL);
- }
-
- /* Loader virtual memory page. */
- va -= IA64_PBVM_BASE;
-
- /* Allocate a big chunk that can be wired with a single PTE. */
- if (ia64_efi_chunk == 0)
- ia64_efi_chunk = ia64_efi_alloc(IA64_EFI_CHUNK_SIZE);
- if (va < IA64_EFI_CHUNK_SIZE)
- return (ia64_efi_chunk + va);
-
- /* Allocate a page at a time when we go beyond the chunk. */
- pa = ia64_efi_alloc(sz);
- return ((pa == 0) ? ~0UL : pa);
-}
-
-void
-ia64_platform_free(vm_offset_t va, vm_paddr_t pa, vm_size_t sz)
-{
-
- BS->FreePages(pa, sz >> EFI_PAGE_SHIFT);
-}
-
-int
-ia64_platform_bootinfo(struct bootinfo *bi, struct bootinfo **res)
-{
- VOID *fpswa;
- EFI_HANDLE handle;
- EFI_STATUS status;
- UINTN sz;
-
- bi->bi_systab = (uint64_t)ST;
- bi->bi_hcdp = (uint64_t)efi_get_table(&hcdp_guid);
-
- sz = sizeof(EFI_HANDLE);
- status = BS->LocateHandle(ByProtocol, &fpswa_guid, 0, &sz, &handle);
- if (status == 0)
- status = BS->HandleProtocol(handle, &fpswa_guid, &fpswa);
- bi->bi_fpswa = (status == 0) ? (uint64_t)fpswa : 0;
-
- if (!ia64_efi_memmap_update())
- return (ENOMEM);
-
- bi->bi_memmap = (uint64_t)memmap;
- bi->bi_memmap_size = memmapsz;
- bi->bi_memdesc_size = descsz;
- bi->bi_memdesc_version = descver;
-
- if (IS_LEGACY_KERNEL())
- *res = malloc(sizeof(**res));
-
- return (0);
-}
-
-int
-ia64_platform_enter(const char *kernel)
-{
- EFI_STATUS status;
-
- status = BS->ExitBootServices(IH, mapkey);
- if (EFI_ERROR(status)) {
- printf("%s: ExitBootServices() returned 0x%lx\n", __func__,
- (long)status);
- return (EINVAL);
- }
-
- return (0);
-}
-
-COMMAND_SET(pbvm, "pbvm", "show PBVM details", command_pbvm);
-
-static int
-command_pbvm(int argc, char *argv[])
-{
- uint64_t limit, pg, start;
- u_int idx;
-
- printf("Page table @ %p, size %x\n", ia64_pgtbl, ia64_pgtblsz);
-
- if (ia64_pgtbl == NULL)
- return (0);
-
- limit = ~0;
- start = ~0;
- idx = 0;
- while (ia64_pgtbl[idx] != 0) {
- pg = ia64_pgtbl[idx];
- if (pg != limit) {
- if (start != ~0)
- printf("%#lx-%#lx\n", start, limit);
- start = pg;
- }
- limit = pg + IA64_PBVM_PAGE_SIZE;
- idx++;
- }
- if (start != ~0)
- printf("%#lx-%#lx\n", start, limit);
-
- return (0);
-}
diff --git a/sys/boot/ia64/efi/ldscript.ia64 b/sys/boot/ia64/efi/ldscript.ia64
deleted file mode 100644
index 0d7901f..0000000
--- a/sys/boot/ia64/efi/ldscript.ia64
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-ia64-freebsd", "elf64-ia64-freebsd", "elf64-ia64-freebsd")
-OUTPUT_ARCH(ia64)
-ENTRY(_start_plabel)
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0;
- ImageBase = .;
- . = SIZEOF_HEADERS;
- . = ALIGN(4096);
- .text : {
- *(.text .stub .text.* .gnu.linkonce.t.*)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.plt)
- } =0x00300000010070000002000001000400
- . = ALIGN(4096);
- __start_set_Xcommand_set = .;
- set_Xcommand_set : { *(set_Xcommand_set) }
- __stop_set_Xcommand_set = .;
- .data : {
- *(.rodata .rodata.* .gnu.linkonce.r.*)
- *(.rodata1)
- *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
- *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
- *(.opd)
- *(.data .data.* .gnu.linkonce.d.*)
- *(.data1)
- *(.plabel)
- *(.dynbss)
- *(.bss .bss.* .gnu.linkonce.b.*)
- *(COMMON)
- }
- .IA_64.unwind_info : { *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*) }
- .IA_64.unwind : { *(.IA_64.unwind* .gnu.linkonce.ia64unw.*) }
- . = ALIGN(4096);
- __gp = .;
- .sdata : {
- *(.got.plt .got)
- *(.IA_64.pltoff)
- *(.sdata .sdata.* .gnu.linkonce.s.*)
- *(dynsbss)
- *(.sbss .sbss.* .gnu.linkonce.sb.*)
- *(.scommon)
- }
- . = ALIGN(4096);
- .dynamic : { *(.dynamic) }
- . = ALIGN(4096);
- .rela.dyn : {
- *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
- *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
- *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
- *(.rela.got)
- *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
- *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
- *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
- *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
- *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
- *(.rela.plt)
- *(.rela.IA_64.pltoff)
- *(.relaset_*)
- *(.rela.dyn .rela.dyn.*)
- }
- . = ALIGN(4096);
- .reloc : { *(.reloc) }
- . = ALIGN(4096);
- .hash : { *(.hash) }
- . = ALIGN(4096);
- .dynsym : { *(.dynsym) }
- . = ALIGN(4096);
- .dynstr : { *(.dynstr) }
-}
diff --git a/sys/boot/ia64/efi/main.c b/sys/boot/ia64/efi/main.c
deleted file mode 100644
index ec12b42..0000000
--- a/sys/boot/ia64/efi/main.c
+++ /dev/null
@@ -1,618 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 1998,2000 Doug Rabson <dfr@freebsd.org>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-#include <setjmp.h>
-#include <machine/sal.h>
-#include <machine/pal.h>
-#include <machine/pte.h>
-#include <machine/dig64.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include <libia64.h>
-
-/* DIG64 Headless Console & Debug Port Table. */
-#define HCDP_TABLE_GUID \
- {0xf951938d,0x620b,0x42ef,{0x82,0x79,0xa8,0x4b,0x79,0x61,0x78,0x98}}
-
-extern char bootprog_name[];
-extern char bootprog_rev[];
-extern char bootprog_date[];
-extern char bootprog_maker[];
-
-struct arch_switch archsw; /* MI/MD interface boundary */
-
-extern u_int64_t ia64_pal_entry;
-
-EFI_GUID acpi = ACPI_TABLE_GUID;
-EFI_GUID acpi20 = ACPI_20_TABLE_GUID;
-EFI_GUID devid = DEVICE_PATH_PROTOCOL;
-EFI_GUID hcdp = HCDP_TABLE_GUID;
-EFI_GUID imgid = LOADED_IMAGE_PROTOCOL;
-EFI_GUID mps = MPS_TABLE_GUID;
-EFI_GUID netid = EFI_SIMPLE_NETWORK_PROTOCOL;
-EFI_GUID sal = SAL_SYSTEM_TABLE_GUID;
-EFI_GUID smbios = SMBIOS_TABLE_GUID;
-
-static void
-find_pal_proc(void)
-{
- int i;
- struct sal_system_table *saltab = 0;
- static int sizes[6] = {
- 48, 32, 16, 32, 16, 16
- };
- u_int8_t *p;
-
- saltab = efi_get_table(&sal);
- if (saltab == NULL) {
- printf("Can't find SAL System Table\n");
- return;
- }
-
- if (memcmp(saltab->sal_signature, "SST_", 4)) {
- printf("Bad signature for SAL System Table\n");
- return;
- }
-
- p = (u_int8_t *) (saltab + 1);
- for (i = 0; i < saltab->sal_entry_count; i++) {
- if (*p == 0) {
- struct sal_entrypoint_descriptor *dp;
- dp = (struct sal_entrypoint_descriptor *) p;
- ia64_pal_entry = dp->sale_pal_proc;
- return;
- }
- p += sizes[*p];
- }
-
- printf("Can't find PAL proc\n");
- return;
-}
-
-static int
-usc2cmp(CHAR16 *s1, CHAR16 *s2)
-{
-
- while (*s1 == *s2++) {
- if (*s1++ == 0)
- return (0);
- }
- return (*s1 - *(s2 - 1));
-}
-
-static char *
-get_dev_option(int argc, CHAR16 *argv[])
-{
- static char dev[32];
- CHAR16 *arg;
- char *devp;
- int i, j;
-
- devp = NULL;
- for (i = 0; i < argc; i++) {
- if (usc2cmp(argv[i], L"-dev") == 0 && i < argc - 1) {
- arg = argv[i + 1];
- j = 0;
- while (j < sizeof(dev) && *arg != 0)
- dev[j++] = *arg++;
- if (j == sizeof(dev))
- j--;
- dev[j] = '\0';
- devp = dev;
- break;
- }
- }
-
- return (devp);
-}
-
-EFI_STATUS
-main(int argc, CHAR16 *argv[])
-{
- struct devdesc currdev;
- EFI_LOADED_IMAGE *img;
- char *dev;
- int i;
-
- /*
- * XXX Chicken-and-egg problem; we want to have console output
- * early, but some console attributes may depend on reading from
- * eg. the boot device, which we can't do yet. We can use
- * printf() etc. once this is done.
- */
- cons_probe();
-
- printf("\n%s, Revision %s\n", bootprog_name, bootprog_rev);
-
- find_pal_proc();
-
- /*
- * March through the device switch probing for things.
- */
- for (i = 0; devsw[i] != NULL; i++)
- if (devsw[i]->dv_init != NULL)
- (devsw[i]->dv_init)();
-
- /*
- * Disable the watchdog timer. By default the boot manager sets
- * the timer to 5 minutes before invoking a boot option. If we
- * want to return to the boot manager, we have to disable the
- * watchdog timer and since we're an interactive program, we don't
- * want to wait until the user types "quit". The timer may have
- * fired by then. We don't care if this fails. It does not prevent
- * normal functioning in any way...
- */
- BS->SetWatchdogTimer(0, 0, 0, NULL);
-
- /* Get our loaded image protocol interface structure. */
- BS->HandleProtocol(IH, &imgid, (VOID**)&img);
-
- bzero(&currdev, sizeof(currdev));
- efi_handle_lookup(img->DeviceHandle, &currdev.d_dev, &currdev.d_unit);
- currdev.d_type = currdev.d_dev->dv_type;
-
- env_setenv("loaddev", EV_VOLATILE, ia64_fmtdev(&currdev), env_noset,
- env_nounset);
-
- dev = get_dev_option(argc, argv);
- if (dev == NULL)
- dev = ia64_fmtdev(&currdev);
-
- env_setenv("currdev", EV_VOLATILE, dev, ia64_setcurrdev, env_nounset);
-
- setenv("LINES", "24", 1); /* optional */
-
- archsw.arch_autoload = ia64_autoload;
- archsw.arch_copyin = ia64_copyin;
- archsw.arch_copyout = ia64_copyout;
- archsw.arch_getdev = ia64_getdev;
- archsw.arch_loadaddr = ia64_loadaddr;
- archsw.arch_loadseg = ia64_loadseg;
- archsw.arch_readin = ia64_readin;
-
- interact(); /* doesn't return */
-
- return (EFI_SUCCESS); /* keep compiler happy */
-}
-
-COMMAND_SET(quit, "quit", "exit the loader", command_quit);
-
-static int
-command_quit(int argc, char *argv[])
-{
- exit(0);
- /* NOTREACHED */
- return (CMD_OK);
-}
-
-COMMAND_SET(reboot, "reboot", "reboot the system", command_reboot);
-
-static int
-command_reboot(int argc, char *argv[])
-{
-
- RS->ResetSystem(EfiResetWarm, EFI_SUCCESS, 0, NULL);
- /* NOTREACHED */
- return (CMD_OK);
-}
-
-COMMAND_SET(memmap, "memmap", "print memory map", command_memmap);
-
-static int
-command_memmap(int argc, char *argv[])
-{
- UINTN sz;
- EFI_MEMORY_DESCRIPTOR *map, *p;
- UINTN key, dsz;
- UINT32 dver;
- EFI_STATUS status;
- int i, ndesc;
- static char *types[] = {
- "Reserved",
- "LoaderCode",
- "LoaderData",
- "BootServicesCode",
- "BootServicesData",
- "RuntimeServicesCode",
- "RuntimeServicesData",
- "ConventionalMemory",
- "UnusableMemory",
- "ACPIReclaimMemory",
- "ACPIMemoryNVS",
- "MemoryMappedIO",
- "MemoryMappedIOPortSpace",
- "PalCode"
- };
-
- sz = 0;
- status = BS->GetMemoryMap(&sz, 0, &key, &dsz, &dver);
- if (status != EFI_BUFFER_TOO_SMALL) {
- printf("Can't determine memory map size\n");
- return CMD_ERROR;
- }
- map = malloc(sz);
- status = BS->GetMemoryMap(&sz, map, &key, &dsz, &dver);
- if (EFI_ERROR(status)) {
- printf("Can't read memory map\n");
- return CMD_ERROR;
- }
-
- ndesc = sz / dsz;
- printf("%23s %12s %12s %8s %4s\n",
- "Type", "Physical", "Virtual", "#Pages", "Attr");
-
- for (i = 0, p = map; i < ndesc;
- i++, p = NextMemoryDescriptor(p, dsz)) {
- printf("%23s %012lx %012lx %08lx ",
- types[p->Type],
- p->PhysicalStart,
- p->VirtualStart,
- p->NumberOfPages);
- if (p->Attribute & EFI_MEMORY_UC)
- printf("UC ");
- if (p->Attribute & EFI_MEMORY_WC)
- printf("WC ");
- if (p->Attribute & EFI_MEMORY_WT)
- printf("WT ");
- if (p->Attribute & EFI_MEMORY_WB)
- printf("WB ");
- if (p->Attribute & EFI_MEMORY_UCE)
- printf("UCE ");
- if (p->Attribute & EFI_MEMORY_WP)
- printf("WP ");
- if (p->Attribute & EFI_MEMORY_RP)
- printf("RP ");
- if (p->Attribute & EFI_MEMORY_XP)
- printf("XP ");
- if (p->Attribute & EFI_MEMORY_RUNTIME)
- printf("RUNTIME");
- printf("\n");
- }
-
- return CMD_OK;
-}
-
-COMMAND_SET(configuration, "configuration",
- "print configuration tables", command_configuration);
-
-static const char *
-guid_to_string(EFI_GUID *guid)
-{
- static char buf[40];
-
- sprintf(buf, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
- guid->Data1, guid->Data2, guid->Data3, guid->Data4[0],
- guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4],
- guid->Data4[5], guid->Data4[6], guid->Data4[7]);
- return (buf);
-}
-
-static int
-command_configuration(int argc, char *argv[])
-{
- int i;
-
- printf("NumberOfTableEntries=%ld\n", ST->NumberOfTableEntries);
- for (i = 0; i < ST->NumberOfTableEntries; i++) {
- EFI_GUID *guid;
-
- printf(" ");
- guid = &ST->ConfigurationTable[i].VendorGuid;
- if (!memcmp(guid, &mps, sizeof(EFI_GUID)))
- printf("MPS Table");
- else if (!memcmp(guid, &acpi, sizeof(EFI_GUID)))
- printf("ACPI Table");
- else if (!memcmp(guid, &acpi20, sizeof(EFI_GUID)))
- printf("ACPI 2.0 Table");
- else if (!memcmp(guid, &smbios, sizeof(EFI_GUID)))
- printf("SMBIOS Table");
- else if (!memcmp(guid, &sal, sizeof(EFI_GUID)))
- printf("SAL System Table");
- else if (!memcmp(guid, &hcdp, sizeof(EFI_GUID)))
- printf("DIG64 HCDP Table");
- else
- printf("Unknown Table (%s)", guid_to_string(guid));
- printf(" at %p\n", ST->ConfigurationTable[i].VendorTable);
- }
-
- return CMD_OK;
-}
-
-COMMAND_SET(sal, "sal", "print SAL System Table", command_sal);
-
-static int
-command_sal(int argc, char *argv[])
-{
- int i;
- struct sal_system_table *saltab = 0;
- static int sizes[6] = {
- 48, 32, 16, 32, 16, 16
- };
- u_int8_t *p;
-
- saltab = efi_get_table(&sal);
- if (saltab == NULL) {
- printf("Can't find SAL System Table\n");
- return CMD_ERROR;
- }
-
- if (memcmp(saltab->sal_signature, "SST_", 4)) {
- printf("Bad signature for SAL System Table\n");
- return CMD_ERROR;
- }
-
- printf("SAL Revision %x.%02x\n",
- saltab->sal_rev[1],
- saltab->sal_rev[0]);
- printf("SAL A Version %x.%02x\n",
- saltab->sal_a_version[1],
- saltab->sal_a_version[0]);
- printf("SAL B Version %x.%02x\n",
- saltab->sal_b_version[1],
- saltab->sal_b_version[0]);
-
- p = (u_int8_t *) (saltab + 1);
- for (i = 0; i < saltab->sal_entry_count; i++) {
- printf(" Desc %d", *p);
- if (*p == 0) {
- struct sal_entrypoint_descriptor *dp;
- dp = (struct sal_entrypoint_descriptor *) p;
- printf("\n");
- printf(" PAL Proc at 0x%lx\n",
- dp->sale_pal_proc);
- printf(" SAL Proc at 0x%lx\n",
- dp->sale_sal_proc);
- printf(" SAL GP at 0x%lx\n",
- dp->sale_sal_gp);
- } else if (*p == 1) {
- struct sal_memory_descriptor *dp;
- dp = (struct sal_memory_descriptor *) p;
- printf(" Type %d.%d, ",
- dp->sale_memory_type[0],
- dp->sale_memory_type[1]);
- printf("Address 0x%lx, ",
- dp->sale_physical_address);
- printf("Length 0x%x\n",
- dp->sale_length);
- } else if (*p == 5) {
- struct sal_ap_wakeup_descriptor *dp;
- dp = (struct sal_ap_wakeup_descriptor *) p;
- printf("\n");
- printf(" Mechanism %d\n", dp->sale_mechanism);
- printf(" Vector 0x%lx\n", dp->sale_vector);
- } else
- printf("\n");
-
- p += sizes[*p];
- }
-
- return CMD_OK;
-}
-
-int
-print_trs(int type)
-{
- struct ia64_pal_result res;
- int i, maxtr;
- struct {
- pt_entry_t pte;
- uint64_t itir;
- uint64_t ifa;
- struct ia64_rr rr;
- } buf;
- static const char *psnames[] = {
- "1B", "2B", "4B", "8B",
- "16B", "32B", "64B", "128B",
- "256B", "512B", "1K", "2K",
- "4K", "8K", "16K", "32K",
- "64K", "128K", "256K", "512K",
- "1M", "2M", "4M", "8M",
- "16M", "32M", "64M", "128M",
- "256M", "512M", "1G", "2G"
- };
- static const char *manames[] = {
- "WB", "bad", "bad", "bad",
- "UC", "UCE", "WC", "NaT",
- };
-
- res = ia64_call_pal_static(PAL_VM_SUMMARY, 0, 0, 0);
- if (res.pal_status != 0) {
- printf("Can't get VM summary\n");
- return CMD_ERROR;
- }
-
- if (type == 0)
- maxtr = (res.pal_result[0] >> 40) & 0xff;
- else
- maxtr = (res.pal_result[0] >> 32) & 0xff;
-
- printf("%d translation registers\n", maxtr);
-
- pager_open();
- pager_output("TR# RID Virtual Page Physical Page PgSz ED AR PL D A MA P KEY\n");
- for (i = 0; i <= maxtr; i++) {
- char lbuf[128];
-
- bzero(&buf, sizeof(buf));
- res = ia64_call_pal_stacked(PAL_VM_TR_READ, i, type,
- (u_int64_t) &buf);
- if (res.pal_status != 0)
- break;
-
- /* Only display valid translations */
- if ((buf.ifa & 1) == 0)
- continue;
-
- if (!(res.pal_result[0] & 1))
- buf.pte &= ~PTE_AR_MASK;
- if (!(res.pal_result[0] & 2))
- buf.pte &= ~PTE_PL_MASK;
- if (!(res.pal_result[0] & 4))
- buf.pte &= ~PTE_DIRTY;
- if (!(res.pal_result[0] & 8))
- buf.pte &= ~PTE_MA_MASK;
- sprintf(lbuf, "%03d %06x %013lx %013lx %4s %d %d %d %d %d "
- "%-3s %d %06x\n", i, buf.rr.rr_rid, buf.ifa >> 12,
- (buf.pte & PTE_PPN_MASK) >> 12,
- psnames[(buf.itir & ITIR_PS_MASK) >> 2],
- (buf.pte & PTE_ED) ? 1 : 0,
- (int)(buf.pte & PTE_AR_MASK) >> 9,
- (int)(buf.pte & PTE_PL_MASK) >> 7,
- (buf.pte & PTE_DIRTY) ? 1 : 0,
- (buf.pte & PTE_ACCESSED) ? 1 : 0,
- manames[(buf.pte & PTE_MA_MASK) >> 2],
- (buf.pte & PTE_PRESENT) ? 1 : 0,
- (int)((buf.itir & ITIR_KEY_MASK) >> 8));
- pager_output(lbuf);
- }
- pager_close();
-
- if (res.pal_status != 0) {
- printf("Error while getting TR contents\n");
- return CMD_ERROR;
- }
- return CMD_OK;
-}
-
-COMMAND_SET(itr, "itr", "print instruction TRs", command_itr);
-
-static int
-command_itr(int argc, char *argv[])
-{
- return print_trs(0);
-}
-
-COMMAND_SET(dtr, "dtr", "print data TRs", command_dtr);
-
-static int
-command_dtr(int argc, char *argv[])
-{
- return print_trs(1);
-}
-
-COMMAND_SET(hcdp, "hcdp", "Dump HCDP info", command_hcdp);
-
-static char *
-hcdp_string(char *s, u_int len)
-{
- static char buffer[256];
-
- memcpy(buffer, s, len);
- buffer[len] = 0;
- return (buffer);
-}
-
-static int
-command_hcdp(int argc, char *argv[])
-{
- struct dig64_hcdp_table *tbl;
- struct dig64_hcdp_entry *ent;
- struct dig64_gas *gas;
- int i;
-
- tbl = efi_get_table(&hcdp);
- if (tbl == NULL) {
- printf("No HCDP table present\n");
- return (CMD_OK);
- }
- if (memcmp(tbl->signature, HCDP_SIGNATURE, sizeof(tbl->signature))) {
- printf("HCDP table has invalid signature\n");
- return (CMD_OK);
- }
- if (tbl->length < sizeof(*tbl) - sizeof(*tbl->entry)) {
- printf("HCDP table too short\n");
- return (CMD_OK);
- }
- printf("HCDP table at 0x%016lx\n", (u_long)tbl);
- printf("Signature = %s\n", hcdp_string(tbl->signature, 4));
- printf("Length = %u\n", tbl->length);
- printf("Revision = %u\n", tbl->revision);
- printf("Checksum = %u\n", tbl->checksum);
- printf("OEM Id = %s\n", hcdp_string(tbl->oem_id, 6));
- printf("Table Id = %s\n", hcdp_string(tbl->oem_tbl_id, 8));
- printf("OEM rev = %u\n", tbl->oem_rev);
- printf("Creator Id = %s\n", hcdp_string(tbl->creator_id, 4));
- printf("Creator rev= %u\n", tbl->creator_rev);
- printf("Entries = %u\n", tbl->entries);
- for (i = 0; i < tbl->entries; i++) {
- ent = tbl->entry + i;
- printf("Entry #%d:\n", i + 1);
- printf(" Type = %u\n", ent->type);
- printf(" Databits = %u\n", ent->databits);
- printf(" Parity = %u\n", ent->parity);
- printf(" Stopbits = %u\n", ent->stopbits);
- printf(" PCI seg = %u\n", ent->pci_segment);
- printf(" PCI bus = %u\n", ent->pci_bus);
- printf(" PCI dev = %u\n", ent->pci_device);
- printf(" PCI func = %u\n", ent->pci_function);
- printf(" Interrupt = %u\n", ent->interrupt);
- printf(" PCI flag = %u\n", ent->pci_flag);
- printf(" Baudrate = %lu\n",
- ((u_long)ent->baud_high << 32) + (u_long)ent->baud_low);
- gas = &ent->address;
- printf(" Addr space= %u\n", gas->addr_space);
- printf(" Bit width = %u\n", gas->bit_width);
- printf(" Bit offset= %u\n", gas->bit_offset);
- printf(" Address = 0x%016lx\n",
- ((u_long)gas->addr_high << 32) + (u_long)gas->addr_low);
- printf(" PCI type = %u\n", ent->pci_devid);
- printf(" PCI vndr = %u\n", ent->pci_vendor);
- printf(" IRQ = %u\n", ent->irq);
- printf(" PClock = %u\n", ent->pclock);
- printf(" PCI iface = %u\n", ent->pci_interface);
- }
- printf("<EOT>\n");
- return (CMD_OK);
-}
-
-COMMAND_SET(about, "about", "about the loader", command_about);
-
-extern uint64_t _start_plabel[];
-
-static int
-command_about(int argc, char *argv[])
-{
- EFI_LOADED_IMAGE *img;
-
- printf("%s\n", bootprog_name);
- printf("revision %s\n", bootprog_rev);
- printf("built by %s\n", bootprog_maker);
- printf("built on %s\n", bootprog_date);
-
- printf("\n");
-
- BS->HandleProtocol(IH, &imgid, (VOID**)&img);
- printf("image loaded at %p\n", img->ImageBase);
- printf("entry at %#lx (%#lx)\n", _start_plabel[0], _start_plabel[1]);
-}
diff --git a/sys/boot/ia64/efi/start.S b/sys/boot/ia64/efi/start.S
deleted file mode 100644
index 9d28a96..0000000
--- a/sys/boot/ia64/efi/start.S
+++ /dev/null
@@ -1,290 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
- .text
-
-#include <machine/asm.h>
-
-#define EFI_SUCCESS 0
-#define EFI_LOAD_ERROR 1
-#define EFI_BUFFER_TOO_SMALL 5
-
-#define DT_NULL 0 /* Terminating entry. */
-#define DT_PLTRELSZ 2 /* Total size in bytes of PLT relocations. */
-#define DT_SYMTAB 6 /* Address of symbol table. */
-#define DT_RELA 7 /* Address of ElfNN_Rela relocations. */
-#define DT_RELASZ 8 /* Total size of ElfNN_Rela relocations. */
-#define DT_RELAENT 9 /* Size of each ElfNN_Rela relocation entry. */
-#define DT_SYMENT 11 /* Size of each symbol table entry. */
-#define DT_JMPREL 23 /* Address of PLT relocations. */
-
-#define R_IA_64_NONE 0 /* None */
-#define R_IA_64_DIR64LSB 0x27 /* word64 LSB S + A */
-#define R_IA_64_FPTR64LSB 0x47 /* word64 LSB @fptr(S + A) */
-#define R_IA_64_REL32LSB 0x6d /* word32 LSB BD + A */
-#define R_IA_64_REL64LSB 0x6f /* word64 LSB BD + A */
-#define R_IA_64_IPLTLSB 0x81 /* function descriptor LSB speciaal */
-
-ENTRY(_start, 2)
- alloc loc0=ar.pfs,2,3,3,0
- mov loc1=rp
- movl loc2=@gprel(ImageBase)
- ;;
- add loc2=gp,loc2
- ;;
- mov out0=loc2
- mov out1=in1
- ;;
- br.call.sptk.few rp=_reloc // relocate image
-
- cmp.ne p6,p0=EFI_SUCCESS,r8 // did it work?
-(p6) br.cond.dpnt.few 9f
-
- mov out0=in0 // image_handle
- mov out1=in1 // system_table
- br.call.sptk.few rp=efi_main
-9:
- mov ar.pfs=loc0
- mov rp=loc1
- ;;
- br.ret.sptk.few rp
-END(_start)
-
- // PLABEL for PE32+
- .section .plabel, "a"
- .align 16
- .global _start_plabel
-_start_plabel:
- data16 @iplt(_start)
- .previous
-
- // A PE32+ relocation entry for the plabel
- .section .reloc, "a"
- data4 _start_plabel
- data4 12
- data2 (10 << 12) + 0
- data2 (10 << 12) + 8
- .previous
-
-// in0: image base
-// in1: system table
-//
-// XXX Assumes PLT relocations are of type Elf_Rela
-//
-// r2 = address of fptr_storage
-// r3 = address of fptr_storage_end
-// r4 = address of first free fptr
-//
-// r15 = r_offset
-// r16 = r_info -OR- d_tag
-// r17 = r_addend -OR- d_val (=d_ptr)
-// r18 = address of .rela dynamic section
-// r19 = size of .rela section
-// r20 = size of .rela element (Elf_Rela)
-// r21 = address of first PLT relocation
-// r22 = size of PLT relocations
-// r23 = relocation type
-// r24 = address of symbol
-// r28 = R_IA_64_IPLTLSB
-// f8 = address of symbol table
-// f9 = size of symtab element
-
-STATIC_ENTRY(_reloc, 2)
- alloc loc0=ar.pfs,2,2,0,0
- ;;
- mov loc1=rp
- movl r29=@gprel(_DYNAMIC) // find _DYNAMIC etc.
- ;;
- add r15=r29,gp
- movl r29=@gprel(fptr_storage)
- ;;
- add r2=r29,gp
- movl r29=@gprel(fptr_storage_end)
- ;;
- add r3=r29,gp
- mov r4=r2
- mov r19=0
- mov r22=0
- mov r20=24
- mov r28=R_IA_64_IPLTLSB
- ;;
-1:
- ld8 r16=[r15],8 // read r15->d_tag
- ;;
- ld8 r17=[r15],8 // and r15->d_val
- ;;
- cmp.eq p6,p0=DT_NULL,r16 // done?
-(p6) br.cond.dpnt.few 2f
- ;;
- cmp.eq p6,p0=DT_RELA,r16 // rela section?
- ;;
-(p6) add r18=r17,in0
- cmp.eq p6,p0=DT_RELASZ,r16 // rela section size?
- ;;
-(p6) mov r19=r17
- cmp.eq p6,p0=DT_RELAENT,r16 // rela entry size?
- ;;
-(p6) mov r20=r17
- cmp.eq p6,p0=DT_JMPREL,r16 // PLT relocs?
- ;;
-(p6) add r21=r17,in0
- cmp.eq p6,p0=DT_PLTRELSZ,r16 // PLT relocs size?
- ;;
-(p6) mov r22=r17
- cmp.eq p6,p0=DT_SYMTAB,r16 // symbol table?
- ;;
-(p6) add r29=r17,in0
- ;;
-(p6) setf.sig f8=r29
- cmp.eq p6,p0=DT_SYMENT,r16 // symbol entry size?
- ;;
-(p6) setf.sig f9=r17
- br.dptk 1b
-
-2:
- cmp.lt p6,p0=0,r19
-(p6) br.cond.dptk 3f
- ;;
- mov r19=r22
- mov r18=r21
- mov r21=0
- mov r22=0
- ;;
- cmp.lt p6,p0=0,r19
-(p6) br.cond.dptk 3f
- ;;
- mov r8=EFI_SUCCESS
- br.dptk 9f
-3:
- ld8 r29=[r18],8 // read r_offset
- ;;
- ld8 r16=[r18],8 // read r_info
- add r15=r29,in0 // relocate r_offset
- ;;
- ld8 r17=[r18],8 // read r_addend
- sub r19=r19,r20 // update relasz
- extr.u r23=r16,0,32 // ELF64_R_TYPE(r16)
- ;;
- cmp.eq p6,p0=R_IA_64_NONE,r23
-(p6) br.cond.dpnt.few 2b
- ;;
- cmp.eq p6,p0=R_IA_64_REL32LSB,r23
-(p6) br.cond.dptk.few 3f
- ;;
- cmp.eq p6,p0=R_IA_64_REL64LSB,r23
-(p6) br.cond.dptk.few 4f
- ;;
- extr.u r29=r16,32,32 // ELF64_R_SYM(r16)
- ;;
- setf.sig f10=r29 // so we can multiply
- ;;
- xma.lu f10=f10,f9,f8 // f10=symtab + r_sym*syment
- ;;
- getf.sig r29=f10
- ;;
- add r29=8,r29 // address of st_value
- ;;
- ld8 r29=[r29] // read symbol value
- ;;
- add r24=r29,in0 // relocate symbol value
- ;;
- cmp.eq p6,p0=R_IA_64_DIR64LSB,r23
-(p6) br.cond.dptk.few 5f
- ;;
- cmp.eq p6,p0=R_IA_64_FPTR64LSB,r23
-(p6) br.cond.dptk.few 6f
- ;;
- cmp.ne p6,p0=r28,r23 // IPLTLSB
-(p6) br.cond.dptk.few 2b
-
- // IPLTLSB
- add r29=r24,r17 // S + A
- ;;
- st8 [r15]=r29,8 // fdesc:FP
- ;;
- st8 [r15]=gp // fdesc:GP
- br.cond.sptk.few 2b
-
- // REL32LSB
-3:
- add r29=in0,r17
- ;;
- st4 [r15]=r29
- br.cond.sptk.few 2b
-
- // REL64LSB
-4:
- add r29=in0,r17 // BD + A
- ;;
- st8 [r15]=r29 // word64
- br.cond.sptk.few 2b
-
- // DIR64LSB
-5:
- add r29=r24,r17 // S + A
- ;;
- st8 [r15]=r29 // word64
- br.cond.sptk.few 2b
-
-6:
- mov r29=r2 // FPTR64LSB
- ;;
-7:
- cmp.geu p6,p0=r29,r4 // end of fptrs?
-(p6) br.cond.dpnt.few 8f // can't find existing fptr
- ld8 r17=[r29] // read function from fptr
- ;;
- cmp.eq p6,p0=r24,r17 // same function?
- ;;
-(p6) st8 [r15]=r29 // reuse fptr
-(p6) br.cond.sptk.few 2b // done
- add r29=16,r29 // next fptr
- br.sptk.few 7b
-8:
- mov r8=EFI_BUFFER_TOO_SMALL // failure return value
- cmp.geu p6,p0=r4,r3 // space left?
-(p6) br.cond.dpnt.few 9f // bail out
- st8 [r15]=r4 // install fptr
- ;;
- st8 [r4]=r24,8 // write fptr address
- ;;
- st8 [r4]=gp,8 // write fptr gp
- br.cond.sptk.few 2b
-
-9:
- mov ar.pfs=loc0
- mov rp=loc1
- ;;
- br.ret.sptk.few rp
-END(_reloc)
-
- .data
- .align 16
-fptr_storage:
- .space 1024*16 // XXX
-fptr_storage_end:
diff --git a/sys/boot/ia64/efi/version b/sys/boot/ia64/efi/version
deleted file mode 100644
index 4f4203a..0000000
--- a/sys/boot/ia64/efi/version
+++ /dev/null
@@ -1,27 +0,0 @@
-$FreeBSD$
-
-NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
-file is important. Make sure the current version number is on line 6.
-
-3.2: Various fixes to libstand, in particular dosfs.
-3.1: Add the about, reboot and pbvm commands.
- I-cache coherency is maintained.
-3.0: Add support for PBVM.
-2.2: Create direct mapping based on start address instead of mapping
- first 256M.
-2.1: Add support for "-dev <part>" argument parsing.
-2.0: Provide devices based on the block I/O protocol, rather than the
- simple file services protocol. Use the FreeBSD file system code
- on top of those devices to access files.
-1.2: Restructured. Has some user visible differences.
-1.1: Pass the HCDP table address to the kernel via bootinfo if one
- is present in the EFI system table.
-1.0: Don't map the I/O port range. We expect the kernel to do it. It
- was done in the loader as a debugging aid and not intended as a
- service/feature.
-0.3: Pass the physical address of the bootinfo block in register r8
- to the kernel. Continue to put it at the fixed address for now.
-0.2: Much improved version. Significant is the support for passing
- the FPSWA interface pointer to the kernel.
-0.1: Initial EFI version, germinated from the NetBSD i386
- standalone, but enormously modified.
diff --git a/sys/boot/ia64/ski/Makefile b/sys/boot/ia64/ski/Makefile
deleted file mode 100644
index 0620126..0000000
--- a/sys/boot/ia64/ski/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# $FreeBSD$
-
-MAN=
-
-.include <src.opts.mk>
-MK_SSP= no
-
-PROG= skiload
-STRIP= # We must not strip skiload at install time.
-
-SRCS= acpi_stub.c conf.c delay.c efi_stub.c exit.c main.c \
- pal_stub.S sal_stub.c skiconsole.c skifs.c skimd.c \
- ssc.c start.S time.c vers.c
-
-CFLAGS+= -I${.CURDIR}/../common
-CFLAGS+= -I${.CURDIR}/../../common
-CFLAGS+= -I${.CURDIR}/../../..
-CFLAGS+= -I${.CURDIR}/../../../../lib/libstand
-
-LDSCRIPT= ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
-LDFLAGS= -Wl,-T${LDSCRIPT}
-
-NEWVERSWHAT= "SKI boot" ${MACHINE_CPUARCH}
-
-vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
- sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
-
-CLEANFILES= vers.c
-
-LIBIA64= ${.OBJDIR}/../common/libia64.a
-.if ${MK_FORTH} != "no"
-LIBFICL= ${.OBJDIR}/../../ficl/libficl.a
-.endif
-
-DPADD= ${LIBIA64} ${LIBFICL} ${LIBSTAND}
-LDADD= -Wl,--whole-archive ${LIBIA64} -Wl,--no-whole-archive \
- ${LIBFICL} -lstand
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/ia64/ski/acpi_stub.c b/sys/boot/ia64/ski/acpi_stub.c
deleted file mode 100644
index b16bb0a..0000000
--- a/sys/boot/ia64/ski/acpi_stub.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <contrib/dev/acpica/include/acpi.h>
-
-#define APIC_IO_SAPIC 6
-#define APIC_LOCAL_SAPIC 7
-
-#pragma pack(1)
-
-typedef struct /* LOCAL SAPIC */
-{
- ACPI_SUBTABLE_HEADER Header;
- UINT8 ProcessorId; /* ACPI processor id */
- UINT8 LocalSapicId; /* Processor local SAPIC id */
- UINT8 LocalSapicEid; /* Processor local SAPIC eid */
- UINT8 Reserved[3];
- UINT32 ProcessorEnabled: 1;
- UINT32 FlagsReserved: 31;
-} LOCAL_SAPIC;
-
-typedef struct /* IO SAPIC */
-{
- ACPI_SUBTABLE_HEADER Header;
- UINT8 IoSapicId; /* I/O SAPIC ID */
- UINT8 Reserved; /* reserved - must be zero */
- UINT32 Vector; /* interrupt base */
- UINT64 IoSapicAddress; /* SAPIC's physical address */
-} IO_SAPIC;
-
-/*
- */
-
-struct {
- ACPI_TABLE_MADT MADT;
- ACPI_MADT_LOCAL_SAPIC cpu0;
- ACPI_MADT_LOCAL_SAPIC cpu1;
- ACPI_MADT_LOCAL_SAPIC cpu2;
- ACPI_MADT_LOCAL_SAPIC cpu3;
- ACPI_MADT_IO_SAPIC sapic;
-} apic = {
- /* Header. */
- {
- ACPI_SIG_MADT, /* Signature. */
- sizeof(apic), /* Length of table. */
- 0, /* ACPI minor revision. */
- 0, /* Checksum. */
- "FBSD", /* OEM Id. */
- "SKI", /* OEM table Id. */
- 0, /* OEM revision. */
- "FBSD", /* ASL compiler Id. */
- 0, /* ASL revision. */
- 0xfee00000,
- },
- /* cpu0. */
- {
- APIC_LOCAL_SAPIC, /* Type. */
- sizeof(apic.cpu0), /* Length. */
- 0, /* ACPI processor id */
- 0, /* Processor local SAPIC id */
- 0, /* Processor local SAPIC eid */
- { 0, 0, 0 },
- 1, /* FL: Enabled. */
- },
- /* cpu1. */
- {
- APIC_LOCAL_SAPIC, /* Type. */
- sizeof(apic.cpu1), /* Length. */
- 1, /* ACPI processor id */
- 0, /* Processor local SAPIC id */
- 1, /* Processor local SAPIC eid */
- { 0, 0, 0 },
- 1, /* FL: Enabled. */
- },
- /* cpu2. */
- {
- APIC_LOCAL_SAPIC, /* Type. */
- sizeof(apic.cpu2), /* Length. */
- 2, /* ACPI processor id */
- 1, /* Processor local SAPIC id */
- 0, /* Processor local SAPIC eid */
- { 0, 0, 0 },
- 0, /* FL: Enabled. */
- },
- /* cpu3. */
- {
- APIC_LOCAL_SAPIC, /* Type. */
- sizeof(apic.cpu3), /* Length. */
- 3, /* ACPI processor id */
- 1, /* Processor local SAPIC id */
- 1, /* Processor local SAPIC eid */
- { 0, 0, 0 },
- 0, /* FL: Enabled. */
- },
- /* sapic. */
- {
- APIC_IO_SAPIC, /* Type. */
- sizeof(apic.sapic), /* Length. */
- 4, /* IO SAPIC id. */
- 0,
- 16, /* Interrupt base. */
- 0xfec00000 /* IO SAPIC address. */
- }
-};
-
-struct {
- ACPI_TABLE_HEADER Header;
- UINT64 apic_tbl;
-} xsdt = {
- {
- ACPI_SIG_XSDT, /* Signature. */
- sizeof(xsdt), /* Length of table. */
- 0, /* ACPI minor revision. */
- 0, /* XXX checksum. */
- "FBSD", /* OEM Id. */
- "SKI", /* OEM table Id. */
- 0, /* OEM revision. */
- "FBSD", /* ASL compiler Id. */
- 0 /* ASL revision. */
- },
- 0UL /* XXX APIC table address. */
-};
-
-ACPI_TABLE_RSDP acpi_root = {
- ACPI_SIG_RSDP,
- 0, /* XXX checksum. */
- "FBSD",
- 2, /* ACPI Rev 2.0. */
- 0UL,
- sizeof(xsdt), /* XSDT length. */
- 0UL, /* XXX PA of XSDT. */
- 0, /* XXX Extended checksum. */
-};
-
-static void
-cksum(void *addr, int sz, UINT8 *sum)
-{
- UINT8 *p, s;
-
- p = addr;
- s = 0;
- while (sz--)
- s += *p++;
- *sum = -s;
-}
-
-void
-acpi_stub_init(void)
-{
- acpi_root.XsdtPhysicalAddress = (UINT64)&xsdt;
- cksum(&acpi_root, 20, &acpi_root.Checksum);
- cksum(&acpi_root, sizeof(acpi_root), &acpi_root.ExtendedChecksum);
-
- cksum(&apic, sizeof(apic), &apic.MADT.Header.Checksum);
- xsdt.apic_tbl = (UINT32)&apic;
- cksum(&xsdt, sizeof(xsdt), &xsdt.Header.Checksum);
-}
diff --git a/sys/boot/ia64/ski/conf.c b/sys/boot/ia64/ski/conf.c
deleted file mode 100644
index 3ee3b33..0000000
--- a/sys/boot/ia64/ski/conf.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * Copyright (c) 1997
- * Matthias Drochner. All rights reserved.
- *
- * 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 for the NetBSD Project
- * by Matthias Drochner.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- *
- * $NetBSD: conf.c,v 1.2 1997/03/22 09:03:29 thorpej Exp $
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-
-#include "libski.h"
-
-/*
- * We could use linker sets for some or all of these, but
- * then we would have to control what ended up linked into
- * the bootstrap. So it's easier to conditionalise things
- * here.
- *
- * XXX rename these arrays to be consistent and less namespace-hostile
- */
-
-/* Exported for libstand */
-struct devsw *devsw[] = {
- &skifs_dev,
- NULL
-};
-
-struct fs_ops *file_system[] = {
- &ski_fsops,
- &ufs_fsops,
- &gzipfs_fsops,
- NULL
-};
-
-/*
- * Consoles
- *
- * We don't prototype these in libski.h because they require
- * data structures from bootstrap.h as well.
- */
-extern struct console ski_console;
-
-struct console *consoles[] = {
- &ski_console,
- NULL
-};
diff --git a/sys/boot/ia64/ski/delay.c b/sys/boot/ia64/ski/delay.c
deleted file mode 100644
index 2389603..0000000
--- a/sys/boot/ia64/ski/delay.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-void
-delay(int usecs)
-{
- return;
-}
diff --git a/sys/boot/ia64/ski/efi_stub.c b/sys/boot/ia64/ski/efi_stub.c
deleted file mode 100644
index 7236c69..0000000
--- a/sys/boot/ia64/ski/efi_stub.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/*-
- * Copyright (c) 2003,2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <machine/bootinfo.h>
-#include <machine/efi.h>
-#include <stand.h>
-#include "libski.h"
-
-extern void acpi_root;
-extern void sal_systab;
-
-struct efi_cfgtbl efi_cfgtab[] = {
- { EFI_TABLE_ACPI20, (intptr_t)&acpi_root },
- { EFI_TABLE_SAL, (intptr_t)&sal_systab }
-};
-
-static efi_status GetTime(struct efi_tm *, struct efi_tmcap *);
-static efi_status SetTime(struct efi_tm *);
-static efi_status GetWakeupTime(uint8_t *, uint8_t *, struct efi_tm *);
-static efi_status SetWakeupTime(uint8_t, struct efi_tm *);
-
-static efi_status SetVirtualAddressMap(u_long, u_long, uint32_t,
- struct efi_md*);
-static efi_status ConvertPointer(u_long, void **);
-
-static efi_status GetVariable(efi_char *, struct uuid *, uint32_t *, u_long *,
- void *);
-static efi_status GetNextVariableName(u_long *, efi_char *, struct uuid *);
-static efi_status SetVariable(efi_char *, struct uuid *, uint32_t, u_long,
- void *);
-
-static efi_status GetNextHighMonotonicCount(uint32_t *);
-static efi_status ResetSystem(enum efi_reset, efi_status, u_long, efi_char *);
-
-struct efi_rt efi_rttab = {
- /* Header. */
- { 0, /* XXX Signature */
- 0, /* XXX Revision */
- 0, /* XXX HeaderSize */
- 0, /* XXX CRC32 */
- },
-
- /* Time services */
- GetTime,
- SetTime,
- GetWakeupTime,
- SetWakeupTime,
-
- /* Virtual memory services */
- SetVirtualAddressMap,
- ConvertPointer,
-
- /* Variable services */
- GetVariable,
- GetNextVariableName,
- SetVariable,
-
- /* Misc */
- GetNextHighMonotonicCount,
- ResetSystem
-};
-
-struct efi_systbl efi_systab = {
- /* Header. */
- { EFI_SYSTBL_SIG,
- 0, /* XXX Revision */
- 0, /* XXX HeaderSize */
- 0, /* XXX CRC32 */
- },
-
- /* Firmware info. */
- L"FreeBSD", 0, 0,
-
- /* Console stuff. */
- NULL, NULL,
- NULL, NULL,
- NULL, NULL,
-
- /* Services (runtime first). */
- (intptr_t)&efi_rttab,
- NULL,
-
- /* Configuration tables. */
- sizeof(efi_cfgtab)/sizeof(struct efi_cfgtbl),
- (intptr_t)efi_cfgtab
-};
-
-static efi_status
-unsupported(const char *func)
-{
- printf("EFI: %s not supported\n", func);
- return ((1UL << 63) + 3);
-}
-
-static efi_status
-GetTime(struct efi_tm *time, struct efi_tmcap *caps)
-{
- uint32_t comps[8];
-
- ssc((uint64_t)comps, 0, 0, 0, SSC_GET_RTC);
- time->tm_year = comps[0] + 1900;
- time->tm_mon = comps[1] + 1;
- time->tm_mday = comps[2];
- time->tm_hour = comps[3];
- time->tm_min = comps[4];
- time->tm_sec = comps[5];
- time->__pad1 = time->__pad2 = 0;
- time->tm_nsec = 0;
- time->tm_tz = 0;
- time->tm_dst = 0;
- return (0);
-}
-
-static efi_status
-SetTime(struct efi_tm *time)
-{
- return (0);
-}
-
-static efi_status
-GetWakeupTime(uint8_t *enabled, uint8_t *pending, struct efi_tm *time)
-{
- return (unsupported(__func__));
-}
-
-static efi_status
-SetWakeupTime(uint8_t enable, struct efi_tm *time)
-{
- return (unsupported(__func__));
-}
-
-static void
-Reloc(void *addr, uint64_t delta)
-{
- uint64_t **fpp = addr;
-
- *fpp[0] += delta;
- *fpp[1] += delta;
- *fpp += delta >> 3;
-}
-
-static efi_status
-SetVirtualAddressMap(u_long mapsz, u_long descsz, uint32_t version,
- struct efi_md *memmap)
-{
- uint64_t delta;
-
- delta = (uintptr_t)memmap->md_virt - memmap->md_phys;
- Reloc(&efi_rttab.rt_gettime, delta);
- Reloc(&efi_rttab.rt_settime, delta);
- return (0); /* Hah... */
-}
-
-static efi_status
-ConvertPointer(u_long debug, void **addr)
-{
- return (unsupported(__func__));
-}
-
-static efi_status
-GetVariable(efi_char *name, struct uuid *vendor, uint32_t *attrs,
- u_long *datasz, void *data)
-{
- return (unsupported(__func__));
-}
-
-static efi_status
-GetNextVariableName(u_long *namesz, efi_char *name, struct uuid *vendor)
-{
- return (unsupported(__func__));
-}
-
-static efi_status
-SetVariable(efi_char *name, struct uuid *vendor, uint32_t attrs, u_long datasz,
- void *data)
-{
- return (unsupported(__func__));
-}
-
-static efi_status
-GetNextHighMonotonicCount(uint32_t *high)
-{
- static uint32_t counter = 0;
-
- *high = counter++;
- return (0);
-}
-
-static efi_status
-ResetSystem(enum efi_reset type, efi_status status, u_long datasz,
- efi_char *data)
-{
- return (unsupported(__func__));
-}
-
-void
-efi_stub_init(struct bootinfo *bi)
-{
- static struct efi_md memmap[4];
-
- /* Describe the SKI memory map. */
- bi->bi_memmap = (uintptr_t)(void *)memmap;
- bi->bi_memmap_size = sizeof(memmap);
- bi->bi_memdesc_size = sizeof(struct efi_md);
- bi->bi_memdesc_version = 1;
-
- memmap[0].md_type = EFI_MD_TYPE_PALCODE;
- memmap[0].md_phys = 0x100000;
- memmap[0].md_virt = NULL;
- memmap[0].md_pages = (1L*1024*1024)>>12;
- memmap[0].md_attr = EFI_MD_ATTR_WB | EFI_MD_ATTR_RT;
-
- memmap[1].md_type = EFI_MD_TYPE_FREE;
- memmap[1].md_phys = 4L*1024*1024;
- memmap[1].md_virt = NULL;
- memmap[1].md_pages = (128L*1024*1024)>>12;
- memmap[1].md_attr = EFI_MD_ATTR_WB;
-
- memmap[2].md_type = EFI_MD_TYPE_FREE;
- memmap[2].md_phys = 4L*1024*1024*1024;
- memmap[2].md_virt = NULL;
- memmap[2].md_pages = (64L*1024*1024)>>12;
- memmap[2].md_attr = EFI_MD_ATTR_WB;
-
- memmap[3].md_type = EFI_MD_TYPE_IOPORT;
- memmap[3].md_phys = 0xffffc000000;
- memmap[3].md_virt = NULL;
- memmap[3].md_pages = (64L*1024*1024)>>12;
- memmap[3].md_attr = EFI_MD_ATTR_UC;
-
- bi->bi_systab = (u_int64_t)&efi_systab;
-}
diff --git a/sys/boot/ia64/ski/exit.c b/sys/boot/ia64/ski/exit.c
deleted file mode 100644
index aeac67c..0000000
--- a/sys/boot/ia64/ski/exit.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <stddef.h>
-#include <stand.h>
-#include <stdarg.h>
-
-#include "libski.h"
-
-void
-exit(int code)
-{
- ssc(code, 0, 0, 0, SSC_EXIT);
-}
diff --git a/sys/boot/ia64/ski/ldscript.ia64 b/sys/boot/ia64/ski/ldscript.ia64
deleted file mode 100644
index e7a303f..0000000
--- a/sys/boot/ia64/ski/ldscript.ia64
+++ /dev/null
@@ -1,61 +0,0 @@
-/* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-ia64-freebsd", "elf64-ia64-freebsd", "elf64-ia64-freebsd")
-OUTPUT_ARCH(ia64)
-ENTRY(_start)
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0x100000;
- .text : {
- *(.text .stub .text.* .gnu.linkonce.t.*)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.plt)
- } =0x00300000010070000002000001000400
- __start_set_Xcommand_set = .;
- set_Xcommand_set : { *(set_Xcommand_set) }
- __stop_set_Xcommand_set = .;
- .data : {
- *(.rodata .rodata.* .gnu.linkonce.r.*)
- *(.rodata1)
- *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
- *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
- *(.opd)
- *(.data .data.* .gnu.linkonce.d.*)
- *(.data1)
- *(.plabel)
- *(.dynbss)
- *(.bss .bss.* .gnu.linkonce.b.*)
- *(COMMON)
- }
- .IA_64.unwind_info : { *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*) }
- .IA_64.unwind : { *(.IA_64.unwind* .gnu.linkonce.ia64unw.*) }
- __gp = .;
- .sdata : {
- *(.got.plt .got)
- *(.IA_64.pltoff)
- *(.sdata .sdata.* .gnu.linkonce.s.*)
- *(dynsbss)
- *(.sbss .sbss.* .gnu.linkonce.sb.*)
- *(.scommon)
- }
- .dynamic : { *(.dynamic) }
- .rela : {
- *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
- *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
- *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
- *(.rela.got)
- *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
- *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
- *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
- *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
- *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
- *(.rela.plt)
- *(.rela.IA_64.pltoff)
- *(.relaset_*)
- *(.rela.dyn .rela.dyn.*)
- }
- .hash : { *(.hash) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
-}
diff --git a/sys/boot/ia64/ski/libski.h b/sys/boot/ia64/ski/libski.h
deleted file mode 100644
index 0e7fbc6..0000000
--- a/sys/boot/ia64/ski/libski.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#define MAXDEV 31 /* maximum number of distinct devices */
-
-typedef unsigned long physaddr_t;
-
-/* exported devices XXX rename? */
-extern struct devsw skifs_dev;
-extern struct devsw ski_disk;
-extern struct netif_driver ski_net;
-
-/* Wrapper over SKI filesystems. */
-extern struct fs_ops ski_fsops;
-
-/* this is in startup code */
-extern void delay(int);
-extern void reboot(void);
-
-extern int ski_boot(void);
-
-struct bootinfo;
-struct preloaded_file;
-
-#define SSC_CONSOLE_INIT 20
-#define SSC_GETCHAR 21
-#define SSC_PUTCHAR 31
-#define SSC_OPEN 50
-#define SSC_CLOSE 51
-#define SSC_READ 52
-#define SSC_WRITE 53
-#define SSC_GET_COMPLETION 54
-#define SSC_WAIT_COMPLETION 55
-#define SSC_GET_RTC 65
-#define SSC_EXIT 66
-#define SSC_LOAD_SYMBOLS 69
-#define SSC_SAL_SET_VECTORS 120
-
-u_int64_t ssc(u_int64_t in0, u_int64_t in1, u_int64_t in2, u_int64_t in3,
- int which);
diff --git a/sys/boot/ia64/ski/main.c b/sys/boot/ia64/ski/main.c
deleted file mode 100644
index 5a00d1c..0000000
--- a/sys/boot/ia64/ski/main.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 1998,2000 Doug Rabson <dfr@freebsd.org>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-#include <setjmp.h>
-#include <machine/fpu.h>
-
-#include <libia64.h>
-#include "libski.h"
-
-extern char bootprog_name[];
-extern char bootprog_rev[];
-extern char bootprog_date[];
-extern char bootprog_maker[];
-
-struct devdesc currdev; /* our current device */
-struct arch_switch archsw; /* MI/MD interface boundary */
-
-void
-ski_main(void)
-{
- static char malloc[512*1024];
- int i;
-
- /*
- * initialise the heap as early as possible. Once this is done,
- * alloc() is usable. The stack is buried inside us, so this is
- * safe.
- */
- setheap((void *)malloc, (void *)(malloc + 512*1024));
-
- /*
- * XXX Chicken-and-egg problem; we want to have console output
- * early, but some console attributes may depend on reading from
- * eg. the boot device, which we can't do yet. We can use
- * printf() etc. once this is done.
- */
- cons_probe();
-
- /*
- * March through the device switch probing for things.
- */
- for (i = 0; devsw[i] != NULL; i++)
- if (devsw[i]->dv_init != NULL)
- (devsw[i]->dv_init)();
-
- printf("\n");
- printf("%s, Revision %s\n", bootprog_name, bootprog_rev);
- printf("(%s, %s)\n", bootprog_maker, bootprog_date);
-#if 0
- printf("Memory: %ld k\n", memsize() / 1024);
-#endif
-
- /* XXX presumes that biosdisk is first in devsw */
- currdev.d_dev = devsw[0];
- currdev.d_type = currdev.d_dev->dv_type;
- currdev.d_unit = 0;
-
-#if 0
- /* Create arc-specific variables */
- bootfile = GetEnvironmentVariable(ARCENV_BOOTFILE);
- if (bootfile)
- setenv("bootfile", bootfile, 1);
-#endif
-
- env_setenv("currdev", EV_VOLATILE, ia64_fmtdev(&currdev),
- ia64_setcurrdev, env_nounset);
- env_setenv("loaddev", EV_VOLATILE, ia64_fmtdev(&currdev), env_noset,
- env_nounset);
-
- setenv("LINES", "24", 1); /* optional */
-
- archsw.arch_autoload = ia64_autoload;
- archsw.arch_copyin = ia64_copyin;
- archsw.arch_copyout = ia64_copyout;
- archsw.arch_getdev = ia64_getdev;
- archsw.arch_loadaddr = ia64_loadaddr;
- archsw.arch_loadseg = ia64_loadseg;
- archsw.arch_readin = ia64_readin;
-
- interact(); /* doesn't return */
-
- exit(0);
-}
-
-COMMAND_SET(quit, "quit", "exit the loader", command_quit);
-
-static int
-command_quit(int argc, char *argv[])
-{
- exit(0);
- return (CMD_OK);
-}
diff --git a/sys/boot/ia64/ski/pal_stub.S b/sys/boot/ia64/ski/pal_stub.S
deleted file mode 100644
index 81fbd08..0000000
--- a/sys/boot/ia64/ski/pal_stub.S
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-
- .text
-ENTRY(PalProc, 0)
- cmp.eq p6,p0=6,r28 // PAL_PTCE_INFO
-(p6) br.cond.dptk pal_ptce_info
- ;;
- cmp.eq p6,p0=8,r28 // PAL_VM_SUMMARY
-(p6) br.cond.dptk pal_vm_summary
- ;;
- cmp.eq p6,p0=14,r28 // PAL_FREQ_RATIOS
-(p6) br.cond.dptk pal_freq_ratios
- ;;
- cmp.eq p6,p0=29,r28 // PAL_HALT_LIGHT
-(p6) br.cond.dptk pal_halt_light
- ;;
- mov r15=66 // EXIT
- break.i 0x80000 // SSC
- ;;
-pal_ptce_info:
- mov r8=0
- mov r9=0 // base
- movl r10=0x0000000100000001 // loop counts (outer|inner)
- mov r11=0x0000000000000000 // loop strides (outer|inner)
- br.sptk b0
-pal_vm_summary:
- mov r8=0
- movl r9=(8<<40)|(8<<32) // VM info 1
- mov r10=(18<<8)|(41<<0) // VM info 2
- mov r11=0
- br.sptk b0
-pal_freq_ratios:
- mov r8=0
- movl r9=0x0000000B00000002 // processor ratio 11/2
- movl r10=0x0000000100000001 // bus ratio 1/1
- movl r11=0x0000000B00000002 // ITC ratio 11/2
- br.sptk b0
-pal_halt_light:
- mov r8=0
- mov r9=0
- mov r10=0
- mov r11=0
- br.sptk b0
-END(PalProc)
diff --git a/sys/boot/ia64/ski/sal_stub.c b/sys/boot/ia64/ski/sal_stub.c
deleted file mode 100644
index 1ebbb4c..0000000
--- a/sys/boot/ia64/ski/sal_stub.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <machine/md_var.h>
-#include <machine/sal.h>
-#include <stand.h>
-#include "libski.h"
-
-extern void PalProc(void);
-static sal_entry_t SalProc;
-
-struct {
- struct sal_system_table header;
- struct sal_entrypoint_descriptor entry;
- struct sal_ap_wakeup_descriptor wakeup;
-} sal_systab = {
- /* Header. */
- {
- SAL_SIGNATURE,
- sizeof(sal_systab),
- { 00, 03 }, /* Revision 3.0. */
- 2, /* Number of decsriptors. */
- 0, /* XXX checksum. */
- { 0 },
- { 00, 00 }, /* XXX SAL_A version. */
- { 00, 00 }, /* XXX SAL_B version. */
- "FreeBSD",
- "Ski loader",
- { 0 }
- },
- /* Entrypoint. */
- {
- 0, /* Type=entrypoint descr. */
- { 0 },
- 0, /* XXX PalProc. */
- 0, /* XXX SalProc. */
- 0, /* XXX SalProc GP. */
- { 0 }
- },
- /* AP wakeup. */
- {
- 5, /* Type=AP wakeup descr. */
- 0, /* External interrupt. */
- { 0 },
- 255 /* Wakeup vector. */
- }
-};
-
-static inline void
-puts(const char *s)
-{
- s = (const char *)((7UL << 61) | (u_long)s);
- while (*s)
- ski_cons_putchar(*s++);
-}
-
-static struct ia64_sal_result
-SalProc(u_int64_t a1, u_int64_t a2, u_int64_t a3, u_int64_t a4, u_int64_t a5,
- u_int64_t a6, u_int64_t a7, u_int64_t a8)
-{
- struct ia64_sal_result res;
-
- res.sal_status = -3;
- res.sal_result[0] = 0;
- res.sal_result[1] = 0;
- res.sal_result[2] = 0;
-
- if (a1 == SAL_FREQ_BASE) {
- res.sal_status = 0;
- res.sal_result[0] = 133338184;
- } else if (a1 == SAL_SET_VECTORS) {
- /* XXX unofficial SSC function. */
- ssc(a2, a3, a4, a5, SSC_SAL_SET_VECTORS);
- } else if (a1 != SAL_GET_STATE_INFO_SIZE) {
- puts("SAL: unimplemented function called\n");
- }
-
- return (res);
-}
-
-void
-sal_stub_init(void)
-{
- struct ia64_fdesc *fd;
-
- fd = (void*)PalProc;
- sal_systab.entry.sale_pal_proc = fd->func;
- fd = (void*)SalProc;
- sal_systab.entry.sale_sal_proc = fd->func;
- sal_systab.entry.sale_sal_gp = fd->gp;
-}
diff --git a/sys/boot/ia64/ski/skiconsole.c b/sys/boot/ia64/ski/skiconsole.c
deleted file mode 100644
index e5cea3d..0000000
--- a/sys/boot/ia64/ski/skiconsole.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-
-#include "bootstrap.h"
-#include "libski.h"
-
-static void
-ski_cons_probe(struct console *cp)
-{
- cp->c_flags |= C_PRESENTIN | C_PRESENTOUT;
-}
-
-static int
-ski_cons_init(int arg)
-{
- ssc(0, 0, 0, 0, SSC_CONSOLE_INIT);
- return 0;
-}
-
-void
-ski_cons_putchar(int c)
-{
- ssc(c, 0, 0, 0, SSC_PUTCHAR);
-}
-
-static int pollchar = -1;
-
-int
-ski_cons_getchar()
-{
- int c;
-
- if (pollchar > 0) {
- c = pollchar;
- pollchar = -1;
- return c;
- }
-
- do {
- c = ssc(0, 0, 0, 0, SSC_GETCHAR);
- } while (c == 0);
-
- return c;
-}
-
-int
-ski_cons_poll()
-{
- int c;
- if (pollchar > 0)
- return 1;
- c = ssc(0, 0, 0, 0, SSC_GETCHAR);
- if (!c)
- return 0;
- pollchar = c;
- return 1;
-}
-
-struct console ski_console = {
- "ski",
- "ia64 SKI console",
- 0,
- ski_cons_probe,
- ski_cons_init,
- ski_cons_putchar,
- ski_cons_getchar,
- ski_cons_poll
-};
diff --git a/sys/boot/ia64/ski/skifs.c b/sys/boot/ia64/ski/skifs.c
deleted file mode 100644
index 72276fe..0000000
--- a/sys/boot/ia64/ski/skifs.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <stddef.h>
-#include <stand.h>
-#include <stdarg.h>
-
-#include <bootstrap.h>
-#include "libski.h"
-
-struct disk_req {
- unsigned long addr;
- unsigned len;
-};
-
-struct disk_stat {
- int fd;
- unsigned count;
-};
-
-static int
-skifs_open(const char *path, struct open_file *f)
-{
- int fd;
-
- /*
- * Skip leading '/' so that our pretend filesystem starts in
- * the current working directory.
- */
- while (*path == '/')
- path++;
-
- fd = ssc((u_int64_t) path, 1, 0, 0, SSC_OPEN);
- if (fd > 0) {
- f->f_fsdata = (void*)(u_int64_t) fd;
- return 0;
- }
- return ENOENT;
-}
-
-static int
-skifs_close(struct open_file *f)
-{
- ssc((u_int64_t) f->f_fsdata, 0, 0, 0, SSC_CLOSE);
- return 0;
-}
-
-static int
-skifs_read(struct open_file *f, void *buf, size_t size, size_t *resid)
-{
- struct disk_req req;
- struct disk_stat stat;
-
- req.len = size;
- req.addr = (u_int64_t) buf;
- ssc((u_int64_t) f->f_fsdata, 1, (u_int64_t) &req, f->f_offset, SSC_READ);
- stat.fd = (u_int64_t) f->f_fsdata;
- ssc((u_int64_t)&stat, 0, 0, 0, SSC_WAIT_COMPLETION);
-
- *resid = size - stat.count;
- f->f_offset += stat.count;
- return 0;
-}
-
-static off_t
-skifs_seek(struct open_file *f, off_t offset, int where)
-{
- u_int64_t base;
-
- switch (where) {
- case SEEK_SET:
- base = 0;
- break;
-
- case SEEK_CUR:
- base = f->f_offset;
- break;
-
- case SEEK_END:
- printf("can't find end of file in SKI\n");
- base = f->f_offset;
- break;
- }
-
- f->f_offset = base + offset;
- return base;
-}
-
-static int
-skifs_stat(struct open_file *f, struct stat *sb)
-{
- bzero(sb, sizeof(*sb));
- sb->st_mode = S_IFREG | S_IRUSR;
- return 0;
-}
-
-static int
-skifs_readdir(struct open_file *f, struct dirent *d)
-{
- return ENOENT;
-}
-
-struct fs_ops ski_fsops = {
- "fs",
- skifs_open,
- skifs_close,
- skifs_read,
- null_write,
- skifs_seek,
- skifs_stat,
- skifs_readdir
-};
-
-static int
-skifs_dev_init(void)
-{
- return 0;
-}
-
-/*
- * Print information about disks
- */
-static void
-skifs_dev_print(int verbose)
-{
-}
-
-/*
- * Attempt to open the disk described by (dev) for use by (f).
- *
- * Note that the philosophy here is "give them exactly what
- * they ask for". This is necessary because being too "smart"
- * about what the user might want leads to complications.
- * (eg. given no slice or partition value, with a disk that is
- * sliced - are they after the first BSD slice, or the DOS
- * slice before it?)
- */
-static int
-skifs_dev_open(struct open_file *f, ...)
-{
- return 0;
-}
-
-static int
-skifs_dev_close(struct open_file *f)
-{
-
- return 0;
-}
-
-static int
-skifs_dev_strategy(void *devdata, int rw, daddr_t dblk, size_t size, char *buf, size_t *rsize)
-{
- return 0;
-}
-
-struct devsw skifs_dev = {
- "fs",
- DEVT_DISK,
- skifs_dev_init,
- skifs_dev_strategy,
- skifs_dev_open,
- skifs_dev_close,
- noioctl,
- skifs_dev_print
-};
diff --git a/sys/boot/ia64/ski/skiload.cmd b/sys/boot/ia64/ski/skiload.cmd
deleted file mode 100644
index 48b77e1..0000000
--- a/sys/boot/ia64/ski/skiload.cmd
+++ /dev/null
@@ -1,16 +0,0 @@
-# $FreeBSD$
-iar
-fr
-pa
-b enter_kernel
-c
-b printf
-c
-b rp
-c
-b ssc
-c
-b rp
-c
-bD
-s 11
diff --git a/sys/boot/ia64/ski/skimd.c b/sys/boot/ia64/ski/skimd.c
deleted file mode 100644
index baa3138..0000000
--- a/sys/boot/ia64/ski/skimd.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-
-#include <libia64.h>
-
-#include "libski.h"
-
-extern void acpi_stub_init(void);
-extern void efi_stub_init(struct bootinfo *);
-extern void sal_stub_init(void);
-
-vm_paddr_t
-ia64_platform_alloc(vm_offset_t va, vm_size_t sz __unused)
-{
- vm_paddr_t pa;
-
- if (va == 0)
- pa = 2 * 1024 * 1024;
- else
- pa = (va - IA64_PBVM_BASE) + (32 * 1024 * 1024);
-
- return (pa);
-}
-
-void
-ia64_platform_free(vm_offset_t va __unused, vm_paddr_t pa __unused,
- vm_size_t sz __unused)
-{
-}
-
-int
-ia64_platform_bootinfo(struct bootinfo *bi, struct bootinfo **res)
-{
- static struct bootinfo bootinfo;
-
- efi_stub_init(bi);
- sal_stub_init();
- acpi_stub_init();
-
- if (IS_LEGACY_KERNEL())
- *res = &bootinfo;
-
- return (0);
-}
-
-int
-ia64_platform_enter(const char *kernel)
-{
-
- while (*kernel == '/')
- kernel++;
- ssc(0, (uint64_t)kernel, 0, 0, SSC_LOAD_SYMBOLS);
- return (0);
-}
diff --git a/sys/boot/ia64/ski/ssc.c b/sys/boot/ia64/ski/ssc.c
deleted file mode 100644
index e1f871c..0000000
--- a/sys/boot/ia64/ski/ssc.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include "libski.h"
-
-/*
- * Ugh... Work around a bug in the Linux version of ski for SSC_GET_RTC. The
- * PSR.dt register is not preserved properly and causes further memory
- * references to be done without translation. All we need to do is preserve
- * PSR.dt across the SSC call. We do this by saving and restoring psr.l
- * completely.
- */
-u_int64_t
-ssc(u_int64_t in0, u_int64_t in1, u_int64_t in2, u_int64_t in3, int which)
-{
- register u_int64_t psr;
- register u_int64_t ret0 __asm("r8");
-
- __asm __volatile("mov %0=psr;;" : "=r"(psr));
- __asm __volatile("mov r15=%1\n\t"
- "break 0x80000;;"
- : "=r"(ret0)
- : "r"(which), "r"(in0), "r"(in1), "r"(in2), "r"(in3));
- __asm __volatile("mov psr.l=%0;; srlz.d" :: "r"(psr));
- return ret0;
-}
diff --git a/sys/boot/ia64/ski/start.S b/sys/boot/ia64/ski/start.S
deleted file mode 100644
index 0bd10e9..0000000
--- a/sys/boot/ia64/ski/start.S
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#define STACKSIZE 16384
-#define FPSR_DEFAULT 0x0009804c0270033f
-
- .text
- .global _start
- .proc _start
-_start:
-{ .mlx
- mov ar.rsc=0
- movl gp=__gp
- ;;
-}
-{ .mlx
- add r2=@gprel(stack),gp
- movl r14=FPSR_DEFAULT
- ;;
-}
-{ .mib
- mov ar.bspstore=r2
- add r12=STACKSIZE-16,r2
- bsw.1
- ;;
-}
-{ .mmb
- mov ar.rsc=3
- mov ar.fpsr=r14
- br.sptk ski_main
- ;;
-}
- .endp _start
-
- .data
- .align 16
-stack: .skip STACKSIZE
diff --git a/sys/boot/ia64/ski/time.c b/sys/boot/ia64/ski/time.c
deleted file mode 100644
index 7aa7120..0000000
--- a/sys/boot/ia64/ski/time.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000
- * Intel Corporation.
- * All rights reserved.
- *
- * 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 Intel Corporation and
- * its contributors.
- *
- * 4. Neither the name of Intel Corporation or its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION 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 INTEL CORPORATION 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <time.h>
-#include <sys/time.h>
-#include <stand.h>
-
-#include "libski.h"
-
-/*
-// Accurate only for the past couple of centuries;
-// that will probably do.
-//
-// (#defines From FreeBSD 3.2 lib/libc/stdtime/tzfile.h)
-*/
-
-#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
-#define SECSPERHOUR ( 60*60 )
-#define SECSPERDAY (24 * SECSPERHOUR)
-
-struct ssc_time {
- int Year;
- int Month;
- int Day;
- int Hour;
- int Minute;
- int Second;
- int Msec;
- int Wday;
-};
-
-time_t
-EfiTimeToUnixTime(struct ssc_time *ETime)
-{
- /*
- // These arrays give the cumulative number of days up to the first of the
- // month number used as the index (1 -> 12) for regular and leap years.
- // The value at index 13 is for the whole year.
- */
- static time_t CumulativeDays[2][14] = {
- {0,
- 0,
- 31,
- 31 + 28,
- 31 + 28 + 31,
- 31 + 28 + 31 + 30,
- 31 + 28 + 31 + 30 + 31,
- 31 + 28 + 31 + 30 + 31 + 30,
- 31 + 28 + 31 + 30 + 31 + 30 + 31,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 },
- {0,
- 0,
- 31,
- 31 + 29,
- 31 + 29 + 31,
- 31 + 29 + 31 + 30,
- 31 + 29 + 31 + 30 + 31,
- 31 + 29 + 31 + 30 + 31 + 30,
- 31 + 29 + 31 + 30 + 31 + 30 + 31,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 }};
-
- time_t UTime;
- int Year;
-
- ETime->Year += 1900;
-
- /*
- // Do a santity check
- */
- if ( ETime->Year < 1998 || ETime->Year > 2099 ||
- ETime->Month == 0 || ETime->Month > 12 ||
- ETime->Day == 0 || ETime->Month > 31 ||
- ETime->Hour > 23 ||
- ETime->Minute > 59 ||
- ETime->Second > 59 ) {
- return (0);
- }
-
- /*
- // Years
- */
- UTime = 0;
- for (Year = 1970; Year != ETime->Year; ++Year) {
- UTime += (CumulativeDays[isleap(Year)][13] * SECSPERDAY);
- }
-
- /*
- // UTime should now be set to 00:00:00 on Jan 1 of the file's year.
- //
- // Months
- */
- UTime += (CumulativeDays[isleap(ETime->Year)][ETime->Month] * SECSPERDAY);
-
- /*
- // UTime should now be set to 00:00:00 on the first of the file's month and year
- //
- // Days -- Don't count the file's day
- */
- UTime += (((ETime->Day > 0) ? ETime->Day-1:0) * SECSPERDAY);
-
- /*
- // Hours
- */
- UTime += (ETime->Hour * SECSPERHOUR);
-
- /*
- // Minutes
- */
- UTime += (ETime->Minute * 60);
-
- /*
- // Seconds
- */
- UTime += ETime->Second;
-
- return UTime;
-}
-
-time_t
-time(time_t *tloc)
-{
- struct ssc_time time;
-
- ssc((u_int64_t) &time, 0, 0, 0, SSC_GET_RTC);
-
- return *tloc = EfiTimeToUnixTime(&time);
-}
diff --git a/sys/boot/ia64/ski/version b/sys/boot/ia64/ski/version
deleted file mode 100644
index a5b40f5..0000000
--- a/sys/boot/ia64/ski/version
+++ /dev/null
@@ -1,12 +0,0 @@
-$FreeBSD$
-
-NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
-file is important. Make sure the current version number is on line 6.
-
-2.0: Add support for PBVM.
-1.2: Restructured. Has some user visible differences. Due to code
- sharing, has been given the same version number as the EFI
- loader.
-0.2: Pass the address of the bootinfo block to the kernel in register
- r8. Keep it at the hardwired address for now.
-0.1: Initial SKI version.
diff --git a/sys/boot/libstand32/Makefile b/sys/boot/libstand32/Makefile
index 56f7d15..0325583 100644
--- a/sys/boot/libstand32/Makefile
+++ b/sys/boot/libstand32/Makefile
@@ -60,12 +60,10 @@ SRCS+= ntoh.c
# string functions from libc
.PATH: ${LIBC}/string
-.if ${MACHINE_CPUARCH} != "ia64"
SRCS+= bcmp.c bcopy.c bzero.c ffs.c memccpy.c memchr.c memcmp.c memcpy.c \
memmove.c memset.c qdivrem.c strcat.c strchr.c strcmp.c strcpy.c \
strcspn.c strlen.c strncat.c strncmp.c strncpy.c strpbrk.c \
strrchr.c strsep.c strspn.c strstr.c strtok.c swab.c
-.endif
.if ${MACHINE_CPUARCH} == "arm"
.PATH: ${LIBC}/arm/gen
@@ -86,17 +84,6 @@ SRCS+= aeabi_memcmp.S aeabi_memcpy.S aeabi_memmove.S aeabi_memset.S
.endif
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-.PATH: ${LIBC}/ia64/string
-SRCS+= bcmp.c bcopy.S bzero.S ffs.S memccpy.c memchr.c memcmp.c memcpy.S \
- memmove.S memset.c strcat.c strchr.c strcmp.c strcpy.c strcspn.c \
- strlen.c strncat.c strncmp.c strncpy.c strpbrk.c strrchr.c strsep.c \
- strspn.c strstr.c strtok.c swab.c
-
-.PATH: ${LIBC}/ia64/gen
-SRCS+= __divdi3.S __divsi3.S __moddi3.S __modsi3.S
-SRCS+= __udivdi3.S __udivsi3.S __umoddi3.S __umodsi3.S
-.endif
.if ${MACHINE_CPUARCH} == "powerpc"
.PATH: ${LIBC}/quad
SRCS+= ashldi3.c ashrdi3.c
diff --git a/sys/boot/userboot/libstand/Makefile b/sys/boot/userboot/libstand/Makefile
index 042b6a3..692aa5a 100644
--- a/sys/boot/userboot/libstand/Makefile
+++ b/sys/boot/userboot/libstand/Makefile
@@ -69,18 +69,6 @@ SRCS+= bcmp.c bcopy.c bzero.c ffs.c memccpy.c memchr.c memcmp.c memcpy.c \
.PATH: ${LIBC}/arm/gen
SRCS+= divsi3.S
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-.PATH: ${LIBC}/ia64/string
-SRCS+= bcmp.c bcopy.S bzero.S ffs.S index.c memccpy.c memchr.c memcmp.c \
- memcpy.S memmove.S memset.c rindex.c strcat.c strchr.c \
- strcmp.c strcpy.c strcspn.c strlen.c \
- strncat.c strncmp.c strncpy.c strpbrk.c strrchr.c strsep.c \
- strspn.c strstr.c strtok.c swab.c
-
-.PATH: ${LIBC}/ia64/gen
-SRCS+= __divdi3.S __divsi3.S __moddi3.S __modsi3.S
-SRCS+= __udivdi3.S __udivsi3.S __umoddi3.S __umodsi3.S
-.endif
.if ${MACHINE_CPUARCH} == "powerpc"
.PATH: ${LIBC}/libc/quad
SRCS+= ashldi3.c ashrdi3.c
diff --git a/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S b/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S
deleted file mode 100644
index 4907ef6..0000000
--- a/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * Copyright (c) 2007 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-
- .text
-
-/*
- * uint32_t atomic_cas_32(volatile uint32_t *p, uint32_t cmp, uint32_t v)
- */
-ENTRY(atomic_cas_32, 3)
- mov ar.ccv = r33
- ;;
- cmpxchg4.acq r8 = [r32], r34, ar.ccv
- ;;
- br.ret.sptk rp
-END(atomic_cas_32)
-
-/*
- * uint64_t atomic_cas_64(volatile uint64_t *p, uint64_t cmp, uint64_t v)
- */
-ENTRY(atomic_cas_64, 3)
- mov ar.ccv = r33
- ;;
- cmpxchg8.acq r8 = [r32], r34, ar.ccv
- ;;
- br.ret.sptk rp
-END(atomic_cas_64)
-
-/*
- * uint64_t atomic_add_64_nv(volatile uint64_t *p, uint64_t v)
- */
-ENTRY(atomic_add_64_nv, 2)
-1:
- ld8 r16 = [r32]
- ;;
- mov ar.ccv = r16
- add r8 = r16, r33
- ;;
- cmpxchg8.acq r17 = [r32], r8, ar.ccv
- ;;
- cmp.eq p6, p7 = r16, r17
-(p6) br.ret.sptk rp
-(p7) br.cond.spnt 1b
-END(atomic_add_64_nv)
-
-/*
- * uint8_t atomic_or_8_nv(volatile uint8_t *p, uint8_t v)
- */
-ENTRY(atomic_or_8_nv, 2)
-1:
- ld1 r16 = [r32]
- ;;
- mov ar.ccv = r16
- or r8 = r16, r33
- ;;
- cmpxchg1.acq r17 = [r32], r8, ar.ccv
- ;;
- cmp.eq p6, p7 = r16, r17
-(p6) br.ret.sptk rp
-(p7) br.cond.spnt 1b
-END(atomic_or_8_nv)
-
-ENTRY(membar_producer, 0)
- mf
- ;;
- br.ret.sptk rp
-END(membar_producer)
diff --git a/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h b/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h
index f515614..de16611 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h
+++ b/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h
@@ -222,7 +222,7 @@ extern "C" {
* The following set of definitions characterize Solaris on AMD's
* 64-bit systems.
*/
-#if defined(__x86_64) || defined(__amd64) || defined(__ia64__)
+#if defined(__x86_64) || defined(__amd64)
#if !defined(__amd64)
#define __amd64 /* preferred guard */
diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/freebsd32_misc.c
index 68e761b..815a9b7 100644
--- a/sys/compat/freebsd32/freebsd32_misc.c
+++ b/sys/compat/freebsd32/freebsd32_misc.c
@@ -428,54 +428,6 @@ freebsd32_fexecve(struct thread *td, struct freebsd32_fexecve_args *uap)
return (error);
}
-#ifdef __ia64__
-static int
-freebsd32_mmap_partial(struct thread *td, vm_offset_t start, vm_offset_t end,
- int prot, int fd, off_t pos)
-{
- vm_map_t map;
- vm_map_entry_t entry;
- int rv;
-
- map = &td->td_proc->p_vmspace->vm_map;
- if (fd != -1)
- prot |= VM_PROT_WRITE;
-
- if (vm_map_lookup_entry(map, start, &entry)) {
- if ((entry->protection & prot) != prot) {
- rv = vm_map_protect(map,
- trunc_page(start),
- round_page(end),
- entry->protection | prot,
- FALSE);
- if (rv != KERN_SUCCESS)
- return (EINVAL);
- }
- } else {
- vm_offset_t addr = trunc_page(start);
- rv = vm_map_find(map, NULL, 0, &addr, PAGE_SIZE, 0,
- VMFS_NO_SPACE, prot, VM_PROT_ALL, 0);
- if (rv != KERN_SUCCESS)
- return (EINVAL);
- }
-
- if (fd != -1) {
- struct pread_args r;
- r.fd = fd;
- r.buf = (void *) start;
- r.nbyte = end - start;
- r.offset = pos;
- return (sys_pread(td, &r));
- } else {
- while (start < end) {
- subyte((void *) start, 0);
- start++;
- }
- return (0);
- }
-}
-#endif
-
int
freebsd32_mprotect(struct thread *td, struct freebsd32_mprotect_args *uap)
{
@@ -484,7 +436,7 @@ freebsd32_mprotect(struct thread *td, struct freebsd32_mprotect_args *uap)
ap.addr = PTRIN(uap->addr);
ap.len = uap->len;
ap.prot = uap->prot;
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
if (i386_read_exec && (ap.prot & PROT_READ) != 0)
ap.prot |= PROT_EXEC;
#endif
@@ -501,80 +453,8 @@ freebsd32_mmap(struct thread *td, struct freebsd32_mmap_args *uap)
int flags = uap->flags;
int fd = uap->fd;
off_t pos = PAIR32TO64(off_t,uap->pos);
-#ifdef __ia64__
- vm_size_t pageoff;
- int error;
-
- /*
- * Attempt to handle page size hassles.
- */
- pageoff = (pos & PAGE_MASK);
- if (flags & MAP_FIXED) {
- vm_offset_t start, end;
- start = addr;
- end = addr + len;
-
- if (start != trunc_page(start)) {
- error = freebsd32_mmap_partial(td, start,
- round_page(start), prot,
- fd, pos);
- if (fd != -1)
- pos += round_page(start) - start;
- start = round_page(start);
- }
- if (end != round_page(end)) {
- vm_offset_t t = trunc_page(end);
- error = freebsd32_mmap_partial(td, t, end,
- prot, fd,
- pos + t - start);
- end = trunc_page(end);
- }
- if (end > start && fd != -1 && (pos & PAGE_MASK)) {
- /*
- * We can't map this region at all. The specified
- * address doesn't have the same alignment as the file
- * position. Fake the mapping by simply reading the
- * entire region into memory. First we need to make
- * sure the region exists.
- */
- vm_map_t map;
- struct pread_args r;
- int rv;
-
- prot |= VM_PROT_WRITE;
- map = &td->td_proc->p_vmspace->vm_map;
- rv = vm_map_remove(map, start, end);
- if (rv != KERN_SUCCESS)
- return (EINVAL);
- rv = vm_map_find(map, NULL, 0, &start, end - start,
- 0, VMFS_NO_SPACE, prot, VM_PROT_ALL, 0);
- if (rv != KERN_SUCCESS)
- return (EINVAL);
- r.fd = fd;
- r.buf = (void *) start;
- r.nbyte = end - start;
- r.offset = pos;
- error = sys_pread(td, &r);
- if (error)
- return (error);
-
- td->td_retval[0] = addr;
- return (0);
- }
- if (end == start) {
- /*
- * After dealing with the ragged ends, there
- * might be none left.
- */
- td->td_retval[0] = addr;
- return (0);
- }
- addr = start;
- len = end - start;
- }
-#endif
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
if (i386_read_exec && (prot & PROT_READ))
prot |= PROT_EXEC;
#endif
diff --git a/sys/compat/freebsd32/freebsd32_util.h b/sys/compat/freebsd32/freebsd32_util.h
index 9282275..a5945cf 100644
--- a/sys/compat/freebsd32/freebsd32_util.h
+++ b/sys/compat/freebsd32/freebsd32_util.h
@@ -47,7 +47,7 @@ struct freebsd32_ps_strings {
int ps_nenvstr; /* the number of environment strings */
};
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
#include <compat/ia32/ia32_util.h>
#endif
diff --git a/sys/compat/ia32/ia32_util.h b/sys/compat/ia32/ia32_util.h
index fe87b72..6b5f9a1 100644
--- a/sys/compat/ia32/ia32_util.h
+++ b/sys/compat/ia32/ia32_util.h
@@ -39,17 +39,10 @@
#include <sys/sysent.h>
#include <sys/cdefs.h>
-#ifdef __ia64__
-#define FREEBSD32_MAXUSER ((1ul << 32) - IA32_PAGE_SIZE * 2)
-#define FREEBSD32_MINUSER 0
-#define FREEBSD32_SHAREDPAGE 0
-#define FREEBSD32_USRSTACK FREEBSD32_MAXUSER
-#else /* __ia64__ */
#define FREEBSD32_MAXUSER ((1ul << 32) - IA32_PAGE_SIZE)
#define FREEBSD32_MINUSER 0
#define FREEBSD32_SHAREDPAGE (FREEBSD32_MAXUSER - IA32_PAGE_SIZE)
#define FREEBSD32_USRSTACK FREEBSD32_SHAREDPAGE
-#endif /* __ia64 */
#define IA32_PAGE_SIZE 4096
#define IA32_MAXDSIZ (512*1024*1024) /* 512MB */
diff --git a/sys/compat/ndis/pe_var.h b/sys/compat/ndis/pe_var.h
index 84e0162..9729f0b 100644
--- a/sys/compat/ndis/pe_var.h
+++ b/sys/compat/ndis/pe_var.h
@@ -111,7 +111,6 @@ typedef struct image_file_header image_file_header;
#define IMAGE_FILE_MACHINE_AM33 0x01d3
#define IMAGE_FILE_MACHINE_POWERPC 0x01f0
#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
-#define IMAGE_FILE_MACHINE_IA64 0x0200
#define IMAGE_FILE_MACHINE_MIPS16 0x0266
#define IMAGE_FILE_MACHINE_ALPHA64 0x0284
#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366
@@ -333,7 +332,6 @@ typedef struct image_base_reloc image_base_reloc;
#define IMAGE_REL_BASED_SECTION 6
#define IMAGE_REL_BASED_REL 7
#define IMAGE_REL_BASED_MIPS_JMPADDR16 9
-#define IMAGE_REL_BASED_IA64_IMM64 9 /* yes, 9 too */
#define IMAGE_REL_BASED_DIR64 10
#define IMAGE_REL_BASED_HIGH3ADJ 11
diff --git a/sys/conf/Makefile.ia64 b/sys/conf/Makefile.ia64
deleted file mode 100644
index de4d41c..0000000
--- a/sys/conf/Makefile.ia64
+++ /dev/null
@@ -1,53 +0,0 @@
-# Makefile.ia64 -- with config changes.
-# Copyright 1990 W. Jolitz
-# from: src/sys/conf/Makefile.alpha,v 1.76
-# $FreeBSD$
-#
-# Makefile for FreeBSD
-#
-# This makefile is constructed from a machine description:
-# config machineid
-# Most changes should be made in the machine description
-# /sys/ia64/conf/``machineid''
-# after which you should do
-# config machineid
-# Generic makefile changes should be made in
-# /sys/conf/Makefile.ia64
-# after which config should be rerun for all machines.
-#
-
-# Which version of config(8) is required.
-%VERSREQ= 600012
-
-STD8X16FONT?= iso
-
-.if !defined(S)
-.if exists(./@/.)
-S= ./@
-.else
-S= ../../..
-.endif
-.endif
-.include "$S/conf/kern.pre.mk"
-
-INCLUDES+= -I$S/contrib/ia64/libuwx/src
-
-CFLAGS+= -mconstant-gp
-
-ASM_CFLAGS= -x assembler-with-cpp -Wa,-x -DLOCORE ${CFLAGS}
-
-%BEFORE_DEPEND
-
-%OBJS
-
-%FILES.c
-
-%FILES.s
-
-%FILES.m
-
-%CLEAN
-
-%RULES
-
-.include "$S/conf/kern.post.mk"
diff --git a/sys/conf/files.ia64 b/sys/conf/files.ia64
deleted file mode 100644
index 71b6232..0000000
--- a/sys/conf/files.ia64
+++ /dev/null
@@ -1,137 +0,0 @@
-# This file tells config what files go into building a kernel,
-# files marked standard are always included.
-#
-# $FreeBSD$
-#
-# The long compile-with and dependency lines are required because of
-# limitations in config: backslash-newline doesn't work in strings, and
-# dependency lines other than the first are silently ignored.
-#
-#
-font8x16.o optional std8x16font \
- compile-with "uudecode < /usr/share/syscons/fonts/${STD8X16FONT}-8x16.fnt && file2c 'unsigned char font_16[16*256] = {' '};' < ${STD8X16FONT}-8x16 > font8x16.c && ${CC} -c ${CFLAGS} font8x16.c" \
- no-implicit-rule before-depend \
- clean "${STD8X16FONT}-8x16 font8x16.c"
-#
-atkbdmap.h optional atkbd_dflt_keymap \
- compile-with "/usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h" \
- no-obj no-implicit-rule before-depend \
- clean "atkbdmap.h"
-#
-font.h optional sc_dflt_font \
- compile-with "uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'static u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'static u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'static u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \
- no-obj no-implicit-rule before-depend \
- clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8"
-#
-ukbdmap.h optional ukbd_dflt_keymap \
- compile-with "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \
- no-obj no-implicit-rule before-depend \
- clean "ukbdmap.h"
-#
-cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}"
-compat/ia32/ia32_sysvec.c optional compat_freebsd32
-contrib/ia64/libuwx/src/uwx_bstream.c standard
-contrib/ia64/libuwx/src/uwx_context.c standard
-contrib/ia64/libuwx/src/uwx_env.c standard
-contrib/ia64/libuwx/src/uwx_scoreboard.c standard
-contrib/ia64/libuwx/src/uwx_step.c standard
-contrib/ia64/libuwx/src/uwx_str.c standard
-contrib/ia64/libuwx/src/uwx_swap.c standard
-contrib/ia64/libuwx/src/uwx_trace.c standard
-contrib/ia64/libuwx/src/uwx_uinfo.c standard
-contrib/ia64/libuwx/src/uwx_utable.c standard
-crypto/blowfish/bf_enc.c optional crypto | ipsec
-crypto/des/des_enc.c optional crypto | ipsec | netsmb
-dev/atkbdc/atkbd.c optional atkbd atkbdc
-dev/atkbdc/atkbd_atkbdc.c optional atkbd atkbdc
-dev/atkbdc/atkbdc.c optional atkbdc
-dev/atkbdc/atkbdc_isa.c optional atkbdc isa
-dev/atkbdc/atkbdc_subr.c optional atkbdc
-dev/atkbdc/psm.c optional psm atkbdc
-dev/fb/fb.c optional fb | vga
-dev/fb/vga.c optional vga
-dev/hwpmc/hwpmc_ia64.c optional hwpmc
-dev/io/iodev.c optional io
-dev/kbd/kbd.c optional atkbd | sc | ukbd | vt
-dev/syscons/scterm-teken.c optional sc
-dev/syscons/scvgarndr.c optional sc vga
-dev/syscons/scvtb.c optional sc
-dev/uart/uart_cpu_ia64.c optional uart
-dev/acpica/acpi_if.m standard
-ia64/acpica/OsdEnvironment.c optional acpi
-ia64/acpica/acpi_machdep.c optional acpi
-ia64/acpica/acpi_wakeup.c optional acpi
-ia64/acpica/madt.c optional acpi
-ia64/disasm/disasm_decode.c standard
-ia64/disasm/disasm_extract.c standard
-ia64/disasm/disasm_format.c standard
-ia64/ia32/ia32_misc.c optional compat_freebsd32
-ia64/ia32/ia32_reg.c optional compat_freebsd32
-ia64/ia32/ia32_signal.c optional compat_freebsd32
-ia64/ia32/ia32_trap.c optional compat_freebsd32
-ia64/ia64/autoconf.c standard
-ia64/ia64/bus_machdep.c standard
-ia64/ia64/busdma_machdep.c standard
-ia64/ia64/clock.c standard
-ia64/ia64/context.S standard
-ia64/ia64/db_machdep.c optional ddb
-ia64/ia64/dump_machdep.c standard
-ia64/ia64/efi.c standard
-ia64/ia64/elf_machdep.c standard
-ia64/ia64/emulate.c standard
-ia64/ia64/exception.S standard
-ia64/ia64/gdb_machdep.c optional gdb
-ia64/ia64/highfp.c standard
-ia64/ia64/in_cksum.c optional inet | inet6
-ia64/ia64/interrupt.c standard
-ia64/ia64/iodev_machdep.c optional io
-ia64/ia64/locore.S standard no-obj
-ia64/ia64/machdep.c standard
-ia64/ia64/mca.c standard
-ia64/ia64/mem.c optional mem
-ia64/ia64/mp_locore.S optional smp
-ia64/ia64/mp_machdep.c optional smp
-ia64/ia64/nexus.c standard
-ia64/ia64/pal.S standard
-ia64/ia64/physical.S standard
-ia64/ia64/physmem.c standard
-ia64/ia64/pmap.c standard
-ia64/ia64/ptrace_machdep.c standard
-ia64/ia64/sal.c standard
-ia64/ia64/sapic.c standard
-ia64/ia64/setjmp.S standard
-ia64/ia64/stack_machdep.c optional ddb | stack
-ia64/ia64/support.S standard
-ia64/ia64/sys_machdep.c standard
-ia64/ia64/syscall.S standard
-ia64/ia64/trap.c standard
-ia64/ia64/uio_machdep.c standard
-ia64/ia64/uma_machdep.c standard
-ia64/ia64/unaligned.c standard
-ia64/ia64/unwind.c standard
-ia64/ia64/vm_machdep.c standard
-ia64/ia64/xtrace.c optional xtrace
-ia64/isa/isa.c optional isa
-ia64/isa/isa_dma.c optional isa
-ia64/pci/pci_cfgreg.c optional pci
-isa/syscons_isa.c optional sc
-isa/vga_isa.c optional vga
-kern/kern_clocksource.c standard
-libkern/bcmp.c standard
-libkern/ffsl.c standard
-libkern/fls.c standard
-libkern/flsl.c standard
-libkern/flsll.c standard
-libkern/ia64/__divdi3.S standard
-libkern/ia64/__divsi3.S standard
-libkern/ia64/__moddi3.S standard
-libkern/ia64/__modsi3.S standard
-libkern/ia64/__udivdi3.S standard
-libkern/ia64/__udivsi3.S standard
-libkern/ia64/__umoddi3.S standard
-libkern/ia64/__umodsi3.S standard
-libkern/ia64/bswap16.S standard
-libkern/ia64/bswap32.S standard
-libkern/memmove.c standard
-libkern/memset.c standard
-kern/subr_dummy_vdso_tc.c standard
diff --git a/sys/conf/kern.mk b/sys/conf/kern.mk
index ee9a204..deba3e5 100644
--- a/sys/conf/kern.mk
+++ b/sys/conf/kern.mk
@@ -72,15 +72,6 @@ INLINE_LIMIT?= 8000
.endif
#
-# For IA-64, we use r13 for the kernel globals pointer and we only use
-# a very small subset of float registers for integer divides.
-#
-.if ${MACHINE_CPUARCH} == "ia64"
-CFLAGS+= -ffixed-r13 -mfixed-range=f32-f127 -fpic #-mno-sdata
-INLINE_LIMIT?= 15000
-.endif
-
-#
# For sparc64 we want the medany code model so modules may be located
# anywhere in the 64-bit address space. We also tell GCC to use floating
# point emulation. This avoids using floating point registers for integer
@@ -147,7 +138,7 @@ CFLAGS+= -ffreestanding
#
# GCC SSP support
#
-.if ${MK_SSP} != "no" && ${MACHINE_CPUARCH} != "ia64" && \
+.if ${MK_SSP} != "no" && \
${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
CFLAGS+= -fstack-protector
.endif
diff --git a/sys/conf/ldscript.ia64 b/sys/conf/ldscript.ia64
deleted file mode 100644
index 8e0b297..0000000
--- a/sys/conf/ldscript.ia64
+++ /dev/null
@@ -1,152 +0,0 @@
-/* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-ia64-freebsd", "elf64-ia64-freebsd", "elf64-ia64-freebsd")
-OUTPUT_ARCH(ia64)
-ENTRY(__start)
-SEARCH_DIR(/usr/lib);
-kernel_text = 0x9ffc000000000000;
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = kernel_text + SIZEOF_HEADERS;
- .interp : { *(.interp) }
-
- PROVIDE (btext = .);
- .text :
- {
- *(.ivt)
- *(.ivt.text)
- *(.text .stub .text.* .gnu.linkonce.t.*)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- } = 0x00300000010070000002000001000400
- .init : { *(.init) } = 0x00300000010070000002000001000400
- .plt : { *(.plt) }
- .fini : { *(.fini) } = 0x00300000010070000002000001000400
- _etext = .;
- PROVIDE (etext = .);
-
- .hash : { *(.hash) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
- .gnu.version : { *(.gnu.version) }
- .gnu.version_d : { *(.gnu.version_d) }
- .gnu.version_r : { *(.gnu.version_r) }
- .rela.init : { *(.rela.init) }
- .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
- .rela.fini : { *(.rela.fini) }
- .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
- .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
- .rela.ctors : { *(.rela.ctors) }
- .rela.dtors : { *(.rela.dtors) }
- .rela.got : { *(.rela.got) }
- .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
- .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
- .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
- .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
- .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
- .rela.plt : { *(.rela.plt) }
- .rela.IA_64.pltoff : { *(.rela.IA_64.pltoff) }
-
- .IA_64.unwind_info : { *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*) }
- .IA_64.unwind : { *(.IA_64.unwind* .gnu.linkonce.ia64unw.*) }
-
- .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
- .rodata1 : { *(.rodata1) }
- .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
- .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
- .opd : { *(.opd) }
-
- /* Adjust the address for the data segment. We want to start in the next
- page in the loader virtual memory. */
- . = ALIGN(65536);
-
- PROVIDE (bdata = .);
- .data :
- {
- *(.ivt.data)
- *(.data .data.* .gnu.linkonce.d.*)
- SORT(CONSTRUCTORS)
- }
- .data1 : { *(.data1) }
- .dynamic : { *(.dynamic) }
- .ctors :
- {
- *(.ctors)
- *(SORT(.ctors.*))
- }
- .dtors :
- {
- *(.dtors)
- *(SORT(.dtors.*))
- }
- . = ALIGN(16);
- __gp = . + 0x200000;
- .got : { *(.got.plt) *(.got) }
- .IA_64.pltoff : { *(.IA_64.pltoff) }
- /* We want the small data sections together, so single-instruction offsets
- can access them all, and initialized data all before uninitialized, so
- we can shorten the on-disk segment size. */
- .sdata :
- {
- *(.sdata .sdata.* .gnu.linkonce.s.*)
- }
- _edata = .;
- PROVIDE (edata = .);
- __bss_start = .;
- .sbss :
- {
- PROVIDE (__sbss_start = .);
- PROVIDE (___sbss_start = .);
- *(.dynsbss)
- *(.sbss .sbss.* .gnu.linkonce.sb.*)
- *(.scommon)
- PROVIDE (__sbss_end = .);
- PROVIDE (___sbss_end = .);
- }
- .bss :
- {
- *(.dynbss)
- *(.bss .bss.* .gnu.linkonce.b.*)
- *(COMMON)
- /* Align here to ensure that the .bss section occupies space up to
- _end. Align after .bss to ensure correct alignment even if the
- .bss section disappears because there are no input sections. */
- . = ALIGN(64 / 8);
- }
- . = ALIGN(64 / 8);
- _end = .;
- PROVIDE (end = .);
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-}
diff --git a/sys/conf/options.ia64 b/sys/conf/options.ia64
deleted file mode 100644
index e5ef143..0000000
--- a/sys/conf/options.ia64
+++ /dev/null
@@ -1,33 +0,0 @@
-# $FreeBSD$
-# Options specific to the ia64 platform kernels
-
-ITANIUM opt_global.h
-ITANIUM2 opt_global.h
-
-LOG2_ID_PAGE_SIZE opt_global.h
-LOG2_PAGE_SIZE opt_global.h
-
-UWX_TRACE_ENABLE opt_global.h
-
-COMPAT_FREEBSD32 opt_compat.h
-
-PV_STATS opt_pmap.h
-
-XTRACE
-
-VGA_ALT_SEQACCESS opt_vga.h
-VGA_DEBUG opt_vga.h
-VGA_NO_FONT_LOADING opt_vga.h
-VGA_NO_MODE_CHANGE opt_vga.h
-VGA_SLOW_IOACCESS opt_vga.h
-VGA_WIDTH90 opt_vga.h
-
-# AGP debugging.
-AGP_DEBUG opt_agp.h
-
-PSM_HOOKRESUME opt_psm.h
-PSM_RESETAFTERSUSPEND opt_psm.h
-PSM_DEBUG opt_psm.h
-
-# Atkbd options
-ATKBD_DFLT_KEYMAP opt_atkbd.h
diff --git a/sys/contrib/dev/acpica/acpica_prep.sh b/sys/contrib/dev/acpica/acpica_prep.sh
index 4a467a1..a6802ef 100755
--- a/sys/contrib/dev/acpica/acpica_prep.sh
+++ b/sys/contrib/dev/acpica/acpica_prep.sh
@@ -85,6 +85,6 @@ rm -rf ${wrk}
# assist the developer in generating a diff
echo "Directories you may want to 'svn diff':"
echo " sys/contrib/dev/acpica sys/dev/acpica \\"
-echo " sys/amd64/acpica sys/i386/acpica sys/ia64/acpica sys/x86/acpica \\"
-echo " sys/amd64/include sys/i386/include sys/ia64/include \\"
+echo " sys/amd64/acpica sys/i386/acpica sys/x86/acpica \\"
+echo " sys/amd64/include sys/i386/include include \\"
echo " sys/boot sys/conf sys/modules/acpi usr.sbin/acpi"
diff --git a/sys/contrib/ia64/libuwx/src/Makefile b/sys/contrib/ia64/libuwx/src/Makefile
deleted file mode 100644
index 7cc0f2d..0000000
--- a/sys/contrib/ia64/libuwx/src/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# Makefile for IPF unwind express library, libuwx.
-#
-# To build a cross-unwind library (i.e., one hosted on a
-# non-IPF, non-HP-UX system), omit the "self" callbacks
-# and the dependency on libuca by setting SELFOBJS and
-# SELFLIBS to empty strings.
-
-AR = ar
-RANLIB = :
-
-OTHERCFLAGS =
-# OTHERCFLAGS = -DUWX_TRACE_ENABLE # Enables trace output
-# OTHERCFLAGS = +DD64 # Builds 64-bit library
-
-CFLAGS = -O $(OTHERCFLAGS)
-
-OBJS = uwx_bstream.o uwx_context.o uwx_env.o uwx_scoreboard.o \
- uwx_step.o uwx_str.o uwx_swap.o uwx_symbols.o \
- uwx_trace.o uwx_uinfo.o uwx_utable.o
-
-# SELFOBJS = # For cross-unwind library
-# SELFOBJS = uwx_self.o uwx_self_context.o uwx_ttrace.o
-SELFOBJS = uwx_self.o uwx_self_context.o
-
-# SELFLIBS = # For cross-unwind library
-SELFLIBS = -luca
-
-libuwx.a: $(OBJS) $(SELFOBJS)
- $(AR) rv libuwx.a $?
- $(RANLIB) libuwx.a
-
-libuwx.so: $(OBJS) $(SELFOBJS)
- ld -b -o libuwx.so $(OBJS) $(SELFOBJS) $(SELFLIBS)
-
-libuwx.sl: $(OBJS) $(SELFOBJS)
- ld -b -o libuwx.sl $(OBJS) $(SELFOBJS) $(SELFLIBS)
-
-clean:
- rm -f $(OBJS) $(SELFOBJS) libuwx.a libuwx.so libuwx.sl
-
-uwx_bstream.o: uwx.h uwx_env.h uwx_bstream.h
-
-uwx_context.o: uwx.h uwx_env.h uwx_scoreboard.h uwx_step.h uwx_trace.h
-
-uwx_env.o: uwx.h uwx_env.h uwx_scoreboard.h uwx_str.h uwx_trace.h
-
-uwx_scoreboard.o: uwx.h uwx_env.h uwx_scoreboard.h uwx_trace.h
-
-uwx_step.o: uwx.h uwx_env.h uwx_context.h uwx_utable.h \
- uwx_uinfo.h uwx_scoreboard.h uwx_str.h uwx_trace.h
-
-uwx_str.o: uwx.h uwx_env.h uwx_str.h
-
-uwx_swap.o: uwx.h uwx_env.h uwx_swap.h
-
-uwx_symbols.o: uwx.h uwx_env.h uwx_symbols.h
-
-uwx_trace.o: uwx.h uwx_env.h uwx_uinfo.h uwx_scoreboard.h uwx_trace.h
-
-uwx_uinfo.o: uwx.h uwx_env.h uwx_uinfo.h uwx_utable.h \
- uwx_scoreboard.h uwx_bstream.h uwx_trace.h
-
-uwx_utable.o: uwx.h uwx_env.h uwx_utable.h uwx_swap.h uwx_trace.h
-
-uwx_self.o: uwx.h uwx_env.h uwx_context.h uwx_trace.h uwx_self.h \
- uwx_symbols.h
-
-uwx_self_context.o: uwx_self_context.s
- $(CC) -c $(CFLAGS) -o uwx_self_context.o uwx_self_context.s
-
-uwx_ttrace.o: uwx.h uwx_env.h uwx_context.h uwx_trace.h uwx_ttrace.h
diff --git a/sys/contrib/ia64/libuwx/src/uwx.h b/sys/contrib/ia64/libuwx/src/uwx.h
deleted file mode 100644
index 8fdbb43..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx.h
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef __UWX_INCLUDED
-#define __UWX_INCLUDED 1
-
-#ifndef _KERNEL
-#include <stdlib.h>
-#include <inttypes.h>
-#else
-#include <sys/param.h>
-#include <sys/systm.h>
-#endif
-
-#if defined(__cplusplus)
-#define __EXTERN_C extern "C"
-#else
-#define __EXTERN_C extern
-#endif
-
-#define UWX_VERSION 3 /* Version id for callback interfaces */
-
-/* Unwind environment structure (opaque) */
-struct uwx_env;
-
-/* Symbol Cache for uwx_find_symbol (opaque) */
-struct uwx_symbol_cache;
-
-/* Allocate and free callbacks */
-typedef void *(*alloc_cb)(size_t size);
-typedef void (*free_cb)(void *ptr);
-__EXTERN_C int uwx_register_alloc_cb(alloc_cb alloc, free_cb free);
-
-/* Allocate and initialize an unwind environment */
-__EXTERN_C struct uwx_env *uwx_init(void);
-
-/* Free an unwind environment */
-__EXTERN_C int uwx_free(struct uwx_env *env);
-
-/* Put unwind express into cross-process mode */
-__EXTERN_C int uwx_set_remote(struct uwx_env *env, int is_big_endian_target);
-
-/* Put unwind express into reduced-context mode (no floating-point regs) */
-__EXTERN_C int uwx_set_nofr(struct uwx_env *env);
-
-/* Copy-in callback */
-typedef int (*copyin_cb)(
- int request, /* request code (see below) */
- char *loc, /* local (destination) address */
- uint64_t rem, /* remote (source) address */
- int len, /* number of bytes to copy */
- intptr_t tok); /* callback token */
-
-/* Lookup IP callback */
-typedef int (*lookupip_cb)(
- int request, /* request code (see below) */
- uint64_t ip, /* IP of current frame */
- intptr_t tok, /* callback token */
- uint64_t **vecp); /* parameter vector (in/out) */
-
-/* Register copy-in and lookup IP callbacks */
-__EXTERN_C int uwx_register_callbacks(
- struct uwx_env *env, /* unwind environment */
- intptr_t tok, /* callback token */
- copyin_cb copyin, /* copy-in callback */
- lookupip_cb lookupip); /* lookup IP callback */
-
-/* Initialize a context with the basic info needed to start an unwind */
-__EXTERN_C int uwx_init_context(
- struct uwx_env *env, /* unwind environment */
- uint64_t ip, /* IP (instruction pointer) */
- uint64_t sp, /* SP (stack pointer) */
- uint64_t bsp, /* BSP (backing store pointer) */
- uint64_t cfm); /* CFM (current frame marker) */
-
-/* Set the value of a specific register in the current context (non fp) */
-__EXTERN_C int uwx_set_reg(
- struct uwx_env *env, /* unwind environment */
- int regid, /* register id (see below) */
- uint64_t val); /* register value */
-
-/* Set the value of a floating-point register in the current context */
-__EXTERN_C int uwx_set_fr(
- struct uwx_env *env, /* unwind environment */
- int regid, /* register id (see below) */
- uint64_t *val); /* register value (ptr to 16 bytes) */
- /* (memory spill format) */
-
-/* Initialize the unwind history */
-__EXTERN_C int uwx_init_history(struct uwx_env *env);
-
-/* Step one frame */
-__EXTERN_C int uwx_step(struct uwx_env *env);
-
-/* Get module name and text base, if available, for current frame */
-__EXTERN_C int uwx_get_module_info(
- struct uwx_env *env, /* unwind environment */
- char **modp, /* load module name (out) */
- uint64_t *text_base); /* base address of text segment (out) */
-
-/* Get function start address for current frame */
-__EXTERN_C int uwx_get_funcstart(
- struct uwx_env *env, /* unwind environment */
- uint64_t *funcstart); /* function start address (out) */
-
-/* Get symbol information, if available, for current frame */
-__EXTERN_C int uwx_get_sym_info(
- struct uwx_env *env, /* unwind environment */
- char **modp, /* load module name (out) */
- char **symp, /* function name (out) */
- uint64_t *offsetp); /* offset from start of function (out) */
-
-/* Get symbol information, given module name and IP */
-__EXTERN_C int uwx_find_symbol(
- struct uwx_env *env, /* unwind environment */
- struct uwx_symbol_cache **cachep,
- /* ptr to symbol cache ptr (in/out) */
- char *mod, /* load module name */
- uint64_t relip, /* IP, relative to text segment */
- char **symp, /* function name (out) */
- uint64_t *offsetp); /* offset from start of function (out) */
-
-/* Release memory used by symbol cache */
-__EXTERN_C void uwx_release_symbol_cache(
- struct uwx_env *env, /* unwind environment */
- struct uwx_symbol_cache *symbol_cache);
- /* symbol cache ptr */
-
-/* Get the value of a register from the current context */
-__EXTERN_C int uwx_get_reg(
- struct uwx_env *env, /* unwind environment */
- int regid, /* register id (see below) */
- uint64_t *valp); /* register value (out) */
-
-/* Get the NaT bit of a GR from the current context */
-__EXTERN_C int uwx_get_nat(
- struct uwx_env *env, /* unwind environment */
- int regid, /* register id (see below) */
- int *natp); /* NaT value (out: 0 or 1) */
-
-/* Get the spill location for a register in the current context */
-__EXTERN_C int uwx_get_spill_loc(
- struct uwx_env *env, /* unwind environment */
- int regid, /* register id (see below) */
- uint64_t *dispp); /* disposition code (see below) (out) */
-
-/* Get the ABI context code (if uwx_step returned UWX_ABI_FRAME) */
-__EXTERN_C int uwx_get_abi_context_code(struct uwx_env *env);
-
-/* Increment/Decrement the bsp by a number of slots */
-/* (accounts for NaT collections) */
-__EXTERN_C uint64_t uwx_add_to_bsp(uint64_t bsp, int nslots);
-
-/* Return status codes for uwx_ APIs */
-#define UWX_OK 0
-#define UWX_BOTTOM 1 /* Hit bottom of stack */
-#define UWX_ABI_FRAME 2 /* Hit ABI-dependent frame */
-#define UWX_ERR_NOENV (-1) /* No uwx_env allocated */
-#define UWX_ERR_IPNOTFOUND (-2) /* Lookup IP c/b returned NOTFOUND */
-#define UWX_ERR_LOOKUPERR (-3) /* Lookup IP c/b returned ERR */
-#define UWX_ERR_BADKEY (-4) /* Bad result vector key */
-#define UWX_ERR_COPYIN_UTBL (-5) /* Error reading unwind table */
-#define UWX_ERR_COPYIN_UINFO (-6) /* Error reading unwind info */
-#define UWX_ERR_COPYIN_MSTK (-7) /* Error reading memory stack */
-#define UWX_ERR_COPYIN_RSTK (-8) /* Error reading register stack */
-#define UWX_ERR_COPYIN_REG (-9) /* Error reading context register */
-#define UWX_ERR_NOUENTRY (-10) /* No unwind table entry for ip */
-#define UWX_ERR_NOUDESC (-11) /* No unwind descriptor covers ip */
-#define UWX_ERR_BADUDESC (-12) /* Bad unwind descriptor */
-#define UWX_ERR_NOMEM (-13) /* Out of memory */
-#define UWX_ERR_PROLOG_UF (-14) /* Prologue underflow */
-#define UWX_ERR_UNDEFLABEL (-15) /* Undefined label in copy_state */
-#define UWX_ERR_BADREGID (-16) /* Bad register identifier */
-#define UWX_ERR_CANTUNWIND (-17) /* Can't unwind */
-#define UWX_ERR_NOCALLBACKS (-18) /* No callbacks registered */
-#define UWX_ERR_NOCONTEXT (-19) /* Context not initialized */
-#define UWX_ERR_UCACCESS (-20) /* Failure in libuca */
-#define UWX_ERR_NOSYM (-21) /* Symbol not found */
-
-/* Request codes for copyin callback */
-#define UWX_COPYIN_UINFO 1 /* Reading unwind info */
-#define UWX_COPYIN_MSTACK 2 /* Reading memory stack */
-#define UWX_COPYIN_RSTACK 3 /* Reading RSE backing store */
-#define UWX_COPYIN_REG 4 /* Reading initial register state */
-
-/* Request codes for lookup IP callback */
-#define UWX_LKUP_LOOKUP 1 /* Lookup IP */
-#define UWX_LKUP_FREE 2 /* Free result vector */
-#define UWX_LKUP_SYMBOLS 3 /* Lookup symbolic information */
-#define UWX_LKUP_MODULE 4 /* Get module name */
-
-/* Return status codes for lookup IP callback */
-#define UWX_LKUP_NOTFOUND 0 /* IP not found */
-#define UWX_LKUP_ERR 1 /* Other error */
-#define UWX_LKUP_UTABLE 2 /* Returned ref to unwind table */
-#define UWX_LKUP_FDESC 3 /* Returned frame description */
-#define UWX_LKUP_SYMINFO 4 /* Returned symbolic information */
-#define UWX_LKUP_REMAP 5 /* Returned remapped IP */
-#define UWX_LKUP_UINFO 6 /* Returned unw info block ptr */
-
-/* The lookup IP callback receives a parameter vector, and returns */
-/* one on success. This vector is a series of key/value pairs; each */
-/* even-numbered slot is a key, and each odd-numbered slot is a */
-/* corresponding value. The vector is terminated by a pair whose */
-/* key is 0. */
-#define UWX_KEY_END 0 /* End of vector */
-
-/* Keys passed to lookup IP callback */
-#define UWX_KEY_PREDS 1 /* Predicate registers */
-#define UWX_KEY_VERSION 2 /* Version id of unwind engine */
-/* UWX_KEY_FUNCSTART (below) may also be passed with the UWX_LKUP_SYMINFO */
-/* request. */
-
-/* Keys returned with UWX_LKUP_UTABLE */
-/* These key/value pairs describe the unwind table corresponding */
-/* to the load module in which the current IP resides. */
-#define UWX_KEY_TBASE 1 /* Base address of text seg */
-#define UWX_KEY_UFLAGS 2 /* Unwind flags (optional) */
-#define UWX_KEY_USTART 3 /* Base of unwind tbl */
-#define UWX_KEY_UEND 4 /* End of unwind tbl */
-#define UWX_KEY_GP 7 /* GP value for module */
-
-/* Keys returned with UWX_LKUP_FDESC */
-/* These key/value pairs describe the state of the frame at the */
-/* given IP. They are typically used for dynamically-generated code. */
-/* If UWX_KEY_CONTEXT is returned, it must be the only key returned. */
-/* Use UWX_KEY_GP for the module's gp value. */
-#define UWX_KEY_FSIZE 1 /* Frame size */
-#define UWX_KEY_SPILL(reg_id) (2 | ((reg_id) << 4)) /* Reg spilled */
-#define UWX_KEY_CONTEXT 3 /* ABI-dep. context */
-
-/* Keys returned with UWX_LKUP_REMAP */
-#define UWX_KEY_NEWIP 5 /* Remapped IP */
-
-/* Keys returned with UWX_LKUP_UINFO */
-/* Use UWX_KEY_GP for the module's gp value. */
-/* Use UWX_KEY_FUNCSTART for the start address of the function */
-/* Use UWX_KEY_UFLAGS for the unwind flags (optional) */
-#define UWX_KEY_UINFO 6 /* Address of unwind info block */
-
-/* Keys returned with UWX_LKUP_SYMINFO */
-/* These keys may be returned with UWX_LKUP_FDESC or UWX_LKUP_UINFO, */
-/* if the information is cheap to obtain. */
-/* Use UWX_KEY_TBASE for the base of the text segment */
-#define UWX_KEY_MODULE 17 /* Name of load module */
-#define UWX_KEY_FUNC 18 /* Name of function */
-#define UWX_KEY_FUNCSTART 19 /* Address of start of function */
-
-/* Register identifiers */
-/* For use in UWX_LKUP_FDESC result vectors and context access APIs. */
-/* "no spill info": These regs aren't spilled directly, so */
-/* result vectors must not describe these registers. */
-/* The result vector must describe the related register or */
-/* pseudo register instead (ip:rp, sp:psp, bsp/cfm:pfs). */
-/* "pseudo register": Not a machine register, but treated as */
-/* one for unwind purposes. */
-#define UWX_REG_IP 0 /* ip (no spill info) */
-#define UWX_REG_SP 1 /* sp (no spill info) */
-#define UWX_REG_BSP 2 /* ar.bsp (no spill info) */
-#define UWX_REG_CFM 3 /* cfm (no spill info) */
-#define UWX_REG_RP 4 /* rp (pseudo-register) */
-#define UWX_REG_PSP 5 /* psp (pseudo-register) */
-#define UWX_REG_PFS 6 /* pfs (pseudo-register) */
-#define UWX_REG_PREDS 7 /* p0 - p63 */
-#define UWX_REG_PRIUNAT 8 /* primary unat (pseudo-register) */
-#define UWX_REG_AR_BSPSTORE 9 /* ar.bspstore */
-#define UWX_REG_AR_RNAT 10 /* ar.rnat */
-#define UWX_REG_AR_UNAT 11 /* ar.unat */
-#define UWX_REG_AR_FPSR 12 /* ar.fpsr */
-#define UWX_REG_AR_LC 13 /* ar.lc */
-#define UWX_REG_AR_PFS 14 /* ar.pfs */
-#define UWX_REG_GP 15 /* gp (pseudo-register) */
-#define UWX_REG_GR(gr) (0x100 | (gr))
-#define UWX_REG_FR(fr) (0x200 | (fr))
-#define UWX_REG_BR(br) (0x300 | (br))
-
-/* for backwards compatibility with previous releases... */
-#define UWX_REG_BSPSTORE UWX_REG_AR_BSPSTORE
-#define UWX_REG_RNAT UWX_REG_AR_RNAT
-#define UWX_REG_UNAT UWX_REG_AR_UNAT
-#define UWX_REG_FPSR UWX_REG_AR_FPSR
-#define UWX_REG_LC UWX_REG_AR_LC
-
-/* Values corresponding to UWX_KEY_SPILL keys indicate the disposition */
-/* of the spilled register -- either in the memory stack or in another */
-/* register. The PSP register may also have a disposition of "SPPLUS", */
-/* indicating that its value is SP plus a fixed constant. */
-#define UWX_DISP_NONE 0 /* Not spilled */
-#define UWX_DISP_SPPLUS(k) (1 | (k)) /* PSP = SP+constant */
-#define UWX_DISP_SPREL(disp) (2 | (disp)) /* Spilled at [SP+disp] */
-#define UWX_DISP_PSPREL(disp) (3 | (disp)) /* Spilled at [PSP+16-disp] */
-#define UWX_DISP_REG(reg) (4 | ((reg) << 4)) /* Saved to another reg. */
-
-/* The uwx_get_spill_loc() routine returns a spill location for a */
-/* given register in the current context. It will return a disposition */
-/* code of UWX_DISP_NONE, UWX_DISP_REG(reg), or one of the following */
-/* to indicate that the spilled value can be found in the memory */
-/* stack or the register stack backing store. */
-#define UWX_DISP_MSTK(addr) (5 | (addr)) /* Spilled in mem. stack */
-#define UWX_DISP_RSTK(addr) (6 | (addr)) /* Spilled in reg. stack */
-
-/* Extract the disposition code, offset, address, or register id */
-/* from a disposition returned from uwx_get_spill_loc(). */
-/* Compare the extracted disp code against UWX_DISP_REG(0), etc. */
-#define UWX_GET_DISP_CODE(disp) ((int)(disp) & 0x07)
-#define UWX_GET_DISP_OFFSET(disp) ((disp) & ~(uint64_t)0x07)
-#define UWX_GET_DISP_ADDR(disp) ((disp) & ~(uint64_t)0x07)
-#define UWX_GET_DISP_REGID(disp) ((int)(disp) >> 4)
-
-#undef __EXTERN_C
-
-#if defined(__cplusplus)
-
-class UnwindExpress {
-
-public:
-
- UnwindExpress() {
- env = uwx_init();
- }
-
- ~UnwindExpress() {
- if (env != 0)
- uwx_free(env);
- env = 0;
- }
-
- int init_context(uint64_t ip, uint64_t sp, uint64_t bsp, uint64_t cfm) {
- return uwx_init_context(env, ip, sp, bsp, cfm);
- }
-
- int init_history() {
- return uwx_init_history(env);
- }
-
- int set_reg(int regid, uint64_t val) {
- return uwx_set_reg(env, regid, val);
- }
-
- int set_fr(int regid, uint64_t *valp) {
- return uwx_set_fr(env, regid, valp);
- }
-
- int step() {
- return uwx_step(env);
- }
-
- int get_module_info(char **modp, uint64_t *text_base_p) {
- return uwx_get_module_info(env, modp, text_base_p);
- }
-
- int get_funcstart(uint64_t *funcstart) {
- return uwx_get_funcstart(env, funcstart);
- }
-
- int get_sym_info(char **modp, char **symp, uint64_t *offsetp) {
- return uwx_get_sym_info(env, modp, symp, offsetp);
- }
-
- int find_symbol(struct uwx_symbol_cache **cachep,
- char *mod, uint64_t relip, char **symp, uint64_t *offsetp) {
- return uwx_find_symbol(env, cachep, mod, relip, symp, offsetp);
- }
-
- void release_symbol_cache(struct uwx_symbol_cache *symbol_cache) {
- uwx_release_symbol_cache(env, symbol_cache);
- }
-
- int get_reg(int regid, uint64_t *valp) {
- return uwx_get_reg(env, regid, valp);
- }
-
- int get_nat(int regid, int *natp) {
- return uwx_get_nat(env, regid, natp);
- }
-
- int get_spill_loc(int regid, uint64_t *dispp) {
- return uwx_get_spill_loc(env, regid, dispp);
- }
-
- int get_abi_context_code() {
- return uwx_get_abi_context_code(env);
- }
-
- struct uwx_env *get_env() {
- return env;
- }
-
-protected:
-
- struct uwx_env *env;
-
-};
-
-#endif /* __cplusplus */
-
-#endif /* __UWX_INCLUDED */
diff --git a/sys/contrib/ia64/libuwx/src/uwx_bstream.c b/sys/contrib/ia64/libuwx/src/uwx_bstream.c
deleted file mode 100644
index 1495ed3..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_bstream.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "uwx_env.h"
-#include "uwx_bstream.h"
-
-
-/* uwx_init_bstream: initialize a byte stream for reading */
-
-void uwx_init_bstream(
- struct uwx_bstream *bstream,
- struct uwx_env *env,
- uint64_t source,
- unsigned int len,
- int request)
-{
- bstream->buf = 0;
- if (env->remote) {
- bstream->source = source;
- bstream->bufp = (unsigned char *) &bstream->buf;
- bstream->nbuf = 0;
- bstream->copyin = env->copyin;
- bstream->cb_token = env->cb_token;
- bstream->request = request;
- }
- else {
- bstream->source = 0;
- bstream->bufp = (unsigned char *) (intptr_t) source;
- bstream->nbuf = len;
- bstream->copyin = 0;
- bstream->cb_token = 0;
- bstream->request = 0;
- }
- bstream->ntotal = len;
- bstream->peekc = -1;
-}
-
-
-/* uwx_get_byte: read the next byte from the byte stream */
-
-int uwx_get_byte(struct uwx_bstream *bstream)
-{
- int len;
- int n;
- int b;
-
- if (bstream->peekc >= 0) {
- b = bstream->peekc;
- bstream->peekc = -1;
- return b;
- }
- if (bstream->ntotal <= 0)
- return -1;
- if (bstream->nbuf <= 0) {
- if (bstream->source & 0x7 || bstream->ntotal < sizeof(uint64_t))
- len = sizeof(uint32_t);
- else
- len = sizeof(uint64_t);
- n = (*bstream->copyin)(bstream->request, (char *)&bstream->buf,
- bstream->source, len, bstream->cb_token);
- if (n != len)
- return -1;
- bstream->bufp = (unsigned char *) &bstream->buf;
- bstream->nbuf = n;
- bstream->source += n;
- }
-
- b = *bstream->bufp++;
- bstream->nbuf--;
- bstream->ntotal--;
- return b;
-}
-
-
-/* uwx_unget_byte: push a byte back onto the byte stream */
-
-int uwx_unget_byte(struct uwx_bstream *bstream, int b)
-{
- bstream->peekc = b;
- return 0;
-}
-
-
-/* uwx_get_uleb128: read a ULEB128 value from the byte stream */
-
-int uwx_get_uleb128(struct uwx_bstream *bstream, uint64_t *valp)
-{
- uint64_t val;
- int i;
- int b;
-
- b = uwx_get_byte(bstream);
- val = (uint64_t)(b & 0x7f) << 56;
- for (i = 0; i < 8; i++) {
- val = val >> 7;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 56;
- }
- }
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 63;
- }
- if (b & 0x80)
- return -1;
- *valp = val;
- return 0;
-}
-
-#if 0
-int uwx_get_uleb128_alt(struct uwx_bstream *bstream, uint64_t *valp)
-{
- uint64_t val;
- int b;
-
- b = uwx_get_byte(bstream);
- val = b & 0x7f;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 7;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 14;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 21;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 28;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 35;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 42;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 49;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 56;
- if (b & 0x80) {
- b = uwx_get_byte(bstream);
- val |= (uint64_t)(b & 0x7f) << 63;
- if (b & 0x80)
- return -1;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- *valp = val;
- return 0;
-}
-#endif
diff --git a/sys/contrib/ia64/libuwx/src/uwx_bstream.h b/sys/contrib/ia64/libuwx/src/uwx_bstream.h
deleted file mode 100644
index c2fe5da..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_bstream.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-struct uwx_bstream {
- copyin_cb copyin;
- intptr_t cb_token;
- uint64_t source;
- uint64_t buf;
- unsigned char *bufp;
- int nbuf;
- unsigned int ntotal;
- int request;
- int peekc;
-};
-
-/* uwx_init_bstream: initialize a byte stream for reading */
-
-extern void uwx_init_bstream(
- struct uwx_bstream *bstream,
- struct uwx_env *env,
- uint64_t source,
- unsigned int len,
- int request);
-
-
-/* uwx_get_byte: read the next byte from the byte stream */
-
-extern int uwx_get_byte(struct uwx_bstream *bstream);
-
-
-/* uwx_unget_byte: push a byte back onto the byte stream */
-
-extern int uwx_unget_byte(struct uwx_bstream *bstream, int b);
-
-
-/* uwx_get_uleb128: read a ULEB128 value from the byte stream */
-
-extern int uwx_get_uleb128(struct uwx_bstream *bstream, uint64_t *val);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_context.c b/sys/contrib/ia64/libuwx/src/uwx_context.c
deleted file mode 100644
index 9b1054a..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_context.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "uwx_env.h"
-#include "uwx_scoreboard.h"
-#include "uwx_step.h"
-#include "uwx_trace.h"
-
-int uwx_init_context(
- struct uwx_env *env,
- uint64_t ip,
- uint64_t sp,
- uint64_t bsp,
- uint64_t cfm)
-{
- int i;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- env->context.special[UWX_REG_IP] = ip;
- env->context.special[UWX_REG_SP] = sp;
- env->context.special[UWX_REG_BSP] = bsp;
- env->context.special[UWX_REG_CFM] = cfm;
- for (i = UWX_REG_RP; i < NSPECIALREG; i++)
- env->context.special[i] = 0;
- for (i = 0; i < NPRESERVEDGR; i++)
- env->context.gr[i] = 0;
- env->context.valid_regs = VALID_BASIC4;
- env->context.valid_frs = 0;
- env->rstate = 0;
- (void)uwx_init_history(env);
- return UWX_OK;
-}
-
-int uwx_get_reg(struct uwx_env *env, int regid, uint64_t *valp)
-{
- int status;
- int sor;
- int rrb_gr;
- uint64_t bsp;
- int n;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- status = UWX_OK;
-
- if (regid == UWX_REG_GR(12))
- regid = UWX_REG_SP;
- if (regid < NSPECIALREG && (env->context.valid_regs & (1 << regid)))
- *valp = env->context.special[regid];
- else if (regid == UWX_REG_PSP || regid == UWX_REG_RP ||
- regid == UWX_REG_PFS) {
- status = uwx_restore_markers(env);
- if (status != UWX_OK)
- return status;
- *valp = env->context.special[regid];
- }
- else if (regid >= UWX_REG_GR(4) && regid <= UWX_REG_GR(7) &&
- (env->context.valid_regs &
- (1 << (regid - UWX_REG_GR(4) + VALID_GR_SHIFT))) )
- *valp = env->context.gr[regid - UWX_REG_GR(4)];
- else if (regid >= UWX_REG_GR(32) && regid <= UWX_REG_GR(127)) {
- if (env->copyin == 0)
- return UWX_ERR_NOCALLBACKS;
- bsp = env->context.special[UWX_REG_BSP];
- TRACE_C_GET_REG(regid, bsp)
- regid -= UWX_REG_GR(32);
- sor = (((int) env->context.special[UWX_REG_CFM] >> 14) & 0x0f) * 8;
- rrb_gr = ((int) env->context.special[UWX_REG_CFM] >> 18) & 0x7f;
- if (sor != 0 && rrb_gr != 0 && regid < sor) {
- TRACE_C_ROTATE_GR(regid, sor, rrb_gr, (regid+rrb_gr)%sor)
- regid = (regid + rrb_gr) % sor;
- }
- bsp = uwx_add_to_bsp(bsp, regid);
- n = (*env->copyin)(UWX_COPYIN_RSTACK, (char *)valp,
- bsp, DWORDSZ, env->cb_token);
- if (n != DWORDSZ)
- status = UWX_ERR_COPYIN_RSTK;
- }
- else if (regid == UWX_REG_GR(0))
- *valp = 0;
- else if (regid >= UWX_REG_BR(1) && regid <= UWX_REG_BR(5) &&
- (env->context.valid_regs &
- (1 << (regid - UWX_REG_BR(1) + VALID_BR_SHIFT))) )
- *valp = env->context.br[regid - UWX_REG_BR(1)];
- else if (regid >= UWX_REG_FR(2) && regid <= UWX_REG_FR(5) &&
- (env->context.valid_frs & (1 << (regid - UWX_REG_FR(2)))) ) {
- valp[0] = env->context.fr[regid - UWX_REG_FR(2)].part0;
- valp[1] = env->context.fr[regid - UWX_REG_FR(2)].part1;
- }
- else if (regid >= UWX_REG_FR(16) && regid <= UWX_REG_FR(31) &&
- (env->context.valid_frs & (1 << (regid - UWX_REG_FR(16) + 4))) ) {
- valp[0] = env->context.fr[regid - UWX_REG_FR(16) + 4].part0;
- valp[1] = env->context.fr[regid - UWX_REG_FR(16) + 4].part1;
- }
- else if ( (regid < NSPECIALREG) ||
- (regid >= UWX_REG_GR(1) && regid <= UWX_REG_GR(31)) ||
- (regid >= UWX_REG_BR(0) && regid <= UWX_REG_BR(7)) ) {
- if (env->copyin == 0)
- return UWX_ERR_NOCALLBACKS;
- n = (*env->copyin)(UWX_COPYIN_REG, (char *)valp,
- regid, DWORDSZ, env->cb_token);
- if (n != DWORDSZ)
- status = UWX_ERR_COPYIN_REG;
- }
- else if (regid >= UWX_REG_FR(2) && regid <= UWX_REG_FR(127)) {
- if (env->copyin == 0)
- return UWX_ERR_NOCALLBACKS;
- n = (*env->copyin)(UWX_COPYIN_REG, (char *)valp,
- regid, 2*DWORDSZ, env->cb_token);
- if (n != 2*DWORDSZ)
- status = UWX_ERR_COPYIN_REG;
- }
- else if (regid == UWX_REG_FR(0)) {
- valp[0] = 0;
- valp[1] = 0;
- }
- else if (regid == UWX_REG_FR(1)) {
- valp[0] = 0x000000000000ffffULL;
- valp[1] = 0x8000000000000000ULL;
- }
- else
- status = UWX_ERR_BADREGID;
- return status;
-}
-
-int uwx_get_nat(struct uwx_env *env, int regid, int *natp)
-{
- int status;
- int sor;
- int rrb_gr;
- uint64_t bsp;
- uint64_t natcollp;
- uint64_t natcoll;
- int n;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- status = UWX_OK;
-
- if (regid >= UWX_REG_GR(4) && regid <= UWX_REG_GR(7) &&
- (env->context.valid_regs &
- (1 << (regid - UWX_REG_GR(4) + VALID_GR_SHIFT))) ) {
- *natp = (env->context.special[UWX_REG_PRIUNAT] >>
- (regid - UWX_REG_GR(4)) ) & 0x01;
- }
- else if (regid >= UWX_REG_GR(32) && regid <= UWX_REG_GR(127)) {
- if (env->copyin == 0)
- return UWX_ERR_NOCALLBACKS;
- bsp = env->context.special[UWX_REG_BSP];
- regid -= UWX_REG_GR(32);
- sor = (((int) env->context.special[UWX_REG_CFM] >> 14) & 0x0f) * 8;
- rrb_gr = ((int) env->context.special[UWX_REG_CFM] >> 18) & 0x7f;
- if (sor != 0 && rrb_gr != 0 && regid < sor) {
- regid = (regid + rrb_gr) % sor;
- }
- bsp = uwx_add_to_bsp(bsp, regid);
- natcollp = bsp | 0x01f8;
- n = (*env->copyin)(UWX_COPYIN_RSTACK, (char *)&natcoll,
- natcollp, DWORDSZ, env->cb_token);
- if (n != DWORDSZ)
- return UWX_ERR_COPYIN_RSTK;
- *natp = (int)(natcoll >> (((int)bsp >> 3) & 0x3f)) & 0x01;
- }
- else if (regid == UWX_REG_GR(0))
- *natp = 0;
- else
- status = UWX_ERR_BADREGID;
- return status;
-}
-
-int uwx_get_spill_loc(struct uwx_env *env, int regid, uint64_t *dispp)
-{
- int status;
- int sor;
- int rrb_gr;
- uint64_t bsp;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- status = UWX_OK;
-
- if (regid == UWX_REG_GR(12))
- regid = UWX_REG_SP;
- if (regid < NSPECIALREG) {
- if (regid == UWX_REG_PSP || regid == UWX_REG_RP ||
- regid == UWX_REG_PFS) {
- if (!(env->context.valid_regs & (1 << regid))) {
- status = uwx_restore_markers(env);
- if (status != UWX_OK)
- return status;
- }
- }
- *dispp = env->history.special[regid];
- }
- else if (regid >= UWX_REG_GR(4) && regid <= UWX_REG_GR(7))
- *dispp = env->history.gr[regid - UWX_REG_GR(4)];
- else if (regid >= UWX_REG_GR(32) && regid <= UWX_REG_GR(127)) {
- bsp = env->context.special[UWX_REG_BSP];
- regid -= UWX_REG_GR(32);
- sor = (((int) env->context.special[UWX_REG_CFM] >> 14) & 0x0f) * 8;
- rrb_gr = ((int) env->context.special[UWX_REG_CFM] >> 18) & 0x7f;
- if (sor != 0 && rrb_gr != 0 && regid < sor)
- regid = (regid + rrb_gr) % sor;
- bsp = uwx_add_to_bsp(bsp, regid);
- *dispp = UWX_DISP_RSTK(bsp);
- }
- else if (regid >= UWX_REG_BR(1) && regid <= UWX_REG_GR(5))
- *dispp = env->history.br[regid - UWX_REG_BR(1)];
- else if (regid >= UWX_REG_FR(2) && regid <= UWX_REG_FR(5))
- *dispp = env->history.fr[regid - UWX_REG_FR(2)];
- else if (regid >= UWX_REG_FR(16) && regid <= UWX_REG_FR(31))
- *dispp = env->history.fr[regid - UWX_REG_FR(16) + 4];
- else if ( (regid >= UWX_REG_GR(1) && regid <= UWX_REG_GR(31)) ||
- (regid >= UWX_REG_BR(0) && regid <= UWX_REG_BR(7)) ||
- (regid >= UWX_REG_FR(2) && regid <= UWX_REG_FR(127)) )
- *dispp = UWX_DISP_REG(regid);
- else
- status = UWX_ERR_BADREGID;
- return status;
-}
-
-int uwx_set_reg(struct uwx_env *env, int regid, uint64_t val)
-{
- int status;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- if (regid == UWX_REG_GR(12))
- regid = UWX_REG_SP;
- if (regid < NSPECIALREG) {
- env->context.special[regid] = val;
- env->context.valid_regs |= 1 << regid;
- status = UWX_OK;
- }
- else if (regid >= UWX_REG_GR(4) && regid <= UWX_REG_GR(7)) {
- env->context.gr[regid - UWX_REG_GR(4)] = val;
- env->context.valid_regs |=
- 1 << (regid - UWX_REG_GR(4) + VALID_GR_SHIFT);
- status = UWX_OK;
- }
- else if (regid >= UWX_REG_GR(32) && regid <= UWX_REG_GR(127)) {
- status = UWX_ERR_BADREGID;
- }
- else if (regid >= UWX_REG_BR(1) && regid <= UWX_REG_BR(5)) {
- env->context.br[regid - UWX_REG_BR(1)] = val;
- env->context.valid_regs |=
- 1 << (regid - UWX_REG_BR(1) + VALID_BR_SHIFT);
- status = UWX_OK;
- }
- else
- status = UWX_ERR_BADREGID;
- return status;
-}
-
-int uwx_set_fr(struct uwx_env *env, int regid, uint64_t *val)
-{
-
- if (regid >= UWX_REG_FR(2) && regid <= UWX_REG_FR(5))
- regid -= UWX_REG_FR(2);
- else if (regid >= UWX_REG_FR(16) && regid <= UWX_REG_FR(31))
- regid -= UWX_REG_FR(16) - 4;
- else
- return UWX_ERR_BADREGID;
-
- env->context.fr[regid].part0 = val[0];
- env->context.fr[regid].part1 = val[1];
- env->context.valid_frs |= 1 << regid;
- env->nsbreg = NSBREG;
- return UWX_OK;
-}
-
-uint64_t uwx_add_to_bsp(uint64_t bsp, int nslots)
-{
- int bias;
-
- /*
- * Here's a picture of the backing store as modeled in
- * the computations below. "X" marks NaT collections at
- * every 0x1f8 mod 0x200 address.
- *
- * To make the NaT adjustments easier, we bias the current bsp
- * by enough slots to place it at the previous NaT collection.
- * Then we need to add the bias to the number of slots,
- * then add 1 for every 63 slots to account for NaT collections.
- * Then we can remove the bias again and add the adjusted
- * number of slots to the bsp.
- *
- * 0 1f8 3f8
- * +---------------------------------------------------------------+
- * | X X|
- * +---------------------------------------------------------------+
- * <-------- bias -------->
- * <--- nslots --->
- * ^
- * |
- * bsp
- * <------------ nslots + bias ----------->
-
- * When subtracting from bsp, we avoid depending on the sign of
- * the quotient by adding 63*8 before division and subtracting 8
- * after division. (Assumes that we will never be called upon
- * to subtract more than 504 slots from bsp.)
- *
- * 0 1f8 3f8
- * +---------------------------------------------------------------+
- * | X X|
- * +---------------------------------------------------------------+
- * <-- bias -->
- * <--- (-nslots) --->
- * ^
- * |
- * bsp
- * <----------------->
- * -(nslots + bias)
- */
-
- bias = ((unsigned int)bsp & 0x1f8) / DWORDSZ;
- nslots += (nslots + bias + 63*8) / 63 - 8;
- return bsp + nslots * DWORDSZ;
-}
-
-#if 0
-int uwx_selftest_bsp_arithmetic()
-{
- int i;
- int j;
- int r;
- uint64_t bstore[161];
- uint64_t *bsp;
- uint64_t *p;
- int failed = 0;
-
- printf("uwx_selftest_bsp_arithmetic: bsp at %08lx\n", (unsigned int)bstore);
- r = 0;
- bsp = bstore;
- for (i = 0; i < 161; i++) {
- if (((unsigned int)bsp & 0x1f8) == 0x1f8)
- *bsp++ = 1000 + r;
- else
- *bsp++ = r++;
- }
-
- printf("uwx_selftest_bsp_arithmetic: plus tests...\n");
- bsp = bstore;
- for (i = 0; i < 64; i++) {
- r = (int)*bsp;
- if (r >= 1000)
- r -= 1000;
- for (j = 0; j < 96; j++) {
- p = (uint64_t *)(intptr_t)uwx_add_to_bsp((uint64_t)bsp, j);
- if (*p != (r + j)) {
- failed++;
- printf("%d [%08lx] + %d -> %08lx ",
- i, (unsigned int)bsp, j, (unsigned int)p);
- printf("(read %d instead of %d)\n", (int)*p, r + j);
- }
- }
- bsp++;
- }
-
- printf("uwx_selftest_bsp_arithmetic: minus tests...\n");
- bsp = &bstore[161];
- for (i = 63; i >= 0; i--) {
- bsp--;
- r = (int)*bsp;
- if (r >= 1000)
- r -= 1000;
- for (j = 0; j < 96; j++) {
- p = (uint64_t *)(intptr_t)uwx_add_to_bsp((uint64_t)bsp, -j);
- if (*p != (r - j)) {
- failed++;
- printf("%d [%08lx] - %d -> %08lx ",
- i, (unsigned int)bsp, j, (unsigned int)p);
- printf("(read %d instead of %d)\n", (int)*p, r - j);
- }
- }
- }
-
- return failed;
-}
-#endif
diff --git a/sys/contrib/ia64/libuwx/src/uwx_context.h b/sys/contrib/ia64/libuwx/src/uwx_context.h
deleted file mode 100644
index 1f172db..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_context.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-extern uint64_t uwx_add_to_bsp(uint64_t bsp, int nslots);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_env.c b/sys/contrib/ia64/libuwx/src/uwx_env.c
deleted file mode 100644
index 252e397..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_env.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef _KERNEL
-#include <stdlib.h>
-#endif
-
-#include "uwx_env.h"
-#include "uwx_scoreboard.h"
-#include "uwx_str.h"
-#include "uwx_trace.h"
-
-#ifdef _KERNEL
-static struct uwx_env uwx_env;
-#define free(p) /* nullified */
-#define malloc(sz) ((sz == sizeof(uwx_env)) ? &uwx_env : NULL)
-#endif
-
-alloc_cb uwx_allocate_cb = 0;
-free_cb uwx_free_cb = 0;
-
-int uwx_register_alloc_cb(alloc_cb alloc, free_cb free)
-{
- uwx_allocate_cb = alloc;
- uwx_free_cb = free;
- return UWX_OK;
-}
-
-int uwx_init_history(struct uwx_env *env)
-{
- int i;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- for (i = 0; i < NSPECIALREG; i++)
- env->history.special[i] = UWX_DISP_REG(i);;
- for (i = 0; i < NPRESERVEDGR; i++)
- env->history.gr[i] = UWX_DISP_REG(UWX_REG_GR(4+i));
- for (i = 0; i < NPRESERVEDBR; i++)
- env->history.br[i] = UWX_DISP_REG(UWX_REG_BR(1+i));
- for (i = 0; i < 4; i++)
- env->history.fr[i] = UWX_DISP_REG(UWX_REG_FR(2+i));
- for ( ; i < NPRESERVEDFR; i++)
- env->history.fr[i] = UWX_DISP_REG(UWX_REG_FR(12+i));
-
- return UWX_OK;
-}
-
-int uwx_init_env(struct uwx_env *env, size_t total_size)
-{
- int i;
- struct uwx_str_pool *str_pool;
- struct uwx_scoreboard *scoreboards;
-
- str_pool = (struct uwx_str_pool *)(env + 1);
- scoreboards = (struct uwx_scoreboard *)(str_pool + 1);
-
- if (sizeof(struct uwx_env) + sizeof(struct uwx_str_pool) > total_size)
- return UWX_ERR_NOMEM;
- total_size -= sizeof(struct uwx_env) + sizeof(struct uwx_str_pool);
-
- env->context.valid_regs = 0;
- env->context.valid_frs = 0;
- for (i = 0; i < NSPECIALREG; i++)
- env->context.special[i] = 0;
- for (i = 0; i < NPRESERVEDGR; i++)
- env->context.gr[i] = 0;
- for (i = 0; i < NPRESERVEDBR; i++)
- env->context.br[i] = 0;
- for (i = 0; i < NPRESERVEDFR; i++) {
- env->context.fr[i].part0 = 0;
- env->context.fr[i].part1 = 0;
- }
- env->rstate = 0;
- env->remapped_ip = 0;
- env->function_offset = 0;
- env->ptr_size = DWORDSZ;
- env->uinfo_hdr = 0;
- env->uinfo_end = 0;
- env->code_start = 0;
- env->text_base = 0;
- (void)uwx_init_history(env);
- if (uwx_allocate_cb != NULL)
- env->allocate_cb = uwx_allocate_cb;
- else
- env->allocate_cb = NULL;
- if (uwx_free_cb != NULL)
- env->free_cb = uwx_free_cb;
- else
- env->free_cb = NULL;
- env->free_scoreboards = 0;
- env->used_scoreboards = 0;
- env->labeled_scoreboards = 0;
- (void)uwx_init_str_pool(env, str_pool);
- env->module_name = 0;
- env->function_name = 0;
- env->cb_token = 0;
- env->copyin = 0;
- env->lookupip = 0;
- env->remote = 0;
- env->byte_swap = 0;
- env->abi_context = 0;
- env->nsbreg = NSBREG;
- env->nscoreboards = 0;
- env->on_heap = 0;
- env->trace = 0;
- TRACE_INIT
- for (i = 0; total_size >= sizeof(struct uwx_scoreboard); i++) {
- (void) uwx_prealloc_scoreboard(env, &scoreboards[i]);
- total_size -= sizeof(struct uwx_scoreboard);
- }
- return UWX_OK;
-}
-
-int uwx_set_nofr(struct uwx_env *env)
-{
- if (env == 0)
- return UWX_ERR_NOENV;
-
- env->nsbreg = NSBREG_NOFR;
- return UWX_OK;
-}
-
-struct uwx_env *uwx_init()
-{
- struct uwx_env *env;
- size_t total_size;
-
- total_size = sizeof(struct uwx_env) +
- sizeof(struct uwx_str_pool) +
- NSCOREBOARDS * sizeof(struct uwx_scoreboard);
-
- if (uwx_allocate_cb == 0)
- env = (struct uwx_env *) malloc(total_size);
- else
- env = (struct uwx_env *) (*uwx_allocate_cb)(total_size);
- if (env != 0) {
- uwx_init_env(env, total_size);
- env->on_heap = 1;
- }
- return env;
-}
-
-int uwx_set_remote(struct uwx_env *env, int is_big_endian_target)
-{
- int is_big_endian_host;
- char *p;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- env->remote = 1;
-
- is_big_endian_host = 1;
- p = (char *)&is_big_endian_host;
- *p = 0;
- if (is_big_endian_target == is_big_endian_host)
- env->byte_swap = 0;
- else
- env->byte_swap = 1;
-
- return UWX_OK;
-}
-
-int uwx_register_callbacks(
- struct uwx_env *env,
- intptr_t tok,
- copyin_cb copyin,
- lookupip_cb lookupip)
-{
- if (env == 0)
- return UWX_ERR_NOENV;
- env->cb_token = tok;
- env->copyin = copyin;
- env->lookupip = lookupip;
- return UWX_OK;
-}
-
-int uwx_get_abi_context_code(struct uwx_env *env)
-{
- if (env == 0)
- return UWX_ERR_NOENV;
- return env->abi_context;
-}
-
-int uwx_free(struct uwx_env *env)
-{
- if (env != 0) {
- uwx_free_scoreboards(env);
- uwx_free_str_pool(env);
- if (env->on_heap) {
- if (env->free_cb == 0)
- free((void *)env);
- else
- (*env->free_cb)((void *)env);
- }
- }
- return UWX_OK;
-}
diff --git a/sys/contrib/ia64/libuwx/src/uwx_env.h b/sys/contrib/ia64/libuwx/src/uwx_env.h
deleted file mode 100644
index 71b9d66..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_env.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "uwx.h"
-
-#define WORDSZ 4
-#define DWORDSZ 8
-#define BUNDLESZ 16
-#define SLOTSPERBUNDLE 3
-
-#define UNWIND_TBL_32BIT 0x8000000000000000LL
-
-#define UNW_VER(x) ((x) >> 48)
-#define UNW_FLAG_MASK 0x0000ffff00000000LL
-#define UNW_FLAG_EHANDLER 0x0000000100000000LL
-#define UNW_FLAG_UHANDLER 0x0000000200000000LL
-#define UNW_LENGTH(x) ((x) & 0x00000000ffffffffLL)
-
-struct uwx_scoreboard;
-
-#define NSCOREBOARDS 8 /* Initial allocation of scoreboards */
-
-#define NSPECIALREG 16 /* Must be even, so FRs are aligned */
-#define NPRESERVEDGR 4
-#define NPRESERVEDBR 5
-#define NPRESERVEDFR 20
-
-struct uwx_fpreg {
- uint64_t part0;
- uint64_t part1;
-};
-
-struct uwx_context {
- unsigned int valid_regs;
- unsigned int valid_frs;
- uint64_t special[NSPECIALREG];
- uint64_t gr[NPRESERVEDGR];
- uint64_t br[NPRESERVEDBR];
- struct uwx_fpreg fr[NPRESERVEDFR];
-};
-
-#define VALID_GR_SHIFT NSPECIALREG
-#define VALID_BR_SHIFT (NSPECIALREG + NPRESERVEDGR)
-
-#define VALID_BASIC4 0x0f /* IP, SP, BSP, CFM */
-#define VALID_MARKERS 0x70 /* RP, PSP, PFS */
-
-struct uwx_history {
- uint64_t special[NSPECIALREG];
- uint64_t gr[NPRESERVEDGR];
- uint64_t br[NPRESERVEDBR];
- uint64_t fr[NPRESERVEDFR];
-};
-
-struct uwx_str_pool;
-
-struct uwx_env {
- struct uwx_context context;
- uint64_t *rstate;
- uint64_t remapped_ip;
- int64_t function_offset;
- uint64_t ptr_size;
- uint64_t uinfo_hdr;
- uint64_t uinfo_end;
- uint64_t code_start;
- uint64_t text_base;
- struct uwx_history history;
- alloc_cb allocate_cb;
- free_cb free_cb;
- struct uwx_scoreboard *free_scoreboards;
- struct uwx_scoreboard *used_scoreboards;
- struct uwx_scoreboard *labeled_scoreboards;
- struct uwx_str_pool *string_pool;
- char *module_name;
- char *function_name;
- intptr_t cb_token;
- copyin_cb copyin;
- lookupip_cb lookupip;
- int remote;
- int byte_swap;
- int abi_context;
- int nsbreg;
- int nscoreboards;
- int on_heap;
- int trace;
-};
-
-extern alloc_cb uwx_allocate_cb;
-extern free_cb uwx_free_cb;
-extern int uwx_init_env(struct uwx_env *env, size_t total_size);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_scoreboard.c b/sys/contrib/ia64/libuwx/src/uwx_scoreboard.c
deleted file mode 100644
index d68a6e1..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_scoreboard.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef _KERNEL
-#include <stdlib.h>
-#endif
-
-#include "uwx_env.h"
-#include "uwx_scoreboard.h"
-#include "uwx_trace.h"
-
-#ifdef _KERNEL
-static unsigned short uwx_allocated;
-static struct uwx_scoreboard uwx_scoreboard[sizeof(uwx_allocated) << 3];
-
-static void
-free(struct uwx_scoreboard *p)
-{
- int idx = p - uwx_scoreboard;
- uwx_allocated &= ~(1 << idx);
-}
-
-static struct uwx_scoreboard *
-malloc(size_t sz)
-{
- int idx;
- if (sz != sizeof(struct uwx_scoreboard))
- return (NULL);
- for (idx = 0; idx < (sizeof(uwx_allocated) << 3); idx++) {
- if ((uwx_allocated & (1 << idx)) == 0) {
- uwx_allocated |= 1 << idx;
- return (uwx_scoreboard + idx);
- }
- }
- return (NULL);
-}
-#endif
-
-
-void uwx_prealloc_scoreboard(struct uwx_env *env, struct uwx_scoreboard *sb)
-{
- sb->id = env->nscoreboards++;
- sb->nextused = env->used_scoreboards;
- sb->prealloc = 1;
- env->used_scoreboards = sb;
- TRACE_B_PREALLOC(sb->id)
-}
-
-struct uwx_scoreboard *uwx_alloc_scoreboard(struct uwx_env *env)
-{
- struct uwx_scoreboard *sb;
- int i;
-
- if (env->free_scoreboards != 0) {
- sb = env->free_scoreboards;
- env->free_scoreboards = sb->nextfree;
- TRACE_B_REUSE(sb->id)
- }
- else {
- if (env->allocate_cb == 0)
- sb = (struct uwx_scoreboard *)
- malloc(sizeof(struct uwx_scoreboard));
- else
- sb = (struct uwx_scoreboard *)
- (*env->allocate_cb)(sizeof(struct uwx_scoreboard));
- if (sb == 0)
- return 0;
- sb->id = env->nscoreboards++;
- sb->nextused = env->used_scoreboards;
- sb->prealloc = 0;
- env->used_scoreboards = sb;
- TRACE_B_ALLOC(sb->id)
- }
-
- sb->nextstack = 0;
- sb->nextlabel = 0;
- for (i = 0; i < env->nsbreg; i++)
- sb->rstate[i] = UWX_DISP_NONE;
- sb->rstate[SBREG_RP] = UWX_DISP_REG(UWX_REG_BR(0));
- sb->rstate[SBREG_PSP] = UWX_DISP_SPPLUS(0);
- sb->rstate[SBREG_PFS] = UWX_DISP_REG(UWX_REG_AR_PFS);
- sb->rstate[SBREG_PRIUNAT] = UWX_DISP_REG(UWX_REG_AR_UNAT);
- sb->label = 0;
- return sb;
-}
-
-static
-void uwx_reclaim_scoreboards(struct uwx_env *env)
-{
- struct uwx_scoreboard *sb;
-
- env->free_scoreboards = 0;
- for (sb = env->used_scoreboards; sb != 0; sb = sb->nextused) {
- sb->nextfree = env->free_scoreboards;
- env->free_scoreboards = sb;
- }
- env->labeled_scoreboards = 0;
-}
-
-struct uwx_scoreboard *uwx_init_scoreboards(struct uwx_env *env)
-{
- struct uwx_scoreboard *sb;
-
- uwx_reclaim_scoreboards(env);
- sb = uwx_alloc_scoreboard(env);
- return sb;
-}
-
-struct uwx_scoreboard *uwx_new_scoreboard(
- struct uwx_env *env,
- struct uwx_scoreboard *prevsb)
-{
- int i;
- struct uwx_scoreboard *sb;
-
- sb = uwx_alloc_scoreboard(env);
- if (sb == 0)
- return 0;
- sb->nextstack = prevsb;
- for (i = 0; i < env->nsbreg; i++)
- sb->rstate[i] = prevsb->rstate[i];
- return sb;
-}
-
-struct uwx_scoreboard *uwx_pop_scoreboards(
- struct uwx_env *env,
- struct uwx_scoreboard *sb,
- int ecount)
-{
- struct uwx_scoreboard *next;
-
- while (ecount > 0) {
- next = sb->nextstack;
- TRACE_B_POP(sb->id)
- sb->nextstack = 0;
- sb->nextfree = env->free_scoreboards;
- env->free_scoreboards = sb;
- sb = next;
- if (sb == 0)
- return 0;
- ecount--;
- }
- return sb;
-}
-
-int uwx_label_scoreboard(
- struct uwx_env *env,
- struct uwx_scoreboard *sb,
- int label)
-{
- struct uwx_scoreboard *new;
- struct uwx_scoreboard *back;
- struct uwx_scoreboard *next;
- int i;
-
- TRACE_B_LABEL(label)
-
- /* Copy the current stack, storing reverse links */
- /* in the "nextstack" field. */
-
- back = 0;
- new = 0;
- while (sb != 0) {
- TRACE_B_LABEL_COPY(sb->id)
- new = uwx_alloc_scoreboard(env);
- if (new == 0)
- return UWX_ERR_NOMEM;
- new->nextstack = back;
- for (i = 0; i < env->nsbreg; i++)
- new->rstate[i] = sb->rstate[i];
- sb = sb->nextstack;
- back = new;
- }
-
- /* The "new" pointer now points to the bottom of the new stack, */
- /* and the "nextstack" links lead towards the top. */
- /* Now go back down the stack, reversing the stack links to their */
- /* proper direction. */
-
- back = 0;
- while (new != 0) {
- next = new->nextstack;
- new->nextstack = back;
- TRACE_B_LABEL_REVERSE(back, new)
- back = new;
- new = next;
- }
-
- /* The "back" pointer now points to the top of the stack. */
-
- back->label = label;
- back->nextlabel = env->labeled_scoreboards;
- env->labeled_scoreboards = back;
- return UWX_OK;
-}
-
-int uwx_copy_scoreboard(
- struct uwx_env *env,
- struct uwx_scoreboard *sb,
- int label)
-{
- struct uwx_scoreboard *next;
- struct uwx_scoreboard *next2;
- struct uwx_scoreboard *lsb;
- struct uwx_scoreboard *new;
- struct uwx_scoreboard *back;
- int i;
-
- TRACE_B_COPY(label, sb->id)
-
- /* Free the existing stack. */
-
- next = sb->nextstack;
- while (next != 0) {
- TRACE_B_COPY_FREE(next->id)
- next2 = next->nextstack;
- next->nextstack = 0;
- next->nextfree = env->free_scoreboards;
- env->free_scoreboards = next;
- next = next2;
- }
-
- /* Find the scoreboard with the requested label. */
-
- for (lsb = env->labeled_scoreboards; lsb != 0; lsb = lsb->nextlabel) {
- if (lsb->label == label)
- break;
- }
-
- if (lsb == 0)
- return UWX_ERR_UNDEFLABEL;
-
- TRACE_B_COPY_FOUND(lsb->id)
-
- /* Copy the labeled scoreboard. */
-
- sb->nextstack = 0;
- sb->nextlabel = 0;
- for (i = 0; i < env->nsbreg; i++)
- sb->rstate[i] = lsb->rstate[i];
- sb->label = 0;
-
- /* Now copy its stack, storing reverse links in the nextstack field. */
-
- back = sb;
- new = 0;
- for (next = lsb->nextstack; next != 0; next = next->nextstack) {
- TRACE_B_COPY_COPY(next->id)
- new = uwx_alloc_scoreboard(env);
- if (new == 0)
- return UWX_ERR_NOMEM;
- new->nextstack = back;
- for (i = 0; i < env->nsbreg; i++)
- new->rstate[i] = next->rstate[i];
- back = new;
- }
-
- /* The "new" pointer now points to the bottom of the new stack, */
- /* and the "nextstack" links lead towards the top. */
- /* Now go back down the stack, reversing the nextstack links to their */
- /* proper direction. */
-
- back = 0;
- while (new != 0) {
- next = new->nextstack;
- new->nextstack = back;
- TRACE_B_COPY_REVERSE(back, new)
- back = new;
- new = next;
- }
-
- return UWX_OK;
-}
-
-void uwx_free_scoreboards(struct uwx_env *env)
-{
- struct uwx_scoreboard *sb;
- struct uwx_scoreboard *next;
-
- for (sb = env->used_scoreboards; sb != 0; sb = next) {
- TRACE_B_FREE(sb->id)
- next = sb->nextused;
- if (!sb->prealloc) {
- if (env->free_cb == 0)
- free((void *)sb);
- else
- (*env->free_cb)((void *)sb);
- }
- }
- env->free_scoreboards = 0;
- env->used_scoreboards = 0;
- env->labeled_scoreboards = 0;
-}
-
diff --git a/sys/contrib/ia64/libuwx/src/uwx_scoreboard.h b/sys/contrib/ia64/libuwx/src/uwx_scoreboard.h
deleted file mode 100644
index 752b8fb..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_scoreboard.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#define NSB_SPECIAL 9
-#define NSB_GR 4
-#define NSB_BR 5
-#define NSB_FR 20
-
-#define SBREG_RP 0
-#define SBREG_PSP 1
-#define SBREG_PFS 2
-#define SBREG_PREDS 3
-#define SBREG_UNAT 4
-#define SBREG_PRIUNAT 5
-#define SBREG_RNAT 6
-#define SBREG_LC 7
-#define SBREG_FPSR 8
-#define SBREG_GR (0 + NSB_SPECIAL)
-#define SBREG_BR (SBREG_GR + NSB_GR)
-#define SBREG_FR (SBREG_BR + NSB_BR)
-
-#define NSBREG_NOFR (NSB_SPECIAL + NSB_GR + NSB_BR)
-#define NSBREG (NSB_SPECIAL + NSB_GR + NSB_BR + NSB_FR)
-
-struct uwx_scoreboard {
- struct uwx_scoreboard *nextused;
- struct uwx_scoreboard *nextfree;
- struct uwx_scoreboard *nextstack;
- struct uwx_scoreboard *nextlabel;
- uint64_t rstate[NSBREG];
- int label;
- int id;
- int prealloc;
-};
-
-extern void uwx_prealloc_scoreboard(
- struct uwx_env *env,
- struct uwx_scoreboard *sb);
-
-extern struct uwx_scoreboard *uwx_alloc_scoreboard(struct uwx_env *env);
-
-extern struct uwx_scoreboard *uwx_init_scoreboards(struct uwx_env *env);
-
-extern struct uwx_scoreboard *uwx_new_scoreboard(
- struct uwx_env *env,
- struct uwx_scoreboard *prevsb);
-
-extern struct uwx_scoreboard *uwx_pop_scoreboards(
- struct uwx_env *env,
- struct uwx_scoreboard *sb,
- int ecount);
-
-extern int uwx_label_scoreboard(
- struct uwx_env *env,
- struct uwx_scoreboard *sb,
- int label);
-
-extern int uwx_copy_scoreboard(
- struct uwx_env *env,
- struct uwx_scoreboard *sb,
- int label);
-
-extern void uwx_free_scoreboards(struct uwx_env *env);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_self.c b/sys/contrib/ia64/libuwx/src/uwx_self.c
deleted file mode 100644
index 5f47205..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_self.c
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include <stdlib.h>
-#include <string.h>
-#include <crt0.h>
-#include <dlfcn.h>
-#include <sys/uc_access.h>
-
-#include "uwx_env.h"
-#include "uwx_context.h"
-#include "uwx_trace.h"
-#include "uwx_self.h"
-#include "uwx_self_info.h"
-
-#define UWX_ABI_HPUX_SIGCONTEXT 0x0101 /* abi = HP-UX, context = 1 */
-
-void uwx_free_load_module_cache(struct uwx_self_info *info);
-
-int uwx_self_init_info_block(struct uwx_env *env, struct uwx_self_info *info)
-{
- info->env = env;
- info->ucontext = 0;
- info->bspstore = 0;
- info->sendsig_start = __load_info->li_sendsig_txt;
- info->sendsig_end = __load_info->li_sendsig_txt +
- __load_info->li_sendsig_tsz;
- info->on_heap = 0;
- info->trace = env->trace;
- info->load_module_cache = NULL;
-
- return UWX_OK;
-}
-
-struct uwx_self_info *uwx_self_init_info(struct uwx_env *env)
-{
- struct uwx_self_info *info;
-
- info = (struct uwx_self_info *)
- (*env->allocate_cb)(sizeof(struct uwx_self_info));
- if (info == 0)
- return 0;
-
- uwx_self_init_info_block(env, info);
- info->on_heap = 1;
- return info;
-}
-
-int uwx_self_free_info(struct uwx_self_info *info)
-{
- int i;
-
- if (info->load_module_cache != NULL)
- uwx_free_load_module_cache(info);
- if (info->on_heap)
- (*info->env->free_cb)((void *)info);
- return UWX_OK;
-}
-
-int uwx_self_init_from_sigcontext(
- struct uwx_env *env,
- struct uwx_self_info *info,
- ucontext_t *ucontext)
-{
- int status;
- uint16_t reason;
- uint64_t ip;
- uint64_t sp;
- uint64_t bsp;
- uint64_t cfm;
- unsigned int nat;
- uint64_t ec;
- int adj;
-
- info->ucontext = ucontext;
- status = __uc_get_reason(ucontext, &reason);
- if (status != 0)
- return UWX_ERR_UCACCESS;
- status = __uc_get_ip(ucontext, &ip);
- if (status != 0)
- return UWX_ERR_UCACCESS;
- status = __uc_get_grs(ucontext, 12, 1, &sp, &nat);
- if (status != 0)
- return UWX_ERR_UCACCESS;
- status = __uc_get_cfm(ucontext, &cfm);
- if (status != 0)
- return UWX_ERR_UCACCESS;
-#ifdef NEW_UC_GET_AR
- status = __uc_get_ar_bsp(ucontext, &bsp);
- if (status != 0)
- return UWX_ERR_UCACCESS;
- status = __uc_get_ar_bspstore(ucontext, &info->bspstore);
- if (status != 0)
- return UWX_ERR_UCACCESS;
- status = __uc_get_ar_ec(ucontext, &ec);
- if (status != 0)
- return UWX_ERR_UCACCESS;
-#else
- status = __uc_get_ar(ucontext, 17, &bsp);
- if (status != 0)
- return UWX_ERR_UCACCESS;
- status = __uc_get_ar(ucontext, 18, &info->bspstore);
- if (status != 0)
- return UWX_ERR_UCACCESS;
- status = __uc_get_ar(ucontext, 66, &ec);
- if (status != 0)
- return UWX_ERR_UCACCESS;
-#endif
- /* The returned bsp needs to be adjusted. */
- /* For interrupt frames, where bsp was advanced by a cover */
- /* instruction, subtract sof (size of frame). For non-interrupt */
- /* frames, where bsp was advanced by br.call, subtract sol */
- /* (size of locals). */
- if (reason != 0)
- adj = (unsigned int)cfm & 0x7f; /* interrupt frame */
- else
- adj = ((unsigned int)cfm >> 7) & 0x7f; /* non-interrupt frame */
- bsp = uwx_add_to_bsp(bsp, -adj);
- cfm |= ec << 52;
- uwx_init_context(env, ip, sp, bsp, cfm);
- return UWX_OK;
-}
-
-int uwx_self_do_context_frame(
- struct uwx_env *env,
- struct uwx_self_info *info)
-{
- int abi_context;
- int status;
- uint64_t ucontext;
-
- abi_context = uwx_get_abi_context_code(env);
- if (abi_context != UWX_ABI_HPUX_SIGCONTEXT)
- return UWX_SELF_ERR_BADABICONTEXT;
- status = uwx_get_reg(env, UWX_REG_GR(32), (uint64_t *)&ucontext);
- if (status != UWX_OK)
- return status;
- return uwx_self_init_from_sigcontext(env, info,
- (ucontext_t *)(intptr_t)ucontext);
-}
-
-int uwx_self_copyin(
- int request,
- char *loc,
- uint64_t rem,
- int len,
- intptr_t tok)
-{
- int status;
- int regid;
- unsigned int nat;
- struct uwx_self_info *info = (struct uwx_self_info *) tok;
- unsigned long *wp;
- uint64_t *dp;
-
- status = -1;
-
- dp = (uint64_t *) loc;
-
- switch (request) {
- case UWX_COPYIN_UINFO:
- case UWX_COPYIN_MSTACK:
- if (len == 4) {
- wp = (unsigned long *) loc;
- *wp = *(unsigned long *)(intptr_t)rem;
- TRACE_SELF_COPYIN4(rem, len, wp)
- status = 0;
- }
- else if (len == 8) {
- *dp = *(uint64_t *)(intptr_t)rem;
- TRACE_SELF_COPYIN8(rem, len, dp)
- status = 0;
- }
- break;
- case UWX_COPYIN_RSTACK:
- if (len == 8) {
- if (info->ucontext == 0 && rem == (info->bspstore | 0x1f8)) {
- *dp = info->env->context.special[UWX_REG_AR_RNAT];
- status = 0;
- }
- else if (info->ucontext == 0 || rem < info->bspstore) {
- *dp = *(uint64_t *)(intptr_t)rem;
- TRACE_SELF_COPYIN8(rem, len, dp)
- status = 0;
- }
- else {
- status = __uc_get_rsebs(info->ucontext,
- (uint64_t *)(intptr_t)rem, 1, dp);
- }
- }
- break;
- case UWX_COPYIN_REG:
- regid = (int)rem;
- if (info->ucontext != 0) {
- if (len == 8) {
- if (rem == UWX_REG_PREDS)
- status = __uc_get_prs(info->ucontext, dp);
- else if (rem == UWX_REG_AR_PFS)
- status = __uc_get_ar(info->ucontext, 64, dp);
- else if (rem == UWX_REG_AR_RNAT)
- status = __uc_get_ar(info->ucontext, 19, dp);
- else if (rem == UWX_REG_AR_UNAT)
- status = __uc_get_ar(info->ucontext, 36, dp);
- else if (rem == UWX_REG_AR_FPSR)
- status = __uc_get_ar(info->ucontext, 40, dp);
- else if (rem == UWX_REG_AR_LC)
- status = __uc_get_ar(info->ucontext, 65, dp);
- else if (regid >= UWX_REG_GR(1) &&
- regid <= UWX_REG_GR(31))
- status = __uc_get_grs(info->ucontext,
- regid - UWX_REG_GR(0), 1, dp, &nat);
- else if (regid >= UWX_REG_BR(0) &&
- regid <= UWX_REG_BR(7))
- status = __uc_get_brs(info->ucontext,
- regid - UWX_REG_BR(0), 1, dp);
- }
- else if (len == 16) {
- if (regid >= UWX_REG_FR(2) && regid <= UWX_REG_FR(127)) {
- status = __uc_get_frs(info->ucontext,
- regid - UWX_REG_FR(0), 1, (fp_regval_t *)dp);
- }
- }
- }
- break;
- }
- if (status != 0)
- return 0;
- return len;
-}
-
-#define MODULE_CACHE_SIZE 4
-
-struct load_module_cache {
- int clock;
- char *names[MODULE_CACHE_SIZE];
- struct load_module_desc descs[MODULE_CACHE_SIZE];
- struct uwx_symbol_cache *symbol_cache;
-};
-
-void uwx_free_load_module_cache(struct uwx_self_info *info)
-{
- int i;
-
- for (i = 0; i < MODULE_CACHE_SIZE; i++) {
- if (info->load_module_cache->names[i] != NULL)
- (*info->env->free_cb)((void *)info->load_module_cache->names[i]);
- }
-
- if (info->load_module_cache->symbol_cache != NULL)
- uwx_release_symbol_cache(info->env,
- info->load_module_cache->symbol_cache);
-
- (*info->env->free_cb)((void *)info->load_module_cache);
-}
-
-struct load_module_desc *uwx_get_modinfo(
- struct uwx_self_info *info,
- uint64_t ip,
- char **module_name_p)
-{
- int i;
- UINT64 handle;
- struct load_module_cache *cache;
- struct load_module_desc *desc;
- char *module_name;
-
- cache = info->load_module_cache;
- if (cache == NULL) {
- cache = (struct load_module_cache *)
- (*info->env->allocate_cb)(sizeof(struct load_module_cache));
- if (cache == NULL)
- return NULL;
- for (i = 0; i < MODULE_CACHE_SIZE; i++) {
- desc = &cache->descs[i];
- desc->text_base = 0;
- desc->text_size = 0;
- cache->names[i] = NULL;
- }
- cache->clock = 0;
- cache->symbol_cache = NULL;
- info->load_module_cache = cache;
- }
- for (i = 0; i < MODULE_CACHE_SIZE; i++) {
- desc = &cache->descs[i];
- if (ip >= desc->text_base && ip < desc->text_base + desc->text_size)
- break;
- }
- if (i >= MODULE_CACHE_SIZE) {
- i = cache->clock;
- cache->clock = (cache->clock + 1) % MODULE_CACHE_SIZE;
- desc = &cache->descs[i];
- handle = dlmodinfo(ip, desc, sizeof(*desc), 0, 0, 0);
- if (handle == 0)
- return NULL;
- if (cache->names[i] != NULL)
- (*info->env->free_cb)(cache->names[i]);
- cache->names[i] = NULL;
- }
- if (module_name_p != NULL) {
- if (cache->names[i] == NULL) {
- module_name = dlgetname(desc, sizeof(*desc), 0, 0, 0);
- if (module_name != NULL) {
- cache->names[i] = (char *)
- (*info->env->allocate_cb)(strlen(module_name)+1);
- if (cache->names[i] != NULL)
- strcpy(cache->names[i], module_name);
- }
- }
- *module_name_p = cache->names[i];
- }
- return desc;
-}
-
-int uwx_self_lookupip(
- int request,
- uint64_t ip,
- intptr_t tok,
- uint64_t **resultp)
-{
- struct uwx_self_info *info = (struct uwx_self_info *) tok;
- UINT64 handle;
- struct load_module_desc *desc;
- uint64_t *unwind_base;
- uint64_t *rvec;
- char *module_name;
- char *func_name;
- uint64_t offset;
- int i;
- int status;
-
- if (request == UWX_LKUP_LOOKUP) {
- TRACE_SELF_LOOKUP(ip)
- if (ip >= info->sendsig_start && ip < info->sendsig_end) {
- i = 0;
- rvec = info->rvec;
- rvec[i++] = UWX_KEY_CONTEXT;
- rvec[i++] = UWX_ABI_HPUX_SIGCONTEXT;
- rvec[i++] = UWX_KEY_END;
- rvec[i++] = 0;
- *resultp = rvec;
- return UWX_LKUP_FDESC;
- }
- else {
- desc = uwx_get_modinfo(info, ip, NULL);
- if (desc == NULL)
- return UWX_LKUP_ERR;
- unwind_base = (uint64_t *) (intptr_t) desc->unwind_base;
- TRACE_SELF_LOOKUP_DESC(desc->text_base,
- desc->linkage_ptr, unwind_base)
- i = 0;
- rvec = info->rvec;
- rvec[i++] = UWX_KEY_TBASE;
- rvec[i++] = desc->text_base;
- rvec[i++] = UWX_KEY_UFLAGS;
- rvec[i++] = unwind_base[0];
- rvec[i++] = UWX_KEY_USTART;
- rvec[i++] = desc->text_base + unwind_base[1];
- rvec[i++] = UWX_KEY_UEND;
- rvec[i++] = desc->text_base + unwind_base[2];
- rvec[i++] = UWX_KEY_GP;
- rvec[i++] = desc->linkage_ptr;
- rvec[i++] = UWX_KEY_END;
- rvec[i++] = 0;
- *resultp = rvec;
- return UWX_LKUP_UTABLE;
- }
- }
- else if (request == UWX_LKUP_FREE) {
- return 0;
- }
- else if (request == UWX_LKUP_MODULE) {
- desc = uwx_get_modinfo(info, ip, &module_name);
- if (desc == NULL)
- return UWX_LKUP_ERR;
- if (module_name == NULL)
- return UWX_LKUP_ERR;
- i = 0;
- rvec = info->rvec;
- rvec[i++] = UWX_KEY_MODULE;
- rvec[i++] = (uint64_t)(intptr_t)module_name;
- rvec[i++] = UWX_KEY_TBASE;
- rvec[i++] = desc->text_base;
- rvec[i++] = UWX_KEY_END;
- rvec[i++] = 0;
- *resultp = rvec;
- return UWX_LKUP_SYMINFO;
- }
- else if (request == UWX_LKUP_SYMBOLS) {
- rvec = *resultp;
- for (i = 0; rvec[i] != UWX_KEY_END; i += 2) {
- if (rvec[i] == UWX_KEY_FUNCSTART)
- ip = rvec[i+1];
- }
- desc = uwx_get_modinfo(info, ip, &module_name);
- if (desc == NULL)
- return UWX_LKUP_ERR;
- if (module_name == NULL)
- return UWX_LKUP_ERR;
- status = uwx_find_symbol(info->env,
- &info->load_module_cache->symbol_cache,
- module_name, ip - desc->text_base,
- &func_name, &offset);
- i = 0;
- rvec = info->rvec;
- rvec[i++] = UWX_KEY_MODULE;
- rvec[i++] = (uint64_t)(intptr_t)module_name;
- rvec[i++] = UWX_KEY_TBASE;
- rvec[i++] = desc->text_base;
- if (status == UWX_OK) {
- rvec[i++] = UWX_KEY_FUNC;
- rvec[i++] = (uint64_t)(intptr_t)func_name;
- rvec[i++] = UWX_KEY_FUNCSTART;
- rvec[i++] = ip - offset;
- }
- rvec[i++] = UWX_KEY_END;
- rvec[i++] = 0;
- *resultp = rvec;
- return UWX_LKUP_SYMINFO;
- }
- return UWX_LKUP_ERR;
-}
diff --git a/sys/contrib/ia64/libuwx/src/uwx_self.h b/sys/contrib/ia64/libuwx/src/uwx_self.h
deleted file mode 100644
index ada3184..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_self.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef __UWX_SELF_INCLUDED
-#define __UWX_SELF_INCLUDED 1
-
-#include <signal.h>
-
-#ifndef __UWX_INCLUDED
-#include "uwx.h"
-#endif /* __UWX_INCLUDED */
-
-#if defined(__cplusplus)
-#define __EXTERN_C extern "C"
-#else
-#define __EXTERN_C extern
-#endif
-
-struct uwx_self_info;
-
-__EXTERN_C struct uwx_self_info *uwx_self_init_info(struct uwx_env *env);
-
-__EXTERN_C int uwx_self_free_info(struct uwx_self_info *info);
-
-__EXTERN_C int uwx_self_init_context(struct uwx_env *env);
-
-__EXTERN_C int uwx_self_init_from_sigcontext(
- struct uwx_env *env,
- struct uwx_self_info *info,
- ucontext_t *ucontext);
-
-__EXTERN_C int uwx_self_do_context_frame(
- struct uwx_env *env,
- struct uwx_self_info *info);
-
-__EXTERN_C int uwx_self_copyin(
- int request,
- char *loc,
- uint64_t rem,
- int len,
- intptr_t tok);
-
-__EXTERN_C int uwx_self_lookupip(
- int request,
- uint64_t ip,
- intptr_t tok,
- uint64_t **resultp);
-
-#define UWX_SELF_ERR_BADABICONTEXT (-101)
-
-#undef __EXTERN_C
-
-#if defined(__cplusplus)
-
-class UnwindExpressSelf : public UnwindExpress {
-
-public:
-
- UnwindExpressSelf() {
- info = uwx_self_init_info(env);
- (void)uwx_register_callbacks(env, (intptr_t)info,
- uwx_self_copyin, uwx_self_lookupip);
- }
-
- ~UnwindExpressSelf() {
- if (info != 0)
- uwx_self_free_info(info);
- info = 0;
- }
-
- int init_context() {
- return uwx_self_init_context(env);
- }
-
- int init_context(ucontext_t *ucontext) {
- return uwx_self_init_from_sigcontext(env, info, ucontext);
- }
-
- int do_context_frame() {
- return uwx_self_do_context_frame(env, info);
- }
-
-protected:
-
- struct uwx_self_info *info;
-
-};
-
-#endif /* __cplusplus */
-
-#endif /* __UWX_SELF_INCLUDED */
diff --git a/sys/contrib/ia64/libuwx/src/uwx_self_context.s b/sys/contrib/ia64/libuwx/src/uwx_self_context.s
deleted file mode 100644
index e2986eb..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_self_context.s
+++ /dev/null
@@ -1,383 +0,0 @@
-// Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-
-#ifdef _LP64
-#define SWIZZLE add
-#define STPTR st8
-#else
-#define SWIZZLE addp4
-#define STPTR st4
-#endif
-
-rRP = r14
-rPFS = r15
-rUNAT = r16
-rRNAT = r17
-rENV0 = r18
-rENV1 = r19
-rENV2 = r20
-rNSLOT = r21
-rBSP = r22
-rPBSP = r23
-rRSC = r24
-rNATP = r25
-rBIAS = r26
-rRSC0 = r27
-rTMP1 = r28
-rTMP2 = r29
-rTMP3 = r30
-rTMP4 = r31
-rTMP5 = r8
-rMYPFS = r9
-rPSP = r10
-
-VALID_IP = 1
-VALID_SP = 1 << 1
-VALID_BSP = 1 << 2
-VALID_CFM = 1 << 3
-VALID_PREDS = 1 << 7
-VALID_PRIUNAT = 1 << 8
-VALID_RNAT = 1 << 10
-VALID_UNAT = 1 << 11
-VALID_FPSR = 1 << 12
-VALID_LC = 1 << 13
-VALID_GRS = 0xf << 16
-VALID_BRS = 0x1f << 20
-VALID_BASIC4 = VALID_IP | VALID_SP | VALID_BSP | VALID_CFM
-VALID_SPEC = VALID_PREDS | VALID_PRIUNAT | VALID_RNAT | VALID_UNAT | VALID_FPSR | VALID_LC
-VALID_REGS = VALID_BASIC4 | VALID_SPEC | VALID_GRS | VALID_BRS
-VALID_FRS = 0xfffff
-// valid_regs and valid_frs are separate unsigned int fields.
-// In order to store them with a single st8, we need to know
-// the endianness.
-#ifdef __LITTLE_ENDIAN__
-VALID_BITS = (VALID_FRS << 32) | VALID_REGS
-#else
-VALID_BITS = (VALID_REGS << 32) | VALID_FRS
-#endif
-
- .text
-
-// int uwx_self_init_context(struct uwx_env *env);
-//
-// Stores a snapshot of the caller's context in the uwx_env structure.
-
- .proc uwx_self_init_context
- .global uwx_self_init_context
-uwx_self_init_context:
- .prologue
- alloc rPFS = ar.pfs, 1, 0, 0, 0
- mov rUNAT = ar.unat
- .body
- SWIZZLE rENV0 = r0, r32 // rENV0 = &env
- ;;
- flushrs
- extr.u rNSLOT = rPFS, 7, 7 // nslots = pfs.sol
- mov rRP = b0
- ;;
- mov rRSC = ar.rsc
- add rENV1 = 136, rENV0 // rENV1 = &env->context.gr[0]
- add rENV2 = 144, rENV0 // rENV2 = &env->context.gr[1]
- ;;
- and rRSC0 = -4, rRSC // clear ar.rsc.mode
- adds rNATP = 0x1f8, r0
- mov rTMP1 = b1
- ;;
- st8.spill [rENV1] = r4, 16 // env+136: r4
- st8.spill [rENV2] = r5, 16 // env+144: r5
- mov rTMP2 = b2
- ;;
- st8.spill [rENV1] = r6, 16 // env+152: r6
- st8.spill [rENV2] = r7, 16 // env+160: r7
- mov rTMP3 = b3
- ;;
- st8 [rENV1] = rTMP1, 16 // env+168: b1
- st8 [rENV2] = rTMP2, 16 // env+176: b2
- mov rTMP1 = b4
- ;;
- st8 [rENV1] = rTMP3, 16 // env+184: b3
- st8 [rENV2] = rTMP1, 16 // env+192: b4
- mov rTMP2 = b5
- ;;
- st8 [rENV1] = rTMP2 // env+200: b5
- mov ar.rsc = rRSC0 // enforced lazy mode
- add rENV1 = 8, rENV0
- ;;
- mov rRNAT = ar.rnat // get copy of ar.rnat
- movl rTMP1 = VALID_BITS // valid_regs: ip, sp, bsp, cfm,
- // preds, priunat, rnat, unat, fpsr,
- // lc, grs, brs
- // = 0x1ff3d8f00000000
- ;;
- mov ar.rsc = rRSC // restore ar.rsc
- mov rBSP = ar.bsp
- add rTMP3 = 136, rENV0 // spill_loc = &env->context.gr[0]
- ;;
- mov rTMP2 = ar.unat
- nop
- extr.u rTMP3 = rTMP3, 3, 6 // bitpos = spill_loc{8:3}
- ;;
- and rBIAS = rBSP, rNATP // bias = (bsp & 0x1f8) ...
- sub rTMP4 = 64, rTMP3 // (64 - bitpos)
- shr rTMP5 = rTMP2, rTMP3 // (unat >> bitpos)
- ;;
- nop
- extr.u rBIAS = rBIAS, 3, 6 // ... div 8
- shl rTMP2 = rTMP2, rTMP4 // (unat << (64 - bitpos))
- ;;
- or rTMP2 = rTMP2, rTMP5 // rotate_right(unat, bitpos)
- nop
- mov rTMP4 = pr
- ;;
- st8 [rENV0] = rTMP1, 16 // env+0: valid_regs mask
- st8 [rENV1] = rRP, 24 // env+8: ip (my rp)
- sub rBIAS = rNSLOT, rBIAS // bias = nslots - bias
- ;;
- cmp.lt p6, p0 = 0, rBIAS // if (0 < bias) ...
- cmp.lt p7, p0 = 63, rBIAS // if (63 < bias) ...
- ;;
- st8 [rENV0] = r12, 48 // env+16: sp
- st8 [rENV1] = rPFS, 40 // env+32: cfm (my pfs)
-(p6) add rNSLOT = 1, rNSLOT // ... nslots++
- ;;
- st8 [rENV0] = rTMP4, 24 // env+64: preds
- st8 [rENV1] = rTMP2, 24 // env+72: priunat
-(p7) add rNSLOT = 1, rNSLOT // ... nslots++
- ;;
- st8 [rENV0] = rRNAT, -64 // env+88: ar.rnat
- st8 [rENV1] = rUNAT, 8 // env+96: ar.unat
- dep.z rTMP3 = rNSLOT, 3, 7 // (nslots << 3)
- ;;
- sub rPBSP = rBSP, rTMP3 // prev_bsp = bsp - (nslots << 3)
- mov rTMP3 = ar.fpsr
- mov rTMP1 = ar.lc
- ;;
- st8 [rENV0] = rPBSP, 184 // env+24: bsp (my prev bsp)
- st8 [rENV1] = rTMP3, 8 // env+104: ar.fpsr
- add rENV2 = 320, rENV2 // rENV2 = &env->context.rstate
- ;;
- st8 [rENV1] = rTMP1, 112 // env+112: ar.lc
- STPTR [rENV2] = r0 // env+528: env->rstate = 0
- nop
- ;;
- // THIS CODE NEEDS TO BE SCHEDULED!!!
- stf.spill [rENV0] = f2, 32 // env+208: f2
- stf.spill [rENV1] = f3, 32 // env+224: f3
- ;;
- stf.spill [rENV0] = f4, 32 // env+240: f4
- stf.spill [rENV1] = f5, 32 // env+256: f5
- ;;
- stf.spill [rENV0] = f16, 32 // env+272: f16
- stf.spill [rENV1] = f17, 32 // env+288: f17
- ;;
- stf.spill [rENV0] = f18, 32 // env+304: f16
- stf.spill [rENV1] = f19, 32 // env+320: f17
- ;;
- stf.spill [rENV0] = f20, 32 // env+336: f16
- stf.spill [rENV1] = f21, 32 // env+352: f17
- ;;
- stf.spill [rENV0] = f22, 32 // env+368: f16
- stf.spill [rENV1] = f23, 32 // env+384: f17
- ;;
- stf.spill [rENV0] = f24, 32 // env+400: f16
- stf.spill [rENV1] = f25, 32 // env+416: f17
- ;;
- stf.spill [rENV0] = f26, 32 // env+432: f16
- stf.spill [rENV1] = f27, 32 // env+448: f17
- ;;
- stf.spill [rENV0] = f28, 32 // env+464: f16
- stf.spill [rENV1] = f29, 32 // env+480: f17
- ;;
- stf.spill [rENV0] = f30, 32 // env+496: f16
- stf.spill [rENV1] = f31, 32 // env+512: f17
- ;;
- mov ar.unat = rUNAT
- mov ret0 = r0 // return UWX_OK
- br.ret.sptk b0
- .endp
-
-// uwx_self_install_context(
-// struct uwx_env *env,
-// uint64_t r15,
-// uint64_t r16,
-// uint64_t r17,
-// uint64_t r18,
-// uint64_t ret
-// );
-//
-// Installs the given context, and sets the landing pad binding
-// registers r15-r18 to the values given.
-// Returns the value "ret" to the new context (for testing --
-// when transferring to a landing pad, the new context won't
-// care about the return value).
-
- .proc uwx_self_install_context
- .global uwx_self_install_context
-uwx_self_install_context:
- .prologue
- alloc rMYPFS = ar.pfs, 6, 0, 0, 0
- .body
- SWIZZLE rENV0 = r0, r32 // rENV0 = &env
- ;;
-
- // THIS CODE NEEDS TO BE SCHEDULED!!!
-
- // Restore GR 4-7 and ar.unat
- add rENV1 = 136, rENV0 // &env->context.gr[0]
- add rENV2 = 72, rENV0 // &env->context.priunat
- ;;
- ld8 rTMP2 = [rENV2], 24 // env+72: priunat
- extr.u rTMP3 = rENV1, 3, 6 // bitpos = spill_loc{8:3}
- ;;
- ld8 rUNAT = [rENV2], 48 // env+96: ar.unat
- sub rTMP4 = 64, rTMP3 // (64 - bitpos)
- shl rTMP5 = rTMP2, rTMP3 // (unat << bitpos)
- ;;
- shr rTMP2 = rTMP2, rTMP4 // (unat >> (64 - bitpos))
- ;;
- or rTMP2 = rTMP2, rTMP5 // rotate_left(unat, bitpos)
- ;;
- mov ar.unat = rTMP2 // put priunat in place
- ;;
- ld8.fill r4 = [rENV1], 16 // env+136: r4
- ld8.fill r5 = [rENV2], 16 // env+144: r5
- ;;
- ld8.fill r6 = [rENV1], 16 // env+152: r6
- ld8.fill r7 = [rENV2], 16 // env+160: r7
- ;;
- mov ar.unat = rUNAT // restore real ar.unat
-
- // Restore BR 1-5
- ld8 rTMP1 = [rENV1], 16 // env+168: b1
- ld8 rTMP2 = [rENV2], 16 // env+176: b2
- ;;
- ld8 rTMP3 = [rENV1], 16 // env+184: b3
- ld8 rTMP4 = [rENV2], -168 // env+192: b4
- mov b1 = rTMP1
- ;;
- ld8 rTMP1 = [rENV1], -168 // env+200: b5
- mov b2 = rTMP2
- mov b3 = rTMP3
- mov b4 = rTMP4
- ;;
- mov b5 = rTMP1
-
- // Restore ar.bsp, ar.pfs, and ar.rnat
- ld8 rPFS = [rENV1], 56 // env+32: cfm (+saved ar.ec)
- mov rRSC = ar.rsc
- adds rBIAS = 0x1f8, r0
- ;;
- flushrs
- ld8 rRNAT = [rENV1], -24 // env+88: ar.rnat
- ld8 rPBSP = [rENV2], 88 // env+24: prev_bsp
- and rRSC0 = -4, rRSC // clear ar.rsc.mode
- ;;
- mov ar.rsc = rRSC0 // enforced lazy mode
- extr.u rNSLOT = rPFS, 7, 7 // nslots = pfs.sol
- ;;
- invala
- and rBIAS = rPBSP, rBIAS // bias = prev_bsp & 0x1f8 ...
- ;;
- extr.u rBIAS = rBIAS, 3, 6 // ... div 8
- ;;
- add rBIAS = rNSLOT, rBIAS // bias += nslots
- ;;
- cmp.lt p6, p0 = 63, rBIAS // if (63 < bias) ...
- cmp.lt p7, p0 = 126, rBIAS // if (126 < bias) ...
- ;;
-(p6) add rNSLOT = 1, rNSLOT // ... nslots++
- ;;
-(p7) add rNSLOT = 1, rNSLOT // ... nslots++
- ;;
- dep.z rTMP3 = rNSLOT, 3, 7 // (nslots << 3)
- ;;
- add rBSP = rPBSP, rTMP3 // bsp = prev_bsp + (nslots << 3)
- ;;
- mov ar.bspstore = rBSP // restore ar.bsp
- ;;
- mov ar.rnat = rRNAT // restore ar.rnat
- mov ar.pfs = rPFS // restore ar.pfs
- ;;
- mov ar.rsc = rRSC // restore ar.rsc
-
- // Restore preds and ar.lc
- ld8 rTMP1 = [rENV1], -56 // env+64: preds
- ld8 rTMP2 = [rENV2], -96 // env+112: ar.lc
- ;;
- mov pr = rTMP1
- mov ar.lc = rTMP2
-
- // Get previous sp and ip
- ld8 rRP = [rENV1], 96 // env+8: ip (my rp)
- ld8 rPSP = [rENV2], 112 // env+16: sp
- ;;
-
- // Restore ar.fpsr and gp
- ld8 rTMP1 = [rENV1], 104 // env+104: ar.fpsr
- ld8 r1 = [rENV2], 96 // env+128: gp
- ;;
- mov ar.fpsr = rTMP1 // restore ar.fpsr
-
- // Restore FR 2-5 and 16-31
- ldf.fill f2 = [rENV1], 32 // env+208: f2
- ldf.fill f3 = [rENV2], 32 // env+224: f3
- ;;
- ldf.fill f4 = [rENV1], 32 // env+240: f4
- ldf.fill f5 = [rENV2], 32 // env+256: f5
- ;;
- ldf.fill f16 = [rENV1], 32 // env+272: f16
- ldf.fill f17 = [rENV2], 32 // env+288: f17
- ;;
- ldf.fill f18 = [rENV1], 32 // env+304: f16
- ldf.fill f19 = [rENV2], 32 // env+320: f17
- ;;
- ldf.fill f20 = [rENV1], 32 // env+336: f16
- ldf.fill f21 = [rENV2], 32 // env+352: f17
- ;;
- ldf.fill f22 = [rENV1], 32 // env+368: f16
- ldf.fill f23 = [rENV2], 32 // env+384: f17
- ;;
- ldf.fill f24 = [rENV1], 32 // env+400: f16
- ldf.fill f25 = [rENV2], 32 // env+416: f17
- ;;
- ldf.fill f26 = [rENV1], 32 // env+432: f16
- ldf.fill f27 = [rENV2], 32 // env+448: f17
- ;;
- ldf.fill f28 = [rENV1], 32 // env+464: f16
- ldf.fill f29 = [rENV2], 32 // env+480: f17
- ;;
- ldf.fill f30 = [rENV1], 32 // env+496: f16
- ldf.fill f31 = [rENV2], 32 // env+512: f17
-
- // Set landing pad parameter registers
- mov r15 = r33
- mov r16 = r34
- mov r17 = r35
- mov r18 = r36
-
- // Restore previous sp and Return
- mov ret0 = r37
- mov sp = rPSP
- mov b0 = rRP
- br.ret.sptk b0
-
- .endp
diff --git a/sys/contrib/ia64/libuwx/src/uwx_self_info.h b/sys/contrib/ia64/libuwx/src/uwx_self_info.h
deleted file mode 100644
index 1d1cc57..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_self_info.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#define MAX_RVEC_SIZE 12
-
-struct load_module_cache;
-
-struct uwx_self_info {
- struct uwx_env *env;
- ucontext_t *ucontext;
- uint64_t bspstore;
- uint64_t rvec[MAX_RVEC_SIZE];
- uint64_t sendsig_start;
- uint64_t sendsig_end;
- int on_heap;
- int trace;
- struct load_module_cache *load_module_cache;
-};
-
-extern int uwx_self_init_info_block(
- struct uwx_env *env,
- struct uwx_self_info *info
- );
diff --git a/sys/contrib/ia64/libuwx/src/uwx_step.c b/sys/contrib/ia64/libuwx/src/uwx_step.c
deleted file mode 100644
index 42b8c93..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_step.c
+++ /dev/null
@@ -1,827 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "uwx_env.h"
-#include "uwx_utable.h"
-#include "uwx_uinfo.h"
-#include "uwx_scoreboard.h"
-#include "uwx_str.h"
-#include "uwx_step.h"
-#include "uwx_trace.h"
-
-/*
- * uwx_step.c
- *
- * This file contains the routines for stepping from one frame
- * into its callers frame. The context for the current frame
- * is maintained inside the current unwind environment
- * (struct uwx_env), and is updated with each call to
- * uwx_step() to refer to the previous frame.
- */
-
-
-/* Forward Declarations */
-
-int uwx_decode_uvec(struct uwx_env *env, uint64_t *uvec, uint64_t **rstate);
-int uwx_restore_reg(struct uwx_env *env, uint64_t rstate,
- uint64_t *valp, uint64_t *histp);
-int uwx_restore_freg(struct uwx_env *env, uint64_t rstate,
- uint64_t *valp, uint64_t *histp);
-int uwx_restore_nat(struct uwx_env *env, uint64_t rstate, int unat);
-
-
-/* uwx_lookupip_hook: Hook routine so dynamic instrumentation */
-/* tools can intercept Lookup IP events. When not */
-/* intercepted, it just returns "Not found", so that */
-/* the callback routine is invoked. */
-
-/*ARGSUSED*/
-int uwx_lookupip_hook(int request, uint64_t ip, intptr_t tok, uint64_t **vecp,
- size_t uvecsize)
-{
- return UWX_LKUP_NOTFOUND;
-}
-
-
-/* uwx_get_frame_info: Gets unwind info for current frame */
-static
-int uwx_get_frame_info(struct uwx_env *env)
-{
- int i;
- int status;
- int cbstatus;
- int cbcalled = 0;
- uint64_t ip;
- uint64_t *uvec;
- uint64_t *rstate;
- struct uwx_utable_entry uentry;
- uint64_t uvecout[UVECSIZE];
-
- if (env->copyin == 0 || env->lookupip == 0)
- return UWX_ERR_NOCALLBACKS;
-
- env->ptr_size = DWORDSZ;
- env->code_start = 0;
- env->function_offset = -1LL;
- env->function_name = 0;
- env->module_name = 0;
- env->abi_context = 0;
- uwx_reset_str_pool(env);
-
- /* Use the lookup IP callback routine to find out about the */
- /* current IP. If the predicate registers are valid, pass them */
- /* in the uvec. */
-
- /* When self-unwinding, we call a hook routine before the */
- /* callback. If the application is running under control of */
- /* a dynamic instrumentation tool, that tool will have an */
- /* opportunity to intercept lookup IP requests. */
-
- i = 0;
- uvecout[i++] = UWX_KEY_VERSION;
- uvecout[i++] = UWX_VERSION;
- if (env->context.valid_regs & (1 << UWX_REG_PREDS)) {
- uvecout[i++] = UWX_KEY_PREDS;
- uvecout[i++] = env->context.special[UWX_REG_PREDS];
- }
- uvecout[i++] = UWX_KEY_END;
- uvecout[i++] = 0;
- uvec = uvecout;
- cbstatus = UWX_LKUP_NOTFOUND;
- ip = env->context.special[UWX_REG_IP];
- env->remapped_ip = ip;
-
- /* Call the hook routine. */
-
- if (env->remote == 0)
- cbstatus = uwx_lookupip_hook(UWX_LKUP_LOOKUP, ip, env->cb_token, &uvec,
- sizeof(uvecout));
-
- /* If the hook routine remapped the IP, use the new IP for */
- /* the callback instead of the original IP. */
-
- if (cbstatus == UWX_LKUP_REMAP) {
- for (i = 0; uvec[i] != UWX_KEY_END; i += 2) {
- switch ((int)uvec[i]) {
- case UWX_KEY_NEWIP:
- ip = uvec[i+1];
- break;
- }
- }
- env->remapped_ip = ip;
- }
-
- /* Now call the callback routine unless the hook routine gave */
- /* us all the info. */
-
- if (cbstatus == UWX_LKUP_NOTFOUND || cbstatus == UWX_LKUP_REMAP) {
- cbcalled = 1;
- cbstatus = (*env->lookupip)(UWX_LKUP_LOOKUP, ip, env->cb_token, &uvec);
- }
-
- /* If the callback routine remapped the IP, call it one more time */
- /* with the new IP. */
-
- if (cbstatus == UWX_LKUP_REMAP) {
- for (i = 0; uvec[i] != UWX_KEY_END; i += 2) {
- switch ((int)uvec[i]) {
- case UWX_KEY_NEWIP:
- ip = uvec[i+1];
- break;
- }
- }
- env->remapped_ip = ip;
- cbstatus = (*env->lookupip)(UWX_LKUP_LOOKUP, ip, env->cb_token, &uvec);
- }
-
- /* If NOTFOUND, there's nothing we can do but return an error. */
-
- if (cbstatus == UWX_LKUP_NOTFOUND) {
- status = UWX_ERR_IPNOTFOUND;
- }
-
- /* If the callback returns an unwind table, we need to */
- /* search the table for an unwind entry that describes the */
- /* code region of interest, then decode the unwind information */
- /* associated with that unwind table entry, and store the */
- /* resulting register state array in the unwind environment */
- /* block. */
-
- else if (cbstatus == UWX_LKUP_UTABLE) {
- status = uwx_search_utable(env, ip, uvec, &uentry);
- if (cbcalled)
- (void) (*env->lookupip)(UWX_LKUP_FREE, 0, env->cb_token, &uvec);
- if (status == UWX_OK) {
- env->ptr_size = uentry.ptr_size;
- env->code_start = uentry.code_start;
- status = uwx_decode_uinfo(env, &uentry, &rstate);
- }
- if (status == UWX_ERR_NOUENTRY || status == UWX_ERR_NOUDESC)
- status = uwx_default_rstate(env, &rstate);
- if (status == UWX_OK)
- env->rstate = rstate;
- }
-
- /* If the callback returns an unwind info block, we can */
- /* proceed directly to decoding the unwind information. */
-
- else if (cbstatus == UWX_LKUP_UINFO) {
- uentry.ptr_size = DWORDSZ;
- uentry.code_start = 0;
- uentry.code_end = 0;
- uentry.unwind_info = 0;
- uentry.unwind_flags = 0;
- for (i = 0; uvec[i] != UWX_KEY_END; i += 2) {
- switch ((int)uvec[i]) {
- case UWX_KEY_UFLAGS:
- uentry.unwind_flags = uvec[i+1];
- if (uentry.unwind_flags & UNWIND_TBL_32BIT)
- uentry.ptr_size = WORDSZ;
- break;
- case UWX_KEY_UINFO:
- uentry.unwind_info = uvec[i+1];
- break;
- case UWX_KEY_GP:
- uwx_set_reg(env, UWX_REG_GP, uvec[i+1]);
- break;
- case UWX_KEY_MODULE:
- env->module_name =
- uwx_alloc_str(env, (char *)(intptr_t)(uvec[i+1]));
- break;
- case UWX_KEY_FUNC:
- env->function_name =
- uwx_alloc_str(env, (char *)(intptr_t)(uvec[i+1]));
- break;
- case UWX_KEY_FUNCSTART:
- uentry.code_start = uvec[i+1];
- env->code_start = uentry.code_start;
- break;
- }
- }
- env->ptr_size = uentry.ptr_size;
- if (cbcalled)
- (void) (*env->lookupip)(UWX_LKUP_FREE, 0, env->cb_token, &uvec);
- status = uwx_decode_uinfo(env, &uentry, &rstate);
- if (status == UWX_ERR_NOUDESC)
- status = uwx_default_rstate(env, &rstate);
- if (status == UWX_OK)
- env->rstate = rstate;
- }
-
- /* If the callback returns a frame description (in the form */
- /* of an update vector), convert the update vector into a */
- /* register state array, then invoke the callback again to */
- /* let it free any memory it allocated. */
-
- else if (cbstatus == UWX_LKUP_FDESC) {
- status = uwx_decode_uvec(env, uvec, &rstate);
- if (cbcalled)
- (void) (*env->lookupip)(UWX_LKUP_FREE, 0, env->cb_token, &uvec);
- if (status == UWX_OK)
- env->rstate = rstate;
- }
-
- /* Any other return from the callback is an error. */
-
- else {
- status = UWX_ERR_LOOKUPERR;
- }
- return status;
-}
-
-
-/* uwx_restore_markers: Restores the stack markers -- PSP, RP, PFS */
-
-int uwx_restore_markers(struct uwx_env *env)
-{
- int status;
- uint64_t val;
- uint64_t hist;
-
- if ((env->context.valid_regs & VALID_BASIC4) != VALID_BASIC4)
- return UWX_ERR_NOCONTEXT;
-
- /* If we haven't already obtained the frame info for the */
- /* current frame, get it now. */
-
- if (env->rstate == 0) {
- status = uwx_get_frame_info(env);
- if (status != UWX_OK)
- return status;
- }
-
- TRACE_S_STEP(env->rstate)
-
- if (env->rstate[SBREG_PSP] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_PSP], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.special[UWX_REG_PSP] = val;
- env->history.special[UWX_REG_PSP] = hist;
- env->context.valid_regs |= 1 << UWX_REG_PSP;
- TRACE_S_RESTORE_REG("PSP", env->rstate[SBREG_PSP], val)
- }
-
- if (env->rstate[SBREG_RP] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_RP], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.special[UWX_REG_RP] = val;
- env->history.special[UWX_REG_RP] = hist;
- env->context.valid_regs |= 1 << UWX_REG_RP;
- TRACE_S_RESTORE_REG("RP", env->rstate[SBREG_RP], val)
- }
-
- if (env->rstate[SBREG_PFS] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_PFS], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.special[UWX_REG_PFS] = val;
- env->history.special[UWX_REG_PFS] = hist;
- env->context.valid_regs |= 1 << UWX_REG_PFS;
- TRACE_S_RESTORE_REG("PFS", env->rstate[SBREG_PFS], val)
- }
-
- return UWX_OK;
-}
-
-/* uwx_get_module_info: Gets module name and text base for current frame */
-
-int uwx_get_module_info(
- struct uwx_env *env,
- char **modp,
- uint64_t *text_base)
-{
- int i;
- int status;
- int cbstatus;
- uint64_t ip;
- uint64_t *uvec;
- uint64_t uvecout[UVECSIZE];
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- /* If we haven't already obtained the frame info for the */
- /* current frame, get it now. */
-
- if (env->rstate == 0) {
- status = uwx_get_frame_info(env);
- if (status != UWX_OK)
- return status;
- }
-
- /* Get the module name from the lookup IP callback. */
- if (env->module_name == 0) {
- ip = env->remapped_ip;
- i = 0;
- if (env->function_offset >= 0) {
- uvecout[i++] = UWX_KEY_FUNCSTART;
- uvecout[i++] = ip - env->function_offset;
- }
- uvecout[i++] = UWX_KEY_END;
- uvecout[i++] = 0;
- uvec = uvecout;
- cbstatus = (*env->lookupip)(UWX_LKUP_MODULE, ip, env->cb_token, &uvec);
-
- if (cbstatus == UWX_LKUP_SYMINFO) {
- for (i = 0; uvec[i] != UWX_KEY_END; i += 2) {
- switch ((int)uvec[i]) {
- case UWX_KEY_TBASE:
- env->text_base = uvec[i+1];
- break;
- case UWX_KEY_MODULE:
- env->module_name =
- uwx_alloc_str(env, (char *)(intptr_t)(uvec[i+1]));
- break;
- case UWX_KEY_FUNC:
- env->function_name =
- uwx_alloc_str(env, (char *)(intptr_t)(uvec[i+1]));
- break;
- case UWX_KEY_FUNCSTART:
- env->function_offset = ip - uvec[i+1];
- break;
- }
- }
- (void) (*env->lookupip)(UWX_LKUP_FREE, 0, env->cb_token, &uvec);
- }
- }
-
- *modp = env->module_name;
- *text_base = env->text_base;
-
- return UWX_OK;
-}
-
-/* uwx_get_funcstart: Gets start address of function from current frame */
-
-int uwx_get_funcstart(
- struct uwx_env *env,
- uint64_t *funcstart)
-{
- int status;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- /* If we haven't already obtained the frame info for the */
- /* current frame, get it now. */
-
- if (env->rstate == 0) {
- status = uwx_get_frame_info(env);
- if (status != UWX_OK)
- return status;
- }
-
- *funcstart = env->remapped_ip - env->function_offset;
-
- return UWX_OK;
-}
-
-/* uwx_get_sym_info: Gets symbolic info from current frame */
-/* (Will make a UWX_LKUP_SYMBOLS callback if info */
-/* was not provided by UWX_LKUP_LOOKUP callback) */
-
-int uwx_get_sym_info(
- struct uwx_env *env,
- char **modp,
- char **symp,
- uint64_t *offsetp)
-{
- int status;
- int cbstatus;
- uint64_t ip;
- uint64_t *uvec;
- uint64_t uvecout[UVECSIZE];
- int i;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- /* If we haven't already obtained the frame info for the */
- /* current frame, get it now. */
-
- if (env->rstate == 0) {
- status = uwx_get_frame_info(env);
- if (status != UWX_OK)
- return status;
- }
-
- /* Get the symbolic information from the lookup IP callback. */
- if (env->function_name == 0) {
- ip = env->remapped_ip;
- i = 0;
- if (env->function_offset >= 0) {
- uvecout[i++] = UWX_KEY_FUNCSTART;
- uvecout[i++] = ip - env->function_offset;
- }
- uvecout[i++] = UWX_KEY_END;
- uvecout[i++] = 0;
- uvec = uvecout;
- cbstatus = (*env->lookupip)(UWX_LKUP_SYMBOLS, ip, env->cb_token, &uvec);
-
- if (cbstatus == UWX_LKUP_SYMINFO) {
- for (i = 0; uvec[i] != UWX_KEY_END; i += 2) {
- switch ((int)uvec[i]) {
- case UWX_KEY_MODULE:
- env->module_name =
- uwx_alloc_str(env, (char *)(intptr_t)(uvec[i+1]));
- break;
- case UWX_KEY_FUNC:
- env->function_name =
- uwx_alloc_str(env, (char *)(intptr_t)(uvec[i+1]));
- break;
- case UWX_KEY_FUNCSTART:
- env->function_offset = ip - uvec[i+1];
- break;
- }
- }
- (void) (*env->lookupip)(UWX_LKUP_FREE, 0, env->cb_token, &uvec);
- }
- }
-
- *modp = env->module_name;
- *symp = env->function_name;
- *offsetp = env->function_offset;
-
- return UWX_OK;
-}
-
-
-/* uwx_step: Steps from the current frame to the previous frame */
-
-int uwx_step(struct uwx_env *env)
-{
- int i;
- int status;
- int pfs_sol;
- int dispcode;
- uint64_t val;
- uint64_t fval[2];
- uint64_t hist;
- uint64_t tempgr[NPRESERVEDGR];
- int needpriunat;
- int unat;
- int tempnat;
-
- if (env == 0)
- return UWX_ERR_NOENV;
-
- /* Complete the current context by restoring the current values */
- /* of psp, rp, and pfs. */
-
- if (env->rstate == 0 ||
- (env->context.valid_regs & VALID_MARKERS) != VALID_MARKERS) {
- status = uwx_restore_markers(env);
- if (status != UWX_OK)
- return status;
- }
-
- /* Check for bottom of stack (rp == 0). */
-
- if (env->context.special[UWX_REG_RP] == 0)
- return UWX_BOTTOM;
-
- /* Find where the primary unat is saved, get a copy. */
- /* Then, as we restore the GRs, we'll merge the NaT bits into the */
- /* priunat register in the context. */
- /* (Make sure we need it, though, before we try to get it, */
- /* because the attempt to get it might invoke the copy-in callback. */
- /* We don't need the priunat unless one of GR 4-7 was */
- /* saved to the memory stack.) */
-
- needpriunat = 0;
- for (i = 0; i < NSB_GR; i++) {
- dispcode = UWX_GET_DISP_CODE(env->rstate[SBREG_GR + i]);
- if (dispcode == UWX_DISP_SPREL(0) || dispcode == UWX_DISP_PSPREL(0))
- needpriunat = 1;
- }
- unat = 0;
- if (needpriunat && env->rstate[SBREG_PRIUNAT] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_PRIUNAT], &val, &hist);
- if (status != UWX_OK)
- return status;
- unat = (int) val;
- env->history.special[UWX_REG_PRIUNAT] = hist;
- TRACE_S_RESTORE_REG("PRIUNAT", env->rstate[SBREG_PRIUNAT], val)
- }
-
- /* Retrieve saved values of the preserved GRs into temporaries. */
-
- tempnat = (int) env->context.special[UWX_REG_PRIUNAT];
- for (i = 0; i < NSB_GR; i++) {
- if (env->rstate[SBREG_GR + i] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env,
- env->rstate[SBREG_GR + i], &val, &hist);
- if (status != UWX_OK)
- return status;
- tempgr[i] = val;
- if (uwx_restore_nat(env, env->rstate[SBREG_GR + i], unat))
- tempnat |= 1 << i;
- else
- tempnat &= ~(1 << i);
- env->history.gr[i] = hist;
- env->context.valid_regs |= 1 << (i + VALID_GR_SHIFT);
- TRACE_S_RESTORE_GR(i, env->rstate[SBREG_GR + i], val)
- }
- }
-
- /* Now we have everything we need to step back to the previous frame. */
-
- /* Restore preserved BRs. */
-
- for (i = 0; i < NSB_BR; i++) {
- if (env->rstate[SBREG_BR + i] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env,
- env->rstate[SBREG_BR + i], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.br[i] = val;
- env->history.br[i] = hist;
- env->context.valid_regs |= 1 << (i + VALID_BR_SHIFT);
- TRACE_S_RESTORE_BR(i, env->rstate[SBREG_BR + i], val)
- }
- }
-
- /* Restore preserved FRs. */
-
- if (env->nsbreg == NSBREG) {
- for (i = 0; i < NSB_FR; i++) {
- if (env->rstate[SBREG_FR + i] != UWX_DISP_NONE) {
- status = uwx_restore_freg(env,
- env->rstate[SBREG_FR + i], fval, &hist);
- if (status != UWX_OK)
- return status;
- env->context.fr[i].part0 = fval[0];
- env->context.fr[i].part1 = fval[1];
- env->history.fr[i] = hist;
- env->context.valid_frs |= 1 << i;
- TRACE_S_RESTORE_FR(i, env->rstate[SBREG_FR + i], fval)
- }
- }
- }
-
- /* Restore other preserved regs. */
-
- if (env->rstate[SBREG_PREDS] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_PREDS], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.special[UWX_REG_PREDS] = val;
- env->history.special[UWX_REG_PREDS] = hist;
- env->context.valid_regs |= 1 << UWX_REG_PREDS;
- TRACE_S_RESTORE_REG("PREDS", env->rstate[SBREG_PREDS], val)
- }
- if (env->rstate[SBREG_RNAT] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_RNAT], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.special[UWX_REG_AR_RNAT] = val;
- env->history.special[UWX_REG_AR_RNAT] = hist;
- env->context.valid_regs |= 1 << UWX_REG_AR_RNAT;
- TRACE_S_RESTORE_REG("RNAT", env->rstate[SBREG_RNAT], val)
- }
- if (env->rstate[SBREG_UNAT] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_UNAT], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.special[UWX_REG_AR_UNAT] = val;
- env->history.special[UWX_REG_AR_UNAT] = hist;
- env->context.valid_regs |= 1 << UWX_REG_AR_UNAT;
- TRACE_S_RESTORE_REG("UNAT", env->rstate[SBREG_UNAT], val)
- }
- if (env->rstate[SBREG_FPSR] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_FPSR], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.special[UWX_REG_AR_FPSR] = val;
- env->history.special[UWX_REG_AR_FPSR] = hist;
- env->context.valid_regs |= 1 << UWX_REG_AR_FPSR;
- TRACE_S_RESTORE_REG("FPSR", env->rstate[SBREG_FPSR], val)
- }
- if (env->rstate[SBREG_LC] != UWX_DISP_NONE) {
- status = uwx_restore_reg(env, env->rstate[SBREG_LC], &val, &hist);
- if (status != UWX_OK)
- return status;
- env->context.special[UWX_REG_AR_LC] = val;
- env->history.special[UWX_REG_AR_LC] = hist;
- env->context.valid_regs |= 1 << UWX_REG_AR_LC;
- TRACE_S_RESTORE_REG("LC", env->rstate[SBREG_LC], val)
- }
-
- /* Restore preserved GRs from temporaries. */
-
- for (i = 0; i < NSB_GR; i++) {
- if (env->rstate[SBREG_GR + i] != UWX_DISP_NONE)
- env->context.gr[i] = tempgr[i];
- }
- env->context.special[UWX_REG_PRIUNAT] = tempnat;
-
- /* Restore the frame markers. */
-
- env->context.special[UWX_REG_IP] = env->context.special[UWX_REG_RP];
- env->history.special[UWX_REG_IP] = env->history.special[UWX_REG_RP];
-
- env->context.special[UWX_REG_SP] = env->context.special[UWX_REG_PSP];
- env->history.special[UWX_REG_SP] = env->history.special[UWX_REG_PSP];
-
- pfs_sol = ((unsigned int)env->context.special[UWX_REG_PFS] >> 7) & 0x7f;
- env->context.special[UWX_REG_BSP] = uwx_add_to_bsp(
- env->context.special[UWX_REG_BSP],
- -pfs_sol);
-
- env->context.special[UWX_REG_CFM] = env->context.special[UWX_REG_PFS];
- env->history.special[UWX_REG_CFM] = env->history.special[UWX_REG_PFS];
-
- env->context.special[UWX_REG_RP] = 0;
-
- /* The frame info for the new frame isn't yet available. */
-
- env->rstate = 0;
- env->context.valid_regs &= ~VALID_MARKERS;
-
- return UWX_OK;
-}
-
-
-/* uwx_decode_uvec: Converts the update vector into a register state array */
-
-int uwx_decode_uvec(struct uwx_env *env, uint64_t *uvec, uint64_t **rstate)
-{
- int i;
- int status;
-
- status = uwx_default_rstate(env, rstate);
- if (status != UWX_OK)
- return status;
-
- for (i = 0; uvec[i] != UWX_KEY_END; i += 2) {
- switch ((int)uvec[i]) {
- case UWX_KEY_CONTEXT:
- env->abi_context = (int)(uvec[i+1]);
- status = UWX_ABI_FRAME;
- break;
- case UWX_KEY_GP:
- uwx_set_reg(env, UWX_REG_GP, uvec[i+1]);
- break;
- case UWX_KEY_MODULE:
- env->module_name =
- uwx_alloc_str(env, (char *)(intptr_t)(uvec[i+1]));
- break;
- case UWX_KEY_FUNC:
- env->function_name =
- uwx_alloc_str(env, (char *)(intptr_t)(uvec[i+1]));
- break;
- case UWX_KEY_FUNCSTART:
- env->function_offset = env->remapped_ip - uvec[i+1];
- break;
- default:
- return UWX_ERR_CANTUNWIND;
- }
- }
- return status;
-}
-
-
-/* uwx_restore_reg: Restores a register according to the scoreboard */
-
-#define COPYIN_MSTACK_8(dest, src) \
- (env->remote? \
- (*env->copyin)(UWX_COPYIN_MSTACK, (dest), (src), \
- DWORDSZ, env->cb_token) : \
- (*(uint64_t *)(intptr_t)(dest) = \
- *(uint64_t *)(intptr_t)(src), DWORDSZ) )
-
-int uwx_restore_reg(struct uwx_env *env, uint64_t rstate,
- uint64_t *valp, uint64_t *histp)
-{
- int status;
- uint64_t p;
- int n;
- int regid;
-
- status = UWX_OK;
-
- switch (UWX_GET_DISP_CODE(rstate)) {
- case UWX_DISP_SPPLUS(0):
- *valp = env->context.special[UWX_REG_SP] +
- UWX_GET_DISP_OFFSET(rstate);
- *histp = UWX_DISP_NONE;
- break;
- case UWX_DISP_SPREL(0):
- p = env->context.special[UWX_REG_SP] +
- UWX_GET_DISP_OFFSET(rstate);
- n = COPYIN_MSTACK_8((char *)valp, p);
- if (n != DWORDSZ)
- status = UWX_ERR_COPYIN_MSTK;
- *histp = UWX_DISP_MSTK(p);
- break;
- case UWX_DISP_PSPREL(0):
- p = env->context.special[UWX_REG_PSP] + 16 -
- UWX_GET_DISP_OFFSET(rstate);
- n = COPYIN_MSTACK_8((char *)valp, p);
- if (n != DWORDSZ)
- status = UWX_ERR_COPYIN_MSTK;
- *histp = UWX_DISP_MSTK(p);
- break;
- case UWX_DISP_REG(0):
- regid = UWX_GET_DISP_REGID(rstate);
- status = uwx_get_reg(env, regid, valp);
- (void) uwx_get_spill_loc(env, regid, histp);
- break;
- }
- return status;
-}
-
-#define COPYIN_MSTACK_16(dest, src) \
- (env->remote? \
- (*env->copyin)(UWX_COPYIN_MSTACK, (dest), (src), \
- 2*DWORDSZ, env->cb_token) : \
- (*(uint64_t *)(intptr_t)(dest) = *(uint64_t *)(intptr_t)(src), \
- *(uint64_t *)(intptr_t)((dest)+8) = \
- *(uint64_t *)(intptr_t)((src)+8), \
- 2*DWORDSZ) )
-
-int uwx_restore_freg(struct uwx_env *env, uint64_t rstate,
- uint64_t *valp, uint64_t *histp)
-{
- int status;
- uint64_t p;
- int n;
- int regid;
-
- status = UWX_OK;
-
- switch (UWX_GET_DISP_CODE(rstate)) {
- case UWX_DISP_SPREL(0):
- p = env->context.special[UWX_REG_SP] +
- UWX_GET_DISP_OFFSET(rstate);
- n = COPYIN_MSTACK_16((char *)valp, p);
- if (n != 2*DWORDSZ)
- status = UWX_ERR_COPYIN_MSTK;
- *histp = UWX_DISP_MSTK(p);
- break;
- case UWX_DISP_PSPREL(0):
- p = env->context.special[UWX_REG_PSP] + 16 -
- UWX_GET_DISP_OFFSET(rstate);
- n = COPYIN_MSTACK_16((char *)valp, p);
- if (n != 2*DWORDSZ)
- status = UWX_ERR_COPYIN_MSTK;
- *histp = UWX_DISP_MSTK(p);
- break;
- case UWX_DISP_REG(0):
- regid = UWX_GET_DISP_REGID(rstate);
- status = uwx_get_reg(env, regid, valp);
- (void) uwx_get_spill_loc(env, regid, histp);
- break;
- }
- return status;
-}
-
-/* uwx_restore_nat: Returns the saved NaT bit for a preserved GR */
-
-int uwx_restore_nat(struct uwx_env *env, uint64_t rstate, int unat)
-{
- int nat;
- uint64_t p;
-
- nat = 0;
- switch (UWX_GET_DISP_CODE(rstate)) {
- case UWX_DISP_SPREL(0):
- p = env->context.special[UWX_REG_SP] +
- UWX_GET_DISP_OFFSET(rstate);
- nat = (unat >> (((int)p >> 3) & 0x3f)) & 0x01;
- break;
- case UWX_DISP_PSPREL(0):
- p = env->context.special[UWX_REG_PSP] + 16 -
- UWX_GET_DISP_OFFSET(rstate);
- nat = (unat >> (((int)p >> 3) & 0x3f)) & 0x01;
- break;
- case UWX_DISP_REG(0):
- (void) uwx_get_nat(env, UWX_GET_DISP_REGID(rstate), &nat);
- break;
- }
- return nat;
-}
-
diff --git a/sys/contrib/ia64/libuwx/src/uwx_step.h b/sys/contrib/ia64/libuwx/src/uwx_step.h
deleted file mode 100644
index 0f41521..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_step.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#define UVECSIZE 20 /* Size of uvec supplied by unwind engine */
- /* for callback's use. */
-
-extern int uwx_lookupip_hook(int request, uint64_t ip, intptr_t tok,
- uint64_t **vecp, size_t uvecsize);
-extern int uwx_restore_markers(struct uwx_env *env);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_str.c b/sys/contrib/ia64/libuwx/src/uwx_str.c
deleted file mode 100644
index 8e66f1c..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_str.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef _KERNEL
-#include <string.h>
-#endif
-
-#include "uwx_env.h"
-#include "uwx_str.h"
-
-#ifdef _KERNEL
-static struct uwx_str_pool uwx_str_pool;
-#define free(p) /* nullified */
-#define malloc(sz) ((sz == sizeof(uwx_str_pool)) ? &uwx_str_pool : NULL)
-#endif
-
-/*
- * uwx_str.c
- *
- * This file contains the routines for maintaining a string
- * pool for the unwind environment. We preallocate enough
- * space for most purposes so that no memory allocation is
- * necessary during a normal unwind. If we do need more,
- * we use the allocate callback, if one is provided.
- *
- * The string pool is reused with each call to step(),
- * and is completely freed when the unwind environment is
- * freed.
- */
-
-
-int uwx_init_str_pool(struct uwx_env *env, struct uwx_str_pool *pool)
-{
- if (pool == 0)
- return UWX_ERR_NOMEM;
-
- pool->next = 0;
- pool->size = STRPOOLSIZE;
- pool->used = 0;
-
- env->string_pool = pool;
-
- return UWX_OK;
-}
-
-void uwx_free_str_pool(struct uwx_env *env)
-{
- struct uwx_str_pool *pool;
- struct uwx_str_pool *next;
-
- /* The first pool is preallocated as part of the uwx_env. Don't free it! */
- pool = env->string_pool;
- if (pool != 0)
- pool = pool->next;
- for (; pool != 0; pool = next) {
- next = pool->next;
- if (env->free_cb == 0)
- free(pool);
- else
- (*env->free_cb)(pool);
- }
-}
-
-char *uwx_alloc_str(struct uwx_env *env, char *str)
-{
- int len;
- int size;
- struct uwx_str_pool *pool;
- struct uwx_str_pool *prev;
- char *p;
-
- len = strlen(str) + 1;
- prev = 0;
- for (pool = env->string_pool; pool != 0; pool = pool->next) {
- prev = pool;
- if (pool->size - pool->used >= len)
- break;
- }
- if (pool == 0) {
- size = STRPOOLSIZE;
- if (len > size)
- size = len;
- size += sizeof(struct uwx_str_pool) - STRPOOLSIZE;
- if (env->allocate_cb == 0)
- pool = (struct uwx_str_pool *) malloc(size);
- else
- pool = (struct uwx_str_pool *) (*env->allocate_cb)(size);
- if (env->string_pool == 0)
- return 0;
- pool->next = 0;
- pool->size = size;
- pool->used = 0;
- prev->next = pool;
- }
- p = pool->pool + pool->used;
- strcpy(p, str);
- pool->used += len;
- return p;
-}
-
-void uwx_reset_str_pool(struct uwx_env *env)
-{
- struct uwx_str_pool *pool;
-
- for (pool = env->string_pool; pool != 0; pool = pool->next)
- pool->used = 0;
-}
diff --git a/sys/contrib/ia64/libuwx/src/uwx_str.h b/sys/contrib/ia64/libuwx/src/uwx_str.h
deleted file mode 100644
index 5e85d6a..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_str.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#define STRPOOLSIZE (400-sizeof(void *)-2*sizeof(int))
-
-struct uwx_str_pool {
- struct uwx_str_pool *next;
- int size;
- int used;
- char pool[STRPOOLSIZE];
-};
-
-extern int uwx_init_str_pool(struct uwx_env *env, struct uwx_str_pool *pool);
-extern void uwx_free_str_pool(struct uwx_env *env);
-extern char *uwx_alloc_str(struct uwx_env *env, char *str);
-extern void uwx_reset_str_pool(struct uwx_env *env);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_swap.c b/sys/contrib/ia64/libuwx/src/uwx_swap.c
deleted file mode 100644
index 5917393..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_swap.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "uwx_env.h"
-#include "uwx_swap.h"
-
-void uwx_swap4(uint32_t *w)
-{
- unsigned char *p;
- unsigned char t[4];
-
- p = (unsigned char *) w;
-
- t[0] = p[0];
- t[1] = p[1];
- t[2] = p[2];
- t[3] = p[3];
-
- p[0] = t[3];
- p[1] = t[2];
- p[2] = t[1];
- p[3] = t[0];
-}
-
-void uwx_swap8(uint64_t *dw)
-{
- unsigned char *p;
- unsigned char t[8];
-
- p = (unsigned char *) dw;
-
- t[0] = p[0];
- t[1] = p[1];
- t[2] = p[2];
- t[3] = p[3];
- t[4] = p[4];
- t[5] = p[5];
- t[6] = p[6];
- t[7] = p[7];
-
- p[0] = t[7];
- p[1] = t[6];
- p[2] = t[5];
- p[3] = t[4];
- p[4] = t[3];
- p[5] = t[2];
- p[6] = t[1];
- p[7] = t[0];
-}
diff --git a/sys/contrib/ia64/libuwx/src/uwx_swap.h b/sys/contrib/ia64/libuwx/src/uwx_swap.h
deleted file mode 100644
index 70d921c..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_swap.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-extern void uwx_swap4(uint32_t *w);
-extern void uwx_swap8(uint64_t *dw);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_symbols.c b/sys/contrib/ia64/libuwx/src/uwx_symbols.c
deleted file mode 100644
index b91c2db..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_symbols.c
+++ /dev/null
@@ -1,850 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifdef USE_CLEAN_NAMESPACE
-#define fopen _fopen
-#define fseek _fseek
-#define fread _fread
-#define fclose _fclose
-#endif /* USE_CLEAN_NAMESPACE */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <inttypes.h>
-#include <elf.h>
-
-#include "uwx.h"
-#include "uwx_env.h"
-
-#ifdef USE_CLEAN_NAMESPACE
-/*
- * Moved the defines above the include of stdio.h,
- * so we don't need these unless that causes problems
- * and we have to move them back down here.
- * #define fopen _fopen
- * #define fseek _fseek
- * #define fread _fread
- * #define fclose _fclose
- * extern FILE *_fopen(const char *, const char *);
- * extern int _fseek(FILE *, long int, int);
- * extern size_t _fread(void *, size_t, size_t, FILE *);
- * extern int _fclose(FILE *);
- */
-#endif /* USE_CLEAN_NAMESPACE */
-
-struct uwx_symbol_cache {
- char *module_name;
- int nsyms;
- uint64_t *sym_values;
- char **sym_names;
- char *strings;
-};
-
-
-int uwx_read_func_symbols(
- struct uwx_env *env,
- struct uwx_symbol_cache *cache,
- char *module_name);
-
-
-int uwx_find_symbol(
- struct uwx_env *env,
- struct uwx_symbol_cache **symbol_cache_p,
- char *module_name,
- uint64_t relip,
- char **func_name_p,
- uint64_t *offset_p)
-{
- int status;
- int i;
- uint64_t offset;
- uint64_t best_offset;
- char *best_name;
- struct symbol *sym;
- struct uwx_symbol_cache *cache = NULL;
-
- /* Allocate a symbol cache on first call */
- if (symbol_cache_p != NULL)
- cache = *symbol_cache_p;
- if (cache == NULL) {
- cache = (struct uwx_symbol_cache *)
- (*env->allocate_cb)(sizeof(struct uwx_symbol_cache));
- if (cache == NULL)
- return UWX_ERR_NOMEM;
- cache->module_name = NULL;
- cache->nsyms = 0;
- cache->sym_values = NULL;
- cache->sym_names = NULL;
- cache->strings = NULL;
- if (symbol_cache_p != NULL)
- *symbol_cache_p = cache;
- }
-
- /* Read function symbols from the object file */
- status = uwx_read_func_symbols(env, cache, module_name);
- if (status != UWX_OK)
- return status;
-
- /* Search for best match */
- best_offset = ~(uint64_t)0;
- best_name = NULL;
- for (i = 0; i < cache->nsyms; i++) {
- if (cache->sym_values[i] == relip) {
- *func_name_p = cache->sym_names[i];
- *offset_p = 0;
- if (symbol_cache_p == NULL)
- uwx_release_symbol_cache(env, cache);
- return UWX_OK;
- }
- if (relip > cache->sym_values[i]) {
- offset = relip - cache->sym_values[i];
- if (offset < best_offset) {
- best_offset = offset;
- best_name = cache->sym_names[i];
- }
- }
- }
- if (best_name == NULL)
- return UWX_ERR_NOSYM;
-
- if (symbol_cache_p == NULL)
- uwx_release_symbol_cache(env, cache);
-
- *func_name_p = best_name;
- *offset_p = best_offset;
- return UWX_OK;
-}
-
-
-void uwx_release_symbol_cache(
- struct uwx_env *env,
- struct uwx_symbol_cache *symbol_cache)
-{
- if (symbol_cache->module_name != NULL)
- (*env->free_cb)(symbol_cache->module_name);
- if (symbol_cache->sym_values != NULL)
- (*env->free_cb)(symbol_cache->sym_values);
- if (symbol_cache->sym_names != NULL)
- (*env->free_cb)(symbol_cache->sym_names);
- if (symbol_cache->strings != NULL)
- (*env->free_cb)(symbol_cache->strings);
- (*env->free_cb)(symbol_cache);
-}
-
-
-#define ELF_ERR_NOMEM UWX_ERR_NOMEM /* Out of memory */
-#define ELF_ERR_OPEN UWX_ERR_NOSYM /* Can't open file */
-
-#define ELF_ERR_NOHEADER UWX_ERR_NOSYM /* Can't read ELF header */
-#define ELF_ERR_NOTELF UWX_ERR_NOSYM /* Not an ELF file */
-#define ELF_ERR_HEADER_SIZE UWX_ERR_NOSYM /* Invalid e_ehsize */
-#define ELF_ERR_INVALID_CLASS UWX_ERR_NOSYM /* Invalid EI_CLASS */
-#define ELF_ERR_INVALID_DATA UWX_ERR_NOSYM /* Invalid EI_DATA */
-
-#define ELF_ERR_READ_SECTHDR UWX_ERR_NOSYM /* Can't read section headers */
-#define ELF_ERR_SECTHDR_SIZE UWX_ERR_NOSYM /* Invalid e_shentsize */
-
-#define ELF_ERR_READ_PROGHDR UWX_ERR_NOSYM /* Can't read program headers */
-#define ELF_ERR_PROGHDR_SIZE UWX_ERR_NOSYM /* Invalid e_phentsize */
-
-#define ELF_ERR_READ_SECTION UWX_ERR_NOSYM /* Can't read section contents */
-
-#define ELF_ERR_READ_SYMTAB UWX_ERR_NOSYM /* Can't read symbol table */
-#define ELF_ERR_SYMTAB_SIZE UWX_ERR_NOSYM /* Invalid sh_entsize for symtab */
-
-
-struct elf_file {
- uint64_t phoff;
- uint64_t shoff;
- uint64_t text_base;
- uint64_t text_end;
- alloc_cb allocate_cb;
- free_cb free_cb;
- const char *filename;
- FILE *fd;
- struct elf_section *sections;
- struct elf_symbol *symbols;
- char *symbol_strings;
- int native_data;
- int source_class;
- int source_data;
- int ehsize;
- int phentsize;
- int phnum;
- int shentsize;
- int shnum;
- int nsyms;
-};
-
-struct elf_section {
- uint64_t flags;
- uint64_t addr;
- uint64_t offset;
- uint64_t size;
- uint64_t entsize;
- char *contents;
- struct elf_symbol *symbols;
- int type;
- int link;
- int info;
- int nelems;
-};
-
-struct elf_symbol {
- uint64_t value;
- char *namep;
- int name;
- int type;
- int shndx;
-};
-
-
-static void elf_swap_bytes(char *buf, char *template)
-{
- int i;
- int sz;
- char temp[16];
-
- while (sz = *template++) {
- if (sz > 16)
- exit(1);
- for (i = 0; i < sz; i++)
- temp[i] = buf[i];
- for (i = 0; i < sz; i++)
- buf[i] = temp[sz-i-1];
- buf += sz;
- }
-}
-
-
-static int elf_read_section(struct elf_file *ef, int shndx)
-{
- struct elf_section *sect;
-
- if (shndx < 0 || shndx > ef->shnum)
- return 0;
-
- sect = &ef->sections[shndx];
-
- /* Return if section has already been read */
- if (sect->contents != NULL)
- return 0;
-
- sect->contents = (*ef->allocate_cb)(sect->size);
- if (sect->contents == NULL)
- return ELF_ERR_NOMEM;
-
- fseek(ef->fd, (long)sect->offset, SEEK_SET);
- if (fread(sect->contents, 1, sect->size, ef->fd) != sect->size)
- return ELF_ERR_READ_SECTION;
-
- return 0;
-}
-
-
-static char template_elf32_sym[] = {4, 4, 4, 1, 1, 2, 0};
-static char template_elf64_sym[] = {4, 1, 1, 2, 8, 8, 0};
-
-static int elf_read_symtab_section(struct elf_file *ef, int shndx)
-{
- int i;
- int nsyms;
- long size;
- union {
- Elf32_Sym sym32;
- Elf64_Sym sym64;
- } sym;
- struct elf_section *sect;
- struct elf_symbol *syms;
- struct elf_symbol *symp;
- char *strtab;
-
- sect = &ef->sections[shndx];
-
- /* Return if section has already been read */
- if (sect->symbols != NULL)
- return 0;
-
- if (ef->source_class == ELFCLASS32) {
- if (sect->entsize != sizeof(sym.sym32))
- return ELF_ERR_SYMTAB_SIZE;
- }
- else {
- if (sect->entsize != sizeof(sym.sym64))
- return ELF_ERR_SYMTAB_SIZE;
- }
-
- nsyms = sect->nelems;
- syms = (struct elf_symbol *)
- (*ef->allocate_cb)(sizeof(struct elf_symbol) * nsyms);
- if (syms == NULL)
- return ELF_ERR_NOMEM;
-
- /* Read the symbol table */
- fseek(ef->fd, (long)sect->offset, SEEK_SET);
- for (i = 0; i < nsyms; i++) {
-
- symp = &syms[i];
-
- /* Read the next symbol table entry */
- if (fread((char *)&sym, sect->entsize, 1, ef->fd) != 1) {
- (*ef->free_cb)(syms);
- return ELF_ERR_READ_SYMTAB;
- }
-
- /* Get fields from appropriate structure */
- if (ef->source_class == ELFCLASS32) {
- /* Swap bytes if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&sym, template_elf32_sym);
- symp->name = sym.sym32.st_name;
- symp->type = sym.sym32.st_info & 0x0f;
- symp->shndx = sym.sym32.st_shndx;
- symp->value = sym.sym32.st_value;
- }
- else {
- /* Swap bytes if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&sym, template_elf64_sym);
- symp->name = sym.sym64.st_name;
- symp->type = sym.sym64.st_info & 0x0f;
- symp->shndx = sym.sym64.st_shndx;
- symp->value = sym.sym64.st_value;
- }
- symp->namep = NULL;
-
- }
-
- /* Read the symbol string table and convert section names */
- /* from string table offsets to pointers */
- if (sect->link > 0 && sect->link < ef->shnum) {
- if (elf_read_section(ef, sect->link) == 0) {
- strtab = ef->sections[sect->link].contents;
- for (i = 0; i < nsyms; i++) {
- symp = &syms[i];
- symp->namep = strtab + symp->name;
- }
- ef->symbol_strings = strtab;
- ef->sections[sect->link].contents = NULL;
- }
- }
-
- sect->symbols = syms;
- return 0;
-}
-
-
-static char template_elf32_phdr[] = {4, 4, 4, 4, 4, 4, 4, 4, 0};
-static char template_elf64_phdr[] = {4, 4, 8, 8, 8, 8, 8, 8, 0};
-
-static int elf_read_prog_hdrs(struct elf_file *ef)
-{
- int i;
- union {
- Elf32_Phdr hdr32;
- Elf64_Phdr hdr64;
- } header;
- uint64_t vaddr;
- uint64_t memsz;
- uint64_t unwind_base;
- int type;
-
- if (ef->phnum == 0)
- return 0;
-
- if (ef->source_class == ELFCLASS32) {
- if (ef->phentsize != sizeof(header.hdr32))
- return ELF_ERR_PROGHDR_SIZE;
- }
- else {
- if (ef->phentsize != sizeof(header.hdr64))
- return ELF_ERR_PROGHDR_SIZE;
- }
-
- /* Look for the PT_IA_64_UNWIND segment */
- /* (That will help us identify the text segment) */
-
- fseek(ef->fd, (long)ef->phoff, SEEK_SET);
- for (i = 0; i < ef->phnum; i++) {
-
- /* Read the next program header */
- if (fread((char *)&header, ef->phentsize, 1, ef->fd) != 1)
- return ELF_ERR_READ_PROGHDR;
-
- /* Get fields from appropriate structure */
- if (ef->source_class == ELFCLASS32) {
- /* Swap bytes in header fields if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&header, template_elf32_phdr);
- type = header.hdr32.p_type;
- vaddr = header.hdr32.p_vaddr;
- }
- else {
- /* Swap bytes in header fields if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&header, template_elf64_phdr);
- type = header.hdr64.p_type;
- vaddr = header.hdr64.p_vaddr;
- }
-
- if (type == PT_IA_64_UNWIND) {
- unwind_base = vaddr;
- break;
- }
-
- }
-
- /* Now look for the PT_LOAD segment that includes the unwind segment */
-
- fseek(ef->fd, (long)ef->phoff, SEEK_SET);
- for (i = 0; i < ef->phnum; i++) {
-
- /* Read the next program header */
- if (fread((char *)&header, ef->phentsize, 1, ef->fd) != 1)
- return ELF_ERR_READ_PROGHDR;
-
- /* Get fields from appropriate structure */
- if (ef->source_class == ELFCLASS32) {
- /* Swap bytes in header fields if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&header, template_elf32_phdr);
- type = header.hdr32.p_type;
- vaddr = header.hdr32.p_vaddr;
- memsz = header.hdr32.p_memsz;
- }
- else {
- /* Swap bytes in header fields if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&header, template_elf64_phdr);
- type = header.hdr64.p_type;
- vaddr = header.hdr64.p_vaddr;
- memsz = header.hdr64.p_memsz;
- }
-
- if (type == PT_LOAD &&
- vaddr <= unwind_base && unwind_base < vaddr + memsz) {
- ef->text_base = vaddr;
- ef->text_end = vaddr + memsz;
- break;
- }
-
- }
-
- return 0;
-}
-
-
-static char template_elf32_shdr[] = {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0};
-static char template_elf64_shdr[] = {4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 0};
-
-static int elf_read_sect_hdrs(struct elf_file *ef)
-{
- int i;
- long size;
- int err;
- union {
- Elf32_Shdr hdr32;
- Elf64_Shdr hdr64;
- } header;
- struct elf_section *sect;
- char *shstrtab;
-
- if (ef->source_class == ELFCLASS32) {
- if (ef->shentsize != sizeof(header.hdr32))
- return ELF_ERR_SECTHDR_SIZE;
- }
- else {
- if (ef->shentsize != sizeof(header.hdr64))
- return ELF_ERR_SECTHDR_SIZE;
- }
-
- fseek(ef->fd, (long)ef->shoff, SEEK_SET);
- ef->sections = (struct elf_section *)
- (*ef->allocate_cb)(sizeof(struct elf_section) * ef->shnum);
- if (ef->sections == NULL)
- return ELF_ERR_NOMEM;
-
- /* Read the section header table */
- for (i = 0; i < ef->shnum; i++) {
-
- sect = &ef->sections[i];
-
- /* Read the next section header */
- if (fread((char *)&header, ef->shentsize, 1, ef->fd) != 1) {
- (*ef->free_cb)(ef->sections);
- return ELF_ERR_READ_SECTHDR;
- }
-
- /* Get fields from appropriate structure */
- if (ef->source_class == ELFCLASS32) {
- /* Swap bytes in header fields if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&header, template_elf32_shdr);
- sect->type = header.hdr32.sh_type;
- sect->flags = header.hdr32.sh_flags;
- sect->addr = header.hdr32.sh_addr;
- sect->offset = header.hdr32.sh_offset;
- sect->size = header.hdr32.sh_size;
- sect->link = header.hdr32.sh_link;
- sect->info = header.hdr32.sh_info;
- sect->entsize = header.hdr32.sh_entsize;
- }
- else {
- /* Swap bytes in header fields if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&header, template_elf64_shdr);
- sect->type = header.hdr64.sh_type;
- sect->flags = header.hdr64.sh_flags;
- sect->addr = header.hdr64.sh_addr;
- sect->offset = header.hdr64.sh_offset;
- sect->size = header.hdr64.sh_size;
- sect->link = header.hdr64.sh_link;
- sect->info = header.hdr64.sh_info;
- sect->entsize = header.hdr64.sh_entsize;
- }
- sect->contents = NULL;
- sect->symbols = NULL;
- if (sect->entsize > 0)
- sect->nelems = sect->size / sect->entsize;
-
- }
-
- return 0;
-}
-
-
-static char template_elf32_ehdr[] = {2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0};
-static char template_elf64_ehdr[] = {2, 2, 4, 8, 8, 8, 4, 2, 2, 2, 2, 2, 2, 0};
-
-static int elf_read_header(struct elf_file *ef)
-{
- union {
- char ident[EI_NIDENT];
- Elf32_Ehdr hdr32;
- Elf64_Ehdr hdr64;
- } header;
-
- /* Read the ELF header */
- fseek(ef->fd, 0L, SEEK_SET);
- if (fread((char *)header.ident, EI_NIDENT, 1, ef->fd) != 1) {
- return ELF_ERR_NOHEADER;
- }
-
- /* Verify that this is an ELF file */
- if (header.ident[EI_MAG0] != ELFMAG0 ||
- header.ident[EI_MAG1] != ELFMAG1 ||
- header.ident[EI_MAG2] != ELFMAG2 ||
- header.ident[EI_MAG3] != ELFMAG3) {
- return ELF_ERR_NOTELF;
- }
-
- /* Get header fields from the byte array e_ident */
- /* (These are independent of EI_CLASS and EI_DATA) */
- ef->source_class = header.ident[EI_CLASS];
- ef->source_data = header.ident[EI_DATA];
-
- /* Verify EI_CLASS and EI_DATA */
- if (header.ident[EI_CLASS] != ELFCLASS32 &&
- header.ident[EI_CLASS] != ELFCLASS64) {
- return ELF_ERR_INVALID_CLASS;
- }
- if (header.ident[EI_DATA] != ELFDATA2LSB &&
- header.ident[EI_DATA] != ELFDATA2MSB) {
- return ELF_ERR_INVALID_DATA;
- }
-
- /* Get remaining header fields from appropriate structure */
- if (ef->source_class == ELFCLASS32) {
- if (fread((char *)&header.hdr32 + EI_NIDENT,
- sizeof(header.hdr32) - EI_NIDENT, 1, ef->fd) != 1)
- return ELF_ERR_NOHEADER;
- /* Swap bytes in header fields if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&header + EI_NIDENT, template_elf32_ehdr);
- ef->phoff = header.hdr32.e_phoff;
- ef->shoff = header.hdr32.e_shoff;
- ef->ehsize = header.hdr32.e_ehsize;
- ef->phentsize = header.hdr32.e_phentsize;
- ef->phnum = header.hdr32.e_phnum;
- ef->shentsize = header.hdr32.e_shentsize;
- ef->shnum = header.hdr32.e_shnum;
- if (ef->ehsize != sizeof(header.hdr32)) {
- return ELF_ERR_HEADER_SIZE;
- }
- }
- else {
- if (fread((char *)&header.hdr64 + EI_NIDENT,
- sizeof(header.hdr64) - EI_NIDENT, 1, ef->fd) != 1)
- return ELF_ERR_NOHEADER;
- /* Swap bytes in header fields if necessary */
- if (ef->source_data != ef->native_data)
- elf_swap_bytes((char *)&header + EI_NIDENT, template_elf64_ehdr);
- ef->phoff = header.hdr64.e_phoff;
- ef->shoff = header.hdr64.e_shoff;
- ef->ehsize = header.hdr64.e_ehsize;
- ef->phentsize = header.hdr64.e_phentsize;
- ef->phnum = header.hdr64.e_phnum;
- ef->shentsize = header.hdr64.e_shentsize;
- ef->shnum = header.hdr64.e_shnum;
- if (ef->ehsize != sizeof(header.hdr64)) {
- return ELF_ERR_HEADER_SIZE;
- }
- }
-
- return 0;
-}
-
-
-static struct elf_file *elf_new(struct uwx_env *env)
-{
- int native_be;
- char *p;
- struct elf_file *ef;
-
- ef = (struct elf_file *)(*env->allocate_cb)(sizeof(struct elf_file));
- if (ef == NULL)
- return NULL;
-
- /* Determine the native byte order */
- p = (char *)&native_be;
- native_be = 1; /* Assume big-endian */
- *p = 0; /* Sets be == 0 only if little-endian */
-
- ef->allocate_cb = env->allocate_cb;
- ef->free_cb = env->free_cb;
- ef->filename = NULL;
- ef->native_data = (native_be ? ELFDATA2MSB : ELFDATA2LSB);
- ef->fd = NULL;
- ef->source_class = 0;
- ef->source_data = 0;
- ef->phoff = 0;
- ef->shoff = 0;
- ef->text_base = 0;
- ef->text_end = 0;
- ef->ehsize = 0;
- ef->phentsize = 0;
- ef->phnum = 0;
- ef->shentsize = 0;
- ef->shnum = 0;
- ef->sections = NULL;
- ef->symbols = NULL;
- ef->symbol_strings = NULL;
- ef->nsyms = 0;
- return ef;
-}
-
-
-static int elf_open(struct elf_file *ef, const char *filename)
-{
- int err;
-
- ef->filename = filename;
-
- ef->fd = fopen(filename, "r");
- if (ef->fd == NULL)
- return ELF_ERR_OPEN;
-
- if ((err = elf_read_header(ef)) != 0)
- return err;
-
- if ((err = elf_read_sect_hdrs(ef)) != 0)
- return err;
-
- if ((err = elf_read_prog_hdrs(ef)) != 0)
- return err;
-
- return 0;
-}
-
-
-static void elf_free_sections(struct elf_file *ef)
-{
- int i;
- struct elf_section *sect;
-
- for (i = 0; i < ef->shnum; i++) {
- sect = &ef->sections[i];
- if (sect->contents != NULL)
- (*ef->free_cb)(sect->contents);
- if ((sect->type == SHT_SYMTAB || sect->type == SHT_DYNSYM)
- && sect->symbols != NULL)
- (*ef->free_cb)(sect->symbols);
- }
- (*ef->free_cb)(ef->sections);
-}
-
-
-static void elf_close(struct elf_file *ef)
-{
- if (ef->fd != NULL) {
- fclose(ef->fd);
- ef->fd = NULL;
- }
-}
-
-
-static void elf_free(struct elf_file *ef)
-{
- elf_close(ef);
- if (ef->sections != NULL)
- elf_free_sections(ef);
- (*ef->free_cb)(ef);
-}
-
-
-static int elf_read_symbols(struct elf_file *ef)
-{
- int i;
- int err;
- struct elf_section *sect;
-
- for (i = 1; i < ef->shnum; i++) {
- sect = &ef->sections[i];
- if (sect->type == SHT_SYMTAB) {
- if (elf_read_symtab_section(ef, i) == 0) {
- ef->symbols = sect->symbols;
- ef->nsyms = sect->nelems;
-#ifdef DEBUG_SYMBOLS
- printf("Read %d symbols from SHT_SYMTAB section\n", ef->nsyms);
-#endif /* DEBUG_SYMBOLS */
- return 0;
- }
- }
- }
- for (i = 1; i < ef->shnum; i++) {
- sect = &ef->sections[i];
- if (sect->type == SHT_DYNSYM) {
- if (elf_read_symtab_section(ef, i) == 0) {
- ef->symbols = sect->symbols;
- ef->nsyms = sect->nelems;
-#ifdef DEBUG_SYMBOLS
- printf("Read %d symbols from SHT_DYNSYM section\n", ef->nsyms);
-#endif /* DEBUG_SYMBOLS */
- return 0;
- }
- }
- }
- return UWX_ERR_NOSYM;
-}
-
-
-#define SYM_IS_DEFINED(sym) \
- ((sym)->shndx != SHN_UNDEF)
-
-#define SYM_IS_IN_TEXT_SEGMENT(value) \
- ((value) >= ef->text_base && (value) < ef->text_end)
-
-#define SYM_HAS_INTERESTING_TYPE(type) ( \
- (type) == STT_FUNC || \
- (type) == STT_OBJECT || \
- (type) == STT_HP_STUB \
- )
-
-#define SYM_IS_INTERESTING(sym) ( \
- SYM_IS_DEFINED(sym) && \
- SYM_IS_IN_TEXT_SEGMENT((sym)->value) && \
- SYM_HAS_INTERESTING_TYPE((sym)->type) \
- )
-
-int uwx_read_func_symbols(
- struct uwx_env *env,
- struct uwx_symbol_cache *cache,
- char *module_name)
-{
- int i, j;
- int status;
- struct elf_file *ef;
- struct elf_symbol *sym;
- int nfuncsyms;
- char **names;
- uint64_t *values;
-
- if (module_name != NULL &&
- cache->module_name != NULL &&
- strcmp(module_name, cache->module_name) == 0)
- return UWX_OK;
-
- if (cache->sym_names != NULL)
- (*env->free_cb)(cache->sym_names);
- if (cache->sym_values != NULL)
- (*env->free_cb)(cache->sym_values);
- if (cache->strings != NULL)
- (*env->free_cb)(cache->strings);
-
- ef = elf_new(env);
- if (ef == NULL)
- return UWX_ERR_NOMEM;
- status = elf_open(ef, module_name);
- if (status != 0)
- return UWX_ERR_NOSYM;
- status = elf_read_symbols(ef);
- if (status != 0)
- return UWX_ERR_NOSYM;
-
- nfuncsyms = 0;
- for (i = 0; i < ef->nsyms; i++) {
- sym = &ef->symbols[i];
- if (SYM_IS_INTERESTING(sym))
- nfuncsyms++;
- }
-
- names = (char **)(*env->allocate_cb)(nfuncsyms * sizeof(char *));
- if (names == NULL)
- return UWX_ERR_NOMEM;
- values = (uint64_t *)(*env->allocate_cb)(nfuncsyms * sizeof(uint64_t));
- if (values == NULL)
- return UWX_ERR_NOMEM;
-
- j = 0;
- for (i = 0; i < ef->nsyms; i++) {
- sym = &ef->symbols[i];
- if (SYM_IS_INTERESTING(sym)) {
- if (j >= nfuncsyms) /* should not happen! */
- break;
- names[j] = sym->namep;
- values[j] = sym->value - ef->text_base;
- j++;
- }
- }
-
- cache->module_name = (char *)(*env->allocate_cb)(strlen(module_name)+1);
- if (cache->module_name != NULL) {
- strcpy(cache->module_name, module_name);
- cache->nsyms = nfuncsyms;
- cache->sym_names = names;
- cache->sym_values = values;
- cache->strings = ef->symbol_strings;
- ef->symbol_strings = NULL;
- }
-
- elf_close(ef);
- elf_free(ef);
-
-#ifdef DEBUG_SYMBOLS
- printf("Cached %d interesting symbols\n", nfuncsyms);
-#endif /* DEBUG_SYMBOLS */
-
- return UWX_OK;
-}
diff --git a/sys/contrib/ia64/libuwx/src/uwx_symbols.h b/sys/contrib/ia64/libuwx/src/uwx_symbols.h
deleted file mode 100644
index 83b0bfe..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_symbols.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-struct uwx_env;
-struct uwx_symbol_cache;
-
-extern int uwx_find_symbol(
- struct uwx_env *env,
- struct uwx_symbol_cache **symbol_cache_p,
- char *module_name,
- uint64_t relip,
- char **func_name_p,
- uint64_t *offset_p);
-
-extern void uwx_release_symbol_cache(
- struct uwx_env *env,
- struct uwx_symbol_cache *symbol_cache);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_trace.c b/sys/contrib/ia64/libuwx/src/uwx_trace.c
deleted file mode 100644
index 0338dbe..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_trace.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "uwx_env.h"
-#include "uwx_utable.h"
-#include "uwx_uinfo.h"
-#include "uwx_scoreboard.h"
-#include "uwx_trace.h"
-
-#ifdef UWX_TRACE_ENABLE
-
-void uwx_trace_init(struct uwx_env *env)
-{
- char *tstr;
-
- tstr = getenv("UWX_TRACE");
- if (tstr != NULL) {
- while (*tstr != '\0') {
- switch (*tstr) {
- case 'i': env->trace |= UWX_TRACE_UINFO; break;
- case 't': env->trace |= UWX_TRACE_UTABLE; break;
- case 'b': env->trace |= UWX_TRACE_SB; break;
- case 'r': env->trace |= UWX_TRACE_RSTATE; break;
- case 's': env->trace |= UWX_TRACE_STEP; break;
- case 'c': env->trace |= UWX_TRACE_CONTEXT; break;
- case 'C': env->trace |= UWX_TRACE_COPYIN; break;
- case 'L': env->trace |= UWX_TRACE_LOOKUPIP; break;
- case '?':
-#ifdef _KERNEL
- fprintf(stderr, "UWX_TRACE flag `%c' unknown.\n", *tstr);
-#else
- fprintf(stderr, "UWX_TRACE flags:\n");
- fprintf(stderr, " i: unwind info\n");
- fprintf(stderr, " t: unwind table searching\n");
- fprintf(stderr, " b: scoreboard management\n");
- fprintf(stderr, " r: register state vector\n");
- fprintf(stderr, " s: step\n");
- fprintf(stderr, " c: context\n");
- fprintf(stderr, " C: copyin callback\n");
- fprintf(stderr, " L: lookup ip callback\n");
- exit(1);
-#endif
- }
- tstr++;
- }
- }
-}
-
-char *uwx_sb_rnames[] = {
- "RP", "PSP", "PFS",
- "PREDS", "UNAT", "PRIUNAT", "RNAT", "LC", "FPSR",
- "GR4", "GR5", "GR6", "GR7",
- "BR1", "BR2", "BR3", "BR4", "BR5",
- "FR2", "FR3", "FR4", "FR5",
- "FR16", "FR17", "FR18", "FR19",
- "FR20", "FR21", "FR22", "FR23",
- "FR24", "FR25", "FR26", "FR27",
- "FR28", "FR29", "FR30", "FR31",
-};
-
-void uwx_dump_rstate(int regid, uint64_t rstate)
-{
- int reg;
-
- if (rstate == UWX_DISP_NONE)
- return;
- fprintf(stderr, " %-7s", uwx_sb_rnames[regid]);
- switch (UWX_GET_DISP_CODE(rstate)) {
- case UWX_DISP_NONE:
- fprintf(stderr, " unchanged\n");
- break;
- case UWX_DISP_SPPLUS(0):
- fprintf(stderr, " SP + %d\n", (int)rstate & ~0x07);
- break;
- case UWX_DISP_SPREL(0):
- fprintf(stderr, " [SP + %d]\n", (int)rstate & ~0x07);
- break;
- case UWX_DISP_PSPREL(0):
- fprintf(stderr, " [PSP + 16 - %d]\n", (int)rstate & ~0x07);
- break;
- case UWX_DISP_REG(0):
- reg = UWX_GET_DISP_REGID(rstate);
- if (reg == UWX_REG_AR_PFS)
- fprintf(stderr, " AR.PFS\n");
- else if (reg == UWX_REG_AR_UNAT)
- fprintf(stderr, " AR.UNAT\n");
- else if (reg >= UWX_REG_GR(0) && reg < UWX_REG_GR(128))
- fprintf(stderr, " GR%d\n", reg - UWX_REG_GR(0));
- else if (reg >= UWX_REG_FR(0) && reg < UWX_REG_FR(128))
- fprintf(stderr, " FR%d\n", reg - UWX_REG_FR(0));
- else if (reg >= UWX_REG_BR(0) && reg < UWX_REG_BR(8))
- fprintf(stderr, " BR%d\n", reg - UWX_REG_BR(0));
- else
- fprintf(stderr, " <reg %d>\n", reg);
- break;
- default:
- fprintf(stderr, " <%08lx>\n", (long)rstate);
- break;
- }
-}
-
-void uwx_dump_scoreboard(
- struct uwx_scoreboard *scoreboard,
- int nsbreg,
- struct uwx_rhdr *rhdr,
- int cur_slot,
- int ip_slot)
-{
- int i;
-
- if (rhdr->is_prologue)
- fprintf(stderr, " Prologue region (start = %d, length = %d)\n",
- (int)cur_slot, (int)rhdr->rlen);
- else
- fprintf(stderr, " Body region (start = %d, length = %d, ecount = %d)\n",
- cur_slot, (int)rhdr->rlen, rhdr->ecount);
- if (ip_slot < rhdr->rlen)
- fprintf(stderr, " IP is in this region (offset = %d)\n", ip_slot);
- for (i = 0; i < nsbreg; i++)
- uwx_dump_rstate(i, scoreboard->rstate[i]);
-}
-
-void uwx_dump_uinfo_block(
- struct uwx_utable_entry *uentry,
- unsigned int ulen)
-{
- int i;
- uint32_t *uinfo = (uint32_t *)(intptr_t)uentry->unwind_info;
-
- ulen += DWORDSZ; /* Include unwind info header */
- if (uentry->unwind_flags & UNWIND_TBL_32BIT) /* and personality routine */
- ulen += WORDSZ;
- else
- ulen += DWORDSZ;
- while (ulen >= WORDSZ) {
- fprintf(stderr, " %08lx: ", (unsigned long)uinfo);
- for (i = 0; i < 4 * WORDSZ && ulen >= WORDSZ; i += WORDSZ) {
- fprintf(stderr, " %04x", *uinfo++);
- ulen -= WORDSZ;
- }
- fprintf(stderr, "\n");
- }
-}
-
-#endif /* UWX_TRACE_ENABLE */
diff --git a/sys/contrib/ia64/libuwx/src/uwx_trace.h b/sys/contrib/ia64/libuwx/src/uwx_trace.h
deleted file mode 100644
index 9202a38..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_trace.h
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#define UWX_TRACE_SB 1 /* UWX_TRACE=b: scoreboard mgmt */
-#define UWX_TRACE_UINFO 2 /* UWX_TRACE=i: unwind info */
-#define UWX_TRACE_RSTATE 4 /* UWX_TRACE=r: reg state vector */
-#define UWX_TRACE_STEP 8 /* UWX_TRACE=s: step */
-#define UWX_TRACE_UTABLE 16 /* UWX_TRACE=t: unwind tbl search */
-#define UWX_TRACE_CONTEXT 32 /* UWX_TRACE=c: context */
-#define UWX_TRACE_COPYIN 64 /* UWX_TRACE=C: copyin callback */
-#define UWX_TRACE_LOOKUPIP 128 /* UWX_TRACE=L: lookupip callback */
-
-#ifdef UWX_TRACE_ENABLE
-
-#ifdef _KERNEL
-#define fprintf(f, ...) printf(__VA_ARGS__)
-#endif
-
-extern void uwx_trace_init(struct uwx_env *env);
-
-struct uwx_utable_entry;
-
-extern void uwx_dump_uinfo_block(struct uwx_utable_entry *, unsigned int);
-
-extern void uwx_dump_rstate(int regid, uint64_t rstate);
-
-struct uwx_rhdr;
-
-extern void uwx_dump_scoreboard(
- struct uwx_scoreboard *scoreboard,
- int nsbreg,
- struct uwx_rhdr *rhdr,
- int cur_slot,
- int ip_slot);
-
-#define TRACE_INIT uwx_trace_init(env);
-
-#define TRACE_B_REUSE(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_alloc_scoreboard: reuse id %d\n", (id));
-
-#define TRACE_B_PREALLOC(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_prealloc_scoreboard: prealloc id %d\n", (id));
-
-#define TRACE_B_ALLOC(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_alloc_scoreboard: alloc id %d\n", (id));
-
-#define TRACE_B_POP(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_pop_scoreboards: free id %d\n", (id));
-
-#define TRACE_B_LABEL(label) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_label_scoreboard: label %d\n", (label));
-
-#define TRACE_B_LABEL_COPY(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_label_scoreboard: copy id %d\n", (id));
-
-#define TRACE_B_LABEL_REVERSE(back, new) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_label_scoreboard: reverse link %d -> %d\n", \
- (new)->id, ((back) == 0) ? -1 : (back)->id);
-
-#define TRACE_B_COPY(label, id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_copy_scoreboard: label %d, cur sb id %d\n", (label), (id));
-
-#define TRACE_B_COPY_FREE(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_copy_scoreboard: free id %d\n", (id));
-
-#define TRACE_B_COPY_FOUND(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_copy_scoreboard: found id %d\n", (id));
-
-#define TRACE_B_COPY_COPY(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_copy_scoreboard: copy id %d\n", (id));
-
-#define TRACE_B_COPY_REVERSE(back, new) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_copy_scoreboard: reverse link %d -> %d\n", \
- (new)->id, ((back) == 0) ? -1 : (back)->id);
-
-#define TRACE_B_FREE(id) \
- if (env->trace & UWX_TRACE_SB) \
- fprintf(stderr, "uwx_free_scoreboards: free id %d\n", (id));
-
-#define TRACE_I_DECODE_RHDR_1(name, b0) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_rhdr: %02x %s\n", \
- (b0), (name));
-
-#define TRACE_I_DECODE_RHDR_1L(name, b0, val) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_rhdr: %02x %08x %s\n", \
- (b0), (int)(val), (name));
-
-#define TRACE_I_DECODE_RHDR_2L(name, b0, b1, val) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_rhdr: %02x %02x %08x %s\n", \
- (b0), (b1), (int)(val), (name));
-
-#define TRACE_I_DECODE_PROLOGUE_1(name, b0) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: %02x %s\n", \
- (b0), (name));
-
-#define TRACE_I_DECODE_PROLOGUE_1L(name, b0, val) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: %02x %08x %s\n", \
- (b0), (int)(val), (name));
-
-#define TRACE_I_DECODE_PROLOGUE_1LL(name, b0, val1, val2) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: %02x %08x %08x %s\n", \
- (b0), (int)(val1), (int)(val2), (name));
-
-#define TRACE_I_DECODE_PROLOGUE_2(name, b0, b1) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: %02x %02x %s\n", \
- (b0), (b1), (name));
-
-#define TRACE_I_DECODE_PROLOGUE_2L(name, b0, b1, val) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: %02x %02x %08x %s\n", \
- (b0), (b1), (int)(val), (name));
-
-#define TRACE_I_DECODE_PROLOGUE_3(name, b0, b1, b2) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: %02x %02x %02x %s\n", \
- (b0), (b1), (b2), (name));
-
-#define TRACE_I_DECODE_PROLOGUE_4(name, b0, b1, b2, b3) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: %02x %02x %02x %02x %s\n", \
- (b0), (b1), (b2), (b3), (name));
-
-#define TRACE_I_DECODE_PROLOGUE_SPILL_BASE(spill_base) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: spill base = %08x\n", (int)(spill_base));
-
-#define TRACE_I_DECODE_PROLOGUE_MASKS(gr_mem_mask, gr_gr_mask) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: gr_mem_mask = %02x; gr_gr_mask = %02x\n", \
- (gr_mem_mask), (gr_gr_mask));
-
-#define TRACE_I_DECODE_PROLOGUE_NSPILL(ngr) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_prologue: ngr = %d\n", (ngr));
-
-#define TRACE_I_DECODE_BODY_1(name, b0) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_body: %02x %s\n", \
- (b0), (name));
-
-#define TRACE_I_DECODE_BODY_1L(name, b0, val) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_body: %02x %08x %s\n", \
- (b0), (int)(val), (name));
-
-#define TRACE_I_DECODE_BODY_1LL(name, b0, val1, val2) \
- if (env->trace & UWX_TRACE_UINFO) \
- fprintf(stderr, "uwx_decode_body: %02x %08x %08x %s\n", \
- (b0), (int)(val1), (int)(val2), (name));
-
-#define TRACE_R_UIB(uentry, ulen) \
- if (env->trace & UWX_TRACE_RSTATE) { \
- fprintf(stderr, "Unwind info block (info = %08x %08x, flags = %08x %08x, ulen = %d)\n", \
- (unsigned int)((uentry)->unwind_info >> 32), \
- (unsigned int)(uentry)->unwind_info, \
- (unsigned int)((uentry)->unwind_flags >> 32), \
- (unsigned int)(uentry)->unwind_flags, \
- (ulen)); \
- if (!env->remote) uwx_dump_uinfo_block(uentry, ulen); \
- }
-
-#define TRACE_R_DUMP_SB(scoreboard, rhdr, cur_slot, ip_slot) \
- if (env->trace & UWX_TRACE_RSTATE) \
- uwx_dump_scoreboard(scoreboard, env->nsbreg, \
- &(rhdr), cur_slot, ip_slot);
-
-#define TRACE_S_STEP(rstate) \
- if (env->trace & UWX_TRACE_STEP) { \
- fprintf(stderr, "uwx_restore_markers:\n"); \
- uwx_dump_rstate(SBREG_RP, (rstate)[SBREG_RP]); \
- uwx_dump_rstate(SBREG_PSP, (rstate)[SBREG_PSP]); \
- uwx_dump_rstate(SBREG_PFS, (rstate)[SBREG_PFS]); \
- }
-
-#define TRACE_S_RESTORE_REG(regname, rstate, val) \
- if (env->trace & UWX_TRACE_STEP) \
- fprintf(stderr, " restore %-7s (rstate = %08x %08x) = %08x %08x\n", \
- regname, \
- (unsigned int) ((rstate) >> 32), \
- (unsigned int) (rstate), \
- (unsigned int) ((val) >> 32), \
- (unsigned int) (val));
-
-#define TRACE_S_RESTORE_GR(regid, rstate, val) \
- if (env->trace & UWX_TRACE_STEP) \
- fprintf(stderr, " restore GR%d (rstate = %08x %08x) = %08x %08x\n", \
- (regid) + 4, \
- (unsigned int) ((rstate) >> 32), \
- (unsigned int) (rstate), \
- (unsigned int) ((val) >> 32), \
- (unsigned int) (val));
-
-#define TRACE_S_RESTORE_BR(regid, rstate, val) \
- if (env->trace & UWX_TRACE_STEP) \
- fprintf(stderr, " restore BR%d (rstate = %08x %08x) = %08x %08x\n", \
- (regid) + 1, \
- (unsigned int) ((rstate) >> 32), \
- (unsigned int) (rstate), \
- (unsigned int) ((val) >> 32), \
- (unsigned int) (val));
-
-#define TRACE_S_RESTORE_FR(regid, rstate, fval) \
- if (env->trace & UWX_TRACE_STEP) \
- fprintf(stderr, " restore FR%d (rstate = %08x %08x) = %08x %08x %08x %08x\n", \
- (regid) + 1, \
- (unsigned int) ((rstate) >> 32), \
- (unsigned int) (rstate), \
- (unsigned int) ((fval[0]) >> 32), \
- (unsigned int) (fval[0]), \
- (unsigned int) ((fval[1]) >> 32), \
- (unsigned int) (fval[1]));
-
-#define TRACE_T_SEARCH32(ip) \
- if (env->trace & UWX_TRACE_UTABLE) \
- fprintf(stderr, "uwx_search_utable32 (relative ip = %08x)\n", (ip));
-
-#define TRACE_T_BINSEARCH32(lb, ub, mid, code_start, code_end) \
- if (env->trace & UWX_TRACE_UTABLE) \
- fprintf(stderr, " lb/ub = %d/%d, mid = %d, start/end = %08x %08x\n", \
- lb, ub, mid, code_start, code_end);
-
-#define TRACE_C_GET_REG(regid, bsp) \
- if (env->trace & UWX_TRACE_CONTEXT) \
- fprintf(stderr, "uwx_get_reg (gr%d, bsp = %08x %08x)\n", \
- (regid) - UWX_REG_GR(0), \
- (unsigned int) ((bsp) >> 32), \
- (unsigned int) (bsp));
-
-#define TRACE_C_ROTATE_GR(regid, sor, rrb_gr, newregid) \
- if (env->trace & UWX_TRACE_CONTEXT) \
- fprintf(stderr, "uwx_get_reg (gr%d, sor = %d, rrb = %d) --> gr%d\n", \
- (regid) + 32, \
- (sor), \
- (rrb_gr), \
- (newregid) + 32);
-
-#define TRACE_SELF_COPYIN4(rem, len, wp) \
- if (info->trace & UWX_TRACE_COPYIN) \
- fprintf(stderr, "copyin (rem = %08x %08x, len = %d, val = %08x)\n", \
- (unsigned int) ((rem) >> 32), \
- (unsigned int) (rem), \
- (len), *(wp));
-
-#define TRACE_SELF_COPYIN8(rem, len, dp) \
- if (info->trace & UWX_TRACE_COPYIN) \
- fprintf(stderr, "copyin (rem = %08x %08x, len = %d, val = %08x %08x)\n", \
- (unsigned int) ((rem) >> 32), \
- (unsigned int) (rem), \
- (len), \
- ((unsigned int *)(dp))[0], \
- ((unsigned int *)(dp))[1]);
-
-#define TRACE_SELF_LOOKUP(ip) \
- if (info->trace & UWX_TRACE_LOOKUPIP) \
- fprintf(stderr, "Lookup IP callback: ip = %08x %08x\n", \
- (unsigned int) ((ip) >> 32), \
- (unsigned int) (ip));
-
-#define TRACE_SELF_LOOKUP_DESC(text_base, linkage_ptr, unwind_base) \
- if (info->trace & UWX_TRACE_LOOKUPIP) { \
- fprintf(stderr, " text base: %08x %08x\n", \
- (unsigned int) ((text_base) >> 32), \
- (unsigned int) (text_base)); \
- fprintf(stderr, " linkage ptr: %08x %08x\n", \
- (unsigned int) ((linkage_ptr) >> 32), \
- (unsigned int) (linkage_ptr)); \
- fprintf(stderr, " unwind base: %08x %08x\n", \
- (unsigned int) ((uint64_t)(unwind_base) >> 32), \
- (unsigned int) (unwind_base)); \
- fprintf(stderr, " unwind flags: %08x %08x\n", \
- (unsigned int) ((unwind_base)[0] >> 32), \
- (unsigned int) (unwind_base)[0]); \
- fprintf(stderr, " unwind start: %08x %08x\n", \
- (unsigned int) (((text_base)+(unwind_base)[1]) >> 32), \
- (unsigned int) ((text_base)+(unwind_base)[1])); \
- fprintf(stderr, " unwind end: %08x %08x\n", \
- (unsigned int) (((text_base)+(unwind_base)[2]) >> 32), \
- (unsigned int) ((text_base)+(unwind_base)[2])); \
- }
-
-#else /* !UWX_TRACE_ENABLE */
-
-#define TRACE_INIT
-#define TRACE_B_REUSE(id)
-#define TRACE_B_PREALLOC(id)
-#define TRACE_B_ALLOC(id)
-#define TRACE_B_POP(id)
-#define TRACE_B_LABEL(label)
-#define TRACE_B_LABEL_COPY(id)
-#define TRACE_B_LABEL_REVERSE(back, new)
-#define TRACE_B_COPY(label, id)
-#define TRACE_B_COPY_FREE(id)
-#define TRACE_B_COPY_FOUND(id)
-#define TRACE_B_COPY_COPY(id)
-#define TRACE_B_COPY_REVERSE(back, new)
-#define TRACE_B_FREE(id)
-#define TRACE_I_DECODE_RHDR_1(name, b0)
-#define TRACE_I_DECODE_RHDR_1L(name, b0, val)
-#define TRACE_I_DECODE_RHDR_2L(name, b0, b1, val)
-#define TRACE_I_DECODE_PROLOGUE_1(name, b0)
-#define TRACE_I_DECODE_PROLOGUE_1L(name, b0, val)
-#define TRACE_I_DECODE_PROLOGUE_1LL(name, b0, val1, val2)
-#define TRACE_I_DECODE_PROLOGUE_2(name, b0, b1)
-#define TRACE_I_DECODE_PROLOGUE_2L(name, b0, b1, parm1)
-#define TRACE_I_DECODE_PROLOGUE_3(name, b0, b1, b2)
-#define TRACE_I_DECODE_PROLOGUE_4(name, b0, b1, b2, b3)
-#define TRACE_I_DECODE_PROLOGUE_SPILL_BASE(spill_base)
-#define TRACE_I_DECODE_PROLOGUE_MASKS(gr_mem_mask, gr_gr_mask)
-#define TRACE_I_DECODE_PROLOGUE_NSPILL(ngr)
-#define TRACE_I_DECODE_BODY_1(name, b0)
-#define TRACE_I_DECODE_BODY_1L(name, b0, parm1)
-#define TRACE_I_DECODE_BODY_1LL(name, b0, parm1, parm2)
-#define TRACE_R_UIB(uentry, ulen)
-#define TRACE_R_DUMP_SB(scoreboard, rhdr, cur_slot, ip_slot)
-#define TRACE_S_STEP(rstate)
-#define TRACE_S_RESTORE_REG(regname, rstate, val)
-#define TRACE_S_RESTORE_GR(regid, rstate, val)
-#define TRACE_S_RESTORE_BR(regid, rstate, val)
-#define TRACE_S_RESTORE_FR(regid, rstate, val)
-#define TRACE_T_SEARCH32(ip)
-#define TRACE_T_BINSEARCH32(lb, ub, mid, code_start, code_end)
-#define TRACE_C_GET_REG(regid, bsp)
-#define TRACE_C_ROTATE_GR(regid, sor, rrb_gr, newregid)
-#define TRACE_SELF_COPYIN4(rem, len, wp)
-#define TRACE_SELF_COPYIN8(rem, len, dp)
-#define TRACE_SELF_LOOKUP(ip)
-#define TRACE_SELF_LOOKUP_DESC(text_base, linkage_ptr, unwind_base)
-
-#endif /* UWX_TRACE_ENABLE */
-
diff --git a/sys/contrib/ia64/libuwx/src/uwx_uinfo.c b/sys/contrib/ia64/libuwx/src/uwx_uinfo.c
deleted file mode 100644
index 5f63b7e..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_uinfo.c
+++ /dev/null
@@ -1,1119 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "uwx_env.h"
-#include "uwx_uinfo.h"
-#include "uwx_utable.h"
-#include "uwx_scoreboard.h"
-#include "uwx_bstream.h"
-#include "uwx_trace.h"
-#include "uwx_swap.h"
-
-int uwx_count_ones(unsigned int mask);
-
-/*
- * uwx_uinfo.c
- *
- * This file contains the routines for reading and decoding
- * the unwind information block.
- *
- * The main entry point, uwx_decode_uinfo(), is given a pointer
- * to an unwind table entry and a pointer (passed by reference)
- * to be filled in with a pointer to an update vector. It will
- * read and decode the unwind descriptors contained in the
- * unwind information block, then build the register state array,
- * which describes the actions necessary to step from the current
- * frame to the previous one.
- */
-
-#define COPYIN_UINFO_4(dest, src) \
- (env->remote? \
- (*env->copyin)(UWX_COPYIN_UINFO, (dest), (src), \
- WORDSZ, env->cb_token) : \
- (*(uint32_t *)(intptr_t)(dest) = *(uint32_t *)(intptr_t)(src), WORDSZ) )
-
-#define COPYIN_UINFO_8(dest, src) \
- (env->remote? \
- (*env->copyin)(UWX_COPYIN_UINFO, (dest), (src), \
- DWORDSZ, env->cb_token) : \
- (*(uint64_t *)(intptr_t)(dest) = *(uint64_t *)(intptr_t)(src), DWORDSZ) )
-
-
-/* uwx_default_rstate: Returns the default register state for a leaf routine */
-
-int uwx_default_rstate(struct uwx_env *env, uint64_t **rstatep)
-{
- struct uwx_scoreboard *sb;
-
- sb = uwx_init_scoreboards(env);
- *rstatep = sb->rstate;
- return UWX_OK;
-}
-
-
-/* uwx_decode_uinfo: Decodes unwind info region */
-
-int uwx_decode_uinfo(
- struct uwx_env *env,
- struct uwx_utable_entry *uentry,
- uint64_t **rstatep)
-{
- uint64_t uinfohdr;
- unsigned int ulen;
- int len;
- struct uwx_bstream bstream;
- struct uwx_scoreboard *scoreboard;
- int ip_slot;
- int cur_slot;
- int status;
- struct uwx_rhdr rhdr;
-
- /* Remember the offset from the start of the function */
- /* to the current IP. This helps the client find */
- /* the symbolic information. */
-
- env->function_offset = env->remapped_ip - uentry->code_start;
-
- /* Read the unwind info header using the copyin callback. */
- /* (If we're reading a 32-bit unwind table, we need to */
- /* read the header as two 32-bit pieces to preserve the */
- /* guarantee that we always call copyin for aligned */
- /* 4-byte or 8-byte chunks.) */
- /* Then compute the length of the unwind descriptor */
- /* region and initialize a byte stream to read it. */
-
- if (uentry->unwind_flags & UNWIND_TBL_32BIT) {
- len = COPYIN_UINFO_4((char *)&uinfohdr, uentry->unwind_info);
- len += COPYIN_UINFO_4((char *)&uinfohdr + WORDSZ,
- uentry->unwind_info + WORDSZ);
- }
- else
- len = COPYIN_UINFO_8((char *)&uinfohdr, uentry->unwind_info);
- if (len != DWORDSZ)
- return UWX_ERR_COPYIN_UINFO;
- if (env->byte_swap)
- uwx_swap8(&uinfohdr);
- if (uentry->unwind_flags & UNWIND_TBL_32BIT)
- ulen = UNW_LENGTH(uinfohdr) * WORDSZ;
- else
- ulen = UNW_LENGTH(uinfohdr) * DWORDSZ;
- uwx_init_bstream(&bstream, env,
- uentry->unwind_info + DWORDSZ, ulen, UWX_COPYIN_UINFO);
-
- /* Save the header and a pointer to the personality routine ptr */
- /* for later use in exception handling. */
-
- env->uinfo_hdr = uinfohdr;
- env->uinfo_end = uentry->unwind_info + DWORDSZ + ulen;
-
- TRACE_R_UIB(uentry, ulen)
-
- /* Create an initial scoreboard for tracking the unwind state. */
-
- scoreboard = uwx_init_scoreboards(env);
-
- /* Prepare to read and decode the unwind regions described */
- /* by the unwind info block. Find the target "ip" slot */
- /* relative to the beginning of the region. The lower 4 bits */
- /* of the actual IP encode the slot number within a bundle. */
-
- cur_slot = 0;
- ip_slot = (int) ((env->context.special[UWX_REG_IP] & ~0x0fLL)
- - uentry->code_start)
- / BUNDLESZ * SLOTSPERBUNDLE
- + (unsigned int) (env->context.special[UWX_REG_IP] & 0x0f);
-
- /* Loop over the regions in the unwind info block. */
-
- for (;;) {
-
- /* Decode the next region header. */
- /* We have an error if we reach the end of the info block, */
- /* since we should have found our target ip slot by then. */
- /* We also have an error if the next byte isn't a region */
- /* header record. */
-
- status = uwx_decode_rhdr(env, &bstream, &rhdr);
- if (status != UWX_OK)
- return status;
-
- /* If a prologue region, get a new scoreboard, pushing */
- /* the previous one onto the prologue stack. Then read */
- /* and decode the prologue region records. */
-
- if (rhdr.is_prologue) {
- scoreboard = uwx_new_scoreboard(env, scoreboard);
- if (scoreboard == 0)
- return UWX_ERR_NOMEM;
- status = uwx_decode_prologue(env, &bstream,
- scoreboard, &rhdr, ip_slot);
- }
-
- /* If a body region, read and decode the body region */
- /* records. If the body has an epilogue count, */
- /* uwx_decode_body will note that in the region header */
- /* record for use at the bottom of the loop. */
-
- else {
- status = uwx_decode_body(env, &bstream, scoreboard, &rhdr, ip_slot);
- }
-
- if (status != UWX_OK)
- return status;
-
- TRACE_R_DUMP_SB(scoreboard, rhdr, cur_slot, ip_slot)
-
- /* If the target ip slot is within this region, we're done. */
- /* Return the scoreboard's register state array. */
-
- if (ip_slot < rhdr.rlen) {
- *rstatep = scoreboard->rstate;
- return UWX_OK;
- }
-
- /* Otherwise, update the current ip slot, pop the */
- /* scoreboard stack based on the epilogue count, */
- /* and loop back around for the next region. */
-
- cur_slot += rhdr.rlen;
- ip_slot -= rhdr.rlen;
- if (rhdr.ecount > 0) {
- scoreboard = uwx_pop_scoreboards(env, scoreboard, rhdr.ecount);
- if (scoreboard == 0)
- return UWX_ERR_PROLOG_UF;
- }
- }
- /*NOTREACHED*/
-}
-
-
-/* uwx_decode_rhdr: Decodes a region header record */
-
-int uwx_decode_rhdr(
- struct uwx_env *env,
- struct uwx_bstream *bstream,
- struct uwx_rhdr *rhdr)
-{
- int b0;
- int b1;
- uint64_t val;
- int status;
-
- /* Get the first byte of the next descriptor record. */
- b0 = uwx_get_byte(bstream);
- if (b0 < 0)
- return UWX_ERR_NOUDESC;
-
- /* Initialize region header record. */
-
- rhdr->is_prologue = 0;
- rhdr->rlen = 0;
- rhdr->mask = 0;
- rhdr->grsave = 0;
- rhdr->ecount = 0;
-
- /* Format R1 */
-
- if (b0 < 0x40) {
- if ((b0 & 0x20) == 0) {
- TRACE_I_DECODE_RHDR_1("(R1) prologue", b0)
- rhdr->is_prologue = 1;
- }
- else {
- TRACE_I_DECODE_RHDR_1("(R1) body", b0)
- }
- rhdr->rlen = b0 & 0x1f;
- }
-
- /* Format R2 */
-
- else if (b0 < 0x60) {
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- status = uwx_get_uleb128(bstream, &val);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_RHDR_2L("(R2) prologue_gr", b0, b1, val)
- rhdr->is_prologue = 1;
- rhdr->rlen = (unsigned int) val;
- rhdr->mask = ((b0 & 0x07) << 1) | (b1 >> 7);
- rhdr->grsave = b1 & 0x7f;
- }
-
- /* Format R3 */
-
- else if (b0 < 0x80) {
- status = uwx_get_uleb128(bstream, &val);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- if ((b0 & 0x03) == 0) {
- TRACE_I_DECODE_RHDR_1L("(R3) prologue", b0, val)
- rhdr->is_prologue = 1;
- }
- else {
- TRACE_I_DECODE_RHDR_1L("(R3) body", b0, val)
- }
- rhdr->rlen = (unsigned int) val;
- }
-
- /* Otherwise, not a region header record. */
-
- else {
- TRACE_I_DECODE_RHDR_1("(?)", b0)
- return UWX_ERR_BADUDESC;
- }
-
- return UWX_OK;
-}
-
-
-/* uwx_decode_prologue: Decodes a prologue region */
-
-int uwx_decode_prologue(
- struct uwx_env *env,
- struct uwx_bstream *bstream,
- struct uwx_scoreboard *scoreboard,
- struct uwx_rhdr *rhdr,
- int ip_slot)
-{
- int status;
- int reg;
- int mask;
- int b0;
- int b1;
- int b2;
- int b3;
- int r;
- int t;
- int i;
- uint64_t parm1;
- uint64_t parm2;
- uint64_t newrstate[NSBREG];
- int tspill[NSBREG];
- int priunat_mem_rstate;
- int t_priunat_mem;
- unsigned int gr_mem_mask;
- unsigned int br_mem_mask;
- unsigned int fr_mem_mask;
- unsigned int gr_gr_mask;
- unsigned int br_gr_mask;
- int ngr;
- int nbr;
- int nfr;
- unsigned int spill_base;
- unsigned int gr_base;
- unsigned int br_base;
- unsigned int fr_base;
-
- /* Initialize an array of register states from the current */
- /* scoreboard, along with a parallel array of spill times. */
- /* We use this as a temporary scoreboard, then update the */
- /* real scoreboard at the end of the procedure. */
- /* We initialize the spill time to (rhdr.rlen - 1) so that */
- /* spills without a "when" descriptor will take effect */
- /* at the end of the prologue region. */
- /* (Boundary condition: all actions in a zero-length prologue */
- /* will appear to have happened in the instruction slot */
- /* immediately preceding the prologue.) */
-
- for (i = 0; i < env->nsbreg; i++) {
- newrstate[i] = scoreboard->rstate[i];
- tspill[i] = rhdr->rlen - 1;
- }
- priunat_mem_rstate = UWX_DISP_NONE;
- t_priunat_mem = rhdr->rlen - 1;
-
- fr_mem_mask = 0;
- gr_mem_mask = 0;
- br_mem_mask = 0;
- gr_gr_mask = 0;
- br_gr_mask = 0;
- nfr = 127;
- ngr = 127;
- nbr = 127;
- spill_base = 0;
-
- /* If prologue_gr header record supplied mask and grsave, */
- /* record these in the scoreboard. */
-
- reg = rhdr->grsave;
- mask = rhdr->mask;
- if (mask & 0x8) {
- newrstate[SBREG_RP] = UWX_DISP_REG(UWX_REG_GR(reg));
- reg++;
- }
- if (mask & 0x4) {
- newrstate[SBREG_PFS] = UWX_DISP_REG(UWX_REG_GR(reg));
- reg++;
- }
- if (mask & 0x2) {
- newrstate[SBREG_PSP] = UWX_DISP_REG(UWX_REG_GR(reg));
- reg++;
- }
- if (mask & 0x1) {
- newrstate[SBREG_PREDS] = UWX_DISP_REG(UWX_REG_GR(reg));
- reg++;
- }
-
- /* Read prologue descriptor records until */
- /* we hit another region header. */
-
- for (;;) {
-
- b0 = uwx_get_byte(bstream);
-
- if (b0 < 0x80) {
- /* Return the last byte read to the byte stream, since it's */
- /* really the first byte of the next region header record. */
- if (b0 >= 0)
- (void) uwx_unget_byte(bstream, b0);
- break;
- }
-
- switch ((b0 & 0x70) >> 4) {
-
- case 0: /* 1000 xxxx */
- case 1: /* 1001 xxxx */
- /* Format P1 (br_mem) */
- TRACE_I_DECODE_PROLOGUE_1("(P1) br_mem", b0)
- br_mem_mask = b0 & 0x1f;
- break;
-
- case 2: /* 1010 xxxx */
- /* Format P2 (br_gr) */
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_PROLOGUE_2("(P2) br_gr", b0, b1)
- mask = ((b0 & 0x0f) << 1) | (b1 >> 7);
- reg = b1 & 0x7f;
- br_gr_mask = mask;
- for (i = 0; i < NSB_BR && mask != 0; i++) {
- if (mask & 0x01) {
- newrstate[SBREG_BR + i] = UWX_DISP_REG(UWX_REG_GR(reg));
- reg++;
- }
- mask = mask >> 1;
- }
- break;
-
- case 3: /* 1011 xxxx */
- /* Format P3 */
- if (b0 < 0xb8) {
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- r = ((b0 & 0x7) << 1) | (b1 >> 7);
- reg = b1 & 0x7f;
- switch (r) {
- case 0: /* psp_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) psp_gr", b0, b1)
- newrstate[SBREG_PSP] = UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- case 1: /* rp_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) rp_gr", b0, b1)
- newrstate[SBREG_RP] = UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- case 2: /* pfs_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) pfs_gr", b0, b1)
- newrstate[SBREG_PFS] = UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- case 3: /* preds_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) preds_gr", b0, b1)
- newrstate[SBREG_PREDS] =
- UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- case 4: /* unat_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) unat_gr", b0, b1)
- newrstate[SBREG_UNAT] =
- UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- case 5: /* lc_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) lc_gr", b0, b1)
- newrstate[SBREG_LC] =
- UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- case 6: /* rp_br */
- TRACE_I_DECODE_PROLOGUE_2("(P3) rp_br", b0, b1)
- scoreboard->rstate[SBREG_RP] =
- UWX_DISP_REG(UWX_REG_BR(reg));
- if (newrstate[SBREG_RP] ==
- UWX_DISP_REG(UWX_REG_BR(0)))
- newrstate[SBREG_RP] =
- UWX_DISP_REG(UWX_REG_BR(reg));
- break;
- case 7: /* rnat_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) rnat_gr", b0, b1)
- newrstate[SBREG_RNAT] =
- UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- case 8: /* bsp_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) bsp_gr", b0, b1)
- /* Don't track BSP yet */
- return UWX_ERR_CANTUNWIND;
- /* break; */
- case 9: /* bspstore_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) bspstore_gr", b0, b1)
- /* Don't track BSPSTORE yet */
- return UWX_ERR_CANTUNWIND;
- /* break; */
- case 10: /* fpsr_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) fpsr_gr", b0, b1)
- newrstate[SBREG_FPSR] =
- UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- case 11: /* priunat_gr */
- TRACE_I_DECODE_PROLOGUE_2("(P3) priunat_gr", b0, b1)
- newrstate[SBREG_PRIUNAT] =
- UWX_DISP_REG(UWX_REG_GR(reg));
- break;
- default:
- TRACE_I_DECODE_PROLOGUE_2("(P3) ??", b0, b1)
- return UWX_ERR_BADUDESC;
- }
- }
-
- /* Format P4 (spill_mask) */
- else if (b0 == 0xb8) {
- TRACE_I_DECODE_PROLOGUE_1("(P4) spill_mask", b0)
- /* The spill_mask descriptor is followed by */
- /* an imask field whose length is determined */
- /* by the region length: there are two mask */
- /* bits per instruction slot in the region. */
- /* We decode these bits two at a time, counting */
- /* the number of FRs, GRs, and BRs that are */
- /* saved up to the slot of interest. Other */
- /* descriptors describe which sets of these */
- /* registers are spilled, and we put those */
- /* two pieces of information together at the */
- /* end of the main loop. */
- t = 0;
- nfr = 0;
- ngr = 0;
- nbr = 0;
- while (t < rhdr->rlen) {
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- for (i = 0; i < 4 && (t + i) < ip_slot; i++) {
- switch (b1 & 0xc0) {
- case 0x00: break;
- case 0x40: nfr++; break;
- case 0x80: ngr++; break;
- case 0xc0: nbr++; break;
- }
- b1 = b1 << 2;
- }
- t += 4;
- }
- }
-
- /* Format P5 (frgr_mem) */
- else if (b0 == 0xb9) {
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- b3 = uwx_get_byte(bstream);
- if (b3 < 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_PROLOGUE_4("(P5) frgr_mem", b0, b1, b2, b3)
- gr_mem_mask = b1 >> 4;
- fr_mem_mask = ((b1 & 0x0f) << 16) | (b2 << 8) | b3;
- }
-
- /* Invalid descriptor record */
- else {
- TRACE_I_DECODE_PROLOGUE_1("(?)", b0)
- return UWX_ERR_BADUDESC;
- }
-
- break;
-
- case 4: /* 1100 xxxx */
- /* Format P6 (fr_mem) */
- TRACE_I_DECODE_PROLOGUE_1("(P6) fr_mem", b0)
- fr_mem_mask = b0 & 0x0f;
- break;
-
- case 5: /* 1101 xxxx */
- /* Format P6 (gr_mem) */
- TRACE_I_DECODE_PROLOGUE_1("(P6) gr_mem", b0)
- gr_mem_mask = b0 & 0x0f;
- break;
-
- case 6: /* 1110 xxxx */
- /* Format P7 */
- r = b0 & 0xf;
- status = uwx_get_uleb128(bstream, &parm1);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- switch (r) {
- case 0: /* mem_stack_f */
- status = uwx_get_uleb128(bstream, &parm2);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_PROLOGUE_1LL("(P7) mem_stack_f", b0, parm1, parm2)
- newrstate[SBREG_PSP] = UWX_DISP_SPPLUS(parm2 * 16);
- tspill[SBREG_PSP] = (int) parm1;
- break;
- case 1: /* mem_stack_v */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) mem_stack_v", b0, parm1)
- tspill[SBREG_PSP] = (int) parm1;
- break;
- case 2: /* spill_base */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) spill_base", b0, parm1)
- spill_base = 4 * (unsigned int) parm1;
- break;
- case 3: /* psp_sprel */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) psp_sprel", b0, parm1)
- newrstate[SBREG_PSP] = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 4: /* rp_when */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) rp_when", b0, parm1)
- tspill[SBREG_RP] = (int) parm1;
- break;
- case 5: /* rp_psprel */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) rp_psprel", b0, parm1)
- newrstate[SBREG_RP] = UWX_DISP_PSPREL(parm1 * 4);
- break;
- case 6: /* pfs_when */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) pfs_when", b0, parm1)
- tspill[SBREG_PFS] = (int) parm1;
- break;
- case 7: /* pfs_psprel */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) pfs_psprel", b0, parm1)
- newrstate[SBREG_PFS] = UWX_DISP_PSPREL(parm1 * 4);
- break;
- case 8: /* preds_when */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) preds_when", b0, parm1)
- tspill[SBREG_PREDS] = (int) parm1;
- break;
- case 9: /* preds_psprel */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) preds_psprel", b0, parm1)
- newrstate[SBREG_PREDS] = UWX_DISP_PSPREL(parm1 * 4);
- break;
- case 10: /* lc_when */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) lc_when", b0, parm1)
- tspill[SBREG_LC] = (int) parm1;
- break;
- case 11: /* lc_psprel */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) lc_psprel", b0, parm1)
- newrstate[SBREG_LC] = UWX_DISP_PSPREL(parm1 * 4);
- break;
- case 12: /* unat_when */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) unat_when", b0, parm1)
- tspill[SBREG_UNAT] = (int) parm1;
- break;
- case 13: /* unat_psprel */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) unat_psprel", b0, parm1)
- newrstate[SBREG_UNAT] = UWX_DISP_PSPREL(parm1 * 4);
- break;
- case 14: /* fpsr_when */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) fpsr_when", b0, parm1)
- tspill[SBREG_FPSR] = (int) parm1;
- break;
- case 15: /* fpsr_psprel */
- TRACE_I_DECODE_PROLOGUE_1L("(P7) fpsr_psprel", b0, parm1)
- newrstate[SBREG_FPSR] = UWX_DISP_PSPREL(parm1 * 4);
- break;
- }
- break;
-
- case 7: /* 1111 xxxx */
- /* Format P8 */
- if (b0 == 0xf0) {
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- status = uwx_get_uleb128(bstream, &parm1);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- switch (b1) {
- case 1: /* rp_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) rp_sprel", b0, b1, parm1)
- newrstate[SBREG_RP] = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 2: /* pfs_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) pfs_sprel", b0, b1, parm1)
- newrstate[SBREG_PFS] = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 3: /* preds_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) preds_sprel", b0, b1, parm1)
- newrstate[SBREG_PREDS] = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 4: /* lc_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) lc_sprel", b0, b1, parm1)
- newrstate[SBREG_LC] = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 5: /* unat_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) unat_sprel", b0, b1, parm1)
- newrstate[SBREG_UNAT] = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 6: /* fpsr_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) fpsr_sprel", b0, b1, parm1)
- newrstate[SBREG_FPSR] = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 7: /* bsp_when */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) bsp_when", b0, b1, parm1)
- /* Don't track BSP yet */
- return UWX_ERR_CANTUNWIND;
- /* break; */
- case 8: /* bsp_psprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) bsp_psprel", b0, b1, parm1)
- /* Don't track BSP yet */
- return UWX_ERR_CANTUNWIND;
- /* break; */
- case 9: /* bsp_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) bsp_sprel", b0, b1, parm1)
- /* Don't track BSP yet */
- return UWX_ERR_CANTUNWIND;
- /* break; */
- case 10: /* bspstore_when */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) bspstore_when", b0, b1, parm1)
- /* Don't track BSP yet */
- return UWX_ERR_CANTUNWIND;
- /* break; */
- case 11: /* bspstore_psprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) bspstore_psprel", b0, b1, parm1)
- /* Don't track BSP yet */
- return UWX_ERR_CANTUNWIND;
- /* break; */
- case 12: /* bspstore_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) bspstore_sprel", b0, b1, parm1)
- /* Don't track BSP yet */
- return UWX_ERR_CANTUNWIND;
- /* break; */
- case 13: /* rnat_when */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) rnat_when", b0, b1, parm1)
- tspill[SBREG_RNAT] = (int) parm1;
- break;
- case 14: /* rnat_psprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) rnat_psprel", b0, b1, parm1)
- newrstate[SBREG_RNAT] = UWX_DISP_PSPREL(parm1 * 4);
- break;
- case 15: /* rnat_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) rnat_sprel", b0, b1, parm1)
- newrstate[SBREG_RNAT] = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 16: /* priunat_when_gr */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) priunat_when_gr", b0, b1, parm1)
- tspill[SBREG_PRIUNAT] = (int) parm1;
- break;
- case 17: /* priunat_psprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) priunat_psprel", b0, b1, parm1)
- priunat_mem_rstate = UWX_DISP_PSPREL(parm1 * 4);
- break;
- case 18: /* priunat_sprel */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) priunat_sprel", b0, b1, parm1)
- priunat_mem_rstate = UWX_DISP_SPREL(parm1 * 4);
- break;
- case 19: /* priunat_when_mem */
- TRACE_I_DECODE_PROLOGUE_2L("(P8) priunat_when_mem", b0, b1, parm1)
- t_priunat_mem = (int) parm1;
- break;
- default:
- TRACE_I_DECODE_PROLOGUE_2L("(P8) ??", b0, b1, parm1)
- return UWX_ERR_BADUDESC;
- }
- }
-
- /* Format P9 (gr_gr) */
- else if (b0 == 0xf1) {
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_PROLOGUE_3("(P9) gr_gr", b0, b1, b2)
- mask = b1 & 0x0f;
- reg = b2 & 0x7f;
- gr_gr_mask = mask;
- for (i = 0; i < NSB_GR && mask != 0; i++) {
- if (mask & 0x01) {
- newrstate[SBREG_GR + i] =
- UWX_DISP_REG(UWX_REG_GR(reg));
- reg++;
- }
- mask = mask >> 1;
- }
- }
-
- /* Format X1 */
- else if (b0 == 0xf9) {
- TRACE_I_DECODE_PROLOGUE_1("(X1)", b0)
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- /* Don't support X-format descriptors yet */
- return UWX_ERR_CANTUNWIND;
- }
-
- /* Format X2 */
- else if (b0 == 0xfa) {
- TRACE_I_DECODE_PROLOGUE_1("(X2)", b0)
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- /* Don't support X-format descriptors yet */
- return UWX_ERR_CANTUNWIND;
- }
-
- /* Format X3 */
- else if (b0 == 0xfb) {
- TRACE_I_DECODE_PROLOGUE_1("(X3)", b0)
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- /* Don't support X-format descriptors yet */
- return UWX_ERR_CANTUNWIND;
- }
-
- /* Format X4 */
- else if (b0 == 0xfc) {
- TRACE_I_DECODE_PROLOGUE_1("(X4)", b0)
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- b3 = uwx_get_byte(bstream);
- if (b3 < 0)
- return UWX_ERR_BADUDESC;
- /* Don't support X-format descriptors yet */
- return UWX_ERR_CANTUNWIND;
- }
-
- /* Format P10 */
- else if (b0 == 0xff) {
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_PROLOGUE_3("(P10) abi", b0, b1, b2)
- env->abi_context = (b1 << 8) | b2;
- return UWX_ABI_FRAME;
- }
-
- /* Invalid descriptor record */
- else {
- TRACE_I_DECODE_PROLOGUE_1("(?)", b0)
- return UWX_ERR_BADUDESC;
- }
- break;
- }
- }
-
- /* Process the masks of spilled GRs, FRs, and BRs to */
- /* determine when and where each register was saved. */
-
- fr_base = spill_base + 16 * uwx_count_ones(fr_mem_mask);
- br_base = fr_base + 8 * uwx_count_ones(br_mem_mask);
- gr_base = br_base + 8 * uwx_count_ones(gr_mem_mask);
- TRACE_I_DECODE_PROLOGUE_SPILL_BASE(spill_base)
- TRACE_I_DECODE_PROLOGUE_MASKS(gr_mem_mask, gr_gr_mask)
- TRACE_I_DECODE_PROLOGUE_NSPILL(ngr)
- for (i = 0; ngr > 0 && i <= NSB_GR; i++) {
- if (gr_mem_mask & 1) {
- newrstate[SBREG_GR + i] = UWX_DISP_PSPREL(gr_base);
- tspill[SBREG_GR + i] = 0;
- gr_base -= 8;
- ngr--;
- }
- else if (gr_gr_mask & 1) {
- tspill[SBREG_GR + i] = 0;
- ngr--;
- }
- gr_gr_mask = gr_gr_mask >> 1;
- gr_mem_mask = gr_mem_mask >> 1;
- }
- for (i = 0; nbr > 0 && i <= NSB_BR; i++) {
- if (br_mem_mask & 1) {
- newrstate[SBREG_BR + i] = UWX_DISP_PSPREL(br_base);
- tspill[SBREG_BR + i] = 0;
- br_base -= 8;
- nbr--;
- }
- else if (br_gr_mask & 1) {
- tspill[SBREG_BR + i] = 0;
- nbr--;
- }
- br_gr_mask = br_gr_mask >> 1;
- br_mem_mask = br_mem_mask >> 1;
- }
- for (i = 0; nfr > 0 && i <= NSB_FR; i++) {
- if (fr_mem_mask & 1) {
- newrstate[SBREG_FR + i] = UWX_DISP_PSPREL(fr_base);
- tspill[SBREG_FR + i] = 0;
- fr_base -= 16;
- nfr--;
- }
- fr_mem_mask = fr_mem_mask >> 1;
- }
-
- /* Update the scoreboard. */
-
- for (i = 0; i < env->nsbreg; i++) {
- if (ip_slot >= rhdr->rlen || ip_slot > tspill[i])
- scoreboard->rstate[i] = newrstate[i];
- }
- if (priunat_mem_rstate != UWX_DISP_NONE && ip_slot > t_priunat_mem)
- scoreboard->rstate[SBREG_PRIUNAT] = priunat_mem_rstate;
-
- return UWX_OK;
-}
-
-int uwx_count_ones(unsigned int mask)
-{
- mask = (mask & 0x55555555) + ((mask & 0xaaaaaaaa) >> 1);
- mask = (mask & 0x33333333) + ((mask & 0xcccccccc) >> 2);
- mask = (mask & 0x0f0f0f0f) + ((mask & 0xf0f0f0f0) >> 4);
- mask = (mask & 0x00ff00ff) + ((mask & 0xff00ff00) >> 8);
- return (mask & 0x0000ffff) + ((mask & 0xffff0000) >> 16);
-}
-
-/* uwx_decode_body: Decodes a body region */
-
-int uwx_decode_body(
- struct uwx_env *env,
- struct uwx_bstream *bstream,
- struct uwx_scoreboard *scoreboard,
- struct uwx_rhdr *rhdr,
- int ip_slot)
-{
- int status;
- int b0;
- int b1;
- int b2;
- int b3;
- int label;
- int ecount;
- int i;
- uint64_t parm1;
- uint64_t parm2;
- uint64_t newrstate[NSBREG];
- int tspill[NSBREG];
- int t_sp_restore;
-
- /* Initialize an array of register states from the current */
- /* scoreboard, along with a parallel array of spill times. */
- /* We use this as a temporary scoreboard, then update the */
- /* real scoreboard at the end of the procedure. */
- /* We initialize the spill time to (rhdr.rlen - 1) so that */
- /* spills without a "when" descriptor will take effect */
- /* at the end of the prologue region. */
- /* (Boundary condition: all actions in a zero-length prologue */
- /* will appear to have happened in the instruction slot */
- /* immediately preceding the prologue.) */
-
- for (i = 0; i < env->nsbreg; i++) {
- newrstate[i] = scoreboard->rstate[i];
- tspill[i] = rhdr->rlen - 1;
- }
- t_sp_restore = rhdr->rlen - 1;
-
- /* Read body descriptor records until */
- /* we hit another region header. */
-
- for (;;) {
-
- b0 = uwx_get_byte(bstream);
-
- if (b0 < 0x80) {
- /* Return the last byte read to the byte stream, since it's */
- /* really the first byte of the next region header record. */
- if (b0 >= 0)
- (void) uwx_unget_byte(bstream, b0);
- break;
- }
-
- /* Format B1 (label_state) */
- if (b0 < 0xa0) {
- TRACE_I_DECODE_BODY_1("(B1) label_state", b0)
- label = b0 & 0x1f;
- status = uwx_label_scoreboard(env, scoreboard, label);
- if (status != UWX_OK)
- return (status);
- }
-
- /* Format B1 (copy_state) */
- else if (b0 < 0xc0) {
- TRACE_I_DECODE_BODY_1("(B1) copy_state", b0)
- label = b0 & 0x1f;
- status = uwx_copy_scoreboard(env, scoreboard, label);
- if (status != UWX_OK)
- return (status);
- for (i = 0; i < env->nsbreg; i++) {
- newrstate[i] = scoreboard->rstate[i];
- tspill[i] = rhdr->rlen;
- }
- }
-
- /* Format B2 (epilogue) */
- else if (b0 < 0xe0) {
- ecount = b0 & 0x1f;
- status = uwx_get_uleb128(bstream, &parm1);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_BODY_1L("(B2) epilogue", b0, parm1)
- rhdr->ecount = ecount + 1;
- t_sp_restore = rhdr->rlen - (unsigned int) parm1;
- }
-
- /* Format B3 (epilogue) */
- else if (b0 == 0xe0) {
- status = uwx_get_uleb128(bstream, &parm1);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- status = uwx_get_uleb128(bstream, &parm2);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_BODY_1LL("(B3) epilogue", b0, parm1, parm2)
- t_sp_restore = rhdr->rlen - (unsigned int) parm1;
- rhdr->ecount = (unsigned int) parm2 + 1;
- }
-
- /* Format B4 (label_state) */
- else if (b0 == 0xf0) {
- status = uwx_get_uleb128(bstream, &parm1);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_BODY_1L("(B4) label_state", b0, parm1)
- label = (int) parm1;
- status = uwx_label_scoreboard(env, scoreboard, label);
- if (status != UWX_OK)
- return (status);
- }
-
- /* Format B4 (copy_state) */
- else if (b0 == 0xf8) {
- status = uwx_get_uleb128(bstream, &parm1);
- if (status != 0)
- return UWX_ERR_BADUDESC;
- TRACE_I_DECODE_BODY_1L("(B4) copy_state", b0, parm1)
- label = (int) parm1;
- status = uwx_copy_scoreboard(env, scoreboard, label);
- if (status != UWX_OK)
- return (status);
- for (i = 0; i < env->nsbreg; i++) {
- newrstate[i] = scoreboard->rstate[i];
- tspill[i] = rhdr->rlen;
- }
- }
-
- /* Format X1 */
- else if (b0 == 0xf9) {
- TRACE_I_DECODE_BODY_1("(X1)", b0)
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- /* Don't support X-format descriptors yet */
- return UWX_ERR_CANTUNWIND;
- }
-
- /* Format X2 */
- else if (b0 == 0xfa) {
- TRACE_I_DECODE_BODY_1("(X2)", b0)
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- /* Don't support X-format descriptors yet */
- return UWX_ERR_CANTUNWIND;
- }
-
- /* Format X3 */
- else if (b0 == 0xfb) {
- TRACE_I_DECODE_BODY_1("(X3)", b0)
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- /* Don't support X-format descriptors yet */
- return UWX_ERR_CANTUNWIND;
- }
-
- /* Format X4 */
- else if (b0 == 0xfc) {
- TRACE_I_DECODE_BODY_1("(X4)", b0)
- b1 = uwx_get_byte(bstream);
- if (b1 < 0)
- return UWX_ERR_BADUDESC;
- b2 = uwx_get_byte(bstream);
- if (b2 < 0)
- return UWX_ERR_BADUDESC;
- b3 = uwx_get_byte(bstream);
- if (b3 < 0)
- return UWX_ERR_BADUDESC;
- /* Don't support X-format descriptors yet */
- return UWX_ERR_CANTUNWIND;
- }
-
- /* Invalid descriptor record */
- else {
- TRACE_I_DECODE_BODY_1("(?)", b0)
- return UWX_ERR_BADUDESC;
- }
- }
-
- /* Update the scoreboard. */
-
- for (i = 0; i < env->nsbreg; i++) {
- if (ip_slot > tspill[i])
- scoreboard->rstate[i] = newrstate[i];
- }
-
- /* If we've passed the point in the epilogue where sp */
- /* is restored, update the scoreboard entry for PSP */
- /* and reset any entries for registers saved in memory. */
-
- if (rhdr->ecount > 0 && ip_slot > t_sp_restore) {
- scoreboard->rstate[SBREG_PSP] = UWX_DISP_SPPLUS(0);
- for (i = 0; i < env->nsbreg; i++) {
- if (UWX_GET_DISP_CODE(scoreboard->rstate[i]) == UWX_DISP_SPREL(0) ||
- UWX_GET_DISP_CODE(scoreboard->rstate[i]) == UWX_DISP_PSPREL(0))
- scoreboard->rstate[i] = UWX_DISP_NONE;
- }
- }
-
- return UWX_OK;
-}
-
diff --git a/sys/contrib/ia64/libuwx/src/uwx_uinfo.h b/sys/contrib/ia64/libuwx/src/uwx_uinfo.h
deleted file mode 100644
index 1bb477c..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_uinfo.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-struct uwx_utable_entry;
-
-extern int uwx_decode_uinfo(
- struct uwx_env *env,
- struct uwx_utable_entry *uentry,
- uint64_t **rstatep);
-
-extern int uwx_default_rstate(
- struct uwx_env *env,
- uint64_t **rstatep);
-
-/* Region header record */
-
-struct uwx_rhdr {
- int is_prologue; /* true if prologue region */
- unsigned int rlen; /* length of region (# instruction slots) */
- int mask; /* register save mask */
- int grsave; /* first gr used for saving */
- unsigned int ecount; /* epilogue count (0 = no epilogue) */
- unsigned int epilogue_t; /* epilogue "t" value */
-};
-
-struct uwx_bstream;
-
-extern int uwx_decode_rhdr(
- struct uwx_env *env,
- struct uwx_bstream *bstream,
- struct uwx_rhdr *rhdr);
-
-extern int uwx_decode_prologue(
- struct uwx_env *env,
- struct uwx_bstream *bstream,
- struct uwx_scoreboard *scoreboard,
- struct uwx_rhdr *rhdr,
- int ip_slot);
-
-extern int uwx_decode_body(
- struct uwx_env *env,
- struct uwx_bstream *bstream,
- struct uwx_scoreboard *scoreboard,
- struct uwx_rhdr *rhdr,
- int ip_slot);
diff --git a/sys/contrib/ia64/libuwx/src/uwx_utable.c b/sys/contrib/ia64/libuwx/src/uwx_utable.c
deleted file mode 100644
index 908a3ae..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_utable.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "uwx_env.h"
-#include "uwx_utable.h"
-#include "uwx_swap.h"
-#include "uwx_trace.h"
-
-/*
- * uwx_utable.c
- *
- * This file contains the routines for searching an unwind table.
- * The main entry point, uwx_search_utable(), gets the
- * necessary information from the lookup ip callback's result
- * vector, determines whether the table is 32-bit or 64-bit,
- * then invokes the binary search routine for that format.
- */
-
-
-/* Forward declarations */
-
-int uwx_search_utable32(
- struct uwx_env *env,
- uint32_t ip,
- uint32_t text_base,
- uint32_t unwind_start,
- uint32_t unwind_end,
- struct uwx_utable_entry *uentry);
-
-int uwx_search_utable64(
- struct uwx_env *env,
- uint64_t ip,
- uint64_t text_base,
- uint64_t unwind_start,
- uint64_t unwind_end,
- struct uwx_utable_entry *uentry);
-
-
-/* uwx_search_utable: Searches an unwind table for IP in current context */
-
-int uwx_search_utable(
- struct uwx_env *env,
- uint64_t ip,
- uint64_t *uvec,
- struct uwx_utable_entry *uentry)
-{
- uint64_t text_base;
- uint64_t unwind_flags;
- uint64_t unwind_start;
- uint64_t unwind_end;
- int keys;
- int status;
-
- /* Get unwind table information from the result vector. */
- /* Make sure all three required values are given. */
-
- keys = 0;
- text_base = 0;
- unwind_flags = 0;
- unwind_start = 0;
- unwind_end = 0;
- while (*uvec != 0) {
- switch ((int)*uvec++) {
- case UWX_KEY_TBASE:
- keys |= 1;
- env->text_base = text_base = *uvec++;
- break;
- case UWX_KEY_UFLAGS:
- unwind_flags = *uvec++;
- break;
- case UWX_KEY_USTART:
- keys |= 2;
- unwind_start = *uvec++;
- break;
- case UWX_KEY_UEND:
- keys |= 4;
- unwind_end = *uvec++;
- break;
- case UWX_KEY_GP:
- uwx_set_reg(env, UWX_REG_GP, *uvec++);
- break;
- default:
- return UWX_ERR_BADKEY;
- }
- }
- if (keys != 7)
- return UWX_ERR_BADKEY;
-
- /* Copy the unwind flags into the unwind entry. */
- /* (uwx_decode_uinfo needs to know whether it's 32-bit or 64-bit.) */
-
- uentry->unwind_flags = unwind_flags;
-
- /* Call the appropriate binary search routine. */
-
- if (unwind_flags & UNWIND_TBL_32BIT)
- status = uwx_search_utable32(env,
- (uint32_t) ip,
- (uint32_t) text_base,
- (uint32_t) unwind_start,
- (uint32_t) unwind_end,
- uentry);
- else
- status = uwx_search_utable64(env,
- ip, text_base, unwind_start, unwind_end, uentry);
-
- return status;
-}
-
-
-/* uwx_search_utable32: Binary search of 32-bit unwind table */
-
-#define COPYIN_UINFO_4(dest, src) \
- (env->remote? \
- (*env->copyin)(UWX_COPYIN_UINFO, (dest), (src), \
- WORDSZ, env->cb_token) : \
- (*(uint32_t *)(dest) = *(uint32_t *)(src), WORDSZ) )
-
-#define SWIZZLE(x) (((uint64_t)((x) & 0xc0000000) << 31) | (x))
-
-int uwx_search_utable32(
- struct uwx_env *env,
- uint32_t ip,
- uint32_t text_base,
- uint32_t unwind_start,
- uint32_t unwind_end,
- struct uwx_utable_entry *uentry)
-{
- int lb;
- int ub;
- int mid;
- int len;
- uint32_t code_start;
- uint32_t code_end;
- uint32_t unwind_info;
-
- /* Since the unwind table uses segment-relative offsets, convert */
- /* the IP in the current context to a segment-relative offset. */
-
- ip -= text_base;
-
- TRACE_T_SEARCH32(ip)
-
- /* Standard binary search. */
- /* Might modify this to do interpolation in the future. */
-
- lb = 0;
- ub = (unwind_end - unwind_start) / (3 * WORDSZ);
- mid = 0;
- while (ub > lb) {
- mid = (lb + ub) / 2;
- len = COPYIN_UINFO_4((char *)&code_start,
- (uintptr_t)(unwind_start+mid*3*WORDSZ));
- len += COPYIN_UINFO_4((char *)&code_end,
- (uintptr_t)(unwind_start+mid*3*WORDSZ+WORDSZ));
- if (len != 2 * WORDSZ)
- return UWX_ERR_COPYIN_UTBL;
- if (env->byte_swap) {
- uwx_swap4(&code_start);
- uwx_swap4(&code_end);
- }
- TRACE_T_BINSEARCH32(lb, ub, mid, code_start, code_end)
- if (ip >= code_end)
- lb = mid + 1;
- else if (ip < code_start)
- ub = mid;
- else
- break;
- }
- if (ub <= lb)
- return UWX_ERR_NOUENTRY;
- len = COPYIN_UINFO_4((char *)&unwind_info,
- (uintptr_t)(unwind_start+mid*3*WORDSZ+2*WORDSZ));
- if (len != WORDSZ)
- return UWX_ERR_COPYIN_UTBL;
- if (env->byte_swap)
- uwx_swap4(&unwind_info);
- uentry->ptr_size = WORDSZ;
- uentry->code_start = SWIZZLE(text_base + code_start);
- uentry->code_end = SWIZZLE(text_base + code_end);
- uentry->unwind_info = SWIZZLE(text_base + unwind_info);
- return UWX_OK;
-}
-
-
-/* uwx_search_utable64: Binary search of 64-bit unwind table */
-
-#define COPYIN_UINFO_8(dest, src) \
- (env->remote? \
- (*env->copyin)(UWX_COPYIN_UINFO, (dest), (src), \
- DWORDSZ, env->cb_token) : \
- (*(uint64_t *)(intptr_t)(dest) = *(uint64_t *)(intptr_t)(src), DWORDSZ) )
-
-int uwx_search_utable64(
- struct uwx_env *env,
- uint64_t ip,
- uint64_t text_base,
- uint64_t unwind_start,
- uint64_t unwind_end,
- struct uwx_utable_entry *uentry)
-{
- int lb;
- int ub;
- int mid;
- int len;
- uint64_t code_start;
- uint64_t code_end;
- uint64_t unwind_info;
-
- /* Since the unwind table uses segment-relative offsets, convert */
- /* the IP in the current context to a segment-relative offset. */
-
- ip -= text_base;
-
- /* Standard binary search. */
- /* Might modify this to do interpolation in the future. */
-
- lb = 0;
- ub = (unwind_end - unwind_start) / (3 * DWORDSZ);
- mid = 0;
- while (ub > lb) {
- mid = (lb + ub) / 2;
- len = COPYIN_UINFO_8((char *)&code_start, unwind_start+mid*3*DWORDSZ);
- len += COPYIN_UINFO_8((char *)&code_end,
- unwind_start+mid*3*DWORDSZ+DWORDSZ);
- if (len != 2 * DWORDSZ)
- return UWX_ERR_COPYIN_UTBL;
- if (env->byte_swap) {
- uwx_swap8(&code_start);
- uwx_swap8(&code_end);
- }
- if (ip >= code_end)
- lb = mid + 1;
- else if (ip < code_start)
- ub = mid;
- else
- break;
- }
- if (ub <= lb)
- return UWX_ERR_NOUENTRY;
- len = COPYIN_UINFO_8((char *)&unwind_info,
- unwind_start+mid*3*DWORDSZ+2*DWORDSZ);
- if (len != DWORDSZ)
- return UWX_ERR_COPYIN_UTBL;
- if (env->byte_swap)
- uwx_swap8(&unwind_info);
- uentry->ptr_size = DWORDSZ;
- uentry->code_start = text_base + code_start;
- uentry->code_end = text_base + code_end;
- uentry->unwind_info = text_base + unwind_info;
- return UWX_OK;
-}
diff --git a/sys/contrib/ia64/libuwx/src/uwx_utable.h b/sys/contrib/ia64/libuwx/src/uwx_utable.h
deleted file mode 100644
index 69f1cc7..0000000
--- a/sys/contrib/ia64/libuwx/src/uwx_utable.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-Copyright (c) 2003-2006 Hewlett-Packard Development Company, L.P.
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-struct uwx_utable_entry {
- uint64_t ptr_size;
- uint64_t code_start;
- uint64_t code_end;
- uint64_t unwind_info;
- uint64_t unwind_flags;
-};
-
-extern int uwx_search_utable(
- struct uwx_env *env,
- uint64_t ip,
- uint64_t *uvec,
- struct uwx_utable_entry *uentry);
diff --git a/sys/contrib/ia64/libuwx/test/Makefile b/sys/contrib/ia64/libuwx/test/Makefile
deleted file mode 100644
index 11251d4..0000000
--- a/sys/contrib/ia64/libuwx/test/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-UWXINCDIR = ../include
-UWXLIBDIR = ../lib/ipf32
-
-CFLAGS = -O -I $(UWXINCDIR)
-LDFLAGS = -L $(UWXLIBDIR)
-
-dumpmyself: dumpmyself.o dump_context.o primeregs.o
- $(CC) -o dumpmyself $(LDFLAGS) dumpmyself.o dump_context.o primeregs.o -luwx
-
-
-dumpmyself.o: $(UWXINCDIR)/uwx.h $(UWXINCDIR)/uwx_self.h
-
-dump_context.o:
-primeregs.o:
diff --git a/sys/contrib/ia64/libuwx/test/dump_context.c b/sys/contrib/ia64/libuwx/test/dump_context.c
deleted file mode 100644
index db46e3d..0000000
--- a/sys/contrib/ia64/libuwx/test/dump_context.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#include <stdio.h>
-#include <inttypes.h>
-
-#define IP 0
-#define SP 1
-#define BSP 2
-#define CFM 3
-#define RP 4
-#define PSP 5
-#define PFS 6
-#define PREDS 7
-#define PRIUNAT 8
-#define AR_BSPSTORE 9
-#define AR_RNAT 10
-#define AR_UNAT 11
-#define AR_FPSR 12
-#define AR_LC 13
-#define AR_PFS 14
-#define GR4 16
-#define GR5 17
-#define GR6 18
-#define GR7 19
-#define BR1 20
-#define BR2 21
-#define BR3 22
-#define BR4 23
-#define BR5 24
-
-void dump_context(uint64_t *context)
-{
- int i, j;
- unsigned int valid;
- uint64_t val;
- static char *names[] = {
- /* 0 */ "ip", "sp", "bsp", "cfm",
- /* 4 */ "rp", "psp", "pfs", "preds",
- /* 8 */ "priunat", "ar.bspstore", "ar.rnat", "ar.unat",
- /* 12 */ "ar.fpsr", "ar.lc", "ar.pfs", "(pad)",
- /* 16 */ "gr4", "gr5", "gr6", "gr7",
- /* 20 */ "br1", "br2", "br3", "br4", "br5"
- };
- static int col1[] = {
- IP,
- SP,
- BSP,
- CFM,
- RP,
- PSP,
- PFS,
- AR_RNAT,
- AR_UNAT,
- AR_FPSR,
- AR_LC,
- AR_PFS,
- };
- static int col2[] = {
- PREDS,
- PRIUNAT,
- GR4,
- GR5,
- GR6,
- GR7,
- BR1,
- BR2,
- BR3,
- BR4,
- BR5,
- };
-
-#define NCOL1 (sizeof(col1)/sizeof(int))
-#define NCOL2 (sizeof(col2)/sizeof(int))
-#define NPRINT (NCOL1 > NCOL2 ? NCOL1 : NCOL2)
-
- valid = (unsigned int)(context[0] >> 32);
- printf(" valid_regs (%08lx):", valid);
- for (i = 0; i <= BR5; i++) {
- if (valid & 1) printf(" %s", names[i]);
- valid >>= 1;
- }
- printf("\n");
- for (i = 0; i < NPRINT; i++) {
- if (i < NCOL1) {
- j = col1[i];
- val = context[j+1];
- printf(" %-8s %08x %08x", names[j],
- (unsigned int)(val >> 32),
- (unsigned int)val);
- }
- else
- printf(" ");
- if (i < NCOL2) {
- j = col2[i];
- val = context[j+1];
- printf(" %-8s %08x %08x", names[j],
- (unsigned int)(val >> 32),
- (unsigned int)val);
- }
- putchar('\n');
- }
-}
diff --git a/sys/contrib/ia64/libuwx/test/dumpmyself.c b/sys/contrib/ia64/libuwx/test/dumpmyself.c
deleted file mode 100644
index c2b63d0..0000000
--- a/sys/contrib/ia64/libuwx/test/dumpmyself.c
+++ /dev/null
@@ -1,106 +0,0 @@
-#include "uwx.h"
-#include "uwx_self.h"
-
-struct uwx_env *uenv;
-struct uwx_self_info *cbinfo;
-
-extern int uwx_get_frame_info(struct uwx_env *uenv);
-
-extern void dump_context(uint64_t *context);
-
-extern void prime_registers();
-
-int main(int argc, char **argv)
-{
- int status;
- unsigned int *wp;
- uenv = uwx_init();
- printf("uwx_init returned %08x\n", uenv);
- cbinfo = uwx_self_init_info(uenv);
- status = uwx_register_callbacks(
- uenv,
- (intptr_t)cbinfo,
- uwx_self_copyin,
- uwx_self_lookupip);
- printf("uwx_register_callbacks returned %d\n", status);
- uwx_self_init_context(uenv);
- printf("In main():\n");
- dump_context((uint64_t *)uenv);
- prime_registers();
- uwx_free(uenv);
- return 0;
-}
-
-int func1(void)
-{
- uwx_self_init_context(uenv);
- printf("In func1():\n");
- dump_context((uint64_t *)uenv);
- return func2();
-}
-
-int func2(void)
-{
- uwx_self_init_context(uenv);
- printf("In func2():\n");
- dump_context((uint64_t *)uenv);
- return func3();
-}
-
-int func3(void)
-{
- uwx_self_init_context(uenv);
- printf("In func3():\n");
- dump_context((uint64_t *)uenv);
- return func4();
-}
-
-int func4(void)
-{
- int status;
- int foo[10];
- uint64_t *p;
- uint64_t disp;
- uint64_t val;
-
- func5(foo);
- uwx_self_init_context(uenv);
- uwx_init_history(uenv);
- printf("In func4():\n");
- dump_context((uint64_t *)uenv);
- for (;;) {
- status = uwx_step(uenv);
- if (status != UWX_OK) {
- printf("uwx_step returned %d\n", status);
- break;
- }
- status = uwx_get_reg(uenv, UWX_REG_PFS, &val);
- if (status != UWX_OK) {
- printf("uwx_get_reg returned %d\n", status);
- break;
- }
- printf("After step:\n");
- dump_context((uint64_t *)uenv);
- status = uwx_get_spill_loc(uenv, UWX_REG_IP, &disp);
- if (status == UWX_OK) {
- p = (uint64_t *)(disp & ~0x7LL);
- if ((disp & 0x7) == UWX_DISP_RSTK(0))
- printf("IP spilled to backing store %08x = %08x\n",
- (int)p, (int)(*p));
- else if ((disp & 0x7) == UWX_DISP_MSTK(0))
- printf("IP spilled to mem stack %08x = %08x\n",
- (int)p, (int)(*p));
- else if ((disp & 0x7) == UWX_DISP_REG(0))
- printf("IP found in register %08x\n", (int)disp >> 4);
- else
- printf("IP history not available\n");
- }
- }
- return 0;
-}
-
-int func5(int *foo)
-{
- foo[0] = 0;
- return 0;
-}
diff --git a/sys/contrib/ia64/libuwx/test/primeregs.s b/sys/contrib/ia64/libuwx/test/primeregs.s
deleted file mode 100644
index 12444a2..0000000
--- a/sys/contrib/ia64/libuwx/test/primeregs.s
+++ /dev/null
@@ -1,93 +0,0 @@
- .text
- .proc prime_registers
- .global prime_registers
-
-prime_registers:
-
- .prologue
-
- .save ar.pfs, r32
- alloc r32 = ar.pfs, 0, 3, 0, 0
- .save rp, r33
- mov r33 = b0
- .save ar.unat, r34
- mov r34 = ar.unat
- add r14 = -56, sp
- add r15 = -48, sp
- .fframe 80
- add sp = -80, sp
- mov r16 = b1
- ;;
-
- .save.g 0x1
- st8.spill [r14] = r4, 16
- .save.g 0x2
- st8.spill [r15] = r5, 16
- mov r17 = b2
- ;;
- .save.g 0x4
- st8.spill [r14] = r6, 16
- .save.g 0x8
- st8.spill [r15] = r7, 16
- mov r18 = b3
- ;;
- .save.b 0x1
- st8 [r14] = r16, 16
- .save.b 0x2
- st8 [r15] = r17, 16
- mov r19 = b4
- ;;
- .save.b 0x4
- st8 [r14] = r18, 16
- .save.b 0x8
- st8 [r15] = r19
- mov r20 = b5
- ;;
- .save.b 0x10
- st8 [r14] = r20
-
- .body
-
- dep.z r4 = -0x34, 16, 32
- ;;
- add r5 = 1, r4
- add r6 = 2, r4
- ;;
- add r7 = 3, r4
- ;;
-
- .global func1
- .type func1, @function
- br.call.sptk b0 = func1
- ;;
-
- add r14 = 80, sp
- add r15 = 88, sp
- ;;
- ld8 r20 = [r15], -16
- ;;
- ld8 r19 = [r14], -16
- ld8 r18 = [r15], -16
- mov b5 = r20
- ;;
- ld8 r17 = [r14], -16
- ld8 r16 = [r15], -16
- mov b4 = r19
- ;;
- ld8.fill r7 = [r14], -16
- ld8.fill r6 = [r15], -16
- mov b3 = r18
- ;;
- ld8.fill r5 = [r14]
- ld8.fill r4 = [r15]
- mov b2 = r17
- mov b1 = r16
-
- .restore sp
- mov ar.pfs = r32
- ;;
- add sp = 80, sp
- mov ar.unat = r34
- mov b0 = r33
- br.ret.sptk b0
- .endp
diff --git a/sys/dev/acpica/acpi_hpet.c b/sys/dev/acpica/acpi_hpet.c
index 4d600f5..2558648 100644
--- a/sys/dev/acpica/acpi_hpet.c
+++ b/sys/dev/acpica/acpi_hpet.c
@@ -29,7 +29,7 @@
__FBSDID("$FreeBSD$");
#include "opt_acpi.h"
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
#define DEV_APIC
#else
#include "opt_apic.h"
diff --git a/sys/dev/amr/amrio.h b/sys/dev/amr/amrio.h
index bc06a86..9c81d2d 100644
--- a/sys/dev/amr/amrio.h
+++ b/sys/dev/amr/amrio.h
@@ -108,7 +108,7 @@ struct amr_user_ioctl {
#define AMR_IO_COMMAND _IOWR('A', 0x201, struct amr_user_ioctl)
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
struct amr_user_ioctl32 {
unsigned char au_cmd[32]; /* command text from userspace */
diff --git a/sys/dev/ath/if_ath_ahb.c b/sys/dev/ath/if_ath_ahb.c
index 362257f..4511ae4 100644
--- a/sys/dev/ath/if_ath_ahb.c
+++ b/sys/dev/ath/if_ath_ahb.c
@@ -164,8 +164,7 @@ ath_ahb_attach(device_t dev)
goto bad0;
}
- /* XXX uintptr_t is a bandaid for ia64; to be fixed */
- sc->sc_st = (HAL_BUS_TAG)(uintptr_t) rman_get_bustag(psc->sc_sr);
+ sc->sc_st = (HAL_BUS_TAG) rman_get_bustag(psc->sc_sr);
sc->sc_sh = (HAL_BUS_HANDLE) rman_get_bushandle(psc->sc_sr);
/*
* Mark device invalid so any interrupts (shared or otherwise)
diff --git a/sys/dev/ath/if_ath_pci.c b/sys/dev/ath/if_ath_pci.c
index 0b1153c..dbbc411 100644
--- a/sys/dev/ath/if_ath_pci.c
+++ b/sys/dev/ath/if_ath_pci.c
@@ -173,8 +173,7 @@ ath_pci_attach(device_t dev)
device_printf(dev, "cannot map register space\n");
goto bad;
}
- /* XXX uintptr_t is a bandaid for ia64; to be fixed */
- sc->sc_st = (HAL_BUS_TAG)(uintptr_t) rman_get_bustag(psc->sc_sr);
+ sc->sc_st = (HAL_BUS_TAG) rman_get_bustag(psc->sc_sr);
sc->sc_sh = (HAL_BUS_HANDLE) rman_get_bushandle(psc->sc_sr);
/*
* Mark device invalid so any interrupts (shared or otherwise)
diff --git a/sys/dev/atkbdc/atkbdc.c b/sys/dev/atkbdc/atkbdc.c
index 460626c..9368dbe 100644
--- a/sys/dev/atkbdc/atkbdc.c
+++ b/sys/dev/atkbdc/atkbdc.c
@@ -176,8 +176,6 @@ atkbdc_configure(void)
/* XXX: tag should be passed from the caller */
#if defined(__amd64__) || defined(__i386__)
tag = X86_BUS_SPACE_IO;
-#elif defined(__ia64__)
- tag = IA64_BUS_SPACE_IO;
#elif defined(__sparc64__)
tag = &atkbdc_bst_store[0];
#else
diff --git a/sys/dev/drm/drm.h b/sys/dev/drm/drm.h
index 592b5b3..e579a16 100644
--- a/sys/dev/drm/drm.h
+++ b/sys/dev/drm/drm.h
@@ -163,7 +163,7 @@ struct drm_hw_lock {
/* This is beyond ugly, and only works on GCC. However, it allows me to use
* drm.h in places (i.e., in the X-server) where I can't use size_t. The real
* fix is to use uint32_t instead of size_t, but that fix will break existing
- * LP64 (i.e., PowerPC64, SPARC64, IA-64, Alpha, etc.) systems. That *will*
+ * LP64 (i.e., PowerPC64, SPARC64, Alpha, etc.) systems. That *will*
* eventually happen, though. I chose 'unsigned long' to be the fallback type
* because that works on all the platforms I know about. Hopefully, the
* real fix will happen before that bites us.
diff --git a/sys/dev/drm/drm_sarea.h b/sys/dev/drm/drm_sarea.h
index bf5b464..bb95759 100644
--- a/sys/dev/drm/drm_sarea.h
+++ b/sys/dev/drm/drm_sarea.h
@@ -40,8 +40,6 @@ __FBSDID("$FreeBSD$");
/* SAREA area needs to be at least a page */
#if defined(__alpha__)
#define SAREA_MAX 0x2000
-#elif defined(__ia64__)
-#define SAREA_MAX 0x10000 /* 64kB */
#else
/* Intel 830M driver needs at least 8k SAREA */
#define SAREA_MAX 0x2000UL
diff --git a/sys/dev/drm2/drm.h b/sys/dev/drm2/drm.h
index d2eac91..dff0f94 100644
--- a/sys/dev/drm2/drm.h
+++ b/sys/dev/drm2/drm.h
@@ -163,7 +163,7 @@ struct drm_hw_lock {
/* This is beyond ugly, and only works on GCC. However, it allows me to use
* drm.h in places (i.e., in the X-server) where I can't use size_t. The real
* fix is to use uint32_t instead of size_t, but that fix will break existing
- * LP64 (i.e., PowerPC64, SPARC64, IA-64, Alpha, etc.) systems. That *will*
+ * LP64 (i.e., PowerPC64, SPARC64, Alpha, etc.) systems. That *will*
* eventually happen, though. I chose 'unsigned long' to be the fallback type
* because that works on all the platforms I know about. Hopefully, the
* real fix will happen before that bites us.
diff --git a/sys/dev/drm2/drm_sarea.h b/sys/dev/drm2/drm_sarea.h
index 9f37fcb..f800cfe 100644
--- a/sys/dev/drm2/drm_sarea.h
+++ b/sys/dev/drm2/drm_sarea.h
@@ -40,8 +40,6 @@ __FBSDID("$FreeBSD$");
/* SAREA area needs to be at least a page */
#if defined(__alpha__)
#define SAREA_MAX 0x2000
-#elif defined(__ia64__)
-#define SAREA_MAX 0x10000 /* 64kB */
#else
/* Intel 830M driver needs at least 8k SAREA */
#define SAREA_MAX 0x2000UL
diff --git a/sys/dev/fb/fbreg.h b/sys/dev/fb/fbreg.h
index e13408a..0ae2d54 100644
--- a/sys/dev/fb/fbreg.h
+++ b/sys/dev/fb/fbreg.h
@@ -49,27 +49,7 @@ copyw(uint16_t *src, uint16_t *dst, size_t size)
#define bzero_io(d, c) bzero((void *)(d), (c))
#define fill_io(p, d, c) fill((p), (void *)(d), (c))
#define fillw_io(p, d, c) fillw((p), (void *)(d), (c))
-#elif defined(__ia64__) || defined(__sparc64__)
-#if defined(__ia64__)
-#include <machine/bus.h>
-#define bcopy_fromio(s, d, c) \
- bus_space_read_region_1(IA64_BUS_SPACE_MEM, s, 0, (void*)(d), c)
-#define bcopy_io(s, d, c) \
- bus_space_copy_region_1(IA64_BUS_SPACE_MEM, s, 0, d, 0, c)
-#define bcopy_toio(s, d, c) \
- bus_space_write_region_1(IA64_BUS_SPACE_MEM, d, 0, (void*)(s), c)
-#define bzero_io(d, c) \
- bus_space_set_region_1(IA64_BUS_SPACE_MEM, (intptr_t)(d), 0, 0, c)
-#define fill_io(p, d, c) \
- bus_space_set_region_1(IA64_BUS_SPACE_MEM, (intptr_t)(d), 0, p, c)
-#define fillw_io(p, d, c) \
- bus_space_set_region_2(IA64_BUS_SPACE_MEM, (intptr_t)(d), 0, p, c)
-#define readb(a) bus_space_read_1(IA64_BUS_SPACE_MEM, a, 0)
-#define readw(a) bus_space_read_2(IA64_BUS_SPACE_MEM, a, 0)
-#define writeb(a, v) bus_space_write_1(IA64_BUS_SPACE_MEM, a, 0, v)
-#define writew(a, v) bus_space_write_2(IA64_BUS_SPACE_MEM, a, 0, v)
-#define writel(a, v) bus_space_write_4(IA64_BUS_SPACE_MEM, a, 0, v)
-#endif /* __ia64__ */
+#elif defined(__sparc64__)
static __inline void
fillw(int val, uint16_t *buf, size_t size)
{
@@ -120,7 +100,7 @@ fillw(int val, uint16_t *buf, size_t size)
#define writew(a, v) (*(uint16_t*)(a) = (v))
#endif
-#else /* !__i386__ && !__amd64__ && !__ia64__ && !__sparc64__ && !__powerpc__ */
+#else /* !__i386__ && !__amd64__ && !__sparc64__ && !__powerpc__ */
#define bcopy_io(s, d, c) memcpy_io((d), (s), (c))
#define bcopy_toio(s, d, c) memcpy_toio((d), (void *)(s), (c))
#define bcopy_fromio(s, d, c) memcpy_fromio((void *)(d), (s), (c))
diff --git a/sys/dev/hwpmc/hwpmc_ia64.c b/sys/dev/hwpmc/hwpmc_ia64.c
deleted file mode 100644
index ce1caf6..0000000
--- a/sys/dev/hwpmc/hwpmc_ia64.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * Copyright (c) 2005, Joseph Koshy
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/pmc.h>
-
-#include <machine/pmc_mdep.h>
-
-struct pmc_mdep *
-pmc_md_initialize()
-{
- return NULL;
-}
-
-void
-pmc_md_finalize(struct pmc_mdep *md)
-{
- (void) md;
-}
-
-int
-pmc_save_kernel_callchain(uintptr_t *cc, int maxsamples,
- struct trapframe *tf)
-{
- (void) cc;
- (void) maxsamples;
- (void) tf;
- return (0);
-}
-
-int
-pmc_save_user_callchain(uintptr_t *cc, int maxsamples,
- struct trapframe *tf)
-{
- (void) cc;
- (void) maxsamples;
- (void) tf;
- return (0);
-}
diff --git a/sys/dev/pci/vga_pci.c b/sys/dev/pci/vga_pci.c
index 46f3250..7083582 100644
--- a/sys/dev/pci/vga_pci.c
+++ b/sys/dev/pci/vga_pci.c
@@ -43,7 +43,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sysctl.h>
#include <sys/systm.h>
-#if defined(__amd64__) || defined(__i386__) || defined(__ia64__)
+#if defined(__amd64__) || defined(__i386__)
#include <vm/vm.h>
#include <vm/pmap.h>
#endif
@@ -137,7 +137,7 @@ vga_pci_map_bios(device_t dev, size_t *size)
int rid;
struct resource *res;
-#if defined(__amd64__) || defined(__i386__) || defined(__ia64__)
+#if defined(__amd64__) || defined(__i386__)
if (vga_pci_is_boot_display(dev)) {
/*
* On x86, the System BIOS copy the default display
@@ -173,7 +173,7 @@ vga_pci_unmap_bios(device_t dev, void *bios)
return;
}
-#if defined(__amd64__) || defined(__i386__) || defined(__ia64__)
+#if defined(__amd64__) || defined(__i386__)
if (vga_pci_is_boot_display(dev)) {
/* We mapped the BIOS shadow copy located at 0xC0000. */
pmap_unmapdev((vm_offset_t)bios, VGA_PCI_BIOS_SHADOW_SIZE);
diff --git a/sys/dev/sound/pcm/pcm.h b/sys/dev/sound/pcm/pcm.h
index aab3750..a3a4ec3 100644
--- a/sys/dev/sound/pcm/pcm.h
+++ b/sys/dev/sound/pcm/pcm.h
@@ -42,7 +42,7 @@
/*
* Automatically turn on 64bit arithmetic on suitable archs
- * (amd64 64bit, ia64, etc..) for wider 32bit samples / integer processing.
+ * (amd64 64bit, etc..) for wider 32bit samples / integer processing.
*/
#if LONG_BIT >= 64
#undef SND_PCM_64
diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c
index 4dc5ca5..bd533f5 100644
--- a/sys/dev/sym/sym_hipd.c
+++ b/sys/dev/sym/sym_hipd.c
@@ -132,8 +132,6 @@ typedef u_int32_t u32;
#define MEMORY_BARRIER() do { ; } while(0)
#elif defined __powerpc__
#define MEMORY_BARRIER() __asm__ volatile("eieio; sync" : : : "memory")
-#elif defined __ia64__
-#define MEMORY_BARRIER() __asm__ volatile("mf.a; mf" : : : "memory")
#elif defined __sparc64__
#define MEMORY_BARRIER() __asm__ volatile("membar #Sync" : : : "memory")
#elif defined __arm__
diff --git a/sys/dev/txp/if_txp.c b/sys/dev/txp/if_txp.c
index f513225..e0452be 100644
--- a/sys/dev/txp/if_txp.c
+++ b/sys/dev/txp/if_txp.c
@@ -112,7 +112,7 @@ MODULE_DEPEND(txp, ether, 1, 1, 1);
* restriction by copying received frame to align the frame on
* 32bit boundary on strict-alignment architectures. This adds a
* lot of CPU burden and it effectively reduce Rx performance on
- * strict-alignment architectures(e.g. sparc64, arm, mips and ia64).
+ * strict-alignment architectures(e.g. sparc64, arm and mips).
*
* Unfortunately it seems that 3Com have no longer interests in
* releasing fixed firmware so we may have to live with these bugs.
diff --git a/sys/dev/uart/uart_cpu_ia64.c b/sys/dev/uart/uart_cpu_ia64.c
deleted file mode 100644
index 9a71e20..0000000
--- a/sys/dev/uart/uart_cpu_ia64.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*-
- * Copyright (c) 2003, 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/bus.h>
-
-#include <machine/bus.h>
-#include <machine/dig64.h>
-#include <machine/md_var.h>
-#include <machine/vmparam.h>
-
-#include <dev/uart/uart.h>
-#include <dev/uart/uart_cpu.h>
-
-bus_space_tag_t uart_bus_space_io = IA64_BUS_SPACE_IO;
-bus_space_tag_t uart_bus_space_mem = IA64_BUS_SPACE_MEM;
-
-static int dig64_to_uart_parity[] = {
- UART_PARITY_NONE, UART_PARITY_NONE, UART_PARITY_EVEN,
- UART_PARITY_ODD, UART_PARITY_MARK, UART_PARITY_SPACE
-};
-
-int
-uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
-{
-
- return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0);
-}
-
-int
-uart_cpu_getdev(int devtype, struct uart_devinfo *di)
-{
- struct dig64_hcdp_table *tbl;
- struct dig64_hcdp_entry *ent;
- struct uart_class *class;
- bus_addr_t addr;
- uint64_t hcdp;
- unsigned int i;
-
- class = &uart_ns8250_class;
- if (class == NULL)
- return (ENXIO);
-
- /*
- * Use the DIG64 HCDP table if present.
- */
- hcdp = ia64_get_hcdp();
- if (hcdp != 0) {
- tbl = (void*)IA64_PHYS_TO_RR7(hcdp);
- for (i = 0; i < tbl->entries; i++) {
- ent = tbl->entry + i;
-
- if (devtype == UART_DEV_CONSOLE &&
- ent->type != DIG64_HCDP_CONSOLE)
- continue;
-
- if (devtype == UART_DEV_DBGPORT &&
- ent->type != DIG64_HCDP_DBGPORT)
- continue;
-
- addr = ent->address.addr_high;
- addr = (addr << 32) + ent->address.addr_low;
- di->ops = uart_getops(class);
- di->bas.chan = 0;
- di->bas.bst = (ent->address.addr_space == 0)
- ? uart_bus_space_mem : uart_bus_space_io;
- if (bus_space_map(di->bas.bst, addr,
- uart_getrange(class), 0, &di->bas.bsh) != 0)
- continue;
- di->bas.regshft = 0;
- di->bas.rclk = ent->pclock << 4;
- /* We don't deal with 64-bit baud rates. */
- di->baudrate = ent->baud_low;
- di->databits = ent->databits;
- di->stopbits = ent->stopbits;
- di->parity = (ent->parity >= 6) ? UART_PARITY_NONE
- : dig64_to_uart_parity[ent->parity];
- return (0);
- }
-
- /* FALLTHROUGH */
- }
-
- /* Check the environment. */
- return (uart_getenv(devtype, di, class));
-}
diff --git a/sys/dev/vt/hw/vga/vt_vga.c b/sys/dev/vt/hw/vga/vt_vga.c
index 15bed12..cac752f 100644
--- a/sys/dev/vt/hw/vga/vt_vga.c
+++ b/sys/dev/vt/hw/vga/vt_vga.c
@@ -656,11 +656,6 @@ vga_init(struct vt_device *vd)
sc->vga_fb_handle = KERNBASE + VGA_MEM_BASE;
sc->vga_reg_tag = X86_BUS_SPACE_IO;
sc->vga_reg_handle = VGA_REG_BASE;
-#elif defined(__ia64__)
- sc->vga_fb_tag = IA64_BUS_SPACE_MEM;
- sc->vga_fb_handle = IA64_PHYS_TO_RR6(VGA_MEM_BASE);
- sc->vga_reg_tag = IA64_BUS_SPACE_IO;
- sc->vga_reg_handle = VGA_REG_BASE;
#else
# error "Architecture not yet supported!"
#endif
diff --git a/sys/ia64/acpica/OsdEnvironment.c b/sys/ia64/acpica/OsdEnvironment.c
deleted file mode 100644
index 7aa281f..0000000
--- a/sys/ia64/acpica/OsdEnvironment.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*-
- * Copyright (c) 2000,2001 Michael Smith
- * Copyright (c) 2000 BSDi
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/efi.h>
-#include <sys/sysctl.h>
-
-#include <contrib/dev/acpica/include/acpi.h>
-
-static u_long acpi_root_phys;
-
-SYSCTL_ULONG(_machdep, OID_AUTO, acpi_root, CTLFLAG_RD, &acpi_root_phys, 0,
- "The physical address of the RSDP");
-
-ACPI_STATUS
-AcpiOsInitialize(void)
-{
-
- return (AE_OK);
-}
-
-ACPI_STATUS
-AcpiOsTerminate(void)
-{
-
- return (AE_OK);
-}
-
-static u_long
-acpi_get_root_from_efi(void)
-{
- static struct uuid acpi_root_uuid = EFI_TABLE_ACPI20;
- void *acpi_root;
-
- acpi_root = efi_get_table(&acpi_root_uuid);
- if (acpi_root != NULL)
- return (IA64_RR_MASK((uintptr_t)acpi_root));
-
- return (0);
-}
-
-ACPI_PHYSICAL_ADDRESS
-AcpiOsGetRootPointer(void)
-{
-
- if (acpi_root_phys == 0)
- acpi_root_phys = acpi_get_root_from_efi();
-
- return (acpi_root_phys);
-}
diff --git a/sys/ia64/acpica/acpi_machdep.c b/sys/ia64/acpica/acpi_machdep.c
deleted file mode 100644
index 1466cfe..0000000
--- a/sys/ia64/acpica/acpi_machdep.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <machine/md_var.h>
-#include <machine/pal.h>
-
-#include <contrib/dev/acpica/include/acpi.h>
-#include <contrib/dev/acpica/include/actables.h>
-#include <dev/acpica/acpivar.h>
-
-int
-acpi_machdep_init(device_t dev)
-{
- struct acpi_softc *sc;
-
- sc = device_get_softc(dev);
-
- acpi_install_wakeup_handler(sc);
-
- return (0);
-}
-
-int
-acpi_machdep_quirks(int *quirks)
-{
- return (0);
-}
-
-void
-acpi_cpu_c1()
-{
-#ifdef INVARIANTS
- register_t ie;
-
- ie = intr_disable();
- KASSERT(ie == 0, ("%s called with interrupts enabled\n", __func__));
-#endif
- ia64_call_pal_static(PAL_HALT_LIGHT, 0, 0, 0);
- ia64_enable_intr();
-}
-
-void *
-acpi_find_table(const char *sig)
-{
- ACPI_PHYSICAL_ADDRESS rsdp_ptr;
- ACPI_TABLE_RSDP *rsdp;
- ACPI_TABLE_XSDT *xsdt;
- ACPI_TABLE_HEADER *table;
- UINT64 addr;
- u_int i, count;
-
- if ((rsdp_ptr = AcpiOsGetRootPointer()) == 0)
- return (NULL);
-
- rsdp = (ACPI_TABLE_RSDP *)IA64_PHYS_TO_RR7(rsdp_ptr);
- xsdt = (ACPI_TABLE_XSDT *)IA64_PHYS_TO_RR7(rsdp->XsdtPhysicalAddress);
-
- count = (UINT64 *)((char *)xsdt + xsdt->Header.Length) -
- xsdt->TableOffsetEntry;
-
- for (i = 0; i < count; i++) {
- addr = xsdt->TableOffsetEntry[i];
- table = (ACPI_TABLE_HEADER *)IA64_PHYS_TO_RR7(addr);
-
- if (strncmp(table->Signature, sig, ACPI_NAME_SIZE) != 0)
- continue;
- if (ACPI_FAILURE(AcpiTbChecksum((void *)table, table->Length)))
- continue;
-
- return (table);
- }
-
- return (NULL);
-}
diff --git a/sys/ia64/acpica/acpi_wakeup.c b/sys/ia64/acpica/acpi_wakeup.c
deleted file mode 100644
index 6c70ca7..0000000
--- a/sys/ia64/acpica/acpi_wakeup.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <sys/bus.h>
-
-#include <contrib/dev/acpica/include/acpi.h>
-
-#include <dev/acpica/acpivar.h>
-
-int
-acpi_sleep_machdep(struct acpi_softc *sc, int state)
-{
- return (0);
-}
-
-int
-acpi_wakeup_machdep(struct acpi_softc *sc, int state, int sleep_result,
- int intr_enabled)
-{
- return (0);
-}
-
-void
-acpi_install_wakeup_handler(struct acpi_softc *sc)
-{
-}
diff --git a/sys/ia64/acpica/madt.c b/sys/ia64/acpica/madt.c
deleted file mode 100644
index 51193ff..0000000
--- a/sys/ia64/acpica/madt.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <contrib/dev/acpica/include/acpi.h>
-#include <contrib/dev/acpica/include/actables.h>
-
-#include <machine/md_var.h>
-
-struct sapic *sapic_create(int, int, u_int64_t);
-
-static void
-print_entry(ACPI_SUBTABLE_HEADER *entry)
-{
-
- switch (entry->Type) {
- case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE: {
- ACPI_MADT_INTERRUPT_OVERRIDE *iso =
- (ACPI_MADT_INTERRUPT_OVERRIDE *)entry;
- printf("\tInterrupt source override entry\n");
- printf("\t\tBus=%u, Source=%u, Irq=0x%x\n", iso->Bus,
- iso->SourceIrq, iso->GlobalIrq);
- break;
- }
-
- case ACPI_MADT_TYPE_IO_APIC:
- printf("\tI/O APIC entry\n");
- break;
-
- case ACPI_MADT_TYPE_IO_SAPIC: {
- ACPI_MADT_IO_SAPIC *sapic = (ACPI_MADT_IO_SAPIC *)entry;
- printf("\tI/O SAPIC entry\n");
- printf("\t\tId=0x%x, InterruptBase=0x%x, Address=0x%lx\n",
- sapic->Id, sapic->GlobalIrqBase, sapic->Address);
- break;
- }
-
- case ACPI_MADT_TYPE_LOCAL_APIC_NMI:
- printf("\tLocal APIC NMI entry\n");
- break;
-
- case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: {
- ACPI_MADT_LOCAL_APIC_OVERRIDE *lapic =
- (ACPI_MADT_LOCAL_APIC_OVERRIDE *)entry;
- printf("\tLocal APIC override entry\n");
- printf("\t\tLocal APIC address=0x%jx\n", lapic->Address);
- break;
- }
-
- case ACPI_MADT_TYPE_LOCAL_SAPIC: {
- ACPI_MADT_LOCAL_SAPIC *sapic = (ACPI_MADT_LOCAL_SAPIC *)entry;
- printf("\tLocal SAPIC entry\n");
- printf("\t\tProcessorId=0x%x, Id=0x%x, Eid=0x%x",
- sapic->ProcessorId, sapic->Id, sapic->Eid);
- if (!(sapic->LapicFlags & ACPI_MADT_ENABLED))
- printf(" (disabled)");
- printf("\n");
- break;
- }
-
- case ACPI_MADT_TYPE_NMI_SOURCE:
- printf("\tNMI entry\n");
- break;
-
- case ACPI_MADT_TYPE_INTERRUPT_SOURCE: {
- ACPI_MADT_INTERRUPT_SOURCE *pis =
- (ACPI_MADT_INTERRUPT_SOURCE *)entry;
- printf("\tPlatform interrupt entry\n");
- printf("\t\tPolarity=%u, TriggerMode=%u, Id=0x%x, "
- "Eid=0x%x, Vector=0x%x, Irq=%d\n",
- pis->IntiFlags & ACPI_MADT_POLARITY_MASK,
- (pis->IntiFlags & ACPI_MADT_TRIGGER_MASK) >> 2,
- pis->Id, pis->Eid, pis->IoSapicVector, pis->GlobalIrq);
- break;
- }
-
- case ACPI_MADT_TYPE_LOCAL_APIC:
- printf("\tLocal APIC entry\n");
- break;
-
- default:
- printf("\tUnknown type %d entry\n", entry->Type);
- break;
- }
-}
-
-void
-ia64_probe_sapics(void)
-{
- ACPI_PHYSICAL_ADDRESS rsdp_ptr;
- ACPI_SUBTABLE_HEADER *entry;
- ACPI_TABLE_MADT *table;
- ACPI_TABLE_RSDP *rsdp;
- ACPI_TABLE_XSDT *xsdt;
- char *end, *p;
- int t, tables;
-
- if ((rsdp_ptr = AcpiOsGetRootPointer()) == 0)
- return;
-
- rsdp = (ACPI_TABLE_RSDP *)IA64_PHYS_TO_RR7(rsdp_ptr);
- xsdt = (ACPI_TABLE_XSDT *)IA64_PHYS_TO_RR7(rsdp->XsdtPhysicalAddress);
-
- tables = (UINT64 *)((char *)xsdt + xsdt->Header.Length) -
- xsdt->TableOffsetEntry;
-
- for (t = 0; t < tables; t++) {
- table = (ACPI_TABLE_MADT *)
- IA64_PHYS_TO_RR7(xsdt->TableOffsetEntry[t]);
-
- if (bootverbose)
- printf("Table '%c%c%c%c' at %p\n",
- table->Header.Signature[0],
- table->Header.Signature[1],
- table->Header.Signature[2],
- table->Header.Signature[3], table);
-
- if (strncmp(table->Header.Signature, ACPI_SIG_MADT,
- ACPI_NAME_SIZE) != 0 ||
- ACPI_FAILURE(AcpiTbChecksum((void *)table,
- table->Header.Length)))
- continue;
-
- /* Save the address of the processor interrupt block. */
- if (bootverbose)
- printf("\tLocal APIC address=0x%x\n", table->Address);
- ia64_lapic_addr = table->Address;
-
- end = (char *)table + table->Header.Length;
- p = (char *)(table + 1);
- while (p < end) {
- entry = (ACPI_SUBTABLE_HEADER *)p;
-
- if (bootverbose)
- print_entry(entry);
-
- switch (entry->Type) {
- case ACPI_MADT_TYPE_IO_SAPIC: {
- ACPI_MADT_IO_SAPIC *sapic =
- (ACPI_MADT_IO_SAPIC *)entry;
- sapic_create(sapic->Id, sapic->GlobalIrqBase,
- sapic->Address);
- break;
- }
-
- case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: {
- ACPI_MADT_LOCAL_APIC_OVERRIDE *lapic =
- (ACPI_MADT_LOCAL_APIC_OVERRIDE *)entry;
- ia64_lapic_addr = lapic->Address;
- break;
- }
-
-#ifdef SMP
- case ACPI_MADT_TYPE_LOCAL_SAPIC: {
- ACPI_MADT_LOCAL_SAPIC *sapic =
- (ACPI_MADT_LOCAL_SAPIC *)entry;
- if (sapic->LapicFlags & ACPI_MADT_ENABLED)
- cpu_mp_add(sapic->ProcessorId,
- sapic->Id, sapic->Eid);
- break;
- }
-#endif
-
- default:
- break;
- }
-
- p += entry->Length;
- }
- }
-}
-
-/*
- * Count the number of local SAPIC entries in the APIC table. Every enabled
- * entry corresponds to a processor.
- */
-int
-ia64_count_cpus(void)
-{
- ACPI_PHYSICAL_ADDRESS rsdp_ptr;
- ACPI_MADT_LOCAL_SAPIC *entry;
- ACPI_TABLE_MADT *table;
- ACPI_TABLE_RSDP *rsdp;
- ACPI_TABLE_XSDT *xsdt;
- char *end, *p;
- int cpus, t, tables;
-
- if ((rsdp_ptr = AcpiOsGetRootPointer()) == 0)
- return (0);
-
- rsdp = (ACPI_TABLE_RSDP *)IA64_PHYS_TO_RR7(rsdp_ptr);
- xsdt = (ACPI_TABLE_XSDT *)IA64_PHYS_TO_RR7(rsdp->XsdtPhysicalAddress);
-
- tables = (UINT64 *)((char *)xsdt + xsdt->Header.Length) -
- xsdt->TableOffsetEntry;
-
- cpus = 0;
-
- for (t = 0; t < tables; t++) {
- table = (ACPI_TABLE_MADT *)
- IA64_PHYS_TO_RR7(xsdt->TableOffsetEntry[t]);
-
- if (strncmp(table->Header.Signature, ACPI_SIG_MADT,
- ACPI_NAME_SIZE) != 0 ||
- ACPI_FAILURE(AcpiTbChecksum((void *)table,
- table->Header.Length)))
- continue;
-
- end = (char *)table + table->Header.Length;
- p = (char *)(table + 1);
- while (p < end) {
- entry = (ACPI_MADT_LOCAL_SAPIC *)p;
-
- if (entry->Header.Type == ACPI_MADT_TYPE_LOCAL_SAPIC &&
- (entry->LapicFlags & ACPI_MADT_ENABLED))
- cpus++;
-
- p += entry->Header.Length;
- }
- }
-
- return (cpus);
-}
diff --git a/sys/ia64/conf/DEFAULTS b/sys/ia64/conf/DEFAULTS
deleted file mode 100644
index a3e10d6..0000000
--- a/sys/ia64/conf/DEFAULTS
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# DEFAULTS -- Default kernel configuration file for FreeBSD/ia64
-#
-# $FreeBSD$
-
-machine ia64
-
-# Bus support.
-device acpi # ACPI support
-
-# Pseudo devices.
-device io # I/O & EFI runtime device
-device mem # Memory and kernel memory devices
-
-# UART chips on this platform
-device uart_ns8250
-
-options GEOM_PART_BSD
-options GEOM_PART_GPT
-options GEOM_PART_MBR
-
-options NEW_PCIB
diff --git a/sys/ia64/conf/GENERIC b/sys/ia64/conf/GENERIC
deleted file mode 100644
index 532b74b..0000000
--- a/sys/ia64/conf/GENERIC
+++ /dev/null
@@ -1,213 +0,0 @@
-#
-# GENERIC -- Generic kernel configuration file for FreeBSD/ia64
-#
-# For more information on this file, please read the handbook section on
-# Kernel Configuration Files:
-#
-# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
-#
-# The handbook is also available locally in /usr/share/doc/handbook
-# if you've installed the doc distribution, otherwise always see the
-# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
-# latest information.
-#
-# An exhaustive list of options and more detailed explanations of the
-# device lines is also present in the ../../conf/NOTES and NOTES files.
-# If you are in doubt as to the purpose or necessity of a line, check
-# first in NOTES.
-#
-# For hardware specific information check HARDWARE.TXT
-#
-# $FreeBSD$
-
-cpu ITANIUM2
-ident GENERIC
-
-makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
-
-options AUDIT # Security event auditing
-options CAPABILITY_MODE # Capsicum capability mode
-options CAPABILITIES # Capsicum capabilities
-options CD9660 # ISO 9660 Filesystem
-options COMPAT_FREEBSD7 # Compatible with FreeBSD7
-options FFS # Berkeley Fast Filesystem
-options GEOM_LABEL # Provides labelization
-options INCLUDE_CONFIG_FILE # Include this file in kernel
-options INET # InterNETworking
-options INET6 # IPv6 communications protocols
-options KTRACE # ktrace(1) syscall trace support
-options MAC # TrustedBSD MAC Framework
-options MD_ROOT # MD usable as root device
-options MSDOSFS # MSDOS Filesystem
-options NFSCL # New Network Filesystem Client
-options NFSLOCKD # Network Lock Manager
-options NFSD # New Network Filesystem Server
-options NFS_ROOT # NFS usable as root device
-options P1003_1B_SEMAPHORES # POSIX-style semaphores
-options PREEMPTION # Enable kernel thread preemption
-options PRINTF_BUFR_SIZE=128 # Printf buffering to limit interspersion
-options PROCFS # Process filesystem (/proc)
-options PSEUDOFS # Pseudo-filesystem framework
-options SCHED_ULE # ULE scheduler
-options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
-options SCTP # Stream Control Transmission Protocol
-options SMP # Symmetric Multi-Processor support
-options SOFTUPDATES # Enable FFS soft updates support
-options STACK # stack(9) support
-options SYSVMSG # SYSV-style message queues
-options SYSVSEM # SYSV-style semaphores
-options SYSVSHM # SYSV-style shared memory
-options UFS_ACL # Support for access control lists
-options UFS_DIRHASH # Hash-based directory lookup scheme
-options UFS_GJOURNAL # Enable gjournal-based UFS journaling
-options QUOTA # Enable disk quotas for UFS
-options _KPOSIX_PRIORITY_SCHEDULING # Posix P1003_1B RT extensions
-
-# Debugging support. Always need this:
-options KDB # Enable kernel debugger support.
-options KDB_TRACE # Print a stack trace for a panic.
-# For full debugger support use (turn off in stable branch):
-options DDB # Support DDB
-options GDB # Support remote GDB
-options DEADLKRES # Enable the deadlock resolver
-options INVARIANTS # Enable calls of extra sanity checking
-options INVARIANT_SUPPORT # required by INVARIANTS
-options WITNESS # Enable checks to detect deadlocks and cycles
-options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
-options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones
-
-# Various "busses"
-device miibus # MII bus support (Ethernet)
-device pci # PCI bus support
-device scbus # SCSI bus (required for ATA/SCSI)
-device usb # USB Bus (required for USB)
-
-# ATA controllers
-device ahci # AHCI-compatible SATA controllers
-device ata # Legacy ATA/SATA controllers
-device mvs # Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA
-device siis # SiliconImage SiI3124/SiI3132/SiI3531 SATA
-
-# SCSI Controllers
-device ahc # AHA2940 and AIC7xxx devices
-device ahd # AHA39320/29320 and AIC79xx devices
-device hptiop # Highpoint RocketRaid 3xxx series
-device isp # Qlogic family
-device mpt # LSI-Logic MPT-Fusion
-device mps # LSI-Logic MPT-Fusion 2
-device mpr # LSI-Logic MPT-Fusion 3
-device sym # NCR/Symbios Logic
-
-# RAID controllers interfaced to the SCSI subsystem
-device amr # AMI MegaRAID
-device ciss # Compaq Smart RAID 5*
-device dpt # DPT Smartcache III, IV
-device iir # Intel Integrated RAID
-device ips # IBM (Adaptec) ServeRAID
-device mly # Mylex AcceleRAID/eXtremeRAID
-device twa # 3ware 9000 series PATA/SATA RAID
-
-# ATA/SCSI peripherals
-device cd # CD-ROM, DVD-ROM etc.
-device ch # Media changer
-device da # Direct Access (ie disk)
-device pass # Passthrough (direct ATA/SCSI access)
-device sa # Sequential Access (ie tape)
-device ses # Enclosure Services (SES and SAF-TE)
-#device ctl # CAM Target Layer
-
-# RAID controllers
-device aac # Adaptec FSA RAID
-device aacp # SCSI passthrough for aac (requires CAM)
-device aacraid # Adaptec by PMC RAID
-device ida # Compaq Smart RAID
-device mlx # Mylex DAC960 family
-
-# USB host controllers and peripherals
-options USB_DEBUG # enable debug msgs
-device ehci # EHCI host controller
-device ohci # OHCI PCI->USB interface
-device uhci # UHCI PCI->USB interface
-device uhid # Human Interface Devices
-device ukbd # Keyboard
-device ulpt # Printer
-device umass # Disks/Mass storage (need scbus & da)
-device ums # Mouse
-
-# PCI Ethernet NICs.
-device de # DEC/Intel DC21x4x (``Tulip'')
-device em # Intel PRO/1000 Gigabit Ethernet Family
-device igb # Intel PRO/1000 PCIE Server Gigabit Family
-device ixgbe # Intel PRO/10GbE PCIE Ethernet Family
-device txp # 3Com 3cR990 (``Typhoon'')
-
-# PCI Ethernet NICs that use the common MII bus controller code.
-device ae # Attansic/Atheros L2 FastEthernet
-device age # Attansic/Atheros L1 Gigabit Ethernet
-device alc # Atheros AR8131/AR8132 Ethernet
-device ale # Atheros AR8121/AR8113/AR8114 Ethernet
-device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
-device bfe # Broadcom BCM440x 10/100 Ethernet
-device bge # Broadcom BCM570xx Gigabit Ethernet
-device et # Agere ET1310 10/100/Gigabit Ethernet
-device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
-device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
-device nge # NatSemi DP83820 gigabit Ethernet
-device fxp # Intel EtherExpress PRO/100B (82557, 82558)
-device re # RealTek 8139C+/8169/8169S/8110S
-device sf # Adaptec AIC-6915 (``Starfire'')
-device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
-device ste # Sundance ST201 (D-Link DFE-550TX)
-device stge # Sundance/Tamarack TC9021 gigabit Ethernet
-device tx # SMC EtherPower II (83c170 ``EPIC'')
-device vge # VIA VT612x gigabit Ethernet
-device xl # 3Com 3c90x ("Boomerang", "Cyclone")
-
-# USB Ethernet
-device aue # ADMtek USB Ethernet
-device axe # ASIX Electronics USB Ethernet
-device cdce # Generic USB over Ethernet
-device cue # CATC USB Ethernet
-device kue # Kawasaki LSI USB Ethernet
-device rue # RealTek RTL8150 USB Ethernet
-device udav # Davicom DM9601E USB
-
-# USB Serial
-device uark # Technologies ARK3116 based serial adapters
-device ubsa # Belkin F5U103 and compatible serial adapters
-device uftdi # For FTDI usb serial adapters
-device uipaq # Some WinCE based devices
-device uplcom # Prolific PL-2303 serial adapters
-device uslcom # SI Labs CP2101/CP2102 serial adapters
-device uvisor # Visor and Palm devices
-device uvscom # USB serial support for DDI pocket's PHS
-
-# Wireless NIC cards.
-# The wlan(4) module assumes this, so just define it so it
-# at least correctly loads.
-options IEEE80211_SUPPORT_MESH
-
-# The ath(4) and ath_hal(4) code requires this. The module currently
-# builds everything including AR5416 (and later 11n NIC) support.
-options AH_SUPPORT_AR5416
-
-# Various (pseudo) devices
-device ether # Ethernet support
-device faith # IPv6-to-IPv4 relaying (translation)
-device firmware # firmware assist module
-device gif # IPv6 and IPv4 tunneling
-device kbdmux # keyboard multiplexer
-device loop # Network loopback
-device md # Memory "disks"
-device puc # Multi I/O cards and multi-channel UARTs
-device random # Entropy device
-device tun # Packet tunnel.
-device uart # Serial port (UART)
-device vlan # 802.1Q VLAN support
-device vt # Virtual terminals
-device vt_vga # VGA terminal device
-
-# The `bpf' device enables the Berkeley Packet Filter.
-# Be aware of the administrative consequences of enabling this!
-# Note that 'bpf' is required for DHCP.
-device bpf # Berkeley packet filter
diff --git a/sys/ia64/conf/GENERIC.hints b/sys/ia64/conf/GENERIC.hints
deleted file mode 100644
index ee22250..0000000
--- a/sys/ia64/conf/GENERIC.hints
+++ /dev/null
@@ -1,2 +0,0 @@
-# $FreeBSD$
-hw.uart.console="io:0x3f8"
diff --git a/sys/ia64/conf/Makefile b/sys/ia64/conf/Makefile
deleted file mode 100644
index 122a7d0..0000000
--- a/sys/ia64/conf/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-TARGET=ia64
-
-.include "${.CURDIR}/../../conf/makeLINT.mk"
diff --git a/sys/ia64/conf/NOTES b/sys/ia64/conf/NOTES
deleted file mode 100644
index b85d6b0..0000000
--- a/sys/ia64/conf/NOTES
+++ /dev/null
@@ -1,108 +0,0 @@
-# $FreeBSD$
-#
-# This file contains machine dependent kernel configuration notes. For
-# machine independent notes, look in /sys/conf/NOTES.
-
-# directive: cpu
-# You must specify at least one CPU (the one you intend to run on). Deleting
-# the support for CPUs you don't need to use may make parts of the system run
-# faster. There's currently no special code for the different CPUs. Note also
-# that the cpu declares the family. We may need to add support for specifying
-# particular models.
-cpu ITANIUM
-cpu ITANIUM2
-
-# option: COMPAT_FREEBSD32
-# This option enables the support for execution of i386 (32-bit) programs on
-# ia64. It is based on the ia32 emulation in the processor.
-options COMPAT_FREEBSD32
-
-# option: LOG2_ID_PAGE_SIZE
-# Specify the log2 size of the identity (direct) mappings in regions 6 and 7
-# of the virtual address space.
-options LOG2_ID_PAGE_SIZE=27 # 128M
-
-# option: LOG2_PAGE_SIZE
-# Specify the log2 size of the page to be used for virtual memory management.
-# The page size being equal to 1<<LOG2_PAGE_SIZE.
-options LOG2_PAGE_SIZE=14 # 16K
-
-# option: UWX_TRACE_ENABLE
-# Build the unwinder with tracing support. This option is used to debug the
-# unwinder itself and the glue around it.
-options UWX_TRACE_ENABLE
-
-# MI options
-options ACPI_DEBUG
-options KSTACK_PAGES=3
-
-device acpi
-
-device agp
-device isa
-device pci
-
-# PS/2 mouse
-device psm
-hint.psm.0.at="atkbdc"
-hint.psm.0.irq="12"
-
-# Options for psm:
-options PSM_HOOKRESUME #hook the system resume event, useful
- #for some laptops
-options PSM_RESETAFTERSUSPEND #reset the device at the resume event
-
-# The keyboard controller; it controls the keyboard and the PS/2 mouse.
-device atkbdc
-hint.atkbdc.0.at="isa"
-hint.atkbdc.0.port="0x060"
-
-# The AT keyboard
-device atkbd
-hint.atkbd.0.at="atkbdc"
-hint.atkbd.0.irq="1"
-
-# Options for atkbd:
-options ATKBD_DFLT_KEYMAP # specify the built-in keymap
-makeoptions ATKBD_DFLT_KEYMAP=jp.106
-
-# `flags' for atkbd:
-# 0x01 Force detection of keyboard, else we always assume a keyboard
-# 0x02 Don't reset keyboard, useful for some newer ThinkPads
-# 0x03 Force detection and avoid reset, might help with certain
-# dockingstations
-# 0x04 Old-style (XT) keyboard support, useful for older ThinkPads
-
-# Video card driver for VGA adapters.
-device vga
-hint.vga.0.at="isa"
-
-# Options for vga:
-# Try the following option if the mouse pointer is not drawn correctly
-# or font does not seem to be loaded properly. May cause flicker on
-# some systems.
-options VGA_ALT_SEQACCESS
-
-# If you can dispense with some vga driver features, you may want to
-# use the following options to save some memory.
-#options VGA_NO_FONT_LOADING # don't save/load font
-#options VGA_NO_MODE_CHANGE # don't change video modes
-
-# Older video cards may require this option for proper operation.
-options VGA_SLOW_IOACCESS # do byte-wide i/o's to TS and GDC regs
-
-# The following option probably won't work with the LCD displays.
-options VGA_WIDTH90 # support 90 column modes
-
-# Debugging.
-options VGA_DEBUG
-
-# vt(4) drivers.
-device vt_vga
-
-# AGP debugging.
-options AGP_DEBUG
-
-# The following devices are not supported.
-nodevice fdc
-nooption FDC_DEBUG
diff --git a/sys/ia64/disasm/disasm.h b/sys/ia64/disasm/disasm.h
deleted file mode 100644
index 7a94197..0000000
--- a/sys/ia64/disasm/disasm.h
+++ /dev/null
@@ -1,328 +0,0 @@
-/*-
- * Copyright (c) 2000-2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _DISASM_H_
-#define _DISASM_H_
-
-#ifndef _DISASM_INT_H_
-#define ASM_ADDITIONAL_OPCODES ASM_OP_NUMBER_OF_OPCODES
-#endif
-
-/* Application registers. */
-#define AR_K0 0
-#define AR_K1 1
-#define AR_K2 2
-#define AR_K3 3
-#define AR_K4 4
-#define AR_K5 5
-#define AR_K6 6
-#define AR_K7 7
-#define AR_RSC 16
-#define AR_BSP 17
-#define AR_BSPSTORE 18
-#define AR_RNAT 19
-#define AR_FCR 21
-#define AR_EFLAG 24
-#define AR_CSD 25
-#define AR_SSD 26
-#define AR_CFLG 27
-#define AR_FSR 28
-#define AR_FIR 29
-#define AR_FDR 30
-#define AR_CCV 32
-#define AR_UNAT 36
-#define AR_FPSR 40
-#define AR_ITC 44
-#define AR_PFS 64
-#define AR_LC 65
-#define AR_EC 66
-
-/* Control registers. */
-#define CR_DCR 0
-#define CR_ITM 1
-#define CR_IVA 2
-#define CR_PTA 8
-#define CR_IPSR 16
-#define CR_ISR 17
-#define CR_IIP 19
-#define CR_IFA 20
-#define CR_ITIR 21
-#define CR_IIPA 22
-#define CR_IFS 23
-#define CR_IIM 24
-#define CR_IHA 25
-#define CR_LID 64
-#define CR_IVR 65
-#define CR_TPR 66
-#define CR_EOI 67
-#define CR_IRR0 68
-#define CR_IRR1 69
-#define CR_IRR2 70
-#define CR_IRR3 71
-#define CR_ITV 72
-#define CR_PMV 73
-#define CR_CMCV 74
-#define CR_LRR0 80
-#define CR_LRR1 81
-
-enum asm_cmpltr_class {
- ASM_CC_NONE,
- ASM_CC_ACLR,
- ASM_CC_BSW, ASM_CC_BTYPE, ASM_CC_BWH,
- ASM_CC_CHK, ASM_CC_CLRRRB, ASM_CC_CREL, ASM_CC_CTYPE,
- ASM_CC_DEP, ASM_CC_DH,
- ASM_CC_FC, ASM_CC_FCREL, ASM_CC_FCTYPE, ASM_CC_FCVT, ASM_CC_FLDTYPE,
- ASM_CC_FMERGE, ASM_CC_FREL, ASM_CC_FSWAP,
- ASM_CC_GETF,
- ASM_CC_IH, ASM_CC_INVALA, ASM_CC_IPWH, ASM_CC_ITC, ASM_CC_ITR,
- ASM_CC_LDHINT, ASM_CC_LDTYPE, ASM_CC_LFETCH, ASM_CC_LFHINT,
- ASM_CC_LFTYPE, ASM_CC_LR,
- ASM_CC_MF, ASM_CC_MOV, ASM_CC_MWH,
- ASM_CC_PAVG, ASM_CC_PC, ASM_CC_PH, ASM_CC_PREL, ASM_CC_PRTYPE,
- ASM_CC_PTC, ASM_CC_PTR, ASM_CC_PVEC,
- ASM_CC_SAT, ASM_CC_SEM, ASM_CC_SETF, ASM_CC_SF, ASM_CC_SRLZ,
- ASM_CC_STHINT, ASM_CC_STTYPE, ASM_CC_SYNC,
- ASM_CC_RW,
- ASM_CC_TREL, ASM_CC_TRUNC,
- ASM_CC_UNIT, ASM_CC_UNPACK, ASM_CC_UNS,
- ASM_CC_VMSW,
- ASM_CC_XMA
-};
-
-enum asm_cmpltr_type {
- ASM_CT_NONE,
- ASM_CT_COND = ASM_CT_NONE,
-
- ASM_CT_0, ASM_CT_1,
- ASM_CT_A, ASM_CT_ACQ, ASM_CT_AND,
- ASM_CT_B, ASM_CT_BIAS,
- ASM_CT_C_CLR, ASM_CT_C_CLR_ACQ, ASM_CT_C_NC, ASM_CT_CALL,
- ASM_CT_CEXIT, ASM_CT_CLOOP, ASM_CT_CLR, ASM_CT_CTOP,
- ASM_CT_D, ASM_CT_DC_DC, ASM_CT_DC_NT, ASM_CT_DPNT, ASM_CT_DPTK,
- ASM_CT_E, ASM_CT_EQ, ASM_CT_EXCL, ASM_CT_EXIT, ASM_CT_EXP,
- ASM_CT_F, ASM_CT_FAULT, ASM_CT_FEW, ASM_CT_FILL, ASM_CT_FX, ASM_CT_FXU,
- ASM_CT_G, ASM_CT_GA, ASM_CT_GE, ASM_CT_GT,
- ASM_CT_H, ASM_CT_HU,
- ASM_CT_I, ASM_CT_IA, ASM_CT_IMP,
- ASM_CT_L, ASM_CT_LE, ASM_CT_LOOP, ASM_CT_LR, ASM_CT_LT, ASM_CT_LTU,
- ASM_CT_M, ASM_CT_MANY,
- ASM_CT_NC, ASM_CT_NE, ASM_CT_NEQ, ASM_CT_NL, ASM_CT_NLE, ASM_CT_NLT,
- ASM_CT_NM, ASM_CT_NR, ASM_CT_NS, ASM_CT_NT_DC, ASM_CT_NT_NT,
- ASM_CT_NT_TK, ASM_CT_NT1, ASM_CT_NT2, ASM_CT_NTA, ASM_CT_NZ,
- ASM_CT_OR, ASM_CT_OR_ANDCM, ASM_CT_ORD,
- ASM_CT_PR,
- ASM_CT_R, ASM_CT_RAZ, ASM_CT_REL, ASM_CT_RET, ASM_CT_RW,
- ASM_CT_S, ASM_CT_S0, ASM_CT_S1, ASM_CT_S2, ASM_CT_S3, ASM_CT_SA,
- ASM_CT_SE, ASM_CT_SIG, ASM_CT_SPILL, ASM_CT_SPNT, ASM_CT_SPTK,
- ASM_CT_SSS,
- ASM_CT_TK_DC, ASM_CT_TK_NT, ASM_CT_TK_TK, ASM_CT_TRUNC,
- ASM_CT_U, ASM_CT_UNC, ASM_CT_UNORD, ASM_CT_USS, ASM_CT_UUS, ASM_CT_UUU,
- ASM_CT_W, ASM_CT_WEXIT, ASM_CT_WTOP,
- ASM_CT_X, ASM_CT_XF,
- ASM_CT_Z,
-};
-
-/* Completer. */
-struct asm_cmpltr {
- enum asm_cmpltr_class c_class;
- enum asm_cmpltr_type c_type;
-};
-
-/* Operand types. */
-enum asm_oper_type {
- ASM_OPER_NONE,
- ASM_OPER_AREG, /* = ar# */
- ASM_OPER_BREG, /* = b# */
- ASM_OPER_CPUID, /* = cpuid[r#] */
- ASM_OPER_CREG, /* = cr# */
- ASM_OPER_DBR, /* = dbr[r#] */
- ASM_OPER_DISP, /* IP relative displacement. */
- ASM_OPER_DTR, /* = dtr[r#] */
- ASM_OPER_FREG, /* = f# */
- ASM_OPER_GREG, /* = r# */
- ASM_OPER_IBR, /* = ibr[r#] */
- ASM_OPER_IMM, /* Immediate */
- ASM_OPER_IP, /* = ip */
- ASM_OPER_ITR, /* = itr[r#] */
- ASM_OPER_MEM, /* = [r#] */
- ASM_OPER_MSR, /* = msr[r#] */
- ASM_OPER_PKR, /* = pkr[r#] */
- ASM_OPER_PMC, /* = pmc[r#] */
- ASM_OPER_PMD, /* = pmd[r#] */
- ASM_OPER_PR, /* = pr */
- ASM_OPER_PR_ROT, /* = pr.rot */
- ASM_OPER_PREG, /* = p# */
- ASM_OPER_PSR, /* = psr */
- ASM_OPER_PSR_L, /* = psr.l */
- ASM_OPER_PSR_UM, /* = psr.um */
- ASM_OPER_RR /* = rr[r#] */
-};
-
-/* Operand */
-struct asm_oper {
- enum asm_oper_type o_type;
- uint64_t o_value;
-};
-
-/* Instruction formats. */
-enum asm_fmt {
- ASM_FMT_NONE,
- ASM_FMT_A = 0x0100,
- ASM_FMT_A1, ASM_FMT_A2, ASM_FMT_A3, ASM_FMT_A4,
- ASM_FMT_A5, ASM_FMT_A6, ASM_FMT_A7, ASM_FMT_A8,
- ASM_FMT_A9, ASM_FMT_A10,
- ASM_FMT_B = 0x0200,
- ASM_FMT_B1, ASM_FMT_B2, ASM_FMT_B3, ASM_FMT_B4,
- ASM_FMT_B5, ASM_FMT_B6, ASM_FMT_B7, ASM_FMT_B8,
- ASM_FMT_B9,
- ASM_FMT_F = 0x0300,
- ASM_FMT_F1, ASM_FMT_F2, ASM_FMT_F3, ASM_FMT_F4,
- ASM_FMT_F5, ASM_FMT_F6, ASM_FMT_F7, ASM_FMT_F8,
- ASM_FMT_F9, ASM_FMT_F10, ASM_FMT_F11, ASM_FMT_F12,
- ASM_FMT_F13, ASM_FMT_F14, ASM_FMT_F15, ASM_FMT_F16,
- ASM_FMT_I = 0x0400,
- ASM_FMT_I1, ASM_FMT_I2, ASM_FMT_I3, ASM_FMT_I4,
- ASM_FMT_I5, ASM_FMT_I6, ASM_FMT_I7, ASM_FMT_I8,
- ASM_FMT_I9, ASM_FMT_I10, ASM_FMT_I11, ASM_FMT_I12,
- ASM_FMT_I13, ASM_FMT_I14, ASM_FMT_I15, ASM_FMT_I16,
- ASM_FMT_I17, ASM_FMT_I18, ASM_FMT_I19, ASM_FMT_I20,
- ASM_FMT_I21, ASM_FMT_I22, ASM_FMT_I23, ASM_FMT_I24,
- ASM_FMT_I25, ASM_FMT_I26, ASM_FMT_I27, ASM_FMT_I28,
- ASM_FMT_I29, ASM_FMT_I30,
- ASM_FMT_M = 0x0500,
- ASM_FMT_M1, ASM_FMT_M2, ASM_FMT_M3, ASM_FMT_M4,
- ASM_FMT_M5, ASM_FMT_M6, ASM_FMT_M7, ASM_FMT_M8,
- ASM_FMT_M9, ASM_FMT_M10, ASM_FMT_M11, ASM_FMT_M12,
- ASM_FMT_M13, ASM_FMT_M14, ASM_FMT_M15, ASM_FMT_M16,
- ASM_FMT_M17, ASM_FMT_M18, ASM_FMT_M19, ASM_FMT_M20,
- ASM_FMT_M21, ASM_FMT_M22, ASM_FMT_M23, ASM_FMT_M24,
- ASM_FMT_M25, ASM_FMT_M26, ASM_FMT_M27, ASM_FMT_M28,
- ASM_FMT_M29, ASM_FMT_M30, ASM_FMT_M31, ASM_FMT_M32,
- ASM_FMT_M33, ASM_FMT_M34, ASM_FMT_M35, ASM_FMT_M36,
- ASM_FMT_M37, ASM_FMT_M38, ASM_FMT_M39, ASM_FMT_M40,
- ASM_FMT_M41, ASM_FMT_M42, ASM_FMT_M43, ASM_FMT_M44,
- ASM_FMT_M45, ASM_FMT_M46, ASM_FMT_M47, ASM_FMT_M48,
- ASM_FMT_X = 0x0600,
- ASM_FMT_X1, ASM_FMT_X2, ASM_FMT_X3, ASM_FMT_X4,
- ASM_FMT_X5
-};
-
-/* Instruction opcodes. */
-enum asm_op {
- ASM_OP_NONE,
- ASM_OP_ADD, ASM_OP_ADDL, ASM_OP_ADDP4, ASM_OP_ADDS, ASM_OP_ALLOC,
- ASM_OP_AND, ASM_OP_ANDCM,
- ASM_OP_BR, ASM_OP_BREAK, ASM_OP_BRL, ASM_OP_BRP, ASM_OP_BSW,
- ASM_OP_CHK, ASM_OP_CLRRRB, ASM_OP_CMP, ASM_OP_CMP4, ASM_OP_CMP8XCHG16,
- ASM_OP_CMPXCHG1, ASM_OP_CMPXCHG2, ASM_OP_CMPXCHG4, ASM_OP_CMPXCHG8,
- ASM_OP_COVER, ASM_OP_CZX1, ASM_OP_CZX2,
- ASM_OP_DEP,
- ASM_OP_EPC, ASM_OP_EXTR,
- ASM_OP_FAMAX, ASM_OP_FAMIN, ASM_OP_FAND, ASM_OP_FANDCM, ASM_OP_FC,
- ASM_OP_FCHKF, ASM_OP_FCLASS, ASM_OP_FCLRF, ASM_OP_FCMP, ASM_OP_FCVT,
- ASM_OP_FETCHADD4, ASM_OP_FETCHADD8, ASM_OP_FLUSHRS, ASM_OP_FMA,
- ASM_OP_FMAX, ASM_OP_FMERGE, ASM_OP_FMIN, ASM_OP_FMIX, ASM_OP_FMS,
- ASM_OP_FNMA, ASM_OP_FOR, ASM_OP_FPACK, ASM_OP_FPAMAX, ASM_OP_FPAMIN,
- ASM_OP_FPCMP, ASM_OP_FPCVT, ASM_OP_FPMA, ASM_OP_FPMAX, ASM_OP_FPMERGE,
- ASM_OP_FPMIN, ASM_OP_FPMS, ASM_OP_FPNMA, ASM_OP_FPRCPA,
- ASM_OP_FPRSQRTA, ASM_OP_FRCPA, ASM_OP_FRSQRTA, ASM_OP_FSELECT,
- ASM_OP_FSETC, ASM_OP_FSWAP, ASM_OP_FSXT, ASM_OP_FWB, ASM_OP_FXOR,
- ASM_OP_GETF,
- ASM_OP_HINT,
- ASM_OP_INVALA, ASM_OP_ITC, ASM_OP_ITR,
- ASM_OP_LD1, ASM_OP_LD16, ASM_OP_LD2, ASM_OP_LD4, ASM_OP_LD8,
- ASM_OP_LDF, ASM_OP_LDF8, ASM_OP_LDFD, ASM_OP_LDFE, ASM_OP_LDFP8,
- ASM_OP_LDFPD, ASM_OP_LDFPS, ASM_OP_LDFS, ASM_OP_LFETCH, ASM_OP_LOADRS,
- ASM_OP_MF, ASM_OP_MIX1, ASM_OP_MIX2, ASM_OP_MIX4, ASM_OP_MOV,
- ASM_OP_MOVL, ASM_OP_MUX1, ASM_OP_MUX2,
- ASM_OP_NOP,
- ASM_OP_OR,
- ASM_OP_PACK2, ASM_OP_PACK4, ASM_OP_PADD1, ASM_OP_PADD2, ASM_OP_PADD4,
- ASM_OP_PAVG1, ASM_OP_PAVG2, ASM_OP_PAVGSUB1, ASM_OP_PAVGSUB2,
- ASM_OP_PCMP1, ASM_OP_PCMP2, ASM_OP_PCMP4, ASM_OP_PMAX1, ASM_OP_PMAX2,
- ASM_OP_PMIN1, ASM_OP_PMIN2, ASM_OP_PMPY2, ASM_OP_PMPYSHR2,
- ASM_OP_POPCNT, ASM_OP_PROBE, ASM_OP_PSAD1, ASM_OP_PSHL2, ASM_OP_PSHL4,
- ASM_OP_PSHLADD2, ASM_OP_PSHR2, ASM_OP_PSHR4, ASM_OP_PSHRADD2,
- ASM_OP_PSUB1, ASM_OP_PSUB2, ASM_OP_PSUB4, ASM_OP_PTC, ASM_OP_PTR,
- ASM_OP_RFI, ASM_OP_RSM, ASM_OP_RUM,
- ASM_OP_SETF, ASM_OP_SHL, ASM_OP_SHLADD, ASM_OP_SHLADDP4, ASM_OP_SHR,
- ASM_OP_SHRP, ASM_OP_SRLZ, ASM_OP_SSM, ASM_OP_ST1, ASM_OP_ST16,
- ASM_OP_ST2, ASM_OP_ST4, ASM_OP_ST8, ASM_OP_STF, ASM_OP_STF8,
- ASM_OP_STFD, ASM_OP_STFE, ASM_OP_STFS, ASM_OP_SUB, ASM_OP_SUM,
- ASM_OP_SXT1, ASM_OP_SXT2, ASM_OP_SXT4, ASM_OP_SYNC,
- ASM_OP_TAK, ASM_OP_TBIT, ASM_OP_TF, ASM_OP_THASH, ASM_OP_TNAT,
- ASM_OP_TPA, ASM_OP_TTAG,
- ASM_OP_UNPACK1, ASM_OP_UNPACK2, ASM_OP_UNPACK4,
- ASM_OP_VMSW,
- ASM_OP_XCHG1, ASM_OP_XCHG2, ASM_OP_XCHG4, ASM_OP_XCHG8, ASM_OP_XMA,
- ASM_OP_XOR,
- ASM_OP_ZXT1, ASM_OP_ZXT2, ASM_OP_ZXT4,
- /* Additional opcodes used only internally. */
- ASM_ADDITIONAL_OPCODES
-};
-
-/* Instruction. */
-struct asm_inst {
- uint64_t i_bits;
- struct asm_oper i_oper[7];
- struct asm_cmpltr i_cmpltr[5];
- enum asm_fmt i_format;
- enum asm_op i_op;
- int i_ncmpltrs;
- int i_srcidx;
-};
-
-struct asm_bundle {
- const char *b_templ;
- struct asm_inst b_inst[3];
-};
-
-/* Functional units. */
-enum asm_unit {
- ASM_UNIT_NONE,
- ASM_UNIT_A = 0x0100, /* A unit. */
- ASM_UNIT_B = 0x0200, /* B unit. */
- ASM_UNIT_F = 0x0300, /* F unit. */
- ASM_UNIT_I = 0x0400, /* I unit. */
- ASM_UNIT_M = 0x0500, /* M unit. */
- ASM_UNIT_X = 0x0600 /* X unit. */
-};
-
-#ifdef _DISASM_INT_H_
-int asm_extract(enum asm_op, enum asm_fmt, uint64_t, struct asm_bundle *, int);
-#endif
-
-int asm_decode(uint64_t, struct asm_bundle *);
-
-void asm_completer(const struct asm_cmpltr *, char *);
-void asm_mnemonic(const enum asm_op, char *);
-void asm_operand(const struct asm_oper *, char *, uint64_t);
-void asm_print_bundle(const struct asm_bundle *, uint64_t);
-void asm_print_inst(const struct asm_bundle *, int, uint64_t);
-
-#endif /* _DISASM_H_ */
diff --git a/sys/ia64/disasm/disasm_decode.c b/sys/ia64/disasm/disasm_decode.c
deleted file mode 100644
index 0359e44..0000000
--- a/sys/ia64/disasm/disasm_decode.c
+++ /dev/null
@@ -1,2565 +0,0 @@
-/*-
- * Copyright (c) 2000-2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-
-#include <ia64/disasm/disasm_int.h>
-#include <ia64/disasm/disasm.h>
-
-/*
- * Template names.
- */
-static const char *asm_templname[] = {
- "MII", "MII;", "MI;I", "MI;I;", "MLX", "MLX;", 0, 0,
- "MMI", "MMI;", "M;MI", "M;MI;", "MFI", "MFI;", "MMF", "MMF;",
- "MIB", "MIB;", "MBB", "MBB;", 0, 0, "BBB", "BBB;",
- "MMB", "MMB;", 0, 0, "MFB", "MFB;", 0, 0
-};
-
-/*
- * Decode A-unit instructions.
- */
-static int
-asm_decodeA(uint64_t bits, struct asm_bundle *b, int slot)
-{
- enum asm_fmt fmt;
- enum asm_op op;
-
- fmt = ASM_FMT_NONE, op = ASM_OP_NONE;
- switch((int)OPCODE(bits)) {
- case 0x8:
- switch (FIELD(bits, 34, 2)) { /* x2a */
- case 0x0:
- if (FIELD(bits, 33, 1) == 0) { /* ve */
- switch (FIELD(bits, 29, 4)) { /* x4 */
- case 0x0:
- if (FIELD(bits, 27, 2) <= 1) /* x2b */
- op = ASM_OP_ADD,
- fmt = ASM_FMT_A1;
- break;
- case 0x1:
- if (FIELD(bits, 27, 2) <= 1) /* x2b */
- op = ASM_OP_SUB,
- fmt = ASM_FMT_A1;
- break;
- case 0x2:
- if (FIELD(bits, 27, 2) == 0) /* x2b */
- op = ASM_OP_ADDP4,
- fmt = ASM_FMT_A1;
- break;
- case 0x3:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_AND,
- fmt = ASM_FMT_A1;
- break;
- case 0x1:
- op = ASM_OP_ANDCM,
- fmt = ASM_FMT_A1;
- break;
- case 0x2:
- op = ASM_OP_OR,
- fmt = ASM_FMT_A1;
- break;
- case 0x3:
- op = ASM_OP_XOR,
- fmt = ASM_FMT_A1;
- break;
- }
- break;
- case 0xB:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_AND,
- fmt = ASM_FMT_A3;
- break;
- case 0x1:
- op = ASM_OP_ANDCM,
- fmt = ASM_FMT_A3;
- break;
- case 0x2:
- op = ASM_OP_OR,
- fmt = ASM_FMT_A3;
- break;
- case 0x3:
- op = ASM_OP_XOR,
- fmt = ASM_FMT_A3;
- break;
- }
- break;
- case 0x4:
- op = ASM_OP_SHLADD, fmt = ASM_FMT_A2;
- break;
- case 0x6:
- op = ASM_OP_SHLADDP4, fmt = ASM_FMT_A2;
- break;
- case 0x9:
- if (FIELD(bits, 27, 2) == 1) /* x2b */
- op = ASM_OP_SUB,
- fmt = ASM_FMT_A3;
- break;
- }
- }
- break;
- case 0x1:
- switch (FIELD(bits, 29, 8)) { /* za + x2a + zb + x4 */
- case 0x20:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_PADD1_, fmt = ASM_FMT_A9;
- break;
- case 0x1:
- op = ASM_OP_PADD1_SSS,
- fmt = ASM_FMT_A9;
- break;
- case 0x2:
- op = ASM_OP_PADD1_UUU,
- fmt = ASM_FMT_A9;
- break;
- case 0x3:
- op = ASM_OP_PADD1_UUS,
- fmt = ASM_FMT_A9;
- break;
- }
- break;
- case 0x21:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_PSUB1_, fmt = ASM_FMT_A9;
- break;
- case 0x1:
- op = ASM_OP_PSUB1_SSS,
- fmt = ASM_FMT_A9;
- break;
- case 0x2:
- op = ASM_OP_PSUB1_UUU,
- fmt = ASM_FMT_A9;
- break;
- case 0x3:
- op = ASM_OP_PSUB1_UUS,
- fmt = ASM_FMT_A9;
- break;
- }
- break;
- case 0x22:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x2:
- op = ASM_OP_PAVG1_, fmt = ASM_FMT_A9;
- break;
- case 0x3:
- op = ASM_OP_PAVG1_RAZ,
- fmt = ASM_FMT_A9;
- break;
- }
- break;
- case 0x23:
- if (FIELD(bits, 27, 2) == 2) /* x2b */
- op = ASM_OP_PAVGSUB1, fmt = ASM_FMT_A9;
- break;
- case 0x29:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_PCMP1_EQ, fmt = ASM_FMT_A9;
- break;
- case 0x1:
- op = ASM_OP_PCMP1_GT, fmt = ASM_FMT_A9;
- break;
- }
- break;
- case 0x30:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_PADD2_, fmt = ASM_FMT_A9;
- break;
- case 0x1:
- op = ASM_OP_PADD2_SSS,
- fmt = ASM_FMT_A9;
- break;
- case 0x2:
- op = ASM_OP_PADD2_UUU,
- fmt = ASM_FMT_A9;
- break;
- case 0x3:
- op = ASM_OP_PADD2_UUS,
- fmt = ASM_FMT_A9;
- break;
- }
- break;
- case 0x31:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_PSUB2_, fmt = ASM_FMT_A9;
- break;
- case 0x1:
- op = ASM_OP_PSUB2_SSS,
- fmt = ASM_FMT_A9;
- break;
- case 0x2:
- op = ASM_OP_PSUB2_UUU,
- fmt = ASM_FMT_A9;
- break;
- case 0x3:
- op = ASM_OP_PSUB2_UUS,
- fmt = ASM_FMT_A9;
- break;
- }
- break;
- case 0x32:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x2:
- op = ASM_OP_PAVG2_, fmt = ASM_FMT_A9;
- break;
- case 0x3:
- op = ASM_OP_PAVG2_RAZ,
- fmt = ASM_FMT_A9;
- break;
- }
- break;
- case 0x33:
- if (FIELD(bits, 27, 2) == 2) /* x2b */
- op = ASM_OP_PAVGSUB2, fmt = ASM_FMT_A9;
- break;
- case 0x34:
- op = ASM_OP_PSHLADD2, fmt = ASM_FMT_A10;
- break;
- case 0x36:
- op = ASM_OP_PSHRADD2, fmt = ASM_FMT_A10;
- break;
- case 0x39:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_PCMP2_EQ, fmt = ASM_FMT_A9;
- break;
- case 0x1:
- op = ASM_OP_PCMP2_GT, fmt = ASM_FMT_A9;
- break;
- }
- break;
- case 0xA0:
- if (FIELD(bits, 27, 2) == 0) /* x2b */
- op = ASM_OP_PADD4, fmt = ASM_FMT_A9;
- break;
- case 0xA1:
- if (FIELD(bits, 27, 2) == 0) /* x2b */
- op = ASM_OP_PSUB4, fmt = ASM_FMT_A9;
- break;
- case 0xA9:
- switch (FIELD(bits, 27, 2)) { /* x2b */
- case 0x0:
- op = ASM_OP_PCMP4_EQ, fmt = ASM_FMT_A9;
- break;
- case 0x1:
- op = ASM_OP_PCMP4_GT, fmt = ASM_FMT_A9;
- break;
- }
- break;
- }
- break;
- case 0x2:
- if (FIELD(bits, 33, 1) == 0) /* ve */
- op = ASM_OP_ADDS, fmt = ASM_FMT_A4;
- break;
- case 0x3:
- if (FIELD(bits, 33, 1) == 0) /* ve */
- op = ASM_OP_ADDP4, fmt = ASM_FMT_A4;
- break;
- }
- break;
- case 0x9:
- op = ASM_OP_ADDL, fmt = ASM_FMT_A5;
- break;
- case 0xC: case 0xD: case 0xE:
- if (FIELD(bits, 12, 1) == 0) { /* c */
- switch (FIELD(bits, 33, 8)) { /* maj + tb + x2 + ta */
- case 0xC0:
- op = ASM_OP_CMP_LT, fmt = ASM_FMT_A6;
- break;
- case 0xC1:
- op = ASM_OP_CMP_EQ_AND, fmt = ASM_FMT_A6;
- break;
- case 0xC2:
- op = ASM_OP_CMP4_LT, fmt = ASM_FMT_A6;
- break;
- case 0xC3:
- op = ASM_OP_CMP4_EQ_AND, fmt = ASM_FMT_A6;
- break;
- case 0xC4: case 0xCC:
- op = ASM_OP_CMP_LT, fmt = ASM_FMT_A8;
- break;
- case 0xC5: case 0xCD:
- op = ASM_OP_CMP_EQ_AND, fmt = ASM_FMT_A8;
- break;
- case 0xC6: case 0xCE:
- op = ASM_OP_CMP4_LT, fmt = ASM_FMT_A8;
- break;
- case 0xC7: case 0xCF:
- op = ASM_OP_CMP4_EQ_AND, fmt = ASM_FMT_A8;
- break;
- case 0xC8:
- op = ASM_OP_CMP_GT_AND, fmt = ASM_FMT_A7;
- break;
- case 0xC9:
- op = ASM_OP_CMP_GE_AND, fmt = ASM_FMT_A7;
- break;
- case 0xCA:
- op = ASM_OP_CMP4_GT_AND, fmt = ASM_FMT_A7;
- break;
- case 0xCB:
- op = ASM_OP_CMP4_GE_AND, fmt = ASM_FMT_A7;
- break;
- case 0xD0:
- op = ASM_OP_CMP_LTU, fmt = ASM_FMT_A6;
- break;
- case 0xD1:
- op = ASM_OP_CMP_EQ_OR, fmt = ASM_FMT_A6;
- break;
- case 0xD2:
- op = ASM_OP_CMP4_LTU, fmt = ASM_FMT_A6;
- break;
- case 0xD3:
- op = ASM_OP_CMP4_EQ_OR, fmt = ASM_FMT_A6;
- break;
- case 0xD4: case 0xDC:
- op = ASM_OP_CMP_LTU, fmt = ASM_FMT_A8;
- break;
- case 0xD5: case 0xDD:
- op = ASM_OP_CMP_EQ_OR, fmt = ASM_FMT_A8;
- break;
- case 0xD6: case 0xDE:
- op = ASM_OP_CMP4_LTU, fmt = ASM_FMT_A8;
- break;
- case 0xD7: case 0xDF:
- op = ASM_OP_CMP4_EQ_OR, fmt = ASM_FMT_A8;
- break;
- case 0xD8:
- op = ASM_OP_CMP_GT_OR, fmt = ASM_FMT_A7;
- break;
- case 0xD9:
- op = ASM_OP_CMP_GE_OR, fmt = ASM_FMT_A7;
- break;
- case 0xDA:
- op = ASM_OP_CMP4_GT_OR, fmt = ASM_FMT_A7;
- break;
- case 0xDB:
- op = ASM_OP_CMP4_GE_OR, fmt = ASM_FMT_A7;
- break;
- case 0xE0:
- op = ASM_OP_CMP_EQ, fmt = ASM_FMT_A6;
- break;
- case 0xE1:
- op = ASM_OP_CMP_EQ_OR_ANDCM, fmt = ASM_FMT_A6;
- break;
- case 0xE2:
- op = ASM_OP_CMP4_EQ, fmt = ASM_FMT_A6;
- break;
- case 0xE3:
- op = ASM_OP_CMP4_EQ_OR_ANDCM, fmt = ASM_FMT_A6;
- break;
- case 0xE4: case 0xEC:
- op = ASM_OP_CMP_EQ, fmt = ASM_FMT_A8;
- break;
- case 0xE5: case 0xED:
- op = ASM_OP_CMP_EQ_OR_ANDCM, fmt = ASM_FMT_A8;
- break;
- case 0xE6: case 0xEE:
- op = ASM_OP_CMP4_EQ, fmt = ASM_FMT_A8;
- break;
- case 0xE7: case 0xEF:
- op = ASM_OP_CMP4_EQ_OR_ANDCM, fmt = ASM_FMT_A8;
- break;
- case 0xE8:
- op = ASM_OP_CMP_GT_OR_ANDCM, fmt = ASM_FMT_A7;
- break;
- case 0xE9:
- op = ASM_OP_CMP_GE_OR_ANDCM, fmt = ASM_FMT_A7;
- break;
- case 0xEA:
- op = ASM_OP_CMP4_GT_OR_ANDCM, fmt = ASM_FMT_A7;
- break;
- case 0xEB:
- op = ASM_OP_CMP4_GE_OR_ANDCM, fmt = ASM_FMT_A7;
- break;
- }
- } else {
- switch (FIELD(bits, 33, 8)) { /* maj + tb + x2 + ta */
- case 0xC0:
- op = ASM_OP_CMP_LT_UNC, fmt = ASM_FMT_A6;
- break;
- case 0xC1:
- op = ASM_OP_CMP_NE_AND, fmt = ASM_FMT_A6;
- break;
- case 0xC2:
- op = ASM_OP_CMP4_LT_UNC, fmt = ASM_FMT_A6;
- break;
- case 0xC3:
- op = ASM_OP_CMP4_NE_AND, fmt = ASM_FMT_A6;
- break;
- case 0xC4: case 0xCC:
- op = ASM_OP_CMP_LT_UNC, fmt = ASM_FMT_A8;
- break;
- case 0xC5: case 0xCD:
- op = ASM_OP_CMP_NE_AND, fmt = ASM_FMT_A8;
- break;
- case 0xC6: case 0xCE:
- op = ASM_OP_CMP4_LT_UNC, fmt = ASM_FMT_A8;
- break;
- case 0xC7: case 0xCF:
- op = ASM_OP_CMP4_NE_AND, fmt = ASM_FMT_A8;
- break;
- case 0xC8:
- op = ASM_OP_CMP_LE_AND, fmt = ASM_FMT_A7;
- break;
- case 0xC9:
- op = ASM_OP_CMP_LT_AND, fmt = ASM_FMT_A7;
- break;
- case 0xCA:
- op = ASM_OP_CMP4_LE_AND, fmt = ASM_FMT_A7;
- break;
- case 0xCB:
- op = ASM_OP_CMP4_LT_AND, fmt = ASM_FMT_A7;
- break;
- case 0xD0:
- op = ASM_OP_CMP_LTU_UNC, fmt = ASM_FMT_A6;
- break;
- case 0xD1:
- op = ASM_OP_CMP_NE_OR, fmt = ASM_FMT_A6;
- break;
- case 0xD2:
- op = ASM_OP_CMP4_LTU_UNC, fmt = ASM_FMT_A6;
- break;
- case 0xD3:
- op = ASM_OP_CMP4_NE_OR, fmt = ASM_FMT_A6;
- break;
- case 0xD4: case 0xDC:
- op = ASM_OP_CMP_LTU_UNC, fmt = ASM_FMT_A8;
- break;
- case 0xD5: case 0xDD:
- op = ASM_OP_CMP_NE_OR, fmt = ASM_FMT_A8;
- break;
- case 0xD6: case 0xDE:
- op = ASM_OP_CMP4_LTU_UNC, fmt = ASM_FMT_A8;
- break;
- case 0xD7: case 0xDF:
- op = ASM_OP_CMP4_NE_OR, fmt = ASM_FMT_A8;
- break;
- case 0xD8:
- op = ASM_OP_CMP_LE_OR, fmt = ASM_FMT_A7;
- break;
- case 0xD9:
- op = ASM_OP_CMP_LT_OR, fmt = ASM_FMT_A7;
- break;
- case 0xDA:
- op = ASM_OP_CMP4_LE_OR, fmt = ASM_FMT_A7;
- break;
- case 0xDB:
- op = ASM_OP_CMP4_LT_OR, fmt = ASM_FMT_A7;
- break;
- case 0xE0:
- op = ASM_OP_CMP_EQ_UNC, fmt = ASM_FMT_A6;
- break;
- case 0xE1:
- op = ASM_OP_CMP_NE_OR_ANDCM, fmt = ASM_FMT_A6;
- break;
- case 0xE2:
- op = ASM_OP_CMP4_EQ_UNC, fmt = ASM_FMT_A6;
- break;
- case 0xE3:
- op = ASM_OP_CMP4_NE_OR_ANDCM, fmt = ASM_FMT_A6;
- break;
- case 0xE4: case 0xEC:
- op = ASM_OP_CMP_EQ_UNC, fmt = ASM_FMT_A8;
- break;
- case 0xE5: case 0xED:
- op = ASM_OP_CMP_NE_OR_ANDCM, fmt = ASM_FMT_A8;
- break;
- case 0xE6: case 0xEE:
- op = ASM_OP_CMP4_EQ_UNC, fmt = ASM_FMT_A8;
- break;
- case 0xE7: case 0xEF:
- op = ASM_OP_CMP4_NE_OR_ANDCM, fmt = ASM_FMT_A8;
- break;
- case 0xE8:
- op = ASM_OP_CMP_LE_OR_ANDCM, fmt = ASM_FMT_A7;
- break;
- case 0xE9:
- op = ASM_OP_CMP_LT_OR_ANDCM, fmt = ASM_FMT_A7;
- break;
- case 0xEA:
- op = ASM_OP_CMP4_LE_OR_ANDCM, fmt = ASM_FMT_A7;
- break;
- case 0xEB:
- op = ASM_OP_CMP4_LT_OR_ANDCM, fmt = ASM_FMT_A7;
- break;
- }
- }
- break;
- }
-
- if (op != ASM_OP_NONE)
- return (asm_extract(op, fmt, bits, b, slot));
- return (0);
-}
-
-/*
- * Decode B-unit instructions.
- */
-static int
-asm_decodeB(uint64_t ip, struct asm_bundle *b, int slot)
-{
- uint64_t bits;
- enum asm_fmt fmt;
- enum asm_op op;
-
- bits = SLOT(ip, slot);
- fmt = ASM_FMT_NONE, op = ASM_OP_NONE;
-
- switch((int)OPCODE(bits)) {
- case 0x0:
- switch (FIELD(bits, 27, 6)) { /* x6 */
- case 0x0:
- op = ASM_OP_BREAK_B, fmt = ASM_FMT_B9;
- break;
- case 0x2:
- op = ASM_OP_COVER, fmt = ASM_FMT_B8;
- break;
- case 0x4:
- op = ASM_OP_CLRRRB_, fmt = ASM_FMT_B8;
- break;
- case 0x5:
- op = ASM_OP_CLRRRB_PR, fmt = ASM_FMT_B8;
- break;
- case 0x8:
- op = ASM_OP_RFI, fmt = ASM_FMT_B8;
- break;
- case 0xC:
- op = ASM_OP_BSW_0, fmt = ASM_FMT_B8;
- break;
- case 0xD:
- op = ASM_OP_BSW_1, fmt = ASM_FMT_B8;
- break;
- case 0x10:
- op = ASM_OP_EPC, fmt = ASM_FMT_B8;
- break;
- case 0x18:
- op = ASM_OP_VMSW_0, fmt = ASM_FMT_B8;
- break;
- case 0x19:
- op = ASM_OP_VMSW_1, fmt = ASM_FMT_B8;
- break;
- case 0x20:
- switch (FIELD(bits, 6, 3)) { /* btype */
- case 0x0:
- op = ASM_OP_BR_COND, fmt = ASM_FMT_B4;
- break;
- case 0x1:
- op = ASM_OP_BR_IA, fmt = ASM_FMT_B4;
- break;
- }
- break;
- case 0x21:
- if (FIELD(bits, 6, 3) == 4) /* btype */
- op = ASM_OP_BR_RET, fmt = ASM_FMT_B4;
- break;
- }
- break;
- case 0x1:
- op = ASM_OP_BR_CALL, fmt = ASM_FMT_B5;
- break;
- case 0x2:
- switch (FIELD(bits, 27, 6)) { /* x6 */
- case 0x0:
- op = ASM_OP_NOP_B, fmt = ASM_FMT_B9;
- break;
- case 0x1:
- op = ASM_OP_HINT_B, fmt = ASM_FMT_B9;
- break;
- case 0x10:
- op = ASM_OP_BRP_, fmt = ASM_FMT_B7;
- break;
- case 0x11:
- op = ASM_OP_BRP_RET, fmt = ASM_FMT_B7;
- break;
- }
- break;
- case 0x4:
- switch (FIELD(bits, 6, 3)) { /* btype */
- case 0x0:
- op = ASM_OP_BR_COND, fmt = ASM_FMT_B1;
- break;
- case 0x2:
- op = ASM_OP_BR_WEXIT, fmt = ASM_FMT_B1;
- break;
- case 0x3:
- op = ASM_OP_BR_WTOP, fmt = ASM_FMT_B1;
- break;
- case 0x5:
- op = ASM_OP_BR_CLOOP, fmt = ASM_FMT_B2;
- break;
- case 0x6:
- op = ASM_OP_BR_CEXIT, fmt = ASM_FMT_B2;
- break;
- case 0x7:
- op = ASM_OP_BR_CTOP, fmt = ASM_FMT_B2;
- break;
- }
- break;
- case 0x5:
- op = ASM_OP_BR_CALL, fmt = ASM_FMT_B3;
- break;
- case 0x7:
- op = ASM_OP_BRP_, fmt = ASM_FMT_B6;
- break;
- }
-
- if (op != ASM_OP_NONE)
- return (asm_extract(op, fmt, bits, b, slot));
- return (0);
-}
-
-/*
- * Decode F-unit instructions.
- */
-static int
-asm_decodeF(uint64_t ip, struct asm_bundle *b, int slot)
-{
- uint64_t bits;
- enum asm_fmt fmt;
- enum asm_op op;
-
- bits = SLOT(ip, slot);
- fmt = ASM_FMT_NONE, op = ASM_OP_NONE;
-
- switch((int)OPCODE(bits)) {
- case 0x0:
- if (FIELD(bits, 33, 1) == 0) { /* x */
- switch (FIELD(bits, 27, 6)) { /* x6 */
- case 0x0:
- op = ASM_OP_BREAK_F, fmt = ASM_FMT_F15;
- break;
- case 0x1:
- if (FIELD(bits, 26, 1) == 0) /* y */
- op = ASM_OP_NOP_F, fmt = ASM_FMT_F16;
- else
- op = ASM_OP_HINT_F, fmt = ASM_FMT_F16;
- break;
- case 0x4:
- op = ASM_OP_FSETC, fmt = ASM_FMT_F12;
- break;
- case 0x5:
- op = ASM_OP_FCLRF, fmt = ASM_FMT_F13;
- break;
- case 0x8:
- op = ASM_OP_FCHKF, fmt = ASM_FMT_F14;
- break;
- case 0x10:
- op = ASM_OP_FMERGE_S, fmt = ASM_FMT_F9;
- break;
- case 0x11:
- op = ASM_OP_FMERGE_NS, fmt = ASM_FMT_F9;
- break;
- case 0x12:
- op = ASM_OP_FMERGE_SE, fmt = ASM_FMT_F9;
- break;
- case 0x14:
- op = ASM_OP_FMIN, fmt = ASM_FMT_F8;
- break;
- case 0x15:
- op = ASM_OP_FMAX, fmt = ASM_FMT_F8;
- break;
- case 0x16:
- op = ASM_OP_FAMIN, fmt = ASM_FMT_F8;
- break;
- case 0x17:
- op = ASM_OP_FAMAX, fmt = ASM_FMT_F8;
- break;
- case 0x18:
- op = ASM_OP_FCVT_FX, fmt = ASM_FMT_F10;
- break;
- case 0x19:
- op = ASM_OP_FCVT_FXU, fmt = ASM_FMT_F10;
- break;
- case 0x1A:
- op = ASM_OP_FCVT_FX_TRUNC, fmt = ASM_FMT_F10;
- break;
- case 0x1B:
- op = ASM_OP_FCVT_FXU_TRUNC, fmt = ASM_FMT_F10;
- break;
- case 0x1C:
- op = ASM_OP_FCVT_XF, fmt = ASM_FMT_F11;
- break;
- case 0x28:
- op = ASM_OP_FPACK, fmt = ASM_FMT_F9;
- break;
- case 0x2C:
- op = ASM_OP_FAND, fmt = ASM_FMT_F9;
- break;
- case 0x2D:
- op = ASM_OP_FANDCM, fmt = ASM_FMT_F9;
- break;
- case 0x2E:
- op = ASM_OP_FOR, fmt = ASM_FMT_F9;
- break;
- case 0x2F:
- op = ASM_OP_FXOR, fmt = ASM_FMT_F9;
- break;
- case 0x34:
- op = ASM_OP_FSWAP_, fmt = ASM_FMT_F9;
- break;
- case 0x35:
- op = ASM_OP_FSWAP_NL, fmt = ASM_FMT_F9;
- break;
- case 0x36:
- op = ASM_OP_FSWAP_NR, fmt = ASM_FMT_F9;
- break;
- case 0x39:
- op = ASM_OP_FMIX_LR, fmt = ASM_FMT_F9;
- break;
- case 0x3A:
- op = ASM_OP_FMIX_R, fmt = ASM_FMT_F9;
- break;
- case 0x3B:
- op = ASM_OP_FMIX_L, fmt = ASM_FMT_F9;
- break;
- case 0x3C:
- op = ASM_OP_FSXT_R, fmt = ASM_FMT_F9;
- break;
- case 0x3D:
- op = ASM_OP_FSXT_L, fmt = ASM_FMT_F9;
- break;
- }
- } else {
- if (FIELD(bits, 36, 1) == 0) /* q */
- op = ASM_OP_FRCPA, fmt = ASM_FMT_F6;
- else
- op = ASM_OP_FRSQRTA, fmt = ASM_FMT_F7;
- }
- break;
- case 0x1:
- if (FIELD(bits, 33, 1) == 0) { /* x */
- switch (FIELD(bits, 27, 6)) { /* x6 */
- case 0x10:
- op = ASM_OP_FPMERGE_S, fmt = ASM_FMT_F9;
- break;
- case 0x11:
- op = ASM_OP_FPMERGE_NS, fmt = ASM_FMT_F9;
- break;
- case 0x12:
- op = ASM_OP_FPMERGE_SE, fmt = ASM_FMT_F9;
- break;
- case 0x14:
- op = ASM_OP_FPMIN, fmt = ASM_FMT_F8;
- break;
- case 0x15:
- op = ASM_OP_FPMAX, fmt = ASM_FMT_F8;
- break;
- case 0x16:
- op = ASM_OP_FPAMIN, fmt = ASM_FMT_F8;
- break;
- case 0x17:
- op = ASM_OP_FPAMAX, fmt = ASM_FMT_F8;
- break;
- case 0x18:
- op = ASM_OP_FPCVT_FX, fmt = ASM_FMT_F10;
- break;
- case 0x19:
- op = ASM_OP_FPCVT_FXU, fmt = ASM_FMT_F10;
- break;
- case 0x1A:
- op = ASM_OP_FPCVT_FX_TRUNC, fmt = ASM_FMT_F10;
- break;
- case 0x1B:
- op = ASM_OP_FPCVT_FXU_TRUNC, fmt = ASM_FMT_F10;
- break;
- case 0x30:
- op = ASM_OP_FPCMP_EQ, fmt = ASM_FMT_F8;
- break;
- case 0x31:
- op = ASM_OP_FPCMP_LT, fmt = ASM_FMT_F8;
- break;
- case 0x32:
- op = ASM_OP_FPCMP_LE, fmt = ASM_FMT_F8;
- break;
- case 0x33:
- op = ASM_OP_FPCMP_UNORD, fmt = ASM_FMT_F8;
- break;
- case 0x34:
- op = ASM_OP_FPCMP_NEQ, fmt = ASM_FMT_F8;
- break;
- case 0x35:
- op = ASM_OP_FPCMP_NLT, fmt = ASM_FMT_F8;
- break;
- case 0x36:
- op = ASM_OP_FPCMP_NLE, fmt = ASM_FMT_F8;
- break;
- case 0x37:
- op = ASM_OP_FPCMP_ORD, fmt = ASM_FMT_F8;
- break;
- }
- } else {
- if (FIELD(bits, 36, 1) == 0) /* q */
- op = ASM_OP_FPRCPA, fmt = ASM_FMT_F6;
- else
- op = ASM_OP_FPRSQRTA, fmt = ASM_FMT_F7;
- }
- break;
- case 0x4:
- op = ASM_OP_FCMP, fmt = ASM_FMT_F4;
- break;
- case 0x5:
- op = ASM_OP_FCLASS_M, fmt = ASM_FMT_F5;
- break;
- case 0x8:
- if (FIELD(bits, 36, 1) == 0) /* x */
- op = ASM_OP_FMA_, fmt = ASM_FMT_F1;
- else
- op = ASM_OP_FMA_S, fmt = ASM_FMT_F1;
- break;
- case 0x9:
- if (FIELD(bits, 36, 1) == 0) /* x */
- op = ASM_OP_FMA_D, fmt = ASM_FMT_F1;
- else
- op = ASM_OP_FPMA, fmt = ASM_FMT_F1;
- break;
- case 0xA:
- if (FIELD(bits, 36, 1) == 0) /* x */
- op = ASM_OP_FMS_, fmt = ASM_FMT_F1;
- else
- op = ASM_OP_FMS_S, fmt = ASM_FMT_F1;
- break;
- case 0xB:
- if (FIELD(bits, 36, 1) == 0) /* x */
- op = ASM_OP_FMS_D, fmt = ASM_FMT_F1;
- else
- op = ASM_OP_FPMS, fmt = ASM_FMT_F1;
- break;
- case 0xC:
- if (FIELD(bits, 36, 1) == 0) /* x */
- op = ASM_OP_FNMA_, fmt = ASM_FMT_F1;
- else
- op = ASM_OP_FNMA_S, fmt = ASM_FMT_F1;
- break;
- case 0xD:
- if (FIELD(bits, 36, 1) == 0) /* x */
- op = ASM_OP_FNMA_D, fmt = ASM_FMT_F1;
- else
- op = ASM_OP_FPNMA, fmt = ASM_FMT_F1;
- break;
- case 0xE:
- if (FIELD(bits, 36, 1) == 1) { /* x */
- switch (FIELD(bits, 34, 2)) { /* x2 */
- case 0x0:
- op = ASM_OP_XMA_L, fmt = ASM_FMT_F2;
- break;
- case 0x2:
- op = ASM_OP_XMA_HU, fmt = ASM_FMT_F2;
- break;
- case 0x3:
- op = ASM_OP_XMA_H, fmt = ASM_FMT_F2;
- break;
- }
- } else
- op = ASM_OP_FSELECT, fmt = ASM_FMT_F3;
- break;
- }
-
- if (op != ASM_OP_NONE)
- return (asm_extract(op, fmt, bits, b, slot));
- return (0);
-}
-
-/*
- * Decode I-unit instructions.
- */
-static int
-asm_decodeI(uint64_t ip, struct asm_bundle *b, int slot)
-{
- uint64_t bits;
- enum asm_fmt fmt;
- enum asm_op op;
-
- bits = SLOT(ip, slot);
- if ((int)OPCODE(bits) >= 8)
- return (asm_decodeA(bits, b, slot));
- fmt = ASM_FMT_NONE, op = ASM_OP_NONE;
-
- switch((int)OPCODE(bits)) {
- case 0x0:
- switch (FIELD(bits, 33, 3)) { /* x3 */
- case 0x0:
- switch (FIELD(bits, 27, 6)) { /* x6 */
- case 0x0:
- op = ASM_OP_BREAK_I, fmt = ASM_FMT_I19;
- break;
- case 0x1:
- if (FIELD(bits, 26, 1) == 0) /* y */
- op = ASM_OP_NOP_I, fmt = ASM_FMT_I18;
- else
- op = ASM_OP_HINT_I, fmt = ASM_FMT_I18;
- break;
- case 0xA:
- op = ASM_OP_MOV_I, fmt = ASM_FMT_I27;
- break;
- case 0x10:
- op = ASM_OP_ZXT1, fmt = ASM_FMT_I29;
- break;
- case 0x11:
- op = ASM_OP_ZXT2, fmt = ASM_FMT_I29;
- break;
- case 0x12:
- op = ASM_OP_ZXT4, fmt = ASM_FMT_I29;
- break;
- case 0x14:
- op = ASM_OP_SXT1, fmt = ASM_FMT_I29;
- break;
- case 0x15:
- op = ASM_OP_SXT2, fmt = ASM_FMT_I29;
- break;
- case 0x16:
- op = ASM_OP_SXT4, fmt = ASM_FMT_I29;
- break;
- case 0x18:
- op = ASM_OP_CZX1_L, fmt = ASM_FMT_I29;
- break;
- case 0x19:
- op = ASM_OP_CZX2_L, fmt = ASM_FMT_I29;
- break;
- case 0x1C:
- op = ASM_OP_CZX1_R, fmt = ASM_FMT_I29;
- break;
- case 0x1D:
- op = ASM_OP_CZX2_R, fmt = ASM_FMT_I29;
- break;
- case 0x2A:
- op = ASM_OP_MOV_I, fmt = ASM_FMT_I26;
- break;
- case 0x30:
- op = ASM_OP_MOV_IP, fmt = ASM_FMT_I25;
- break;
- case 0x31:
- op = ASM_OP_MOV_, fmt = ASM_FMT_I22;
- break;
- case 0x32:
- op = ASM_OP_MOV_I, fmt = ASM_FMT_I28;
- break;
- case 0x33:
- op = ASM_OP_MOV_PR, fmt = ASM_FMT_I25;
- break;
- }
- break;
- case 0x1:
- op = ASM_OP_CHK_S_I, fmt = ASM_FMT_I20;
- break;
- case 0x2:
- op = ASM_OP_MOV_, fmt = ASM_FMT_I24;
- break;
- case 0x3:
- op = ASM_OP_MOV_, fmt = ASM_FMT_I23;
- break;
- case 0x7:
- if (FIELD(bits, 22, 1) == 0) /* x */
- op = ASM_OP_MOV_, fmt = ASM_FMT_I21;
- else
- op = ASM_OP_MOV_RET, fmt = ASM_FMT_I21;
- break;
- }
- break;
- case 0x4:
- op = ASM_OP_DEP_, fmt = ASM_FMT_I15;
- break;
- case 0x5:
- switch (FIELD(bits, 33, 3)) { /* x + x2 */
- case 0x0:
- if (FIELD(bits, 36, 1) == 0) { /* tb */
- switch (FIELD(bits, 12, 2)) { /* c + y */
- case 0x0:
- op = ASM_OP_TBIT_Z, fmt = ASM_FMT_I16;
- break;
- case 0x1:
- op = ASM_OP_TBIT_Z_UNC,
- fmt = ASM_FMT_I16;
- break;
- case 0x2:
- if (FIELD(bits, 19, 1) == 0) /* x */
- op = ASM_OP_TNAT_Z,
- fmt = ASM_FMT_I17;
- else
- op = ASM_OP_TF_Z,
- fmt = ASM_FMT_I30;
- break;
- case 0x3:
- if (FIELD(bits, 19, 1) == 0) /* x */
- op = ASM_OP_TNAT_Z_UNC,
- fmt = ASM_FMT_I17;
- else
- op = ASM_OP_TF_Z_UNC,
- fmt = ASM_FMT_I30;
- break;
- }
- } else {
- switch (FIELD(bits, 12, 2)) { /* c + y */
- case 0x0:
- op = ASM_OP_TBIT_Z_AND,
- fmt = ASM_FMT_I16;
- break;
- case 0x1:
- op = ASM_OP_TBIT_NZ_AND,
- fmt = ASM_FMT_I16;
- break;
- case 0x2:
- if (FIELD(bits, 19, 1) == 0) /* x */
- op = ASM_OP_TNAT_Z_AND,
- fmt = ASM_FMT_I17;
- else
- op = ASM_OP_TF_Z_AND,
- fmt = ASM_FMT_I30;
- break;
- case 0x3:
- if (FIELD(bits, 19, 1) == 0) /* x */
- op = ASM_OP_TNAT_NZ_AND,
- fmt = ASM_FMT_I17;
- else
- op = ASM_OP_TF_NZ_AND,
- fmt = ASM_FMT_I30;
- break;
- }
- }
- break;
- case 0x1:
- if (FIELD(bits, 36, 1) == 0) { /* tb */
- switch (FIELD(bits, 12, 2)) { /* c + y */
- case 0x0:
- op = ASM_OP_TBIT_Z_OR,
- fmt = ASM_FMT_I16;
- break;
- case 0x1:
- op = ASM_OP_TBIT_NZ_OR,
- fmt = ASM_FMT_I16;
- break;
- case 0x2:
- if (FIELD(bits, 19, 1) == 0) /* x */
- op = ASM_OP_TNAT_Z_OR,
- fmt = ASM_FMT_I17;
- else
- op = ASM_OP_TF_Z_OR,
- fmt = ASM_FMT_I30;
- break;
- case 0x3:
- if (FIELD(bits, 19, 1) == 0) /* x */
- op = ASM_OP_TNAT_NZ_OR,
- fmt = ASM_FMT_I17;
- else
- op = ASM_OP_TF_NZ_OR,
- fmt = ASM_FMT_I30;
- break;
- }
- } else {
- switch (FIELD(bits, 12, 2)) { /* c + y */
- case 0x0:
- op = ASM_OP_TBIT_Z_OR_ANDCM,
- fmt = ASM_FMT_I16;
- break;
- case 0x1:
- op = ASM_OP_TBIT_NZ_OR_ANDCM,
- fmt = ASM_FMT_I16;
- break;
- case 0x2:
- if (FIELD(bits, 19, 1) == 0) /* x */
- op = ASM_OP_TNAT_Z_OR_ANDCM,
- fmt = ASM_FMT_I17;
- else
- op = ASM_OP_TF_Z_OR_ANDCM,
- fmt = ASM_FMT_I30;
- break;
- case 0x3:
- if (FIELD(bits, 19, 1) == 0) /* x */
- op = ASM_OP_TNAT_NZ_OR_ANDCM,
- fmt = ASM_FMT_I17;
- else
- op = ASM_OP_TF_NZ_OR_ANDCM,
- fmt = ASM_FMT_I30;
- break;
- }
- }
- break;
- case 0x2:
- op = ASM_OP_EXTR, fmt = ASM_FMT_I11;
- break;
- case 0x3:
- if (FIELD(bits, 26, 1) == 0) /* y */
- op = ASM_OP_DEP_Z, fmt = ASM_FMT_I12;
- else
- op = ASM_OP_DEP_Z, fmt = ASM_FMT_I13;
- break;
- case 0x6:
- op = ASM_OP_SHRP, fmt = ASM_FMT_I10;
- break;
- case 0x7:
- op = ASM_OP_DEP_, fmt = ASM_FMT_I14;
- break;
- }
- break;
- case 0x7:
- switch (FIELD(bits, 32, 5)) { /* ve + zb + x2a + za */
- case 0x2:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x0:
- op = ASM_OP_PSHR2_U, fmt = ASM_FMT_I5;
- break;
- case 0x1: case 0x5: case 0x9: case 0xD:
- op = ASM_OP_PMPYSHR2_U, fmt = ASM_FMT_I1;
- break;
- case 0x2:
- op = ASM_OP_PSHR2_, fmt = ASM_FMT_I5;
- break;
- case 0x3: case 0x7: case 0xB: case 0xF:
- op = ASM_OP_PMPYSHR2_, fmt = ASM_FMT_I1;
- break;
- case 0x4:
- op = ASM_OP_PSHL2, fmt = ASM_FMT_I7;
- break;
- }
- break;
- case 0x6:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x1:
- op = ASM_OP_PSHR2_U, fmt = ASM_FMT_I6;
- break;
- case 0x3:
- op = ASM_OP_PSHR2_, fmt = ASM_FMT_I6;
- break;
- case 0x9:
- op = ASM_OP_POPCNT, fmt = ASM_FMT_I9;
- break;
- }
- break;
- case 0x8:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x1:
- op = ASM_OP_PMIN1_U, fmt = ASM_FMT_I2;
- break;
- case 0x4:
- op = ASM_OP_UNPACK1_H, fmt = ASM_FMT_I2;
- break;
- case 0x5:
- op = ASM_OP_PMAX1_U, fmt = ASM_FMT_I2;
- break;
- case 0x6:
- op = ASM_OP_UNPACK1_L, fmt = ASM_FMT_I2;
- break;
- case 0x8:
- op = ASM_OP_MIX1_R, fmt = ASM_FMT_I2;
- break;
- case 0xA:
- op = ASM_OP_MIX1_L, fmt = ASM_FMT_I2;
- break;
- case 0xB:
- op = ASM_OP_PSAD1, fmt = ASM_FMT_I2;
- break;
- }
- break;
- case 0xA:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x0:
- op = ASM_OP_PACK2_USS, fmt = ASM_FMT_I2;
- break;
- case 0x2:
- op = ASM_OP_PACK2_SSS, fmt = ASM_FMT_I2;
- break;
- case 0x3:
- op = ASM_OP_PMIN2, fmt = ASM_FMT_I2;
- break;
- case 0x4:
- op = ASM_OP_UNPACK2_H, fmt = ASM_FMT_I2;
- break;
- case 0x6:
- op = ASM_OP_UNPACK2_L, fmt = ASM_FMT_I2;
- break;
- case 0x7:
- op = ASM_OP_PMAX2, fmt = ASM_FMT_I2;
- break;
- case 0x8:
- op = ASM_OP_MIX2_R, fmt = ASM_FMT_I2;
- break;
- case 0xA:
- op = ASM_OP_MIX2_L, fmt = ASM_FMT_I2;
- break;
- case 0xD:
- op = ASM_OP_PMPY2_R, fmt = ASM_FMT_I2;
- break;
- case 0xF:
- op = ASM_OP_PMPY2_L, fmt = ASM_FMT_I2;
- break;
- }
- break;
- case 0xC:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0xA:
- op = ASM_OP_MUX1, fmt = ASM_FMT_I3;
- break;
- }
- break;
- case 0xE:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x5:
- op = ASM_OP_PSHL2, fmt = ASM_FMT_I8;
- break;
- case 0xA:
- op = ASM_OP_MUX2, fmt = ASM_FMT_I4;
- break;
- }
- break;
- case 0x10:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x0:
- op = ASM_OP_PSHR4_U, fmt = ASM_FMT_I5;
- break;
- case 0x2:
- op = ASM_OP_PSHR4_, fmt = ASM_FMT_I5;
- break;
- case 0x4:
- op = ASM_OP_PSHL4, fmt = ASM_FMT_I7;
- break;
- }
- break;
- case 0x12:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x0:
- op = ASM_OP_SHR_U, fmt = ASM_FMT_I5;
- break;
- case 0x2:
- op = ASM_OP_SHR_, fmt = ASM_FMT_I5;
- break;
- case 0x4:
- op = ASM_OP_SHL, fmt = ASM_FMT_I7;
- break;
- }
- break;
- case 0x14:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x1:
- op = ASM_OP_PSHR4_U, fmt = ASM_FMT_I6;
- break;
- case 0x3:
- op = ASM_OP_PSHR4_, fmt = ASM_FMT_I6;
- break;
- }
- break;
- case 0x18:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x2:
- op = ASM_OP_PACK4_SSS, fmt = ASM_FMT_I2;
- break;
- case 0x4:
- op = ASM_OP_UNPACK4_H, fmt = ASM_FMT_I2;
- break;
- case 0x6:
- op = ASM_OP_UNPACK4_L, fmt = ASM_FMT_I2;
- break;
- case 0x8:
- op = ASM_OP_MIX4_R, fmt = ASM_FMT_I2;
- break;
- case 0xA:
- op = ASM_OP_MIX4_L, fmt = ASM_FMT_I2;
- break;
- }
- break;
- case 0x1C:
- switch (FIELD(bits, 28, 4)) { /* x2b + x2c */
- case 0x5:
- op = ASM_OP_PSHL4, fmt = ASM_FMT_I8;
- break;
- }
- break;
- }
- break;
- }
-
- if (op != ASM_OP_NONE)
- return (asm_extract(op, fmt, bits, b, slot));
- return (0);
-}
-
-/*
- * Decode M-unit instructions.
- */
-static int
-asm_decodeM(uint64_t ip, struct asm_bundle *b, int slot)
-{
- uint64_t bits;
- enum asm_fmt fmt;
- enum asm_op op;
-
- bits = SLOT(ip, slot);
- if ((int)OPCODE(bits) >= 8)
- return (asm_decodeA(bits, b, slot));
- fmt = ASM_FMT_NONE, op = ASM_OP_NONE;
-
- switch((int)OPCODE(bits)) {
- case 0x0:
- switch (FIELD(bits, 33, 3)) { /* x3 */
- case 0x0:
- switch (FIELD(bits, 27, 6)) { /* x6 (x4 + x2) */
- case 0x0:
- op = ASM_OP_BREAK_M, fmt = ASM_FMT_M37;
- break;
- case 0x1:
- if (FIELD(bits, 26, 1) == 0) /* y */
- op = ASM_OP_NOP_M, fmt = ASM_FMT_M48;
- else
- op = ASM_OP_HINT_M, fmt = ASM_FMT_M48;
- break;
- case 0x4: case 0x14: case 0x24: case 0x34:
- op = ASM_OP_SUM, fmt = ASM_FMT_M44;
- break;
- case 0x5: case 0x15: case 0x25: case 0x35:
- op = ASM_OP_RUM, fmt = ASM_FMT_M44;
- break;
- case 0x6: case 0x16: case 0x26: case 0x36:
- op = ASM_OP_SSM, fmt = ASM_FMT_M44;
- break;
- case 0x7: case 0x17: case 0x27: case 0x37:
- op = ASM_OP_RSM, fmt = ASM_FMT_M44;
- break;
- case 0xA:
- op = ASM_OP_LOADRS, fmt = ASM_FMT_M25;
- break;
- case 0xC:
- op = ASM_OP_FLUSHRS, fmt = ASM_FMT_M25;
- break;
- case 0x10:
- op = ASM_OP_INVALA_, fmt = ASM_FMT_M24;
- break;
- case 0x12:
- op = ASM_OP_INVALA_E, fmt = ASM_FMT_M26;
- break;
- case 0x13:
- op = ASM_OP_INVALA_E, fmt = ASM_FMT_M27;
- break;
- case 0x20:
- op = ASM_OP_FWB, fmt = ASM_FMT_M24;
- break;
- case 0x22:
- op = ASM_OP_MF_, fmt = ASM_FMT_M24;
- break;
- case 0x23:
- op = ASM_OP_MF_A, fmt = ASM_FMT_M24;
- break;
- case 0x28:
- op = ASM_OP_MOV_M, fmt = ASM_FMT_M30;
- break;
- case 0x30:
- op = ASM_OP_SRLZ_D, fmt = ASM_FMT_M24;
- break;
- case 0x31:
- op = ASM_OP_SRLZ_I, fmt = ASM_FMT_M24;
- break;
- case 0x33:
- op = ASM_OP_SYNC_I, fmt = ASM_FMT_M24;
- break;
- }
- break;
- case 0x4:
- op = ASM_OP_CHK_A_NC, fmt = ASM_FMT_M22;
- break;
- case 0x5:
- op = ASM_OP_CHK_A_CLR, fmt = ASM_FMT_M22;
- break;
- case 0x6:
- op = ASM_OP_CHK_A_NC, fmt = ASM_FMT_M23;
- break;
- case 0x7:
- op = ASM_OP_CHK_A_CLR, fmt = ASM_FMT_M23;
- break;
- }
- break;
- case 0x1:
- switch (FIELD(bits, 33, 3)) { /* x3 */
- case 0x0:
- switch (FIELD(bits, 27, 6)) { /* x6 (x4 + x2) */
- case 0x0:
- op = ASM_OP_MOV_RR, fmt = ASM_FMT_M42;
- break;
- case 0x1:
- op = ASM_OP_MOV_DBR, fmt = ASM_FMT_M42;
- break;
- case 0x2:
- op = ASM_OP_MOV_IBR, fmt = ASM_FMT_M42;
- break;
- case 0x3:
- op = ASM_OP_MOV_PKR, fmt = ASM_FMT_M42;
- break;
- case 0x4:
- op = ASM_OP_MOV_PMC, fmt = ASM_FMT_M42;
- break;
- case 0x5:
- op = ASM_OP_MOV_PMD, fmt = ASM_FMT_M42;
- break;
- case 0x6:
- op = ASM_OP_MOV_MSR, fmt = ASM_FMT_M42;
- break;
- case 0x9:
- op = ASM_OP_PTC_L, fmt = ASM_FMT_M45;
- break;
- case 0xA:
- op = ASM_OP_PTC_G, fmt = ASM_FMT_M45;
- break;
- case 0xB:
- op = ASM_OP_PTC_GA, fmt = ASM_FMT_M45;
- break;
- case 0xC:
- op = ASM_OP_PTR_D, fmt = ASM_FMT_M45;
- break;
- case 0xD:
- op = ASM_OP_PTR_I, fmt = ASM_FMT_M45;
- break;
- case 0xE:
- op = ASM_OP_ITR_D, fmt = ASM_FMT_M42;
- break;
- case 0xF:
- op = ASM_OP_ITR_I, fmt = ASM_FMT_M42;
- break;
- case 0x10:
- op = ASM_OP_MOV_RR, fmt = ASM_FMT_M43;
- break;
- case 0x11:
- op = ASM_OP_MOV_DBR, fmt = ASM_FMT_M43;
- break;
- case 0x12:
- op = ASM_OP_MOV_IBR, fmt = ASM_FMT_M43;
- break;
- case 0x13:
- op = ASM_OP_MOV_PKR, fmt = ASM_FMT_M43;
- break;
- case 0x14:
- op = ASM_OP_MOV_PMC, fmt = ASM_FMT_M43;
- break;
- case 0x15:
- op = ASM_OP_MOV_PMD, fmt = ASM_FMT_M43;
- break;
- case 0x16:
- op = ASM_OP_MOV_MSR, fmt = ASM_FMT_M43;
- break;
- case 0x17:
- op = ASM_OP_MOV_CPUID, fmt = ASM_FMT_M43;
- break;
- case 0x18:
- op = ASM_OP_PROBE_R, fmt = ASM_FMT_M39;
- break;
- case 0x19:
- op = ASM_OP_PROBE_W, fmt = ASM_FMT_M39;
- break;
- case 0x1A:
- op = ASM_OP_THASH, fmt = ASM_FMT_M46;
- break;
- case 0x1B:
- op = ASM_OP_TTAG, fmt = ASM_FMT_M46;
- break;
- case 0x1E:
- op = ASM_OP_TPA, fmt = ASM_FMT_M46;
- break;
- case 0x1F:
- op = ASM_OP_TAK, fmt = ASM_FMT_M46;
- break;
- case 0x21:
- op = ASM_OP_MOV_PSR_UM, fmt = ASM_FMT_M36;
- break;
- case 0x22:
- op = ASM_OP_MOV_M, fmt = ASM_FMT_M31;
- break;
- case 0x24:
- op = ASM_OP_MOV_, fmt = ASM_FMT_M33;
- break;
- case 0x25:
- op = ASM_OP_MOV_PSR, fmt = ASM_FMT_M36;
- break;
- case 0x29:
- op = ASM_OP_MOV_PSR_UM, fmt = ASM_FMT_M35;
- break;
- case 0x2A:
- op = ASM_OP_MOV_M, fmt = ASM_FMT_M29;
- break;
- case 0x2C:
- op = ASM_OP_MOV_, fmt = ASM_FMT_M32;
- break;
- case 0x2D:
- op = ASM_OP_MOV_PSR_L, fmt = ASM_FMT_M35;
- break;
- case 0x2E:
- op = ASM_OP_ITC_D, fmt = ASM_FMT_M41;
- break;
- case 0x2F:
- op = ASM_OP_ITC_I, fmt = ASM_FMT_M41;
- break;
- case 0x30:
- if (FIELD(bits, 36, 1) == 0) /* x */
- op = ASM_OP_FC_, fmt = ASM_FMT_M28;
- else
- op = ASM_OP_FC_I, fmt = ASM_FMT_M28;
- break;
- case 0x31:
- op = ASM_OP_PROBE_RW_FAULT, fmt = ASM_FMT_M40;
- break;
- case 0x32:
- op = ASM_OP_PROBE_R_FAULT, fmt = ASM_FMT_M40;
- break;
- case 0x33:
- op = ASM_OP_PROBE_W_FAULT, fmt = ASM_FMT_M40;
- break;
- case 0x34:
- op = ASM_OP_PTC_E, fmt = ASM_FMT_M47;
- break;
- case 0x38:
- op = ASM_OP_PROBE_R, fmt = ASM_FMT_M38;
- break;
- case 0x39:
- op = ASM_OP_PROBE_W, fmt = ASM_FMT_M38;
- break;
- }
- break;
- case 0x1:
- op = ASM_OP_CHK_S_M, fmt = ASM_FMT_M20;
- break;
- case 0x3:
- op = ASM_OP_CHK_S, fmt = ASM_FMT_M21;
- break;
- case 0x6:
- op = ASM_OP_ALLOC, fmt = ASM_FMT_M34;
- break;
- }
- break;
- case 0x4:
- if (FIELD(bits, 27, 1) == 0) { /* x */
- switch (FIELD(bits, 30, 7)) { /* x6 + m */
- case 0x0:
- op = ASM_OP_LD1_, fmt = ASM_FMT_M1;
- break;
- case 0x1:
- op = ASM_OP_LD2_, fmt = ASM_FMT_M1;
- break;
- case 0x2:
- op = ASM_OP_LD4_, fmt = ASM_FMT_M1;
- break;
- case 0x3:
- op = ASM_OP_LD8_, fmt = ASM_FMT_M1;
- break;
- case 0x4:
- op = ASM_OP_LD1_S, fmt = ASM_FMT_M1;
- break;
- case 0x5:
- op = ASM_OP_LD2_S, fmt = ASM_FMT_M1;
- break;
- case 0x6:
- op = ASM_OP_LD4_S, fmt = ASM_FMT_M1;
- break;
- case 0x7:
- op = ASM_OP_LD8_S, fmt = ASM_FMT_M1;
- break;
- case 0x8:
- op = ASM_OP_LD1_A, fmt = ASM_FMT_M1;
- break;
- case 0x9:
- op = ASM_OP_LD2_A, fmt = ASM_FMT_M1;
- break;
- case 0xA:
- op = ASM_OP_LD4_A, fmt = ASM_FMT_M1;
- break;
- case 0xB:
- op = ASM_OP_LD8_A, fmt = ASM_FMT_M1;
- break;
- case 0xC:
- op = ASM_OP_LD1_SA, fmt = ASM_FMT_M1;
- break;
- case 0xD:
- op = ASM_OP_LD2_SA, fmt = ASM_FMT_M1;
- break;
- case 0xE:
- op = ASM_OP_LD4_SA, fmt = ASM_FMT_M1;
- break;
- case 0xF:
- op = ASM_OP_LD8_SA, fmt = ASM_FMT_M1;
- break;
- case 0x10:
- op = ASM_OP_LD1_BIAS, fmt = ASM_FMT_M1;
- break;
- case 0x11:
- op = ASM_OP_LD2_BIAS, fmt = ASM_FMT_M1;
- break;
- case 0x12:
- op = ASM_OP_LD4_BIAS, fmt = ASM_FMT_M1;
- break;
- case 0x13:
- op = ASM_OP_LD8_BIAS, fmt = ASM_FMT_M1;
- break;
- case 0x14:
- op = ASM_OP_LD1_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x15:
- op = ASM_OP_LD2_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x16:
- op = ASM_OP_LD4_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x17:
- op = ASM_OP_LD8_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x1B:
- op = ASM_OP_LD8_FILL, fmt = ASM_FMT_M1;
- break;
- case 0x20:
- op = ASM_OP_LD1_C_CLR, fmt = ASM_FMT_M1;
- break;
- case 0x21:
- op = ASM_OP_LD2_C_CLR, fmt = ASM_FMT_M1;
- break;
- case 0x22:
- op = ASM_OP_LD4_C_CLR, fmt = ASM_FMT_M1;
- break;
- case 0x23:
- op = ASM_OP_LD8_C_CLR, fmt = ASM_FMT_M1;
- break;
- case 0x24:
- op = ASM_OP_LD1_C_NC, fmt = ASM_FMT_M1;
- break;
- case 0x25:
- op = ASM_OP_LD2_C_NC, fmt = ASM_FMT_M1;
- break;
- case 0x26:
- op = ASM_OP_LD4_C_NC, fmt = ASM_FMT_M1;
- break;
- case 0x27:
- op = ASM_OP_LD8_C_NC, fmt = ASM_FMT_M1;
- break;
- case 0x28:
- op = ASM_OP_LD1_C_CLR_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x29:
- op = ASM_OP_LD2_C_CLR_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x2A:
- op = ASM_OP_LD4_C_CLR_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x2B:
- op = ASM_OP_LD8_C_CLR_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x30:
- op = ASM_OP_ST1_, fmt = ASM_FMT_M4;
- break;
- case 0x31:
- op = ASM_OP_ST2_, fmt = ASM_FMT_M4;
- break;
- case 0x32:
- op = ASM_OP_ST4_, fmt = ASM_FMT_M4;
- break;
- case 0x33:
- op = ASM_OP_ST8_, fmt = ASM_FMT_M4;
- break;
- case 0x34:
- op = ASM_OP_ST1_REL, fmt = ASM_FMT_M4;
- break;
- case 0x35:
- op = ASM_OP_ST2_REL, fmt = ASM_FMT_M4;
- break;
- case 0x36:
- op = ASM_OP_ST4_REL, fmt = ASM_FMT_M4;
- break;
- case 0x37:
- op = ASM_OP_ST8_REL, fmt = ASM_FMT_M4;
- break;
- case 0x3B:
- op = ASM_OP_ST8_SPILL, fmt = ASM_FMT_M4;
- break;
- case 0x40:
- op = ASM_OP_LD1_, fmt = ASM_FMT_M2;
- break;
- case 0x41:
- op = ASM_OP_LD2_, fmt = ASM_FMT_M2;
- break;
- case 0x42:
- op = ASM_OP_LD4_, fmt = ASM_FMT_M2;
- break;
- case 0x43:
- op = ASM_OP_LD8_, fmt = ASM_FMT_M2;
- break;
- case 0x44:
- op = ASM_OP_LD1_S, fmt = ASM_FMT_M2;
- break;
- case 0x45:
- op = ASM_OP_LD2_S, fmt = ASM_FMT_M2;
- break;
- case 0x46:
- op = ASM_OP_LD4_S, fmt = ASM_FMT_M2;
- break;
- case 0x47:
- op = ASM_OP_LD8_S, fmt = ASM_FMT_M2;
- break;
- case 0x48:
- op = ASM_OP_LD1_A, fmt = ASM_FMT_M2;
- break;
- case 0x49:
- op = ASM_OP_LD2_A, fmt = ASM_FMT_M2;
- break;
- case 0x4A:
- op = ASM_OP_LD4_A, fmt = ASM_FMT_M2;
- break;
- case 0x4B:
- op = ASM_OP_LD8_A, fmt = ASM_FMT_M2;
- break;
- case 0x4C:
- op = ASM_OP_LD1_SA, fmt = ASM_FMT_M2;
- break;
- case 0x4D:
- op = ASM_OP_LD2_SA, fmt = ASM_FMT_M2;
- break;
- case 0x4E:
- op = ASM_OP_LD4_SA, fmt = ASM_FMT_M2;
- break;
- case 0x4F:
- op = ASM_OP_LD8_SA, fmt = ASM_FMT_M2;
- break;
- case 0x50:
- op = ASM_OP_LD1_BIAS, fmt = ASM_FMT_M2;
- break;
- case 0x51:
- op = ASM_OP_LD2_BIAS, fmt = ASM_FMT_M2;
- break;
- case 0x52:
- op = ASM_OP_LD4_BIAS, fmt = ASM_FMT_M2;
- break;
- case 0x53:
- op = ASM_OP_LD8_BIAS, fmt = ASM_FMT_M2;
- break;
- case 0x54:
- op = ASM_OP_LD1_ACQ, fmt = ASM_FMT_M2;
- break;
- case 0x55:
- op = ASM_OP_LD2_ACQ, fmt = ASM_FMT_M2;
- break;
- case 0x56:
- op = ASM_OP_LD4_ACQ, fmt = ASM_FMT_M2;
- break;
- case 0x57:
- op = ASM_OP_LD8_ACQ, fmt = ASM_FMT_M2;
- break;
- case 0x5B:
- op = ASM_OP_LD8_FILL, fmt = ASM_FMT_M2;
- break;
- case 0x60:
- op = ASM_OP_LD1_C_CLR, fmt = ASM_FMT_M2;
- break;
- case 0x61:
- op = ASM_OP_LD2_C_CLR, fmt = ASM_FMT_M2;
- break;
- case 0x62:
- op = ASM_OP_LD4_C_CLR, fmt = ASM_FMT_M2;
- break;
- case 0x63:
- op = ASM_OP_LD8_C_CLR, fmt = ASM_FMT_M2;
- break;
- case 0x64:
- op = ASM_OP_LD1_C_NC, fmt = ASM_FMT_M2;
- break;
- case 0x65:
- op = ASM_OP_LD2_C_NC, fmt = ASM_FMT_M2;
- break;
- case 0x66:
- op = ASM_OP_LD4_C_NC, fmt = ASM_FMT_M2;
- break;
- case 0x67:
- op = ASM_OP_LD8_C_NC, fmt = ASM_FMT_M2;
- break;
- case 0x68:
- op = ASM_OP_LD1_C_CLR_ACQ, fmt = ASM_FMT_M2;
- break;
- case 0x69:
- op = ASM_OP_LD2_C_CLR_ACQ, fmt = ASM_FMT_M2;
- break;
- case 0x6A:
- op = ASM_OP_LD4_C_CLR_ACQ, fmt = ASM_FMT_M2;
- break;
- case 0x6B:
- op = ASM_OP_LD8_C_CLR_ACQ, fmt = ASM_FMT_M2;
- break;
- }
- } else {
- switch (FIELD(bits, 30, 7)) { /* x6 + m */
- case 0x0:
- op = ASM_OP_CMPXCHG1_ACQ, fmt = ASM_FMT_M16;
- break;
- case 0x1:
- op = ASM_OP_CMPXCHG2_ACQ, fmt = ASM_FMT_M16;
- break;
- case 0x2:
- op = ASM_OP_CMPXCHG4_ACQ, fmt = ASM_FMT_M16;
- break;
- case 0x3:
- op = ASM_OP_CMPXCHG8_ACQ, fmt = ASM_FMT_M16;
- break;
- case 0x4:
- op = ASM_OP_CMPXCHG1_REL, fmt = ASM_FMT_M16;
- break;
- case 0x5:
- op = ASM_OP_CMPXCHG2_REL, fmt = ASM_FMT_M16;
- break;
- case 0x6:
- op = ASM_OP_CMPXCHG4_REL, fmt = ASM_FMT_M16;
- break;
- case 0x7:
- op = ASM_OP_CMPXCHG8_REL, fmt = ASM_FMT_M16;
- break;
- case 0x8:
- op = ASM_OP_XCHG1, fmt = ASM_FMT_M16;
- break;
- case 0x9:
- op = ASM_OP_XCHG2, fmt = ASM_FMT_M16;
- break;
- case 0xA:
- op = ASM_OP_XCHG4, fmt = ASM_FMT_M16;
- break;
- case 0xB:
- op = ASM_OP_XCHG8, fmt = ASM_FMT_M16;
- break;
- case 0x12:
- op = ASM_OP_FETCHADD4_ACQ, fmt = ASM_FMT_M17;
- break;
- case 0x13:
- op = ASM_OP_FETCHADD8_ACQ, fmt = ASM_FMT_M17;
- break;
- case 0x16:
- op = ASM_OP_FETCHADD4_REL, fmt = ASM_FMT_M17;
- break;
- case 0x17:
- op = ASM_OP_FETCHADD8_REL, fmt = ASM_FMT_M17;
- break;
- case 0x1C:
- op = ASM_OP_GETF_SIG, fmt = ASM_FMT_M19;
- break;
- case 0x1D:
- op = ASM_OP_GETF_EXP, fmt = ASM_FMT_M19;
- break;
- case 0x1E:
- op = ASM_OP_GETF_S, fmt = ASM_FMT_M19;
- break;
- case 0x1F:
- op = ASM_OP_GETF_D, fmt = ASM_FMT_M19;
- break;
- case 0x20:
- op = ASM_OP_CMP8XCHG16_ACQ, fmt = ASM_FMT_M16;
- break;
- case 0x24:
- op = ASM_OP_CMP8XCHG16_REL, fmt = ASM_FMT_M16;
- break;
- case 0x28:
- op = ASM_OP_LD16_, fmt = ASM_FMT_M1;
- break;
- case 0x2C:
- op = ASM_OP_LD16_ACQ, fmt = ASM_FMT_M1;
- break;
- case 0x30:
- op = ASM_OP_ST16_, fmt = ASM_FMT_M4;
- break;
- case 0x34:
- op = ASM_OP_ST16_REL, fmt = ASM_FMT_M4;
- break;
- }
- }
- break;
- case 0x5:
- switch (FIELD(bits, 30, 6)) { /* x6 */
- case 0x0:
- op = ASM_OP_LD1_, fmt = ASM_FMT_M3;
- break;
- case 0x1:
- op = ASM_OP_LD2_, fmt = ASM_FMT_M3;
- break;
- case 0x2:
- op = ASM_OP_LD4_, fmt = ASM_FMT_M3;
- break;
- case 0x3:
- op = ASM_OP_LD8_, fmt = ASM_FMT_M3;
- break;
- case 0x4:
- op = ASM_OP_LD1_S, fmt = ASM_FMT_M3;
- break;
- case 0x5:
- op = ASM_OP_LD2_S, fmt = ASM_FMT_M3;
- break;
- case 0x6:
- op = ASM_OP_LD4_S, fmt = ASM_FMT_M3;
- break;
- case 0x7:
- op = ASM_OP_LD8_S, fmt = ASM_FMT_M3;
- break;
- case 0x8:
- op = ASM_OP_LD1_A, fmt = ASM_FMT_M3;
- break;
- case 0x9:
- op = ASM_OP_LD2_A, fmt = ASM_FMT_M3;
- break;
- case 0xA:
- op = ASM_OP_LD4_A, fmt = ASM_FMT_M3;
- break;
- case 0xB:
- op = ASM_OP_LD8_A, fmt = ASM_FMT_M3;
- break;
- case 0xC:
- op = ASM_OP_LD1_SA, fmt = ASM_FMT_M3;
- break;
- case 0xD:
- op = ASM_OP_LD2_SA, fmt = ASM_FMT_M3;
- break;
- case 0xE:
- op = ASM_OP_LD4_SA, fmt = ASM_FMT_M3;
- break;
- case 0xF:
- op = ASM_OP_LD8_SA, fmt = ASM_FMT_M3;
- break;
- case 0x10:
- op = ASM_OP_LD1_BIAS, fmt = ASM_FMT_M3;
- break;
- case 0x11:
- op = ASM_OP_LD2_BIAS, fmt = ASM_FMT_M3;
- break;
- case 0x12:
- op = ASM_OP_LD4_BIAS, fmt = ASM_FMT_M3;
- break;
- case 0x13:
- op = ASM_OP_LD8_BIAS, fmt = ASM_FMT_M3;
- break;
- case 0x14:
- op = ASM_OP_LD1_ACQ, fmt = ASM_FMT_M3;
- break;
- case 0x15:
- op = ASM_OP_LD2_ACQ, fmt = ASM_FMT_M3;
- break;
- case 0x16:
- op = ASM_OP_LD4_ACQ, fmt = ASM_FMT_M3;
- break;
- case 0x17:
- op = ASM_OP_LD8_ACQ, fmt = ASM_FMT_M3;
- break;
- case 0x1B:
- op = ASM_OP_LD8_FILL, fmt = ASM_FMT_M3;
- break;
- case 0x20:
- op = ASM_OP_LD1_C_CLR, fmt = ASM_FMT_M3;
- break;
- case 0x21:
- op = ASM_OP_LD2_C_CLR, fmt = ASM_FMT_M3;
- break;
- case 0x22:
- op = ASM_OP_LD4_C_CLR, fmt = ASM_FMT_M3;
- break;
- case 0x23:
- op = ASM_OP_LD8_C_CLR, fmt = ASM_FMT_M3;
- break;
- case 0x24:
- op = ASM_OP_LD1_C_NC, fmt = ASM_FMT_M3;
- break;
- case 0x25:
- op = ASM_OP_LD2_C_NC, fmt = ASM_FMT_M3;
- break;
- case 0x26:
- op = ASM_OP_LD4_C_NC, fmt = ASM_FMT_M3;
- break;
- case 0x27:
- op = ASM_OP_LD8_C_NC, fmt = ASM_FMT_M3;
- break;
- case 0x28:
- op = ASM_OP_LD1_C_CLR_ACQ, fmt = ASM_FMT_M3;
- break;
- case 0x29:
- op = ASM_OP_LD2_C_CLR_ACQ, fmt = ASM_FMT_M3;
- break;
- case 0x2A:
- op = ASM_OP_LD4_C_CLR_ACQ, fmt = ASM_FMT_M3;
- break;
- case 0x2B:
- op = ASM_OP_LD8_C_CLR_ACQ, fmt = ASM_FMT_M3;
- break;
- case 0x30:
- op = ASM_OP_ST1_, fmt = ASM_FMT_M5;
- break;
- case 0x31:
- op = ASM_OP_ST2_, fmt = ASM_FMT_M5;
- break;
- case 0x32:
- op = ASM_OP_ST4_, fmt = ASM_FMT_M5;
- break;
- case 0x33:
- op = ASM_OP_ST8_, fmt = ASM_FMT_M5;
- break;
- case 0x34:
- op = ASM_OP_ST1_REL, fmt = ASM_FMT_M5;
- break;
- case 0x35:
- op = ASM_OP_ST2_REL, fmt = ASM_FMT_M5;
- break;
- case 0x36:
- op = ASM_OP_ST4_REL, fmt = ASM_FMT_M5;
- break;
- case 0x37:
- op = ASM_OP_ST8_REL, fmt = ASM_FMT_M5;
- break;
- case 0x3B:
- op = ASM_OP_ST8_SPILL, fmt = ASM_FMT_M5;
- break;
- }
- break;
- case 0x6:
- if (FIELD(bits, 27, 1) == 0) { /* x */
- switch (FIELD(bits, 30, 7)) { /* x6 + m */
- case 0x0:
- op = ASM_OP_LDFE_, fmt = ASM_FMT_M6;
- break;
- case 0x1:
- op = ASM_OP_LDF8_, fmt = ASM_FMT_M6;
- break;
- case 0x2:
- op = ASM_OP_LDFS_, fmt = ASM_FMT_M6;
- break;
- case 0x3:
- op = ASM_OP_LDFD_, fmt = ASM_FMT_M6;
- break;
- case 0x4:
- op = ASM_OP_LDFE_S, fmt = ASM_FMT_M6;
- break;
- case 0x5:
- op = ASM_OP_LDF8_S, fmt = ASM_FMT_M6;
- break;
- case 0x6:
- op = ASM_OP_LDFS_S, fmt = ASM_FMT_M6;
- break;
- case 0x7:
- op = ASM_OP_LDFD_S, fmt = ASM_FMT_M6;
- break;
- case 0x8:
- op = ASM_OP_LDFE_A, fmt = ASM_FMT_M6;
- break;
- case 0x9:
- op = ASM_OP_LDF8_A, fmt = ASM_FMT_M6;
- break;
- case 0xA:
- op = ASM_OP_LDFS_A, fmt = ASM_FMT_M6;
- break;
- case 0xB:
- op = ASM_OP_LDFD_A, fmt = ASM_FMT_M6;
- break;
- case 0xC:
- op = ASM_OP_LDFE_SA, fmt = ASM_FMT_M6;
- break;
- case 0xD:
- op = ASM_OP_LDF8_SA, fmt = ASM_FMT_M6;
- break;
- case 0xE:
- op = ASM_OP_LDFS_SA, fmt = ASM_FMT_M6;
- break;
- case 0xF:
- op = ASM_OP_LDFD_SA, fmt = ASM_FMT_M6;
- break;
- case 0x1B:
- op = ASM_OP_LDF_FILL, fmt = ASM_FMT_M6;
- break;
- case 0x20:
- op = ASM_OP_LDFE_C_CLR, fmt = ASM_FMT_M6;
- break;
- case 0x21:
- op = ASM_OP_LDF8_C_CLR, fmt = ASM_FMT_M6;
- break;
- case 0x22:
- op = ASM_OP_LDFS_C_CLR, fmt = ASM_FMT_M6;
- break;
- case 0x23:
- op = ASM_OP_LDFD_C_CLR, fmt = ASM_FMT_M6;
- break;
- case 0x24:
- op = ASM_OP_LDFE_C_NC, fmt = ASM_FMT_M6;
- break;
- case 0x25:
- op = ASM_OP_LDF8_C_NC, fmt = ASM_FMT_M6;
- break;
- case 0x26:
- op = ASM_OP_LDFS_C_NC, fmt = ASM_FMT_M6;
- break;
- case 0x27:
- op = ASM_OP_LDFD_C_NC, fmt = ASM_FMT_M6;
- break;
- case 0x2C:
- op = ASM_OP_LFETCH_, fmt = ASM_FMT_M13;
- break;
- case 0x2D:
- op = ASM_OP_LFETCH_EXCL, fmt = ASM_FMT_M13;
- break;
- case 0x2E:
- op = ASM_OP_LFETCH_FAULT, fmt = ASM_FMT_M13;
- break;
- case 0x2F:
- op = ASM_OP_LFETCH_FAULT_EXCL,
- fmt = ASM_FMT_M13;
- break;
- case 0x30:
- op = ASM_OP_STFE, fmt = ASM_FMT_M9;
- break;
- case 0x31:
- op = ASM_OP_STF8, fmt = ASM_FMT_M9;
- break;
- case 0x32:
- op = ASM_OP_STFS, fmt = ASM_FMT_M9;
- break;
- case 0x33:
- op = ASM_OP_STFD, fmt = ASM_FMT_M9;
- break;
- case 0x3B:
- op = ASM_OP_STF_SPILL, fmt = ASM_FMT_M9;
- break;
- case 0x40:
- op = ASM_OP_LDFE_, fmt = ASM_FMT_M7;
- break;
- case 0x41:
- op = ASM_OP_LDF8_, fmt = ASM_FMT_M7;
- break;
- case 0x42:
- op = ASM_OP_LDFS_, fmt = ASM_FMT_M7;
- break;
- case 0x43:
- op = ASM_OP_LDFD_, fmt = ASM_FMT_M7;
- break;
- case 0x44:
- op = ASM_OP_LDFE_S, fmt = ASM_FMT_M7;
- break;
- case 0x45:
- op = ASM_OP_LDF8_S, fmt = ASM_FMT_M7;
- break;
- case 0x46:
- op = ASM_OP_LDFS_S, fmt = ASM_FMT_M7;
- break;
- case 0x47:
- op = ASM_OP_LDFD_S, fmt = ASM_FMT_M7;
- break;
- case 0x48:
- op = ASM_OP_LDFE_A, fmt = ASM_FMT_M7;
- break;
- case 0x49:
- op = ASM_OP_LDF8_A, fmt = ASM_FMT_M7;
- break;
- case 0x4A:
- op = ASM_OP_LDFS_A, fmt = ASM_FMT_M7;
- break;
- case 0x4B:
- op = ASM_OP_LDFD_A, fmt = ASM_FMT_M7;
- break;
- case 0x4C:
- op = ASM_OP_LDFE_SA, fmt = ASM_FMT_M7;
- break;
- case 0x4D:
- op = ASM_OP_LDF8_SA, fmt = ASM_FMT_M7;
- break;
- case 0x4E:
- op = ASM_OP_LDFS_SA, fmt = ASM_FMT_M7;
- break;
- case 0x4F:
- op = ASM_OP_LDFD_SA, fmt = ASM_FMT_M7;
- break;
- case 0x5B:
- op = ASM_OP_LDF_FILL, fmt = ASM_FMT_M7;
- break;
- case 0x60:
- op = ASM_OP_LDFE_C_CLR, fmt = ASM_FMT_M7;
- break;
- case 0x61:
- op = ASM_OP_LDF8_C_CLR, fmt = ASM_FMT_M7;
- break;
- case 0x62:
- op = ASM_OP_LDFS_C_CLR, fmt = ASM_FMT_M7;
- break;
- case 0x63:
- op = ASM_OP_LDFD_C_CLR, fmt = ASM_FMT_M7;
- break;
- case 0x64:
- op = ASM_OP_LDFE_C_NC, fmt = ASM_FMT_M7;
- break;
- case 0x65:
- op = ASM_OP_LDF8_C_NC, fmt = ASM_FMT_M7;
- break;
- case 0x66:
- op = ASM_OP_LDFS_C_NC, fmt = ASM_FMT_M7;
- break;
- case 0x67:
- op = ASM_OP_LDFD_C_NC, fmt = ASM_FMT_M7;
- break;
- case 0x6C:
- op = ASM_OP_LFETCH_, fmt = ASM_FMT_M14;
- break;
- case 0x6D:
- op = ASM_OP_LFETCH_EXCL, fmt = ASM_FMT_M14;
- break;
- case 0x6E:
- op = ASM_OP_LFETCH_FAULT, fmt = ASM_FMT_M14;
- break;
- case 0x6F:
- op = ASM_OP_LFETCH_FAULT_EXCL,
- fmt = ASM_FMT_M14;
- break;
- }
- } else {
- switch (FIELD(bits, 30, 7)) { /* x6 + m */
- case 0x1:
- op = ASM_OP_LDFP8_, fmt = ASM_FMT_M11;
- break;
- case 0x2:
- op = ASM_OP_LDFPS_, fmt = ASM_FMT_M11;
- break;
- case 0x3:
- op = ASM_OP_LDFPD_, fmt = ASM_FMT_M11;
- break;
- case 0x5:
- op = ASM_OP_LDFP8_S, fmt = ASM_FMT_M11;
- break;
- case 0x6:
- op = ASM_OP_LDFPS_S, fmt = ASM_FMT_M11;
- break;
- case 0x7:
- op = ASM_OP_LDFPD_S, fmt = ASM_FMT_M11;
- break;
- case 0x9:
- op = ASM_OP_LDFP8_A, fmt = ASM_FMT_M11;
- break;
- case 0xA:
- op = ASM_OP_LDFPS_A, fmt = ASM_FMT_M11;
- break;
- case 0xB:
- op = ASM_OP_LDFPD_A, fmt = ASM_FMT_M11;
- break;
- case 0xD:
- op = ASM_OP_LDFP8_SA, fmt = ASM_FMT_M11;
- break;
- case 0xE:
- op = ASM_OP_LDFPS_SA, fmt = ASM_FMT_M11;
- break;
- case 0xF:
- op = ASM_OP_LDFPD_SA, fmt = ASM_FMT_M11;
- break;
- case 0x1C:
- op = ASM_OP_SETF_SIG, fmt = ASM_FMT_M18;
- break;
- case 0x1D:
- op = ASM_OP_SETF_EXP, fmt = ASM_FMT_M18;
- break;
- case 0x1E:
- op = ASM_OP_SETF_S, fmt = ASM_FMT_M18;
- break;
- case 0x1F:
- op = ASM_OP_SETF_D, fmt = ASM_FMT_M18;
- break;
- case 0x21:
- op = ASM_OP_LDFP8_C_CLR, fmt = ASM_FMT_M11;
- break;
- case 0x22:
- op = ASM_OP_LDFPS_C_CLR, fmt = ASM_FMT_M11;
- break;
- case 0x23:
- op = ASM_OP_LDFPD_C_CLR, fmt = ASM_FMT_M11;
- break;
- case 0x25:
- op = ASM_OP_LDFP8_C_NC, fmt = ASM_FMT_M11;
- break;
- case 0x26:
- op = ASM_OP_LDFPS_C_NC, fmt = ASM_FMT_M11;
- break;
- case 0x27:
- op = ASM_OP_LDFPD_C_NC, fmt = ASM_FMT_M11;
- break;
- case 0x41:
- op = ASM_OP_LDFP8_, fmt = ASM_FMT_M12;
- break;
- case 0x42:
- op = ASM_OP_LDFPS_, fmt = ASM_FMT_M12;
- break;
- case 0x43:
- op = ASM_OP_LDFPD_, fmt = ASM_FMT_M12;
- break;
- case 0x45:
- op = ASM_OP_LDFP8_S, fmt = ASM_FMT_M12;
- break;
- case 0x46:
- op = ASM_OP_LDFPS_S, fmt = ASM_FMT_M12;
- break;
- case 0x47:
- op = ASM_OP_LDFPD_S, fmt = ASM_FMT_M12;
- break;
- case 0x49:
- op = ASM_OP_LDFP8_A, fmt = ASM_FMT_M12;
- break;
- case 0x4A:
- op = ASM_OP_LDFPS_A, fmt = ASM_FMT_M12;
- break;
- case 0x4B:
- op = ASM_OP_LDFPD_A, fmt = ASM_FMT_M12;
- break;
- case 0x4D:
- op = ASM_OP_LDFP8_SA, fmt = ASM_FMT_M12;
- break;
- case 0x4E:
- op = ASM_OP_LDFPS_SA, fmt = ASM_FMT_M12;
- break;
- case 0x4F:
- op = ASM_OP_LDFPD_SA, fmt = ASM_FMT_M12;
- break;
- case 0x61:
- op = ASM_OP_LDFP8_C_CLR, fmt = ASM_FMT_M12;
- break;
- case 0x62:
- op = ASM_OP_LDFPS_C_CLR, fmt = ASM_FMT_M12;
- break;
- case 0x63:
- op = ASM_OP_LDFPD_C_CLR, fmt = ASM_FMT_M12;
- break;
- case 0x65:
- op = ASM_OP_LDFP8_C_NC, fmt = ASM_FMT_M12;
- break;
- case 0x66:
- op = ASM_OP_LDFPS_C_NC, fmt = ASM_FMT_M12;
- break;
- case 0x67:
- op = ASM_OP_LDFPD_C_NC, fmt = ASM_FMT_M12;
- break;
- }
- }
- break;
- case 0x7:
- switch (FIELD(bits, 30, 6)) { /* x6 */
- case 0x0:
- op = ASM_OP_LDFE_, fmt = ASM_FMT_M8;
- break;
- case 0x1:
- op = ASM_OP_LDF8_, fmt = ASM_FMT_M8;
- break;
- case 0x2:
- op = ASM_OP_LDFS_, fmt = ASM_FMT_M8;
- break;
- case 0x3:
- op = ASM_OP_LDFD_, fmt = ASM_FMT_M8;
- break;
- case 0x4:
- op = ASM_OP_LDFE_S, fmt = ASM_FMT_M8;
- break;
- case 0x5:
- op = ASM_OP_LDF8_S, fmt = ASM_FMT_M8;
- break;
- case 0x6:
- op = ASM_OP_LDFS_S, fmt = ASM_FMT_M8;
- break;
- case 0x7:
- op = ASM_OP_LDFD_S, fmt = ASM_FMT_M8;
- break;
- case 0x8:
- op = ASM_OP_LDFE_A, fmt = ASM_FMT_M8;
- break;
- case 0x9:
- op = ASM_OP_LDF8_A, fmt = ASM_FMT_M8;
- break;
- case 0xA:
- op = ASM_OP_LDFS_A, fmt = ASM_FMT_M8;
- break;
- case 0xB:
- op = ASM_OP_LDFD_A, fmt = ASM_FMT_M8;
- break;
- case 0xC:
- op = ASM_OP_LDFE_SA, fmt = ASM_FMT_M8;
- break;
- case 0xD:
- op = ASM_OP_LDF8_SA, fmt = ASM_FMT_M8;
- break;
- case 0xE:
- op = ASM_OP_LDFS_SA, fmt = ASM_FMT_M8;
- break;
- case 0xF:
- op = ASM_OP_LDFD_SA, fmt = ASM_FMT_M8;
- break;
- case 0x1B:
- op = ASM_OP_LDF_FILL, fmt = ASM_FMT_M8;
- break;
- case 0x20:
- op = ASM_OP_LDFE_C_CLR, fmt = ASM_FMT_M8;
- break;
- case 0x21:
- op = ASM_OP_LDF8_C_CLR, fmt = ASM_FMT_M8;
- break;
- case 0x22:
- op = ASM_OP_LDFS_C_CLR, fmt = ASM_FMT_M8;
- break;
- case 0x23:
- op = ASM_OP_LDFD_C_CLR, fmt = ASM_FMT_M8;
- break;
- case 0x24:
- op = ASM_OP_LDFE_C_NC, fmt = ASM_FMT_M8;
- break;
- case 0x25:
- op = ASM_OP_LDF8_C_NC, fmt = ASM_FMT_M8;
- break;
- case 0x26:
- op = ASM_OP_LDFS_C_NC, fmt = ASM_FMT_M8;
- break;
- case 0x27:
- op = ASM_OP_LDFD_C_NC, fmt = ASM_FMT_M8;
- break;
- case 0x2C:
- op = ASM_OP_LFETCH_, fmt = ASM_FMT_M15;
- break;
- case 0x2D:
- op = ASM_OP_LFETCH_EXCL, fmt = ASM_FMT_M15;
- break;
- case 0x2E:
- op = ASM_OP_LFETCH_FAULT, fmt = ASM_FMT_M15;
- break;
- case 0x2F:
- op = ASM_OP_LFETCH_FAULT_EXCL, fmt = ASM_FMT_M15;
- break;
- case 0x30:
- op = ASM_OP_STFE, fmt = ASM_FMT_M10;
- break;
- case 0x31:
- op = ASM_OP_STF8, fmt = ASM_FMT_M10;
- break;
- case 0x32:
- op = ASM_OP_STFS, fmt = ASM_FMT_M10;
- break;
- case 0x33:
- op = ASM_OP_STFD, fmt = ASM_FMT_M10;
- break;
- case 0x3B:
- op = ASM_OP_STF_SPILL, fmt = ASM_FMT_M10;
- break;
- }
- break;
- }
-
- if (op != ASM_OP_NONE)
- return (asm_extract(op, fmt, bits, b, slot));
- return (0);
-}
-
-/*
- * Decode X-unit instructions.
- */
-static int
-asm_decodeX(uint64_t ip, struct asm_bundle *b, int slot)
-{
- uint64_t bits;
- enum asm_fmt fmt;
- enum asm_op op;
-
- KASSERT(slot == 2, ("foo"));
- bits = SLOT(ip, slot);
- fmt = ASM_FMT_NONE, op = ASM_OP_NONE;
- /* Initialize slot 1 (slot - 1) */
- b->b_inst[slot - 1].i_format = ASM_FMT_NONE;
- b->b_inst[slot - 1].i_bits = SLOT(ip, slot - 1);
-
- switch((int)OPCODE(bits)) {
- case 0x0:
- if (FIELD(bits, 33, 3) == 0) { /* x3 */
- switch (FIELD(bits, 27, 6)) { /* x6 */
- case 0x0:
- op = ASM_OP_BREAK_X, fmt = ASM_FMT_X1;
- break;
- case 0x1:
- if (FIELD(bits, 26, 1) == 0) /* y */
- op = ASM_OP_NOP_X, fmt = ASM_FMT_X5;
- else
- op = ASM_OP_HINT_X, fmt = ASM_FMT_X5;
- break;
- }
- }
- break;
- case 0x6:
- if (FIELD(bits, 20, 1) == 0)
- op = ASM_OP_MOVL, fmt = ASM_FMT_X2;
- break;
- case 0xC:
- if (FIELD(bits, 6, 3) == 0) /* btype */
- op = ASM_OP_BRL_COND, fmt = ASM_FMT_X3;
- break;
- case 0xD:
- op = ASM_OP_BRL_CALL, fmt = ASM_FMT_X4;
- break;
- }
-
- if (op != ASM_OP_NONE)
- return (asm_extract(op, fmt, bits, b, slot));
- return (0);
-}
-
-int
-asm_decode(uint64_t ip, struct asm_bundle *b)
-{
- const char *tp;
- unsigned int slot;
- int ok;
-
- memset(b, 0, sizeof(*b));
-
- b->b_templ = asm_templname[TMPL(ip)];
- if (b->b_templ == 0)
- return (0);
-
- slot = 0;
- tp = b->b_templ;
-
- ok = 1;
- while (ok && *tp != 0) {
- switch (*tp++) {
- case 'B':
- ok = asm_decodeB(ip, b, slot++);
- break;
- case 'F':
- ok = asm_decodeF(ip, b, slot++);
- break;
- case 'I':
- ok = asm_decodeI(ip, b, slot++);
- break;
- case 'L':
- ok = (slot++ == 1) ? 1 : 0;
- break;
- case 'M':
- ok = asm_decodeM(ip, b, slot++);
- break;
- case 'X':
- ok = asm_decodeX(ip, b, slot++);
- break;
- case ';':
- ok = 1;
- break;
- default:
- ok = 0;
- break;
- }
- }
- return (ok);
-}
diff --git a/sys/ia64/disasm/disasm_extract.c b/sys/ia64/disasm/disasm_extract.c
deleted file mode 100644
index 1cec07e..0000000
--- a/sys/ia64/disasm/disasm_extract.c
+++ /dev/null
@@ -1,2609 +0,0 @@
-/*-
- * Copyright (c) 2000-2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-
-#include <machine/stdarg.h>
-
-#include <ia64/disasm/disasm_int.h>
-#include <ia64/disasm/disasm.h>
-
-#define FRAG(o,l) ((int)((o << 8) | (l & 0xff)))
-#define FRAG_OFS(f) (f >> 8)
-#define FRAG_LEN(f) (f & 0xff)
-
-/*
- * Support functions.
- */
-static void
-asm_cmpltr_add(struct asm_inst *i, enum asm_cmpltr_class c,
- enum asm_cmpltr_type t)
-{
-
- i->i_cmpltr[i->i_ncmpltrs].c_class = c;
- i->i_cmpltr[i->i_ncmpltrs].c_type = t;
- i->i_ncmpltrs++;
- KASSERT(i->i_ncmpltrs < 6, ("foo"));
-}
-
-static void
-asm_hint(struct asm_inst *i, enum asm_cmpltr_class c)
-{
-
- switch (FIELD(i->i_bits, 28, 2)) { /* hint */
- case 0:
- asm_cmpltr_add(i, c, ASM_CT_NONE);
- break;
- case 1:
- asm_cmpltr_add(i, c, ASM_CT_NT1);
- break;
- case 2:
- asm_cmpltr_add(i, c, ASM_CT_NT2);
- break;
- case 3:
- asm_cmpltr_add(i, c, ASM_CT_NTA);
- break;
- }
-}
-
-static void
-asm_sf(struct asm_inst *i)
-{
-
- switch (FIELD(i->i_bits, 34, 2)) {
- case 0:
- asm_cmpltr_add(i, ASM_CC_SF, ASM_CT_S0);
- break;
- case 1:
- asm_cmpltr_add(i, ASM_CC_SF, ASM_CT_S1);
- break;
- case 2:
- asm_cmpltr_add(i, ASM_CC_SF, ASM_CT_S2);
- break;
- case 3:
- asm_cmpltr_add(i, ASM_CC_SF, ASM_CT_S3);
- break;
- }
-}
-
-static void
-asm_brhint(struct asm_inst *i)
-{
- uint64_t bits = i->i_bits;
-
- switch (FIELD(bits, 33, 2)) { /* bwh */
- case 0:
- asm_cmpltr_add(i, ASM_CC_BWH, ASM_CT_SPTK);
- break;
- case 1:
- asm_cmpltr_add(i, ASM_CC_BWH, ASM_CT_SPNT);
- break;
- case 2:
- asm_cmpltr_add(i, ASM_CC_BWH, ASM_CT_DPTK);
- break;
- case 3:
- asm_cmpltr_add(i, ASM_CC_BWH, ASM_CT_DPNT);
- break;
- }
-
- if (FIELD(bits, 12, 1)) /* ph */
- asm_cmpltr_add(i, ASM_CC_PH, ASM_CT_MANY);
- else
- asm_cmpltr_add(i, ASM_CC_PH, ASM_CT_FEW);
-
- if (FIELD(bits, 35, 1)) /* dh */
- asm_cmpltr_add(i, ASM_CC_DH, ASM_CT_CLR);
- else
- asm_cmpltr_add(i, ASM_CC_DH, ASM_CT_NONE);
-}
-
-static void
-asm_brphint(struct asm_inst *i)
-{
- uint64_t bits = i->i_bits;
-
- switch (FIELD(bits, 3, 2)) { /* ipwh, indwh */
- case 0:
- asm_cmpltr_add(i, ASM_CC_IPWH, ASM_CT_SPTK);
- break;
- case 1:
- asm_cmpltr_add(i, ASM_CC_IPWH, ASM_CT_LOOP);
- break;
- case 2:
- asm_cmpltr_add(i, ASM_CC_IPWH, ASM_CT_DPTK);
- break;
- case 3:
- asm_cmpltr_add(i, ASM_CC_IPWH, ASM_CT_EXIT);
- break;
- }
-
- if (FIELD(bits, 5, 1)) /* ph */
- asm_cmpltr_add(i, ASM_CC_PH, ASM_CT_MANY);
- else
- asm_cmpltr_add(i, ASM_CC_PH, ASM_CT_FEW);
-
- switch (FIELD(bits, 0, 3)) { /* pvec */
- case 0:
- asm_cmpltr_add(i, ASM_CC_PVEC, ASM_CT_DC_DC);
- break;
- case 1:
- asm_cmpltr_add(i, ASM_CC_PVEC, ASM_CT_DC_NT);
- break;
- case 2:
- asm_cmpltr_add(i, ASM_CC_PVEC, ASM_CT_TK_DC);
- break;
- case 3:
- asm_cmpltr_add(i, ASM_CC_PVEC, ASM_CT_TK_TK);
- break;
- case 4:
- asm_cmpltr_add(i, ASM_CC_PVEC, ASM_CT_TK_NT);
- break;
- case 5:
- asm_cmpltr_add(i, ASM_CC_PVEC, ASM_CT_NT_DC);
- break;
- case 6:
- asm_cmpltr_add(i, ASM_CC_PVEC, ASM_CT_NT_TK);
- break;
- case 7:
- asm_cmpltr_add(i, ASM_CC_PVEC, ASM_CT_NT_NT);
- break;
- }
-
- if (FIELD(bits, 35, 1)) /* ih */
- asm_cmpltr_add(i, ASM_CC_IH, ASM_CT_IMP);
- else
- asm_cmpltr_add(i, ASM_CC_IH, ASM_CT_NONE);
-}
-
-static enum asm_oper_type
-asm_normalize(struct asm_inst *i, enum asm_op op)
-{
- enum asm_oper_type ot = ASM_OPER_NONE;
-
- switch (op) {
- case ASM_OP_BR_CALL:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_CALL);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BR_CEXIT:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_CEXIT);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BR_CLOOP:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_CLOOP);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BR_COND:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_COND);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BR_CTOP:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_CTOP);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BR_IA:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_IA);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BR_RET:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_RET);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BR_WEXIT:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_WEXIT);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BR_WTOP:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_WTOP);
- op = ASM_OP_BR;
- break;
- case ASM_OP_BREAK_B:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_B);
- op = ASM_OP_BREAK;
- break;
- case ASM_OP_BREAK_F:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_F);
- op = ASM_OP_BREAK;
- break;
- case ASM_OP_BREAK_I:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_I);
- op = ASM_OP_BREAK;
- break;
- case ASM_OP_BREAK_M:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_M);
- op = ASM_OP_BREAK;
- break;
- case ASM_OP_BREAK_X:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_X);
- op = ASM_OP_BREAK;
- break;
- case ASM_OP_BRL_COND:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_COND);
- op = ASM_OP_BRL;
- break;
- case ASM_OP_BRL_CALL:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_CALL);
- op = ASM_OP_BRL;
- break;
- case ASM_OP_BRP_:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_NONE);
- op = ASM_OP_BRP;
- break;
- case ASM_OP_BRP_RET:
- asm_cmpltr_add(i, ASM_CC_BTYPE, ASM_CT_RET);
- op = ASM_OP_BRP;
- break;
- case ASM_OP_BSW_0:
- asm_cmpltr_add(i, ASM_CC_BSW, ASM_CT_0);
- op = ASM_OP_BSW;
- break;
- case ASM_OP_BSW_1:
- asm_cmpltr_add(i, ASM_CC_BSW, ASM_CT_1);
- op = ASM_OP_BSW;
- break;
- case ASM_OP_CHK_A_CLR:
- asm_cmpltr_add(i, ASM_CC_CHK, ASM_CT_A);
- asm_cmpltr_add(i, ASM_CC_ACLR, ASM_CT_CLR);
- op = ASM_OP_CHK;
- break;
- case ASM_OP_CHK_A_NC:
- asm_cmpltr_add(i, ASM_CC_CHK, ASM_CT_A);
- asm_cmpltr_add(i, ASM_CC_ACLR, ASM_CT_NC);
- op = ASM_OP_CHK;
- break;
- case ASM_OP_CHK_S:
- asm_cmpltr_add(i, ASM_CC_CHK, ASM_CT_S);
- op = ASM_OP_CHK;
- break;
- case ASM_OP_CHK_S_I:
- asm_cmpltr_add(i, ASM_CC_CHK, ASM_CT_S);
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_I);
- op = ASM_OP_CHK;
- break;
- case ASM_OP_CHK_S_M:
- asm_cmpltr_add(i, ASM_CC_CHK, ASM_CT_S);
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_M);
- op = ASM_OP_CHK;
- break;
- case ASM_OP_CLRRRB_:
- asm_cmpltr_add(i, ASM_CC_CLRRRB, ASM_CT_NONE);
- op = ASM_OP_CLRRRB;
- break;
- case ASM_OP_CLRRRB_PR:
- asm_cmpltr_add(i, ASM_CC_CLRRRB, ASM_CT_PR);
- op = ASM_OP_CLRRRB;
- break;
- case ASM_OP_CMP_EQ:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_EQ_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_EQ_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_EQ_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_EQ_UNC:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_GE_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_GE_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_GE_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_GT_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_GT_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_GT_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LE_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LE_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LE_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LT:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LT_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LT_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LT_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LT_UNC:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LTU:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LTU);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_LTU_UNC:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LTU);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_NE_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_NE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_NE_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_NE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP_NE_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_NE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP;
- break;
- case ASM_OP_CMP4_EQ:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_EQ_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_EQ_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_EQ_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_EQ_UNC:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_EQ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_GE_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_GE_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_GE_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_GT_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_GT_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_GT_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_GT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LE_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LE_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LE_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LT:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LT_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LT_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LT_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LT_UNC:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LT);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LTU:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LTU);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_LTU_UNC:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_LTU);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_NE_AND:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_NE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_NE_OR:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_NE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP4_NE_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_CREL, ASM_CT_NE);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_CMP4;
- break;
- case ASM_OP_CMP8XCHG16_ACQ:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_ACQ);
- op = ASM_OP_CMP8XCHG16;
- break;
- case ASM_OP_CMP8XCHG16_REL:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_REL);
- op = ASM_OP_CMP8XCHG16;
- break;
- case ASM_OP_CMPXCHG1_ACQ:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_ACQ);
- op = ASM_OP_CMPXCHG1;
- break;
- case ASM_OP_CMPXCHG1_REL:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_REL);
- op = ASM_OP_CMPXCHG1;
- break;
- case ASM_OP_CMPXCHG2_ACQ:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_ACQ);
- op = ASM_OP_CMPXCHG2;
- break;
- case ASM_OP_CMPXCHG2_REL:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_REL);
- op = ASM_OP_CMPXCHG2;
- break;
- case ASM_OP_CMPXCHG4_ACQ:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_ACQ);
- op = ASM_OP_CMPXCHG4;
- break;
- case ASM_OP_CMPXCHG4_REL:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_REL);
- op = ASM_OP_CMPXCHG4;
- break;
- case ASM_OP_CMPXCHG8_ACQ:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_ACQ);
- op = ASM_OP_CMPXCHG8;
- break;
- case ASM_OP_CMPXCHG8_REL:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_REL);
- op = ASM_OP_CMPXCHG8;
- break;
- case ASM_OP_CZX1_L:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_L);
- op = ASM_OP_CZX1;
- break;
- case ASM_OP_CZX1_R:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_R);
- op = ASM_OP_CZX1;
- break;
- case ASM_OP_CZX2_L:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_L);
- op = ASM_OP_CZX2;
- break;
- case ASM_OP_CZX2_R:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_R);
- op = ASM_OP_CZX2;
- break;
- case ASM_OP_DEP_:
- asm_cmpltr_add(i, ASM_CC_DEP, ASM_CT_NONE);
- op = ASM_OP_DEP;
- break;
- case ASM_OP_DEP_Z:
- asm_cmpltr_add(i, ASM_CC_DEP, ASM_CT_Z);
- op = ASM_OP_DEP;
- break;
- case ASM_OP_FC_:
- asm_cmpltr_add(i, ASM_CC_FC, ASM_CT_NONE);
- op = ASM_OP_FC;
- break;
- case ASM_OP_FC_I:
- asm_cmpltr_add(i, ASM_CC_FC, ASM_CT_I);
- op = ASM_OP_FC;
- break;
- case ASM_OP_FCLASS_M:
- asm_cmpltr_add(i, ASM_CC_FCREL, ASM_CT_M);
- op = ASM_OP_FCLASS;
- break;
- case ASM_OP_FCVT_FX:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_FX);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_NONE);
- op = ASM_OP_FCVT;
- break;
- case ASM_OP_FCVT_FX_TRUNC:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_FX);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_TRUNC);
- op = ASM_OP_FCVT;
- break;
- case ASM_OP_FCVT_FXU:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_FXU);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_NONE);
- op = ASM_OP_FCVT;
- break;
- case ASM_OP_FCVT_FXU_TRUNC:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_FXU);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_TRUNC);
- op = ASM_OP_FCVT;
- break;
- case ASM_OP_FCVT_XF:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_XF);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_NONE);
- op = ASM_OP_FCVT;
- break;
- case ASM_OP_FETCHADD4_ACQ:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_ACQ);
- op = ASM_OP_FETCHADD4;
- break;
- case ASM_OP_FETCHADD4_REL:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_REL);
- op = ASM_OP_FETCHADD4;
- break;
- case ASM_OP_FETCHADD8_ACQ:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_ACQ);
- op = ASM_OP_FETCHADD8;
- break;
- case ASM_OP_FETCHADD8_REL:
- asm_cmpltr_add(i, ASM_CC_SEM, ASM_CT_REL);
- op = ASM_OP_FETCHADD8;
- break;
- case ASM_OP_FMA_:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_NONE);
- op = ASM_OP_FMA;
- break;
- case ASM_OP_FMA_D:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_D);
- op = ASM_OP_FMA;
- break;
- case ASM_OP_FMA_S:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_S);
- op = ASM_OP_FMA;
- break;
- case ASM_OP_FMERGE_NS:
- asm_cmpltr_add(i, ASM_CC_FMERGE, ASM_CT_NS);
- op = ASM_OP_FMERGE;
- break;
- case ASM_OP_FMERGE_S:
- asm_cmpltr_add(i, ASM_CC_FMERGE, ASM_CT_S);
- op = ASM_OP_FMERGE;
- break;
- case ASM_OP_FMERGE_SE:
- asm_cmpltr_add(i, ASM_CC_FMERGE, ASM_CT_SE);
- op = ASM_OP_FMERGE;
- break;
- case ASM_OP_FMIX_L:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_L);
- op = ASM_OP_FMIX;
- break;
- case ASM_OP_FMIX_LR:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_LR);
- op = ASM_OP_FMIX;
- break;
- case ASM_OP_FMIX_R:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_R);
- op = ASM_OP_FMIX;
- break;
- case ASM_OP_FMS_:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_NONE);
- op = ASM_OP_FMS;
- break;
- case ASM_OP_FMS_D:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_D);
- op = ASM_OP_FMS;
- break;
- case ASM_OP_FMS_S:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_S);
- op = ASM_OP_FMS;
- break;
- case ASM_OP_FNMA_:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_NONE);
- op = ASM_OP_FNMA;
- break;
- case ASM_OP_FNMA_D:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_D);
- op = ASM_OP_FNMA;
- break;
- case ASM_OP_FNMA_S:
- asm_cmpltr_add(i, ASM_CC_PC, ASM_CT_S);
- op = ASM_OP_FNMA;
- break;
- case ASM_OP_FPCMP_EQ:
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_EQ);
- op = ASM_OP_FPCMP;
- break;
- case ASM_OP_FPCMP_LE:
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_LE);
- op = ASM_OP_FPCMP;
- break;
- case ASM_OP_FPCMP_LT:
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_LT);
- op = ASM_OP_FPCMP;
- break;
- case ASM_OP_FPCMP_NEQ:
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_NEQ);
- op = ASM_OP_FPCMP;
- break;
- case ASM_OP_FPCMP_NLE:
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_NLE);
- op = ASM_OP_FPCMP;
- break;
- case ASM_OP_FPCMP_NLT:
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_NLT);
- op = ASM_OP_FPCMP;
- break;
- case ASM_OP_FPCMP_ORD:
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_ORD);
- op = ASM_OP_FPCMP;
- break;
- case ASM_OP_FPCMP_UNORD:
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_UNORD);
- op = ASM_OP_FPCMP;
- break;
- case ASM_OP_FPCVT_FX:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_FX);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_NONE);
- op = ASM_OP_FPCVT;
- break;
- case ASM_OP_FPCVT_FX_TRUNC:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_FX);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_TRUNC);
- op = ASM_OP_FPCVT;
- break;
- case ASM_OP_FPCVT_FXU:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_FXU);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_NONE);
- op = ASM_OP_FPCVT;
- break;
- case ASM_OP_FPCVT_FXU_TRUNC:
- asm_cmpltr_add(i, ASM_CC_FCVT, ASM_CT_FXU);
- asm_cmpltr_add(i, ASM_CC_TRUNC, ASM_CT_TRUNC);
- op = ASM_OP_FPCVT;
- break;
- case ASM_OP_FPMERGE_NS:
- asm_cmpltr_add(i, ASM_CC_FMERGE, ASM_CT_NS);
- op = ASM_OP_FPMERGE;
- break;
- case ASM_OP_FPMERGE_S:
- asm_cmpltr_add(i, ASM_CC_FMERGE, ASM_CT_S);
- op = ASM_OP_FPMERGE;
- break;
- case ASM_OP_FPMERGE_SE:
- asm_cmpltr_add(i, ASM_CC_FMERGE, ASM_CT_SE);
- op = ASM_OP_FPMERGE;
- break;
- case ASM_OP_FSWAP_:
- asm_cmpltr_add(i, ASM_CC_FSWAP, ASM_CT_NONE);
- op = ASM_OP_FSWAP;
- break;
- case ASM_OP_FSWAP_NL:
- asm_cmpltr_add(i, ASM_CC_FSWAP, ASM_CT_NL);
- op = ASM_OP_FSWAP;
- break;
- case ASM_OP_FSWAP_NR:
- asm_cmpltr_add(i, ASM_CC_FSWAP, ASM_CT_NR);
- op = ASM_OP_FSWAP;
- break;
- case ASM_OP_FSXT_L:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_L);
- op = ASM_OP_FSXT;
- break;
- case ASM_OP_FSXT_R:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_R);
- op = ASM_OP_FSXT;
- break;
- case ASM_OP_GETF_D:
- asm_cmpltr_add(i, ASM_CC_GETF, ASM_CT_D);
- op = ASM_OP_GETF;
- break;
- case ASM_OP_GETF_EXP:
- asm_cmpltr_add(i, ASM_CC_GETF, ASM_CT_EXP);
- op = ASM_OP_GETF;
- break;
- case ASM_OP_GETF_S:
- asm_cmpltr_add(i, ASM_CC_GETF, ASM_CT_S);
- op = ASM_OP_GETF;
- break;
- case ASM_OP_GETF_SIG:
- asm_cmpltr_add(i, ASM_CC_GETF, ASM_CT_SIG);
- op = ASM_OP_GETF;
- break;
- case ASM_OP_HINT_B:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_B);
- op = ASM_OP_HINT;
- break;
- case ASM_OP_HINT_F:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_F);
- op = ASM_OP_HINT;
- break;
- case ASM_OP_HINT_I:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_I);
- op = ASM_OP_HINT;
- break;
- case ASM_OP_HINT_M:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_M);
- op = ASM_OP_HINT;
- break;
- case ASM_OP_HINT_X:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_X);
- op = ASM_OP_HINT;
- break;
- case ASM_OP_INVALA_:
- asm_cmpltr_add(i, ASM_CC_INVALA, ASM_CT_NONE);
- op = ASM_OP_INVALA;
- break;
- case ASM_OP_INVALA_E:
- asm_cmpltr_add(i, ASM_CC_INVALA, ASM_CT_E);
- op = ASM_OP_INVALA;
- break;
- case ASM_OP_ITC_D:
- asm_cmpltr_add(i, ASM_CC_ITC, ASM_CT_D);
- op = ASM_OP_ITC;
- break;
- case ASM_OP_ITC_I:
- asm_cmpltr_add(i, ASM_CC_ITC, ASM_CT_I);
- op = ASM_OP_ITC;
- break;
- case ASM_OP_ITR_D:
- asm_cmpltr_add(i, ASM_CC_ITR, ASM_CT_D);
- ot = ASM_OPER_DTR;
- op = ASM_OP_ITR;
- break;
- case ASM_OP_ITR_I:
- asm_cmpltr_add(i, ASM_CC_ITR, ASM_CT_I);
- ot = ASM_OPER_ITR;
- op = ASM_OP_ITR;
- break;
- case ASM_OP_LD1_:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_NONE);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD1_A:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_A);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD1_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_ACQ);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD1_BIAS:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_BIAS);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD1_C_CLR:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD1_C_CLR_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_CLR_ACQ);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD1_C_NC:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD1_S:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_S);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD1_SA:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_SA);
- op = ASM_OP_LD1;
- break;
- case ASM_OP_LD16_:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_NONE);
- op = ASM_OP_LD16;
- break;
- case ASM_OP_LD16_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_ACQ);
- op = ASM_OP_LD16;
- break;
- case ASM_OP_LD2_:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_NONE);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD2_A:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_A);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD2_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_ACQ);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD2_BIAS:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_BIAS);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD2_C_CLR:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD2_C_CLR_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_CLR_ACQ);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD2_C_NC:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD2_S:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_S);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD2_SA:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_SA);
- op = ASM_OP_LD2;
- break;
- case ASM_OP_LD4_:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_NONE);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD4_A:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_A);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD4_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_ACQ);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD4_BIAS:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_BIAS);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD4_C_CLR:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD4_C_CLR_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_CLR_ACQ);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD4_C_NC:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD4_S:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_S);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD4_SA:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_SA);
- op = ASM_OP_LD4;
- break;
- case ASM_OP_LD8_:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_NONE);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_A:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_A);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_ACQ);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_BIAS:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_BIAS);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_C_CLR:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_C_CLR_ACQ:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_CLR_ACQ);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_C_NC:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_FILL:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_FILL);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_S:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_S);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LD8_SA:
- asm_cmpltr_add(i, ASM_CC_LDTYPE, ASM_CT_SA);
- op = ASM_OP_LD8;
- break;
- case ASM_OP_LDF_FILL:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_FILL);
- op = ASM_OP_LDF;
- break;
- case ASM_OP_LDF8_:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_NONE);
- op = ASM_OP_LDF8;
- break;
- case ASM_OP_LDF8_A:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_A);
- op = ASM_OP_LDF8;
- break;
- case ASM_OP_LDF8_C_CLR:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LDF8;
- break;
- case ASM_OP_LDF8_C_NC:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LDF8;
- break;
- case ASM_OP_LDF8_S:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_S);
- op = ASM_OP_LDF8;
- break;
- case ASM_OP_LDF8_SA:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_SA);
- op = ASM_OP_LDF8;
- break;
- case ASM_OP_LDFD_:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_NONE);
- op = ASM_OP_LDFD;
- break;
- case ASM_OP_LDFD_A:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_A);
- op = ASM_OP_LDFD;
- break;
- case ASM_OP_LDFD_C_CLR:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LDFD;
- break;
- case ASM_OP_LDFD_C_NC:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LDFD;
- break;
- case ASM_OP_LDFD_S:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_S);
- op = ASM_OP_LDFD;
- break;
- case ASM_OP_LDFD_SA:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_SA);
- op = ASM_OP_LDFD;
- break;
- case ASM_OP_LDFE_:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_NONE);
- op = ASM_OP_LDFE;
- break;
- case ASM_OP_LDFE_A:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_A);
- op = ASM_OP_LDFE;
- break;
- case ASM_OP_LDFE_C_CLR:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LDFE;
- break;
- case ASM_OP_LDFE_C_NC:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LDFE;
- break;
- case ASM_OP_LDFE_S:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_S);
- op = ASM_OP_LDFE;
- break;
- case ASM_OP_LDFE_SA:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_SA);
- op = ASM_OP_LDFE;
- break;
- case ASM_OP_LDFP8_:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_NONE);
- op = ASM_OP_LDFP8;
- break;
- case ASM_OP_LDFP8_A:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_A);
- op = ASM_OP_LDFP8;
- break;
- case ASM_OP_LDFP8_C_CLR:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LDFP8;
- break;
- case ASM_OP_LDFP8_C_NC:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LDFP8;
- break;
- case ASM_OP_LDFP8_S:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_S);
- op = ASM_OP_LDFP8;
- break;
- case ASM_OP_LDFP8_SA:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_SA);
- op = ASM_OP_LDFP8;
- break;
- case ASM_OP_LDFPD_:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_NONE);
- op = ASM_OP_LDFPD;
- break;
- case ASM_OP_LDFPD_A:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_A);
- op = ASM_OP_LDFPD;
- break;
- case ASM_OP_LDFPD_C_CLR:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LDFPD;
- break;
- case ASM_OP_LDFPD_C_NC:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LDFPD;
- break;
- case ASM_OP_LDFPD_S:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_S);
- op = ASM_OP_LDFPD;
- break;
- case ASM_OP_LDFPD_SA:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_SA);
- op = ASM_OP_LDFPD;
- break;
- case ASM_OP_LDFPS_:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_NONE);
- op = ASM_OP_LDFPS;
- break;
- case ASM_OP_LDFPS_A:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_A);
- op = ASM_OP_LDFPS;
- break;
- case ASM_OP_LDFPS_C_CLR:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LDFPS;
- break;
- case ASM_OP_LDFPS_C_NC:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LDFPS;
- break;
- case ASM_OP_LDFPS_S:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_S);
- op = ASM_OP_LDFPS;
- break;
- case ASM_OP_LDFPS_SA:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_SA);
- op = ASM_OP_LDFPS;
- break;
- case ASM_OP_LDFS_:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_NONE);
- op = ASM_OP_LDFS;
- break;
- case ASM_OP_LDFS_A:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_A);
- op = ASM_OP_LDFS;
- break;
- case ASM_OP_LDFS_C_CLR:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_CLR);
- op = ASM_OP_LDFS;
- break;
- case ASM_OP_LDFS_C_NC:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_C_NC);
- op = ASM_OP_LDFS;
- break;
- case ASM_OP_LDFS_S:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_S);
- op = ASM_OP_LDFS;
- break;
- case ASM_OP_LDFS_SA:
- asm_cmpltr_add(i, ASM_CC_FLDTYPE, ASM_CT_SA);
- op = ASM_OP_LDFS;
- break;
- case ASM_OP_LFETCH_:
- asm_cmpltr_add(i, ASM_CC_LFTYPE, ASM_CT_NONE);
- asm_cmpltr_add(i, ASM_CC_LFETCH, ASM_CT_NONE);
- op = ASM_OP_LFETCH;
- break;
- case ASM_OP_LFETCH_EXCL:
- asm_cmpltr_add(i, ASM_CC_LFTYPE, ASM_CT_NONE);
- asm_cmpltr_add(i, ASM_CC_LFETCH, ASM_CT_EXCL);
- op = ASM_OP_LFETCH;
- break;
- case ASM_OP_LFETCH_FAULT:
- asm_cmpltr_add(i, ASM_CC_LFTYPE, ASM_CT_FAULT);
- asm_cmpltr_add(i, ASM_CC_LFETCH, ASM_CT_NONE);
- op = ASM_OP_LFETCH;
- break;
- case ASM_OP_LFETCH_FAULT_EXCL:
- asm_cmpltr_add(i, ASM_CC_LFTYPE, ASM_CT_FAULT);
- asm_cmpltr_add(i, ASM_CC_LFETCH, ASM_CT_EXCL);
- op = ASM_OP_LFETCH;
- break;
- case ASM_OP_MF_:
- asm_cmpltr_add(i, ASM_CC_MF, ASM_CT_NONE);
- op = ASM_OP_MF;
- break;
- case ASM_OP_MF_A:
- asm_cmpltr_add(i, ASM_CC_MF, ASM_CT_A);
- op = ASM_OP_MF;
- break;
- case ASM_OP_MIX1_L:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_L);
- op = ASM_OP_MIX1;
- break;
- case ASM_OP_MIX1_R:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_R);
- op = ASM_OP_MIX1;
- break;
- case ASM_OP_MIX2_L:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_L);
- op = ASM_OP_MIX2;
- break;
- case ASM_OP_MIX2_R:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_R);
- op = ASM_OP_MIX2;
- break;
- case ASM_OP_MIX4_L:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_L);
- op = ASM_OP_MIX4;
- break;
- case ASM_OP_MIX4_R:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_R);
- op = ASM_OP_MIX4;
- break;
- case ASM_OP_MOV_:
- asm_cmpltr_add(i, ASM_CC_MOV, ASM_CT_NONE);
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_I:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_I);
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_M:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_M);
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_RET:
- asm_cmpltr_add(i, ASM_CC_MOV, ASM_CT_RET);
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_CPUID:
- ot = ASM_OPER_CPUID;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_DBR:
- ot = ASM_OPER_DBR;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_IBR:
- ot = ASM_OPER_IBR;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_IP:
- ot = ASM_OPER_IP;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_MSR:
- ot = ASM_OPER_MSR;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_PKR:
- ot = ASM_OPER_PKR;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_PMC:
- ot = ASM_OPER_PMC;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_PMD:
- ot = ASM_OPER_PMD;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_PR:
- ot = ASM_OPER_PR;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_PSR:
- ot = ASM_OPER_PSR;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_PSR_L:
- ot = ASM_OPER_PSR_L;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_PSR_UM:
- ot = ASM_OPER_PSR_UM;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_MOV_RR:
- ot = ASM_OPER_RR;
- op = ASM_OP_MOV;
- break;
- case ASM_OP_NOP_B:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_B);
- op = ASM_OP_NOP;
- break;
- case ASM_OP_NOP_F:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_F);
- op = ASM_OP_NOP;
- break;
- case ASM_OP_NOP_I:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_I);
- op = ASM_OP_NOP;
- break;
- case ASM_OP_NOP_M:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_M);
- op = ASM_OP_NOP;
- break;
- case ASM_OP_NOP_X:
- asm_cmpltr_add(i, ASM_CC_UNIT, ASM_CT_X);
- op = ASM_OP_NOP;
- break;
- case ASM_OP_PACK2_SSS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_SSS);
- op = ASM_OP_PACK2;
- break;
- case ASM_OP_PACK2_USS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_USS);
- op = ASM_OP_PACK2;
- break;
- case ASM_OP_PACK4_SSS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_SSS);
- op = ASM_OP_PACK4;
- break;
- case ASM_OP_PADD1_:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_NONE);
- op = ASM_OP_PADD1;
- break;
- case ASM_OP_PADD1_SSS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_SSS);
- op = ASM_OP_PADD1;
- break;
- case ASM_OP_PADD1_UUS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_UUS);
- op = ASM_OP_PADD1;
- break;
- case ASM_OP_PADD1_UUU:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_UUU);
- op = ASM_OP_PADD1;
- break;
- case ASM_OP_PADD2_:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_NONE);
- op = ASM_OP_PADD2;
- break;
- case ASM_OP_PADD2_SSS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_SSS);
- op = ASM_OP_PADD2;
- break;
- case ASM_OP_PADD2_UUS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_UUS);
- op = ASM_OP_PADD2;
- break;
- case ASM_OP_PADD2_UUU:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_UUU);
- op = ASM_OP_PADD2;
- break;
- case ASM_OP_PAVG1_:
- asm_cmpltr_add(i, ASM_CC_PAVG, ASM_CT_NONE);
- op = ASM_OP_PAVG1;
- break;
- case ASM_OP_PAVG1_RAZ:
- asm_cmpltr_add(i, ASM_CC_PAVG, ASM_CT_RAZ);
- op = ASM_OP_PAVG1;
- break;
- case ASM_OP_PAVG2_:
- asm_cmpltr_add(i, ASM_CC_PAVG, ASM_CT_NONE);
- op = ASM_OP_PAVG2;
- break;
- case ASM_OP_PAVG2_RAZ:
- asm_cmpltr_add(i, ASM_CC_PAVG, ASM_CT_RAZ);
- op = ASM_OP_PAVG2;
- break;
- case ASM_OP_PCMP1_EQ:
- asm_cmpltr_add(i, ASM_CC_PREL, ASM_CT_EQ);
- op = ASM_OP_PCMP1;
- break;
- case ASM_OP_PCMP1_GT:
- asm_cmpltr_add(i, ASM_CC_PREL, ASM_CT_GT);
- op = ASM_OP_PCMP1;
- break;
- case ASM_OP_PCMP2_EQ:
- asm_cmpltr_add(i, ASM_CC_PREL, ASM_CT_EQ);
- op = ASM_OP_PCMP2;
- break;
- case ASM_OP_PCMP2_GT:
- asm_cmpltr_add(i, ASM_CC_PREL, ASM_CT_GT);
- op = ASM_OP_PCMP2;
- break;
- case ASM_OP_PCMP4_EQ:
- asm_cmpltr_add(i, ASM_CC_PREL, ASM_CT_EQ);
- op = ASM_OP_PCMP4;
- break;
- case ASM_OP_PCMP4_GT:
- asm_cmpltr_add(i, ASM_CC_PREL, ASM_CT_GT);
- op = ASM_OP_PCMP4;
- break;
- case ASM_OP_PMAX1_U:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_U);
- op = ASM_OP_PMAX1;
- break;
- case ASM_OP_PMIN1_U:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_U);
- op = ASM_OP_PMIN1;
- break;
- case ASM_OP_PMPY2_L:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_L);
- op = ASM_OP_PMPY2;
- break;
- case ASM_OP_PMPY2_R:
- asm_cmpltr_add(i, ASM_CC_LR, ASM_CT_R);
- op = ASM_OP_PMPY2;
- break;
- case ASM_OP_PMPYSHR2_:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_NONE);
- op = ASM_OP_PMPYSHR2;
- break;
- case ASM_OP_PMPYSHR2_U:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_U);
- op = ASM_OP_PMPYSHR2;
- break;
- case ASM_OP_PROBE_R:
- asm_cmpltr_add(i, ASM_CC_RW, ASM_CT_R);
- asm_cmpltr_add(i, ASM_CC_PRTYPE, ASM_CT_NONE);
- op = ASM_OP_PROBE;
- break;
- case ASM_OP_PROBE_R_FAULT:
- asm_cmpltr_add(i, ASM_CC_RW, ASM_CT_R);
- asm_cmpltr_add(i, ASM_CC_PRTYPE, ASM_CT_FAULT);
- op = ASM_OP_PROBE;
- break;
- case ASM_OP_PROBE_RW_FAULT:
- asm_cmpltr_add(i, ASM_CC_RW, ASM_CT_RW);
- asm_cmpltr_add(i, ASM_CC_PRTYPE, ASM_CT_FAULT);
- op = ASM_OP_PROBE;
- break;
- case ASM_OP_PROBE_W:
- asm_cmpltr_add(i, ASM_CC_RW, ASM_CT_W);
- asm_cmpltr_add(i, ASM_CC_PRTYPE, ASM_CT_NONE);
- op = ASM_OP_PROBE;
- break;
- case ASM_OP_PROBE_W_FAULT:
- asm_cmpltr_add(i, ASM_CC_RW, ASM_CT_W);
- asm_cmpltr_add(i, ASM_CC_PRTYPE, ASM_CT_FAULT);
- op = ASM_OP_PROBE;
- break;
- case ASM_OP_PSHR2_:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_NONE);
- op = ASM_OP_PSHR2;
- break;
- case ASM_OP_PSHR2_U:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_U);
- op = ASM_OP_PSHR2;
- break;
- case ASM_OP_PSHR4_:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_NONE);
- op = ASM_OP_PSHR4;
- break;
- case ASM_OP_PSHR4_U:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_U);
- op = ASM_OP_PSHR4;
- break;
- case ASM_OP_PSUB1_:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_NONE);
- op = ASM_OP_PSUB1;
- break;
- case ASM_OP_PSUB1_SSS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_SSS);
- op = ASM_OP_PSUB1;
- break;
- case ASM_OP_PSUB1_UUS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_UUS);
- op = ASM_OP_PSUB1;
- break;
- case ASM_OP_PSUB1_UUU:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_UUU);
- op = ASM_OP_PSUB1;
- break;
- case ASM_OP_PSUB2_:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_NONE);
- op = ASM_OP_PSUB2;
- break;
- case ASM_OP_PSUB2_SSS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_SSS);
- op = ASM_OP_PSUB2;
- break;
- case ASM_OP_PSUB2_UUS:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_UUS);
- op = ASM_OP_PSUB2;
- break;
- case ASM_OP_PSUB2_UUU:
- asm_cmpltr_add(i, ASM_CC_SAT, ASM_CT_UUU);
- op = ASM_OP_PSUB2;
- break;
- case ASM_OP_PTC_E:
- asm_cmpltr_add(i, ASM_CC_PTC, ASM_CT_E);
- op = ASM_OP_PTC;
- break;
- case ASM_OP_PTC_G:
- asm_cmpltr_add(i, ASM_CC_PTC, ASM_CT_G);
- op = ASM_OP_PTC;
- break;
- case ASM_OP_PTC_GA:
- asm_cmpltr_add(i, ASM_CC_PTC, ASM_CT_GA);
- op = ASM_OP_PTC;
- break;
- case ASM_OP_PTC_L:
- asm_cmpltr_add(i, ASM_CC_PTC, ASM_CT_L);
- op = ASM_OP_PTC;
- break;
- case ASM_OP_PTR_D:
- asm_cmpltr_add(i, ASM_CC_PTR, ASM_CT_D);
- op = ASM_OP_PTR;
- break;
- case ASM_OP_PTR_I:
- asm_cmpltr_add(i, ASM_CC_PTR, ASM_CT_I);
- op = ASM_OP_PTR;
- break;
- case ASM_OP_SETF_D:
- asm_cmpltr_add(i, ASM_CC_SETF, ASM_CT_D);
- op = ASM_OP_SETF;
- break;
- case ASM_OP_SETF_EXP:
- asm_cmpltr_add(i, ASM_CC_SETF, ASM_CT_EXP);
- op = ASM_OP_SETF;
- break;
- case ASM_OP_SETF_S:
- asm_cmpltr_add(i, ASM_CC_SETF, ASM_CT_S);
- op = ASM_OP_SETF;
- break;
- case ASM_OP_SETF_SIG:
- asm_cmpltr_add(i, ASM_CC_SETF, ASM_CT_SIG);
- op = ASM_OP_SETF;
- break;
- case ASM_OP_SHR_:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_NONE);
- op = ASM_OP_SHR;
- break;
- case ASM_OP_SHR_U:
- asm_cmpltr_add(i, ASM_CC_UNS, ASM_CT_U);
- op = ASM_OP_SHR;
- break;
- case ASM_OP_SRLZ_D:
- asm_cmpltr_add(i, ASM_CC_SRLZ, ASM_CT_D);
- op = ASM_OP_SRLZ;
- break;
- case ASM_OP_SRLZ_I:
- asm_cmpltr_add(i, ASM_CC_SRLZ, ASM_CT_I);
- op = ASM_OP_SRLZ;
- break;
- case ASM_OP_ST1_:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_NONE);
- op = ASM_OP_ST1;
- break;
- case ASM_OP_ST1_REL:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_REL);
- op = ASM_OP_ST1;
- break;
- case ASM_OP_ST16_:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_NONE);
- op = ASM_OP_ST16;
- break;
- case ASM_OP_ST16_REL:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_REL);
- op = ASM_OP_ST16;
- break;
- case ASM_OP_ST2_:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_NONE);
- op = ASM_OP_ST2;
- break;
- case ASM_OP_ST2_REL:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_REL);
- op = ASM_OP_ST2;
- break;
- case ASM_OP_ST4_:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_NONE);
- op = ASM_OP_ST4;
- break;
- case ASM_OP_ST4_REL:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_REL);
- op = ASM_OP_ST4;
- break;
- case ASM_OP_ST8_:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_NONE);
- op = ASM_OP_ST8;
- break;
- case ASM_OP_ST8_REL:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_REL);
- op = ASM_OP_ST8;
- break;
- case ASM_OP_ST8_SPILL:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_SPILL);
- op = ASM_OP_ST8;
- break;
- case ASM_OP_STF_SPILL:
- asm_cmpltr_add(i, ASM_CC_STTYPE, ASM_CT_SPILL);
- op = ASM_OP_STF;
- break;
- case ASM_OP_SYNC_I:
- asm_cmpltr_add(i, ASM_CC_SYNC, ASM_CT_I);
- op = ASM_OP_SYNC;
- break;
- case ASM_OP_TBIT_NZ_AND:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_TBIT;
- break;
- case ASM_OP_TBIT_NZ_OR:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_TBIT;
- break;
- case ASM_OP_TBIT_NZ_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_TBIT;
- break;
- case ASM_OP_TBIT_Z:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_TBIT;
- break;
- case ASM_OP_TBIT_Z_AND:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_TBIT;
- break;
- case ASM_OP_TBIT_Z_OR:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_TBIT;
- break;
- case ASM_OP_TBIT_Z_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_TBIT;
- break;
- case ASM_OP_TBIT_Z_UNC:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_TBIT;
- break;
- case ASM_OP_TF_NZ_AND:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_TF;
- break;
- case ASM_OP_TF_NZ_OR:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_TF;
- break;
- case ASM_OP_TF_NZ_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_TF;
- break;
- case ASM_OP_TF_Z:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_TF;
- break;
- case ASM_OP_TF_Z_AND:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_TF;
- break;
- case ASM_OP_TF_Z_OR:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_TF;
- break;
- case ASM_OP_TF_Z_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_TF;
- break;
- case ASM_OP_TF_Z_UNC:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_TF;
- break;
- case ASM_OP_TNAT_NZ_AND:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_TNAT;
- break;
- case ASM_OP_TNAT_NZ_OR:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_TNAT;
- break;
- case ASM_OP_TNAT_NZ_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_NZ);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_TNAT;
- break;
- case ASM_OP_TNAT_Z:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_NONE);
- op = ASM_OP_TNAT;
- break;
- case ASM_OP_TNAT_Z_AND:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_AND);
- op = ASM_OP_TNAT;
- break;
- case ASM_OP_TNAT_Z_OR:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR);
- op = ASM_OP_TNAT;
- break;
- case ASM_OP_TNAT_Z_OR_ANDCM:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_OR_ANDCM);
- op = ASM_OP_TNAT;
- break;
- case ASM_OP_TNAT_Z_UNC:
- asm_cmpltr_add(i, ASM_CC_TREL, ASM_CT_Z);
- asm_cmpltr_add(i, ASM_CC_CTYPE, ASM_CT_UNC);
- op = ASM_OP_TNAT;
- break;
- case ASM_OP_UNPACK1_H:
- asm_cmpltr_add(i, ASM_CC_UNPACK, ASM_CT_H);
- op = ASM_OP_UNPACK1;
- break;
- case ASM_OP_UNPACK1_L:
- asm_cmpltr_add(i, ASM_CC_UNPACK, ASM_CT_L);
- op = ASM_OP_UNPACK1;
- break;
- case ASM_OP_UNPACK2_H:
- asm_cmpltr_add(i, ASM_CC_UNPACK, ASM_CT_H);
- op = ASM_OP_UNPACK2;
- break;
- case ASM_OP_UNPACK2_L:
- asm_cmpltr_add(i, ASM_CC_UNPACK, ASM_CT_L);
- op = ASM_OP_UNPACK2;
- break;
- case ASM_OP_UNPACK4_H:
- asm_cmpltr_add(i, ASM_CC_UNPACK, ASM_CT_H);
- op = ASM_OP_UNPACK4;
- break;
- case ASM_OP_UNPACK4_L:
- asm_cmpltr_add(i, ASM_CC_UNPACK, ASM_CT_L);
- op = ASM_OP_UNPACK4;
- break;
- case ASM_OP_VMSW_0:
- asm_cmpltr_add(i, ASM_CC_VMSW, ASM_CT_0);
- op = ASM_OP_VMSW;
- break;
- case ASM_OP_VMSW_1:
- asm_cmpltr_add(i, ASM_CC_VMSW, ASM_CT_1);
- op = ASM_OP_VMSW;
- break;
- case ASM_OP_XMA_H:
- asm_cmpltr_add(i, ASM_CC_XMA, ASM_CT_H);
- op = ASM_OP_XMA;
- break;
- case ASM_OP_XMA_HU:
- asm_cmpltr_add(i, ASM_CC_XMA, ASM_CT_HU);
- op = ASM_OP_XMA;
- break;
- case ASM_OP_XMA_L:
- asm_cmpltr_add(i, ASM_CC_XMA, ASM_CT_L);
- op = ASM_OP_XMA;
- break;
- default:
- KASSERT(op < ASM_OP_NUMBER_OF_OPCODES, ("foo"));
- break;
- }
- i->i_op = op;
- return (ot);
-}
-
-static __inline void
-op_imm(struct asm_inst *i, int op, uint64_t val)
-{
- i->i_oper[op].o_type = ASM_OPER_IMM;
- i->i_oper[op].o_value = val;
-}
-
-static __inline void
-op_type(struct asm_inst *i, int op, enum asm_oper_type ot)
-{
- i->i_oper[op].o_type = ot;
-}
-
-static __inline void
-op_value(struct asm_inst *i, int op, uint64_t val)
-{
- i->i_oper[op].o_value = val;
-}
-
-static __inline void
-operand(struct asm_inst *i, int op, enum asm_oper_type ot, uint64_t bits,
- int o, int l)
-{
- i->i_oper[op].o_type = ot;
- i->i_oper[op].o_value = FIELD(bits, o, l);
-}
-
-static uint64_t
-imm(uint64_t bits, int sign, int o, int l)
-{
- uint64_t val = FIELD(bits, o, l);
-
- if (sign && (val & (1LL << (l - 1))) != 0)
- val |= -1LL << l;
- return (val);
-}
-
-static void
-s_imm(struct asm_inst *i, int op, uint64_t bits, int o, int l)
-{
- i->i_oper[op].o_type = ASM_OPER_IMM;
- i->i_oper[op].o_value = imm(bits, 1, o, l);
-}
-
-static void
-u_imm(struct asm_inst *i, int op, uint64_t bits, int o, int l)
-{
- i->i_oper[op].o_type = ASM_OPER_IMM;
- i->i_oper[op].o_value = imm(bits, 0, o, l);
-}
-
-static uint64_t
-vimm(uint64_t bits, int sign, va_list ap)
-{
- uint64_t val = 0;
- int len = 0;
- int frag;
-
- while ((frag = va_arg(ap, int)) != 0) {
- val |= (uint64_t)FIELD(bits, FRAG_OFS(frag), FRAG_LEN(frag))
- << len;
- len += FRAG_LEN(frag);
- }
- if (sign && (val & (1LL << (len - 1))) != 0)
- val |= -1LL << len;
- return (val);
-}
-
-static void
-s_immf(struct asm_inst *i, int op, uint64_t bits, ...)
-{
- va_list ap;
- va_start(ap, bits);
- i->i_oper[op].o_type = ASM_OPER_IMM;
- i->i_oper[op].o_value = vimm(bits, 1, ap);
- va_end(ap);
-}
-
-static void
-u_immf(struct asm_inst *i, int op, uint64_t bits, ...)
-{
- va_list ap;
- va_start(ap, bits);
- i->i_oper[op].o_type = ASM_OPER_IMM;
- i->i_oper[op].o_value = vimm(bits, 0, ap);
- va_end(ap);
-}
-
-static void
-disp(struct asm_inst *i, int op, uint64_t bits, ...)
-{
- va_list ap;
- va_start(ap, bits);
- i->i_oper[op].o_type = ASM_OPER_DISP;
- i->i_oper[op].o_value = vimm(bits, 1, ap) << 4;
- va_end(ap);
-}
-
-static __inline void
-combine(uint64_t *dst, int dl, uint64_t src, int sl, int so)
-{
- *dst = (*dst & ((1LL << dl) - 1LL)) |
- ((uint64_t)_FLD64(src, so, sl) << dl);
-}
-
-int
-asm_extract(enum asm_op op, enum asm_fmt fmt, uint64_t bits,
- struct asm_bundle *b, int slot)
-{
- struct asm_inst *i = b->b_inst + slot;
- enum asm_oper_type ot;
-
- KASSERT(op != ASM_OP_NONE, ("foo"));
- i->i_bits = bits;
- i->i_format = fmt;
- i->i_srcidx = 2;
-
- ot = asm_normalize(i, op);
-
- if (fmt != ASM_FMT_B6 && fmt != ASM_FMT_B7)
- operand(i, 0, ASM_OPER_PREG, bits, 0, 6);
-
- switch (fmt) {
- case ASM_FMT_A1:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- if ((op == ASM_OP_ADD && FIELD(bits, 27, 2) == 1) ||
- (op == ASM_OP_SUB && FIELD(bits, 27, 2) == 0))
- op_imm(i, 4, 1LL);
- break;
- case ASM_FMT_A2:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- op_imm(i, 3, 1LL + FIELD(bits, 27, 2));
- operand(i, 4, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_A3:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- s_immf(i, 2, bits, FRAG(13,7), FRAG(36,1), 0);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_A4:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- s_immf(i, 2, bits, FRAG(13,7), FRAG(27,6), FRAG(36,1), 0);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_A5:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- s_immf(i, 2, bits, FRAG(13,7), FRAG(27,9), FRAG(22,5),
- FRAG(36,1), 0);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 2);
- break;
- case ASM_FMT_A6: /* 2 dst */
- operand(i, 1, ASM_OPER_PREG, bits, 6, 6);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- operand(i, 3, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 4, ASM_OPER_GREG, bits, 20, 7);
- i->i_srcidx++;
- break;
- case ASM_FMT_A7: /* 2 dst */
- if (FIELD(bits, 13, 7) != 0)
- return (0);
- operand(i, 1, ASM_OPER_PREG, bits, 6, 6);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- operand(i, 3, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 4, ASM_OPER_GREG, bits, 20, 7);
- i->i_srcidx++;
- break;
- case ASM_FMT_A8: /* 2 dst */
- operand(i, 1, ASM_OPER_PREG, bits, 6, 6);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- s_immf(i, 3, bits, FRAG(13,7), FRAG(36,1), 0);
- operand(i, 4, ASM_OPER_GREG, bits, 20, 7);
- i->i_srcidx++;
- break;
- case ASM_FMT_A9:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_A10:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- op_imm(i, 3, 1LL + FIELD(bits, 27, 2));
- operand(i, 4, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_B1: /* 0 dst */
- asm_brhint(i);
- disp(i, 1, bits, FRAG(13,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_B2: /* 0 dst */
- if (FIELD(bits, 0, 6) != 0)
- return (0);
- asm_brhint(i);
- disp(i, 1, bits, FRAG(13,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_B3:
- asm_brhint(i);
- operand(i, 1, ASM_OPER_BREG, bits, 6, 3);
- disp(i, 2, bits, FRAG(13,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_B4: /* 0 dst */
- asm_brhint(i);
- operand(i, 1, ASM_OPER_BREG, bits, 13, 3);
- break;
- case ASM_FMT_B5:
-#if 0
- if (FIELD(bits, 32, 1) == 0)
- return (0);
-#endif
- asm_brhint(i);
- operand(i, 1, ASM_OPER_BREG, bits, 6, 3);
- operand(i, 2, ASM_OPER_BREG, bits, 13, 3);
- break;
- case ASM_FMT_B6: /* 0 dst */
- asm_brphint(i);
- disp(i, 1, bits, FRAG(13,20), FRAG(36,1), 0);
- disp(i, 2, bits, FRAG(6,7), FRAG(33,2), 0);
- i->i_srcidx--;
- break;
- case ASM_FMT_B7: /* 0 dst */
- asm_brphint(i);
- operand(i, 1, ASM_OPER_BREG, bits, 13, 3);
- disp(i, 2, bits, FRAG(6,7), FRAG(33,2), 0);
- i->i_srcidx--;
- break;
- case ASM_FMT_B8:
- /* no operands */
- break;
- case ASM_FMT_B9: /* 0 dst */
- u_immf(i, 1, bits, FRAG(6,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_F1:
- asm_sf(i);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_FREG, bits, 20, 7);
- operand(i, 4, ASM_OPER_FREG, bits, 27, 7);
- break;
- case ASM_FMT_F2:
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_FREG, bits, 20, 7);
- operand(i, 4, ASM_OPER_FREG, bits, 27, 7);
- break;
- case ASM_FMT_F3:
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_FREG, bits, 20, 7);
- operand(i, 4, ASM_OPER_FREG, bits, 27, 7);
- break;
- case ASM_FMT_F4: /* 2 dst */
- if (FIELD(bits, 33, 1)) { /* ra */
- if (FIELD(bits, 36, 1)) /* rb */
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_UNORD);
- else
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_LE);
- } else {
- if (FIELD(bits, 36, 1)) /* rb */
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_LT);
- else
- asm_cmpltr_add(i, ASM_CC_FREL, ASM_CT_EQ);
- }
- if (FIELD(bits, 12, 1)) /* ta */
- asm_cmpltr_add(i, ASM_CC_FCTYPE, ASM_CT_UNC);
- else
- asm_cmpltr_add(i, ASM_CC_FCTYPE, ASM_CT_NONE);
- asm_sf(i);
- operand(i, 1, ASM_OPER_PREG, bits, 6, 6);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- operand(i, 3, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 4, ASM_OPER_FREG, bits, 20, 7);
- i->i_srcidx++;
- break;
- case ASM_FMT_F5: /* 2 dst */
- operand(i, 1, ASM_OPER_PREG, bits, 6, 6);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- operand(i, 3, ASM_OPER_FREG, bits, 13, 7);
- u_immf(i, 4, bits, FRAG(33,2), FRAG(20,7), 0);
- i->i_srcidx++;
- break;
- case ASM_FMT_F6: /* 2 dst */
- asm_sf(i);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- operand(i, 3, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 4, ASM_OPER_FREG, bits, 20, 7);
- i->i_srcidx++;
- break;
- case ASM_FMT_F7: /* 2 dst */
- asm_sf(i);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- operand(i, 3, ASM_OPER_FREG, bits, 20, 7);
- i->i_srcidx++;
- break;
- case ASM_FMT_F8:
- asm_sf(i);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_FREG, bits, 20, 7);
- break;
- case ASM_FMT_F9:
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_FREG, bits, 20, 7);
- break;
- case ASM_FMT_F10:
- asm_sf(i);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- break;
- case ASM_FMT_F11:
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- break;
- case ASM_FMT_F12: /* 0 dst */
- asm_sf(i);
- u_imm(i, 1, bits, 13, 7);
- u_imm(i, 2, bits, 20, 7);
- i->i_srcidx--;
- break;
- case ASM_FMT_F13:
- asm_sf(i);
- /* no operands */
- break;
- case ASM_FMT_F14: /* 0 dst */
- asm_sf(i);
- disp(i, 1, bits, FRAG(6,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_F15: /* 0 dst */
- u_imm(i, 1, bits, 6, 20);
- break;
- case ASM_FMT_F16: /* 0 dst */
- u_imm(i, 1, bits, 6, 20);
- break;
- case ASM_FMT_I1:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- switch (FIELD(bits, 30, 2)) {
- case 0: op_imm(i, 4, 0LL); break;
- case 1: op_imm(i, 4, 7LL); break;
- case 2: op_imm(i, 4, 15LL); break;
- case 3: op_imm(i, 4, 16LL); break;
- }
- break;
- case ASM_FMT_I2:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_I3:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- u_imm(i, 3, bits, 20, 4);
- break;
- case ASM_FMT_I4:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- u_imm(i, 3, bits, 20, 8);
- break;
- case ASM_FMT_I5:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 20, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_I6:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 20, 7);
- u_imm(i, 3, bits, 14, 5);
- break;
- case ASM_FMT_I7:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_I8:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- op_imm(i, 3, 31LL - FIELD(bits, 20, 5));
- break;
- case ASM_FMT_I9:
- if (FIELD(bits, 13, 7) != 0)
- return (0);
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_I10:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- u_imm(i, 4, bits, 27, 6);
- break;
- case ASM_FMT_I11:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 20, 7);
- u_imm(i, 3, bits, 14, 6);
- op_imm(i, 4, 1LL + FIELD(bits, 27, 6));
- break;
- case ASM_FMT_I12:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- op_imm(i, 3, 63LL - FIELD(bits, 20, 6));
- op_imm(i, 4, 1LL + FIELD(bits, 27, 6));
- break;
- case ASM_FMT_I13:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- s_immf(i, 2, bits, FRAG(13,7), FRAG(36,1), 0);
- op_imm(i, 3, 63LL - FIELD(bits, 20, 6));
- op_imm(i, 4, 1LL + FIELD(bits, 27, 6));
- break;
- case ASM_FMT_I14:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- s_imm(i, 2, bits, 36, 1);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- op_imm(i, 4, 63LL - FIELD(bits, 14, 6));
- op_imm(i, 5, 1LL + FIELD(bits, 27, 6));
- break;
- case ASM_FMT_I15:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- op_imm(i, 4, 63LL - FIELD(bits, 31, 6));
- op_imm(i, 5, 1LL + FIELD(bits, 27, 4));
- break;
- case ASM_FMT_I16: /* 2 dst */
- operand(i, 1, ASM_OPER_PREG, bits, 6, 6);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- u_imm(i, 4, bits, 14, 6);
- i->i_srcidx++;
- break;
- case ASM_FMT_I17: /* 2 dst */
- operand(i, 1, ASM_OPER_PREG, bits, 6, 6);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- operand(i, 3, ASM_OPER_GREG, bits, 20, 7);
- i->i_srcidx++;
- break;
- case ASM_FMT_I18:
- u_immf(i, 1, bits, FRAG(6,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_I19:
- u_immf(i, 1, bits, FRAG(6,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_I20: /* 0 dst */
- operand(i, 1, ASM_OPER_GREG, bits, 13, 7);
- disp(i, 2, bits, FRAG(6,7), FRAG(20,13), FRAG(36,1), 0);
- i->i_srcidx--;
- break;
- case ASM_FMT_I21:
- switch (FIELD(bits, 20, 2)) { /* wh */
- case 0: asm_cmpltr_add(i, ASM_CC_MWH, ASM_CT_SPTK); break;
- case 1: asm_cmpltr_add(i, ASM_CC_MWH, ASM_CT_NONE); break;
- case 2: asm_cmpltr_add(i, ASM_CC_MWH, ASM_CT_DPTK); break;
- case 3: return (0);
- }
- if (FIELD(bits, 23, 1)) /* ih */
- asm_cmpltr_add(i, ASM_CC_IH, ASM_CT_IMP);
- else
- asm_cmpltr_add(i, ASM_CC_IH, ASM_CT_NONE);
- operand(i, 1, ASM_OPER_BREG, bits, 6, 3);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- disp(i, 3, bits, FRAG(24,9), 0);
- break;
- case ASM_FMT_I22:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_BREG, bits, 13, 3);
- break;
- case ASM_FMT_I23:
- op_type(i, 1, ASM_OPER_PR);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- u_immf(i, 3, bits, FRAG(6,7), FRAG(24,8), FRAG(36,1), 0);
- i->i_oper[3].o_value <<= 1;
- break;
- case ASM_FMT_I24:
- op_type(i, 1, ASM_OPER_PR_ROT);
- s_immf(i, 2, bits, FRAG(6,27), FRAG(36,1), 0);
- break;
- case ASM_FMT_I25:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- op_type(i, 2, ot);
- break;
- case ASM_FMT_I26:
- operand(i, 1, ASM_OPER_AREG, bits, 20, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_I27:
- operand(i, 1, ASM_OPER_AREG, bits, 20, 7);
- s_immf(i, 2, bits, FRAG(13,7), FRAG(36,1), 0);
- break;
- case ASM_FMT_I28:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_AREG, bits, 20, 7);
- break;
- case ASM_FMT_I29:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_I30: /* 2 dst */
- operand(i, 1, ASM_OPER_PREG, bits, 6, 6);
- operand(i, 2, ASM_OPER_PREG, bits, 27, 6);
- op_imm(i, 3, 32LL + FIELD(bits, 14, 5));
- i->i_srcidx++;
- break;
- case ASM_FMT_M1:
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- if (i->i_op == ASM_OP_LD16) {
- op_type(i, 2, ASM_OPER_AREG);
- op_value(i, 2, AR_CSD);
- i->i_srcidx++;
- }
- operand(i, i->i_srcidx, ASM_OPER_MEM, bits, 20, 7);
- break;
- case ASM_FMT_M2:
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_MEM, bits, 20, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M3:
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_MEM, bits, 20, 7);
- s_immf(i, 3, bits, FRAG(13,7), FRAG(27,1), FRAG(36,1), 0);
- break;
- case ASM_FMT_M4:
- asm_hint(i, ASM_CC_STHINT);
- operand(i, 1, ASM_OPER_MEM, bits, 20, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- if (i->i_op == ASM_OP_ST16) {
- op_type(i, 3, ASM_OPER_AREG);
- op_value(i, 3, AR_CSD);
- }
- break;
- case ASM_FMT_M5:
- asm_hint(i, ASM_CC_STHINT);
- operand(i, 1, ASM_OPER_MEM, bits, 20, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- s_immf(i, 3, bits, FRAG(6,7), FRAG(27,1), FRAG(36,1), 0);
- break;
- case ASM_FMT_M6:
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_MEM, bits, 20, 7);
- break;
- case ASM_FMT_M7:
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_MEM, bits, 20, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M8:
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_MEM, bits, 20, 7);
- s_immf(i, 3, bits, FRAG(13,7), FRAG(27,1), FRAG(36,1), 0);
- break;
- case ASM_FMT_M9:
- asm_hint(i, ASM_CC_STHINT);
- operand(i, 1, ASM_OPER_MEM, bits, 20, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- break;
- case ASM_FMT_M10:
- asm_hint(i, ASM_CC_STHINT);
- operand(i, 1, ASM_OPER_MEM, bits, 20, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- s_immf(i, 3, bits, FRAG(6,7), FRAG(27,1), FRAG(36,1), 0);
- break;
- case ASM_FMT_M11: /* 2 dst */
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_MEM, bits, 20, 7);
- i->i_srcidx++;
- break;
- case ASM_FMT_M12: /* 2 dst */
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- operand(i, 3, ASM_OPER_MEM, bits, 20, 7);
- op_imm(i, 4, 8LL << FIELD(bits, 30, 1));
- i->i_srcidx++;
- break;
- case ASM_FMT_M13:
- asm_hint(i, ASM_CC_LFHINT);
- operand(i, 1, ASM_OPER_MEM, bits, 20, 7);
- break;
- case ASM_FMT_M14: /* 0 dst */
- asm_hint(i, ASM_CC_LFHINT);
- operand(i, 1, ASM_OPER_MEM, bits, 20, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- i->i_srcidx--;
- break;
- case ASM_FMT_M15: /* 0 dst */
- asm_hint(i, ASM_CC_LFHINT);
- operand(i, 1, ASM_OPER_MEM, bits, 20, 7);
- s_immf(i, 2, bits, FRAG(13,7), FRAG(27,1), FRAG(36,1), 0);
- i->i_srcidx--;
- break;
- case ASM_FMT_M16:
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_MEM, bits, 20, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 13, 7);
- if (i->i_op == ASM_OP_CMP8XCHG16) {
- op_type(i, 4, ASM_OPER_AREG);
- op_value(i, 4, AR_CSD);
- op_type(i, 5, ASM_OPER_AREG);
- op_value(i, 5, AR_CCV);
- } else {
- if (FIELD(bits, 30, 6) < 8) {
- op_type(i, 4, ASM_OPER_AREG);
- op_value(i, 4, AR_CCV);
- }
- }
- break;
- case ASM_FMT_M17:
- asm_hint(i, ASM_CC_LDHINT);
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_MEM, bits, 20, 7);
- switch (FIELD(bits, 13, 2)) {
- case 0: op_imm(i, 3, 1LL << 4); break;
- case 1: op_imm(i, 3, 1LL << 3); break;
- case 2: op_imm(i, 3, 1LL << 2); break;
- case 3: op_imm(i, 3, 1LL); break;
- }
- if (FIELD(bits, 15, 1))
- i->i_oper[3].o_value *= -1LL;
- break;
- case ASM_FMT_M18:
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M19:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_FREG, bits, 13, 7);
- break;
- case ASM_FMT_M20: /* 0 dst */
- operand(i, 1, ASM_OPER_GREG, bits, 13, 7);
- disp(i, 2, bits, FRAG(6,7), FRAG(20,13), FRAG(36,1), 0);
- i->i_srcidx--;
- break;
- case ASM_FMT_M21: /* 0 dst */
- operand(i, 1, ASM_OPER_FREG, bits, 13, 7);
- disp(i, 2, bits, FRAG(6,7), FRAG(20,13), FRAG(36,1), 0);
- i->i_srcidx--;
- break;
- case ASM_FMT_M22: /* 0 dst */
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- disp(i, 2, bits, FRAG(13,20), FRAG(36,1), 0);
- i->i_srcidx--;
- break;
- case ASM_FMT_M23: /* 0 dst */
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- disp(i, 2, bits, FRAG(13,20), FRAG(36,1), 0);
- i->i_srcidx--;
- break;
- case ASM_FMT_M24:
- /* no operands */
- break;
- case ASM_FMT_M25:
- if (FIELD(bits, 0, 6) != 0)
- return (0);
- /* no operands */
- break;
- case ASM_FMT_M26:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- break;
- case ASM_FMT_M27:
- operand(i, 1, ASM_OPER_FREG, bits, 6, 7);
- break;
- case ASM_FMT_M28:
- operand(i, 1, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_M29:
- operand(i, 1, ASM_OPER_AREG, bits, 20, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M30:
- operand(i, 1, ASM_OPER_AREG, bits, 20, 7);
- s_immf(i, 2, bits, FRAG(13,7), FRAG(36,1), 0);
- break;
- case ASM_FMT_M31:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_AREG, bits, 20, 7);
- break;
- case ASM_FMT_M32:
- operand(i, 1, ASM_OPER_CREG, bits, 20, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M33:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_CREG, bits, 20, 7);
- break;
- case ASM_FMT_M34: {
- uint64_t loc, out;
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- op_type(i, 2, ASM_OPER_AREG);
- op_value(i, 2, AR_PFS);
- loc = FIELD(bits, 20, 7);
- out = FIELD(bits, 13, 7) - loc;
- op_imm(i, 3, 0);
- op_imm(i, 4, loc);
- op_imm(i, 5, out);
- op_imm(i, 6, (uint64_t)FIELD(bits, 27, 4) << 3);
- break;
- }
- case ASM_FMT_M35:
- if (FIELD(bits, 27, 6) == 0x2D)
- op_type(i, 1, ASM_OPER_PSR_L);
- else
- op_type(i, 1, ASM_OPER_PSR_UM);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M36:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- if (FIELD(bits, 27, 6) == 0x25)
- op_type(i, 2, ASM_OPER_PSR);
- else
- op_type(i, 2, ASM_OPER_PSR_UM);
- break;
- case ASM_FMT_M37:
- u_immf(i, 1, bits, FRAG(6,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_M38:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 20, 7);
- operand(i, 3, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M39:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 20, 7);
- u_imm(i, 3, bits, 13, 2);
- break;
- case ASM_FMT_M40: /* 0 dst */
- operand(i, 1, ASM_OPER_GREG, bits, 20, 7);
- u_imm(i, 2, bits, 13, 2);
- i->i_srcidx--;
- break;
- case ASM_FMT_M41:
- operand(i, 1, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M42:
- operand(i, 1, ot, bits, 20, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- break;
- case ASM_FMT_M43:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ot, bits, 20, 7);
- break;
- case ASM_FMT_M44:
- u_immf(i, 1, bits, FRAG(6,21), FRAG(31,2), FRAG(36,1), 0);
- break;
- case ASM_FMT_M45: /* 0 dst */
- operand(i, 1, ASM_OPER_GREG, bits, 20, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 13, 7);
- i->i_srcidx--;
- break;
- case ASM_FMT_M46:
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- operand(i, 2, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_M47:
- operand(i, 1, ASM_OPER_GREG, bits, 20, 7);
- break;
- case ASM_FMT_M48:
- u_immf(i, 1, bits, FRAG(6,20), FRAG(36,1), 0);
- break;
- case ASM_FMT_X1:
- KASSERT(slot == 2, ("foo"));
- u_immf(i, 1, bits, FRAG(6,20), FRAG(36,1), 0);
- combine(&i->i_oper[1].o_value, 21, b->b_inst[1].i_bits, 41, 0);
- break;
- case ASM_FMT_X2:
- KASSERT(slot == 2, ("foo"));
- operand(i, 1, ASM_OPER_GREG, bits, 6, 7);
- u_immf(i, 2, bits, FRAG(13,7), FRAG(27,9), FRAG(22,5),
- FRAG(21,1), 0);
- combine(&i->i_oper[2].o_value, 22, b->b_inst[1].i_bits, 41, 0);
- combine(&i->i_oper[2].o_value, 63, bits, 1, 36);
- break;
- case ASM_FMT_X3:
- KASSERT(slot == 2, ("foo"));
- asm_brhint(i);
- u_imm(i, 1, bits, 13, 20);
- combine(&i->i_oper[1].o_value, 20, b->b_inst[1].i_bits, 39, 2);
- combine(&i->i_oper[1].o_value, 59, bits, 1, 36);
- i->i_oper[1].o_value <<= 4;
- i->i_oper[1].o_type = ASM_OPER_DISP;
- break;
- case ASM_FMT_X4:
- KASSERT(slot == 2, ("foo"));
- asm_brhint(i);
- operand(i, 1, ASM_OPER_BREG, bits, 6, 3);
- u_imm(i, 2, bits, 13, 20);
- combine(&i->i_oper[2].o_value, 20, b->b_inst[1].i_bits, 39, 2);
- combine(&i->i_oper[2].o_value, 59, bits, 1, 36);
- i->i_oper[2].o_value <<= 4;
- i->i_oper[2].o_type = ASM_OPER_DISP;
- break;
- case ASM_FMT_X5:
- KASSERT(slot == 2, ("foo"));
- u_immf(i, 1, bits, FRAG(6,20), FRAG(36,1), 0);
- combine(&i->i_oper[1].o_value, 21, b->b_inst[1].i_bits, 41, 0);
- break;
- default:
- KASSERT(fmt == ASM_FMT_NONE, ("foo"));
- return (0);
- }
-
- return (1);
-}
diff --git a/sys/ia64/disasm/disasm_format.c b/sys/ia64/disasm/disasm_format.c
deleted file mode 100644
index 37a3650..0000000
--- a/sys/ia64/disasm/disasm_format.c
+++ /dev/null
@@ -1,346 +0,0 @@
-/*-
- * Copyright (c) 2000-2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-
-#include <ia64/disasm/disasm_int.h>
-#include <ia64/disasm/disasm.h>
-
-/*
- * Mnemonics (keep in sync with enum asm_op).
- */
-static const char *asm_mnemonics[] = {
- NULL,
- "add", "addl", "addp4", "adds", "alloc", "and", "andcm",
- "br", "break", "brl", "brp", "bsw",
- "chk", "clrrrb", "cmp", "cmp4", "cmp8xchg16", "cmpxchg1", "cmpxchg2",
- "cmpxchg4", "cmpxchg8", "cover", "czx1", "czx2",
- "dep",
- "epc", "extr",
- "famax", "famin", "fand", "fandcm", "fc", "fchkf", "fclass", "fclrf",
- "fcmp", "fcvt", "fetchadd4", "fetchadd8", "flushrs", "fma", "fmax",
- "fmerge", "fmin", "fmix", "fms", "fnma", "for", "fpack", "fpamax",
- "fpamin", "fpcmp", "fpcvt", "fpma", "fpmax", "fpmerge", "fpmin",
- "fpms", "fpnma", "fprcpa", "fprsqrta", "frcpa", "frsqrta", "fselect",
- "fsetc", "fswap", "fsxt", "fwb", "fxor",
- "getf",
- "hint",
- "invala", "itc", "itr",
- "ld1", "ld16", "ld2", "ld4", "ld8", "ldf", "ldf8", "ldfd", "ldfe",
- "ldfp8", "ldfpd", "ldfps", "ldfs", "lfetch", "loadrs",
- "mf", "mix1", "mix2", "mix4", "mov", "movl", "mux1", "mux2",
- "nop",
- "or",
- "pack2", "pack4", "padd1", "padd2", "padd4", "pavg1", "pavg2",
- "pavgsub1", "pavgsub2", "pcmp1", "pcmp2", "pcmp4", "pmax1", "pmax2",
- "pmin1", "pmin2", "pmpy2", "pmpyshr2", "popcnt", "probe", "psad1",
- "pshl2", "pshl4", "pshladd2", "pshr2", "pshr4", "pshradd2", "psub1",
- "psub2", "psub4", "ptc", "ptr",
- "rfi", "rsm", "rum",
- "setf", "shl", "shladd", "shladdp4", "shr", "shrp", "srlz", "ssm",
- "st1", "st16", "st2", "st4", "st8", "stf", "stf8", "stfd", "stfe",
- "stfs", "sub", "sum", "sxt1", "sxt2", "sxt4", "sync",
- "tak", "tbit", "tf", "thash", "tnat", "tpa", "ttag",
- "unpack1", "unpack2", "unpack4",
- "vmsw",
- "xchg1", "xchg2", "xchg4", "xchg8", "xma", "xor",
- "zxt1", "zxt2", "zxt4"
-};
-
-/*
- * Completers (keep in sync with enum asm_cmpltr_type).
- */
-static const char *asm_completers[] = {
- "",
- ".0", ".1",
- ".a", ".acq", ".and",
- ".b", ".bias",
- ".c.clr", ".c.clr.acq", ".c.nc", ".call", ".cexit", ".cloop", ".clr",
- ".ctop",
- ".d", ".dc.dc", ".dc.nt", ".dpnt", ".dptk",
- ".e", ".eq", ".excl", ".exit", ".exp",
- ".f", ".fault", ".few", ".fill", ".fx", ".fxu",
- ".g", ".ga", ".ge", ".gt",
- ".h", ".hu",
- ".i", ".ia", ".imp",
- ".l", ".le", ".loop", ".lr", ".lt", ".ltu",
- ".m", ".many",
- ".nc", ".ne", ".neq", ".nl", ".nle", ".nlt", ".nm", ".nr", ".ns",
- ".nt.dc", ".nt.nt", ".nt.tk", ".nt1", ".nt2", ".nta", ".nz",
- ".or", ".or.andcm", ".ord",
- ".pr",
- ".r", ".raz", ".rel", ".ret", ".rw",
- ".s", ".s0", ".s1", ".s2", ".s3", ".sa", ".se", ".sig", ".spill",
- ".spnt", ".sptk", ".sss",
- ".tk.dc", ".tk.nt", ".tk.tk", ".trunc",
- ".u", ".unc", ".unord", ".uss", ".uus", ".uuu",
- ".w", ".wexit", ".wtop",
- ".x", ".xf",
- ".z"
-};
-
-void
-asm_completer(const struct asm_cmpltr *c, char *buf)
-{
- strcpy(buf, asm_completers[c->c_type]);
-}
-
-void
-asm_mnemonic(enum asm_op op, char *buf)
-{
- strcpy(buf, asm_mnemonics[(op < ASM_OP_INTERNAL_OPCODES) ? op : 0]);
-}
-
-void
-asm_operand(const struct asm_oper *o, char *buf, uint64_t ip)
-{
- const char *n;
-
- n = NULL;
- switch (o->o_type) {
- case ASM_OPER_AREG:
- switch ((int)o->o_value) {
- case AR_K0: n = "k0"; break;
- case AR_K1: n = "k1"; break;
- case AR_K2: n = "k2"; break;
- case AR_K3: n = "k3"; break;
- case AR_K4: n = "k4"; break;
- case AR_K5: n = "k5"; break;
- case AR_K6: n = "k6"; break;
- case AR_K7: n = "k7"; break;
- case AR_RSC: n = "rsc"; break;
- case AR_BSP: n = "bsp"; break;
- case AR_BSPSTORE: n = "bspstore"; break;
- case AR_RNAT: n = "rnat"; break;
- case AR_FCR: n = "fcr"; break;
- case AR_EFLAG: n = "eflag"; break;
- case AR_CSD: n = "csd"; break;
- case AR_SSD: n = "ssd"; break;
- case AR_CFLG: n = "cflg"; break;
- case AR_FSR: n = "fsr"; break;
- case AR_FIR: n = "fir"; break;
- case AR_FDR: n = "fdr"; break;
- case AR_CCV: n = "ccv"; break;
- case AR_UNAT: n = "unat"; break;
- case AR_FPSR: n = "fpsr"; break;
- case AR_ITC: n = "itc"; break;
- case AR_PFS: n = "pfs"; break;
- case AR_LC: n = "lc"; break;
- case AR_EC: n = "ec"; break;
- default:
- sprintf(buf, "ar%d", (int)o->o_value);
- return;
- }
- sprintf(buf, "ar.%s", n);
- return;
- case ASM_OPER_BREG:
- if (o->o_value != 0)
- sprintf(buf, "b%d", (int)o->o_value);
- else
- strcpy(buf, "rp");
- return;
- case ASM_OPER_CPUID:
- n = "cpuid";
- break;
- case ASM_OPER_CREG:
- switch ((int)o->o_value) {
- case CR_DCR: n = "dcr"; break;
- case CR_ITM: n = "itm"; break;
- case CR_IVA: n = "iva"; break;
- case CR_PTA: n = "pta"; break;
- case CR_IPSR: n = "ipsr"; break;
- case CR_ISR: n = "isr"; break;
- case CR_IIP: n = "iip"; break;
- case CR_IFA: n = "ifa"; break;
- case CR_ITIR: n = "itir"; break;
- case CR_IIPA: n = "iipa"; break;
- case CR_IFS: n = "ifs"; break;
- case CR_IIM: n = "iim"; break;
- case CR_IHA: n = "iha"; break;
- case CR_LID: n = "lid"; break;
- case CR_IVR: n = "ivr"; break;
- case CR_TPR: n = "tpr"; break;
- case CR_EOI: n = "eoi"; break;
- case CR_IRR0: n = "irr0"; break;
- case CR_IRR1: n = "irr1"; break;
- case CR_IRR2: n = "irr2"; break;
- case CR_IRR3: n = "irr3"; break;
- case CR_ITV: n = "itv"; break;
- case CR_PMV: n = "pmv"; break;
- case CR_CMCV: n = "cmcv"; break;
- case CR_LRR0: n = "lrr0"; break;
- case CR_LRR1: n = "lrr1"; break;
- default:
- sprintf(buf, "cr%d", (int)o->o_value);
- return;
- }
- sprintf(buf, "cr.%s", n);
- return;
- case ASM_OPER_DBR:
- n = "dbr";
- break;
- case ASM_OPER_DISP:
- sprintf(buf, "%lx", ip + o->o_value);
- return;
- case ASM_OPER_DTR:
- n = "dtr";
- break;
- case ASM_OPER_FREG:
- sprintf(buf, "f%d", (int)o->o_value);
- return;
- case ASM_OPER_GREG:
- break;
- case ASM_OPER_IBR:
- n = "ibr";
- break;
- case ASM_OPER_IMM:
- sprintf(buf, "0x%lx", o->o_value);
- return;
- case ASM_OPER_IP:
- strcpy(buf, "ip");
- return;
- case ASM_OPER_ITR:
- n = "itr";
- break;
- case ASM_OPER_MEM:
- n = "";
- break;
- case ASM_OPER_MSR:
- n = "msr";
- break;
- case ASM_OPER_PKR:
- n = "pkr";
- break;
- case ASM_OPER_PMC:
- n = "pmc";
- break;
- case ASM_OPER_PMD:
- n = "pmd";
- break;
- case ASM_OPER_PR:
- strcpy(buf, "pr");
- return;
- case ASM_OPER_PR_ROT:
- strcpy(buf, "pr.rot");
- return;
- case ASM_OPER_PREG:
- sprintf(buf, "p%d", (int)o->o_value);
- return;
- case ASM_OPER_PSR:
- strcpy(buf, "psr");
- return;
- case ASM_OPER_PSR_L:
- strcpy(buf, "psr.l");
- return;
- case ASM_OPER_PSR_UM:
- strcpy(buf, "psr.um");
- return;
- case ASM_OPER_RR:
- n = "rr";
- break;
- case ASM_OPER_NONE:
- KASSERT(0, ("foo"));
- break;
- }
- if (n != NULL)
- buf += sprintf(buf, "%s[", n);
- switch ((int)o->o_value) {
- case 1: strcpy(buf, "gp"); buf += 2; break;
- case 12: strcpy(buf, "sp"); buf += 2; break;
- case 13: strcpy(buf, "tp"); buf += 2; break;
- default: buf += sprintf(buf, "r%d", (int)o->o_value); break;
- }
- if (n != NULL)
- strcpy(buf, "]");
-}
-
-void
-asm_print_bundle(const struct asm_bundle *b, uint64_t ip)
-{
- asm_print_inst(b, 0, ip);
- asm_print_inst(b, 1, ip);
- asm_print_inst(b, 2, ip);
-}
-
-void
-asm_print_inst(const struct asm_bundle *b, int slot, uint64_t ip)
-{
- char buf[32];
- const struct asm_inst *i;
- const char *tmpl;
- int n, w;
-
- tmpl = b->b_templ + slot;
- if (*tmpl == ';' || (slot == 2 && b->b_templ[1] == ';'))
- tmpl++;
- i = b->b_inst + slot;
- if (*tmpl == 'L' || i->i_op == ASM_OP_NONE)
- return;
-
- /* Address + slot. */
- printf("%lx[%c] ", ip + slot, *tmpl);
-
- /* Predicate. */
- if (i->i_oper[0].o_value != 0) {
- asm_operand(i->i_oper+0, buf, ip);
- w = printf("(%s)", buf);
- } else
- w = 0;
- while (w++ < 8)
- printf(" ");
-
- /* Mnemonic & completers. */
- asm_mnemonic(i->i_op, buf);
- w = printf(buf);
- n = 0;
- while (n < i->i_ncmpltrs) {
- asm_completer(i->i_cmpltr + n, buf);
- w += printf(buf);
- n++;
- }
- while (w++ < 15)
- printf(" ");
- printf(" ");
-
- /* Operands. */
- n = 1;
- while (n < 7 && i->i_oper[n].o_type != ASM_OPER_NONE) {
- if (n > 1) {
- if (n == i->i_srcidx)
- printf(" = ");
- else
- printf(", ");
- }
- asm_operand(i->i_oper + n, buf, ip);
- printf(buf);
- n++;
- }
- printf("\n");
-}
diff --git a/sys/ia64/disasm/disasm_int.h b/sys/ia64/disasm/disasm_int.h
deleted file mode 100644
index e1410c1..0000000
--- a/sys/ia64/disasm/disasm_int.h
+++ /dev/null
@@ -1,222 +0,0 @@
-/*-
- * Copyright (c) 2000-2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _DISASM_INT_H_
-#define _DISASM_INT_H_
-
-#ifdef _DISASM_H_
-#error Include disasm_int.h before disasm.h
-#endif
-
-/*
- * Instruction bundle specifics.
- */
-#define TMPL_BITS 5
-#define SLOT_BITS 41
-#define SLOT_COUNT 3
-
-#define BUNDLE_SIZE (SLOT_COUNT * SLOT_BITS + TMPL_BITS)
-#define BUNDLE_BYTES ((BUNDLE_SIZE+7) >> 3)
-#define TMPL_MASK ((1 << TMPL_BITS) - 1)
-#define SLOT_MASK ((1ULL << SLOT_BITS) - 1ULL)
-#define TMPL(p) (*(const uint8_t*)(p) & TMPL_MASK)
-#define _U32(p,i) ((uint64_t)(((const uint32_t*)(p))[i]))
-#define _SLOT(p,i) (_U32(p,i) | (_U32(p,(i)+1)<<32))
-#define SLOT(p,i) ((_SLOT(p,i) >> (TMPL_BITS+((i)<<3)+(i))) & SLOT_MASK)
-
-/*
- * Instruction specifics
- */
-#define _FLD64(i,o,l) ((i >> o) & ((1LL << l) - 1LL))
-#define FIELD(i,o,l) ((uint32_t)_FLD64(i,o,l))
-#define OPCODE(i) FIELD(i, 37, 4)
-#define QP_BITS 6
-#define QP(i) FIELD(i, 0, QP_BITS)
-#define REG_BITS 7
-#define REG(i,r) FIELD(i, ((r) - 1) * REG_BITS + QP_BITS, REG_BITS)
-
-/*
- * Opcodes used internally as sentinels to denote either a lack of more
- * specific information or to preserve the additional state/information
- * we already have and need to pass around for later use.
- */
-#define ASM_ADDITIONAL_OPCODES \
- ASM_OP_INTERNAL_OPCODES, \
- ASM_OP_BR_CALL, ASM_OP_BR_CEXIT, ASM_OP_BR_CLOOP, \
- ASM_OP_BR_COND, ASM_OP_BR_CTOP, ASM_OP_BR_IA, ASM_OP_BR_RET, \
- ASM_OP_BR_WEXIT, ASM_OP_BR_WTOP, \
- ASM_OP_BREAK_B, ASM_OP_BREAK_F, ASM_OP_BREAK_I, ASM_OP_BREAK_M, \
- ASM_OP_BREAK_X, \
- ASM_OP_BRL_COND, ASM_OP_BRL_CALL, \
- ASM_OP_BRP_, ASM_OP_BRP_RET, \
- ASM_OP_BSW_0, ASM_OP_BSW_1, \
- ASM_OP_CHK_A_CLR, ASM_OP_CHK_A_NC, ASM_OP_CHK_S, \
- ASM_OP_CHK_S_I, ASM_OP_CHK_S_M, \
- ASM_OP_CLRRRB_, ASM_OP_CLRRRB_PR, \
- ASM_OP_CMP_EQ, ASM_OP_CMP_EQ_AND, ASM_OP_CMP_EQ_OR, \
- ASM_OP_CMP_EQ_OR_ANDCM, ASM_OP_CMP_EQ_UNC, ASM_OP_CMP_GE_AND, \
- ASM_OP_CMP_GE_OR, ASM_OP_CMP_GE_OR_ANDCM, ASM_OP_CMP_GT_AND, \
- ASM_OP_CMP_GT_OR, ASM_OP_CMP_GT_OR_ANDCM, ASM_OP_CMP_LE_AND, \
- ASM_OP_CMP_LE_OR, ASM_OP_CMP_LE_OR_ANDCM, ASM_OP_CMP_LT, \
- ASM_OP_CMP_LT_AND, ASM_OP_CMP_LT_OR, ASM_OP_CMP_LT_OR_ANDCM, \
- ASM_OP_CMP_LT_UNC, ASM_OP_CMP_LTU, ASM_OP_CMP_LTU_UNC, \
- ASM_OP_CMP_NE_AND, ASM_OP_CMP_NE_OR, ASM_OP_CMP_NE_OR_ANDCM, \
- ASM_OP_CMP4_EQ, ASM_OP_CMP4_EQ_AND, ASM_OP_CMP4_EQ_OR, \
- ASM_OP_CMP4_EQ_OR_ANDCM, ASM_OP_CMP4_EQ_UNC, ASM_OP_CMP4_GE_AND,\
- ASM_OP_CMP4_GE_OR, ASM_OP_CMP4_GE_OR_ANDCM, ASM_OP_CMP4_GT_AND, \
- ASM_OP_CMP4_GT_OR, ASM_OP_CMP4_GT_OR_ANDCM, ASM_OP_CMP4_LE_AND, \
- ASM_OP_CMP4_LE_OR, ASM_OP_CMP4_LE_OR_ANDCM, ASM_OP_CMP4_LT, \
- ASM_OP_CMP4_LT_AND, ASM_OP_CMP4_LT_OR, ASM_OP_CMP4_LT_OR_ANDCM, \
- ASM_OP_CMP4_LT_UNC, ASM_OP_CMP4_LTU, ASM_OP_CMP4_LTU_UNC, \
- ASM_OP_CMP4_NE_AND, ASM_OP_CMP4_NE_OR, ASM_OP_CMP4_NE_OR_ANDCM, \
- ASM_OP_CMP8XCHG16_ACQ, ASM_OP_CMP8XCHG16_REL, \
- ASM_OP_CMPXCHG1_ACQ, ASM_OP_CMPXCHG1_REL, \
- ASM_OP_CMPXCHG2_ACQ, ASM_OP_CMPXCHG2_REL, \
- ASM_OP_CMPXCHG4_ACQ, ASM_OP_CMPXCHG4_REL, \
- ASM_OP_CMPXCHG8_ACQ, ASM_OP_CMPXCHG8_REL, \
- ASM_OP_CZX1_L, ASM_OP_CZX1_R, \
- ASM_OP_CZX2_L, ASM_OP_CZX2_R, \
- ASM_OP_DEP_, ASM_OP_DEP_Z, \
- ASM_OP_FC_, ASM_OP_FC_I, \
- ASM_OP_FCLASS_M, \
- ASM_OP_FCVT_FX, ASM_OP_FCVT_FX_TRUNC, ASM_OP_FCVT_FXU, \
- ASM_OP_FCVT_FXU_TRUNC, ASM_OP_FCVT_XF, \
- ASM_OP_FETCHADD4_ACQ, ASM_OP_FETCHADD4_REL, \
- ASM_OP_FETCHADD8_ACQ, ASM_OP_FETCHADD8_REL, \
- ASM_OP_FMA_, ASM_OP_FMA_D, ASM_OP_FMA_S, \
- ASM_OP_FMERGE_NS, ASM_OP_FMERGE_S, ASM_OP_FMERGE_SE, \
- ASM_OP_FMIX_L, ASM_OP_FMIX_LR, ASM_OP_FMIX_R, \
- ASM_OP_FMS_, ASM_OP_FMS_D, ASM_OP_FMS_S, \
- ASM_OP_FNMA_, ASM_OP_FNMA_D, ASM_OP_FNMA_S, \
- ASM_OP_FPCMP_EQ, ASM_OP_FPCMP_LE, ASM_OP_FPCMP_LT, \
- ASM_OP_FPCMP_NEQ, ASM_OP_FPCMP_NLE, ASM_OP_FPCMP_NLT, \
- ASM_OP_FPCMP_ORD, ASM_OP_FPCMP_UNORD, \
- ASM_OP_FPCVT_FX, ASM_OP_FPCVT_FX_TRUNC, ASM_OP_FPCVT_FXU, \
- ASM_OP_FPCVT_FXU_TRUNC, \
- ASM_OP_FPMERGE_NS, ASM_OP_FPMERGE_S, ASM_OP_FPMERGE_SE, \
- ASM_OP_FSWAP_, ASM_OP_FSWAP_NL, ASM_OP_FSWAP_NR, \
- ASM_OP_FSXT_L, ASM_OP_FSXT_R, \
- ASM_OP_GETF_D, ASM_OP_GETF_EXP, ASM_OP_GETF_S, ASM_OP_GETF_SIG, \
- ASM_OP_HINT_B, ASM_OP_HINT_F, ASM_OP_HINT_I, ASM_OP_HINT_M, \
- ASM_OP_HINT_X, \
- ASM_OP_INVALA_, ASM_OP_INVALA_E, \
- ASM_OP_ITC_D, ASM_OP_ITC_I, \
- ASM_OP_ITR_D, ASM_OP_ITR_I, \
- ASM_OP_LD1_, ASM_OP_LD1_A, ASM_OP_LD1_ACQ, ASM_OP_LD1_BIAS, \
- ASM_OP_LD1_C_CLR, ASM_OP_LD1_C_CLR_ACQ, ASM_OP_LD1_C_NC, \
- ASM_OP_LD1_S, ASM_OP_LD1_SA, \
- ASM_OP_LD16_, ASM_OP_LD16_ACQ, \
- ASM_OP_LD2_, ASM_OP_LD2_A, ASM_OP_LD2_ACQ, ASM_OP_LD2_BIAS, \
- ASM_OP_LD2_C_CLR, ASM_OP_LD2_C_CLR_ACQ, ASM_OP_LD2_C_NC, \
- ASM_OP_LD2_S, ASM_OP_LD2_SA, \
- ASM_OP_LD4_, ASM_OP_LD4_A, ASM_OP_LD4_ACQ, ASM_OP_LD4_BIAS, \
- ASM_OP_LD4_C_CLR, ASM_OP_LD4_C_CLR_ACQ, ASM_OP_LD4_C_NC, \
- ASM_OP_LD4_S, ASM_OP_LD4_SA, \
- ASM_OP_LD8_, ASM_OP_LD8_A, ASM_OP_LD8_ACQ, ASM_OP_LD8_BIAS, \
- ASM_OP_LD8_C_CLR, ASM_OP_LD8_C_CLR_ACQ, ASM_OP_LD8_C_NC, \
- ASM_OP_LD8_FILL, ASM_OP_LD8_S, ASM_OP_LD8_SA, \
- ASM_OP_LDF_FILL, \
- ASM_OP_LDF8_, ASM_OP_LDF8_A, ASM_OP_LDF8_C_CLR, \
- ASM_OP_LDF8_C_NC, ASM_OP_LDF8_S, ASM_OP_LDF8_SA, \
- ASM_OP_LDFD_, ASM_OP_LDFD_A, ASM_OP_LDFD_C_CLR, \
- ASM_OP_LDFD_C_NC, ASM_OP_LDFD_S, ASM_OP_LDFD_SA, \
- ASM_OP_LDFE_, ASM_OP_LDFE_A, ASM_OP_LDFE_C_CLR, \
- ASM_OP_LDFE_C_NC, ASM_OP_LDFE_S, ASM_OP_LDFE_SA, \
- ASM_OP_LDFP8_, ASM_OP_LDFP8_A, ASM_OP_LDFP8_C_CLR, \
- ASM_OP_LDFP8_C_NC, ASM_OP_LDFP8_S, ASM_OP_LDFP8_SA, \
- ASM_OP_LDFPD_, ASM_OP_LDFPD_A, ASM_OP_LDFPD_C_CLR, \
- ASM_OP_LDFPD_C_NC, ASM_OP_LDFPD_S, ASM_OP_LDFPD_SA, \
- ASM_OP_LDFPS_, ASM_OP_LDFPS_A, ASM_OP_LDFPS_C_CLR, \
- ASM_OP_LDFPS_C_NC, ASM_OP_LDFPS_S, ASM_OP_LDFPS_SA, \
- ASM_OP_LDFS_, ASM_OP_LDFS_A, ASM_OP_LDFS_C_CLR, \
- ASM_OP_LDFS_C_NC, ASM_OP_LDFS_S, ASM_OP_LDFS_SA, \
- ASM_OP_LFETCH_, ASM_OP_LFETCH_EXCL, ASM_OP_LFETCH_FAULT, \
- ASM_OP_LFETCH_FAULT_EXCL, \
- ASM_OP_MF_, ASM_OP_MF_A, \
- ASM_OP_MIX1_L, ASM_OP_MIX1_R, \
- ASM_OP_MIX2_L, ASM_OP_MIX2_R, \
- ASM_OP_MIX4_L, ASM_OP_MIX4_R, \
- ASM_OP_MOV_, ASM_OP_MOV_CPUID, ASM_OP_MOV_DBR, ASM_OP_MOV_I, \
- ASM_OP_MOV_IBR, ASM_OP_MOV_IP, ASM_OP_MOV_M, ASM_OP_MOV_MSR, \
- ASM_OP_MOV_PKR, ASM_OP_MOV_PMC, ASM_OP_MOV_PMD, ASM_OP_MOV_PR, \
- ASM_OP_MOV_PSR, ASM_OP_MOV_PSR_L, ASM_OP_MOV_PSR_UM, \
- ASM_OP_MOV_RET, ASM_OP_MOV_RR, \
- ASM_OP_NOP_B, ASM_OP_NOP_F, ASM_OP_NOP_I, ASM_OP_NOP_M, \
- ASM_OP_NOP_X, \
- ASM_OP_PACK2_SSS, ASM_OP_PACK2_USS, \
- ASM_OP_PACK4_SSS, \
- ASM_OP_PADD1_, ASM_OP_PADD1_SSS, ASM_OP_PADD1_UUS, \
- ASM_OP_PADD1_UUU, \
- ASM_OP_PADD2_, ASM_OP_PADD2_SSS, ASM_OP_PADD2_UUS, \
- ASM_OP_PADD2_UUU, \
- ASM_OP_PAVG1_, ASM_OP_PAVG1_RAZ, \
- ASM_OP_PAVG2_, ASM_OP_PAVG2_RAZ, \
- ASM_OP_PCMP1_EQ, ASM_OP_PCMP1_GT, \
- ASM_OP_PCMP2_EQ, ASM_OP_PCMP2_GT, \
- ASM_OP_PCMP4_EQ, ASM_OP_PCMP4_GT, \
- ASM_OP_PMAX1_U, \
- ASM_OP_PMIN1_U, \
- ASM_OP_PMPY2_L, ASM_OP_PMPY2_R, \
- ASM_OP_PMPYSHR2_, ASM_OP_PMPYSHR2_U, \
- ASM_OP_PROBE_R, ASM_OP_PROBE_R_FAULT, ASM_OP_PROBE_RW_FAULT, \
- ASM_OP_PROBE_W, ASM_OP_PROBE_W_FAULT, \
- ASM_OP_PSHR2_, ASM_OP_PSHR2_U, \
- ASM_OP_PSHR4_, ASM_OP_PSHR4_U, \
- ASM_OP_PSUB1_, ASM_OP_PSUB1_SSS, ASM_OP_PSUB1_UUS, \
- ASM_OP_PSUB1_UUU, \
- ASM_OP_PSUB2_, ASM_OP_PSUB2_SSS, ASM_OP_PSUB2_UUS, \
- ASM_OP_PSUB2_UUU, \
- ASM_OP_PTC_E, ASM_OP_PTC_G, ASM_OP_PTC_GA, ASM_OP_PTC_L, \
- ASM_OP_PTR_D, ASM_OP_PTR_I, \
- ASM_OP_SETF_EXP, ASM_OP_SETF_D, ASM_OP_SETF_S, ASM_OP_SETF_SIG, \
- ASM_OP_SHR_, ASM_OP_SHR_U, \
- ASM_OP_SRLZ_D, ASM_OP_SRLZ_I, \
- ASM_OP_ST1_, ASM_OP_ST1_REL, \
- ASM_OP_ST16_, ASM_OP_ST16_REL, \
- ASM_OP_ST2_, ASM_OP_ST2_REL, \
- ASM_OP_ST4_, ASM_OP_ST4_REL, \
- ASM_OP_ST8_, ASM_OP_ST8_REL, ASM_OP_ST8_SPILL, \
- ASM_OP_STF_SPILL, \
- ASM_OP_SYNC_I, \
- ASM_OP_TBIT_NZ_AND, ASM_OP_TBIT_NZ_OR, ASM_OP_TBIT_NZ_OR_ANDCM, \
- ASM_OP_TBIT_Z, ASM_OP_TBIT_Z_AND, ASM_OP_TBIT_Z_OR, \
- ASM_OP_TBIT_Z_OR_ANDCM, ASM_OP_TBIT_Z_UNC, \
- ASM_OP_TF_NZ_AND, ASM_OP_TF_NZ_OR, ASM_OP_TF_NZ_OR_ANDCM, \
- ASM_OP_TF_Z, ASM_OP_TF_Z_AND, ASM_OP_TF_Z_OR, \
- ASM_OP_TF_Z_OR_ANDCM, ASM_OP_TF_Z_UNC, \
- ASM_OP_TNAT_NZ_AND, ASM_OP_TNAT_NZ_OR, ASM_OP_TNAT_NZ_OR_ANDCM, \
- ASM_OP_TNAT_Z, ASM_OP_TNAT_Z_AND, ASM_OP_TNAT_Z_OR, \
- ASM_OP_TNAT_Z_OR_ANDCM, ASM_OP_TNAT_Z_UNC, \
- ASM_OP_UNPACK1_H, ASM_OP_UNPACK1_L, \
- ASM_OP_UNPACK2_H, ASM_OP_UNPACK2_L, \
- ASM_OP_UNPACK4_H, ASM_OP_UNPACK4_L, \
- ASM_OP_VMSW_0, ASM_OP_VMSW_1, \
- ASM_OP_XMA_H, ASM_OP_XMA_HU, ASM_OP_XMA_L, \
- ASM_OP_NUMBER_OF_OPCODES
-
-#endif /* _DISASM_INT_H_ */
diff --git a/sys/ia64/ia32/ia32_misc.c b/sys/ia64/ia32/ia32_misc.c
deleted file mode 100644
index 148e31a..0000000
--- a/sys/ia64/ia32/ia32_misc.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * Copyright (c) 2009 Konstantin Belousov
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_compat.h"
-
-#include <sys/param.h>
-#include <sys/mount.h>
-#include <sys/proc.h>
-#include <sys/socket.h>
-#include <sys/sysent.h>
-#include <sys/sysproto.h>
-#include <sys/systm.h>
-#include <sys/uio.h>
-
-#include <compat/freebsd32/freebsd32_util.h>
-#include <compat/freebsd32/freebsd32.h>
-#include <compat/freebsd32/freebsd32_proto.h>
-
-int
-freebsd32_sysarch(struct thread *td, struct freebsd32_sysarch_args *uap)
-{
-
- return (EOPNOTSUPP);
-}
-
-#ifdef COMPAT_43
-int
-ofreebsd32_getpagesize(struct thread *td,
- struct ofreebsd32_getpagesize_args *uap)
-{
-
- td->td_retval[0] = IA32_PAGE_SIZE;
- return (0);
-}
-#endif
diff --git a/sys/ia64/ia32/ia32_reg.c b/sys/ia64/ia32/ia32_reg.c
deleted file mode 100644
index ae47f72..0000000
--- a/sys/ia64/ia32/ia32_reg.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*-
- * Copyright (c) 2005 Peter Wemm
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_compat.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/proc.h>
-#include <sys/procfs.h>
-
-int
-fill_regs32(struct thread *td, struct reg32 *regs)
-{
-
- bzero(regs, sizeof(*regs));
- return (EOPNOTSUPP);
-}
-
-int
-set_regs32(struct thread *td, struct reg32 *regs)
-{
-
- return (EOPNOTSUPP);
-}
-
-int
-fill_fpregs32(struct thread *td, struct fpreg32 *regs)
-{
-
- bzero(regs, sizeof(*regs));
- return (EOPNOTSUPP);
-}
-
-int
-set_fpregs32(struct thread *td, struct fpreg32 *regs)
-{
-
- return (EOPNOTSUPP);
-}
-
-int
-fill_dbregs32(struct thread *td, struct dbreg32 *regs)
-{
-
- bzero(regs, sizeof(*regs));
- return (EOPNOTSUPP);
-}
-
-int
-set_dbregs32(struct thread *td, struct dbreg32 *regs)
-{
-
- return (EOPNOTSUPP);
-}
diff --git a/sys/ia64/ia32/ia32_signal.c b/sys/ia64/ia32/ia32_signal.c
deleted file mode 100644
index d17f060..0000000
--- a/sys/ia64/ia32/ia32_signal.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/*-
- * Copyright (c) 2002 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_compat.h"
-
-#define __ELF_WORD_SIZE 32
-
-#include <sys/param.h>
-#include <sys/exec.h>
-#include <sys/fcntl.h>
-#include <sys/imgact.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/mutex.h>
-#include <sys/mman.h>
-#include <sys/namei.h>
-#include <sys/pioctl.h>
-#include <sys/proc.h>
-#include <sys/procfs.h>
-#include <sys/resourcevar.h>
-#include <sys/systm.h>
-#include <sys/signalvar.h>
-#include <sys/stat.h>
-#include <sys/sx.h>
-#include <sys/syscall.h>
-#include <sys/sysctl.h>
-#include <sys/sysent.h>
-#include <sys/vnode.h>
-#include <sys/imgact_elf.h>
-#include <sys/sysproto.h>
-
-#include <machine/frame.h>
-#include <machine/md_var.h>
-#include <machine/pcb.h>
-
-#include <vm/vm.h>
-#include <vm/vm_kern.h>
-#include <vm/vm_param.h>
-#include <vm/pmap.h>
-#include <vm/vm_map.h>
-#include <vm/vm_object.h>
-#include <vm/vm_extern.h>
-
-#include <compat/freebsd32/freebsd32_signal.h>
-#include <compat/freebsd32/freebsd32_util.h>
-#include <compat/freebsd32/freebsd32_proto.h>
-#include <compat/ia32/ia32_signal.h>
-#include <x86/include/psl.h>
-#include <x86/include/segments.h>
-#include <x86/include/specialreg.h>
-
-char ia32_sigcode[] = {
- 0xff, 0x54, 0x24, 0x10, /* call *SIGF_HANDLER(%esp) */
- 0x8d, 0x44, 0x24, 0x14, /* lea SIGF_UC(%esp),%eax */
- 0x50, /* pushl %eax */
- 0xf7, 0x40, 0x54, 0x00, 0x00, 0x02, 0x02, /* testl $PSL_VM,UC_EFLAGS(%ea
-x) */
- 0x75, 0x03, /* jne 9f */
- 0x8e, 0x68, 0x14, /* movl UC_GS(%eax),%gs */
- 0xb8, 0x57, 0x01, 0x00, 0x00, /* 9: movl $SYS_sigreturn,%eax */
- 0x50, /* pushl %eax */
- 0xcd, 0x80, /* int $0x80 */
- 0xeb, 0xfe, /* 0: jmp 0b */
- 0
-};
-int sz_ia32_sigcode = sizeof(ia32_sigcode);
-
-#ifdef COMPAT_43
-int
-ofreebsd32_sigreturn(struct thread *td, struct ofreebsd32_sigreturn_args *uap)
-{
-
- return (EOPNOTSUPP);
-}
-#endif
-
-/*
- * Signal sending has not been implemented on ia64. This causes
- * the sigtramp code to not understand the arguments and the application
- * will generally crash if it tries to handle a signal. Calling
- * sendsig() means that at least untrapped signals will work.
- */
-void
-ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
-{
- sendsig(catcher, ksi, mask);
-}
-
-#ifdef COMPAT_FREEBSD4
-int
-freebsd4_freebsd32_sigreturn(struct thread *td, struct freebsd4_freebsd32_sigreturn_args *uap)
-{
- return (sys_sigreturn(td, (struct sigreturn_args *)uap));
-}
-#endif
-
-int
-freebsd32_sigreturn(struct thread *td, struct freebsd32_sigreturn_args *uap)
-{
- return (sys_sigreturn(td, (struct sigreturn_args *)uap));
-}
-
-
-void
-ia32_setregs(struct thread *td, struct image_params *imgp, u_long stack)
-{
- struct trapframe *tf = td->td_frame;
- vm_offset_t gdt, ldt;
- u_int64_t codesel, datasel, ldtsel;
- u_int64_t codeseg, dataseg, gdtseg, ldtseg;
- struct segment_descriptor desc;
- struct vmspace *vmspace = td->td_proc->p_vmspace;
- struct sysentvec *sv;
-
- sv = td->td_proc->p_sysent;
- exec_setregs(td, imgp, stack);
-
- /* Non-syscall frames are cleared by exec_setregs() */
- if (tf->tf_flags & FRAME_SYSCALL) {
- bzero(&tf->tf_scratch, sizeof(tf->tf_scratch));
- bzero(&tf->tf_scratch_fp, sizeof(tf->tf_scratch_fp));
- } else
- tf->tf_special.ndirty = 0;
-
- tf->tf_special.psr |= IA64_PSR_IS;
- tf->tf_special.sp = stack;
-
- /* Point the RSE backstore to something harmless. */
- tf->tf_special.bspstore = (sv->sv_psstrings - sz_ia32_sigcode -
- SPARE_USRSPACE + 15) & ~15;
-
- codesel = LSEL(LUCODE_SEL, SEL_UPL);
- datasel = LSEL(LUDATA_SEL, SEL_UPL);
- ldtsel = GSEL(GLDT_SEL, SEL_UPL);
-
- /* Setup ia32 segment registers. */
- tf->tf_scratch.gr16 = (datasel << 48) | (datasel << 32) |
- (datasel << 16) | datasel;
- tf->tf_scratch.gr17 = (ldtsel << 32) | (datasel << 16) | codesel;
-
- /*
- * Build the GDT and LDT.
- */
- gdt = sv->sv_usrstack;
- vm_map_find(&vmspace->vm_map, NULL, 0, &gdt, IA32_PAGE_SIZE << 1, 0,
- VMFS_NO_SPACE, VM_PROT_ALL, VM_PROT_ALL, 0);
- ldt = gdt + IA32_PAGE_SIZE;
-
- desc.sd_lolimit = 8*NLDT-1;
- desc.sd_lobase = ldt & 0xffffff;
- desc.sd_type = SDT_SYSLDT;
- desc.sd_dpl = SEL_UPL;
- desc.sd_p = 1;
- desc.sd_hilimit = 0;
- desc.sd_def32 = 0;
- desc.sd_gran = 0;
- desc.sd_hibase = ldt >> 24;
- copyout(&desc, (caddr_t) gdt + 8*GLDT_SEL, sizeof(desc));
-
- desc.sd_lolimit = ((sv->sv_usrstack >> 12) - 1) & 0xffff;
- desc.sd_lobase = 0;
- desc.sd_type = SDT_MEMERA;
- desc.sd_dpl = SEL_UPL;
- desc.sd_p = 1;
- desc.sd_hilimit = ((sv->sv_usrstack >> 12) - 1) >> 16;
- desc.sd_def32 = 1;
- desc.sd_gran = 1;
- desc.sd_hibase = 0;
- copyout(&desc, (caddr_t) ldt + 8*LUCODE_SEL, sizeof(desc));
- desc.sd_type = SDT_MEMRWA;
- copyout(&desc, (caddr_t) ldt + 8*LUDATA_SEL, sizeof(desc));
-
- codeseg = 0 /* base */
- + (((sv->sv_usrstack >> 12) - 1) << 32) /* limit */
- + ((long)SDT_MEMERA << 52)
- + ((long)SEL_UPL << 57)
- + (1L << 59) /* present */
- + (1L << 62) /* 32 bits */
- + (1L << 63); /* page granularity */
- dataseg = 0 /* base */
- + (((sv->sv_usrstack >> 12) - 1) << 32) /* limit */
- + ((long)SDT_MEMRWA << 52)
- + ((long)SEL_UPL << 57)
- + (1L << 59) /* present */
- + (1L << 62) /* 32 bits */
- + (1L << 63); /* page granularity */
-
- tf->tf_scratch.csd = codeseg;
- tf->tf_scratch.ssd = dataseg;
- tf->tf_scratch.gr24 = dataseg; /* ESD */
- tf->tf_scratch.gr27 = dataseg; /* DSD */
- tf->tf_scratch.gr28 = dataseg; /* FSD */
- tf->tf_scratch.gr29 = dataseg; /* GSD */
-
- gdtseg = gdt /* base */
- + ((8L*NGDT - 1) << 32) /* limit */
- + ((long)SDT_SYSNULL << 52)
- + ((long)SEL_UPL << 57)
- + (1L << 59) /* present */
- + (0L << 62) /* 16 bits */
- + (0L << 63); /* byte granularity */
- ldtseg = ldt /* base */
- + ((8L*NLDT - 1) << 32) /* limit */
- + ((long)SDT_SYSLDT << 52)
- + ((long)SEL_UPL << 57)
- + (1L << 59) /* present */
- + (0L << 62) /* 16 bits */
- + (0L << 63); /* byte granularity */
-
- tf->tf_scratch.gr30 = ldtseg; /* LDTD */
- tf->tf_scratch.gr31 = gdtseg; /* GDTD */
-
- /* Set ia32 control registers on this processor. */
- ia64_set_cflg(CR0_PE | CR0_PG | ((long)(CR4_XMM | CR4_FXSR) << 32));
- ia64_set_eflag(PSL_USER);
-
- /* PS_STRINGS value for BSD/OS binaries. It is 0 for non-BSD/OS. */
- tf->tf_scratch.gr11 = td->td_proc->p_sysent->sv_psstrings;
-
- /*
- * XXX - Linux emulator
- * Make sure sure edx is 0x0 on entry. Linux binaries depend
- * on it.
- */
- td->td_retval[1] = 0;
-}
-
-void
-ia32_restorectx(struct pcb *pcb)
-{
-
- ia64_set_cflg(pcb->pcb_ia32_cflg);
- ia64_set_eflag(pcb->pcb_ia32_eflag);
- ia64_set_fcr(pcb->pcb_ia32_fcr);
- ia64_set_fdr(pcb->pcb_ia32_fdr);
- ia64_set_fir(pcb->pcb_ia32_fir);
- ia64_set_fsr(pcb->pcb_ia32_fsr);
-}
-
-void
-ia32_savectx(struct pcb *pcb)
-{
-
- pcb->pcb_ia32_cflg = ia64_get_cflg();
- pcb->pcb_ia32_eflag = ia64_get_eflag();
- pcb->pcb_ia32_fcr = ia64_get_fcr();
- pcb->pcb_ia32_fdr = ia64_get_fdr();
- pcb->pcb_ia32_fir = ia64_get_fir();
- pcb->pcb_ia32_fsr = ia64_get_fsr();
-}
-
-int
-freebsd32_getcontext(struct thread *td, struct freebsd32_getcontext_args *uap)
-{
-
- return (nosys(td, NULL));
-}
-
-int
-freebsd32_setcontext(struct thread *td, struct freebsd32_setcontext_args *uap)
-{
-
- return (nosys(td, NULL));
-}
-
-int
-freebsd32_swapcontext(struct thread *td, struct freebsd32_swapcontext_args *uap)
-{
-
- return (nosys(td, NULL));
-}
diff --git a/sys/ia64/ia32/ia32_trap.c b/sys/ia64/ia32/ia32_trap.c
deleted file mode 100644
index cea8f92..0000000
--- a/sys/ia64/ia32/ia32_trap.c
+++ /dev/null
@@ -1,282 +0,0 @@
-/*-
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/ktr.h>
-#include <sys/sysproto.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/pioctl.h>
-#include <sys/proc.h>
-#include <sys/ptrace.h>
-#include <sys/signalvar.h>
-#include <sys/syscall.h>
-#include <sys/sysent.h>
-#include <machine/cpu.h>
-#include <machine/fpu.h>
-#include <machine/frame.h>
-#include <machine/md_var.h>
-#include <x86/include/psl.h>
-
-#include <security/audit/audit.h>
-
-#include <compat/ia32/ia32_util.h>
-
-void
-ia32_set_syscall_retval(struct thread *td, int error)
-{
- struct proc *p;
- struct trapframe *tf;
-
- tf = td->td_frame;
-
- switch (error) {
- case 0:
- tf->tf_scratch.gr8 = td->td_retval[0]; /* eax */
- tf->tf_scratch.gr10 = td->td_retval[1]; /* edx */
- ia64_set_eflag(ia64_get_eflag() & ~PSL_C);
- break;
-
- case ERESTART:
- /*
- * Reconstruct pc, assuming lcall $X,y is 7 bytes,
- * int 0x80 is 2 bytes. XXX Assume int 0x80.
- */
- tf->tf_special.iip -= 2;
- break;
-
- case EJUSTRETURN:
- break;
-
- default:
- p = td->td_proc;
- if (p->p_sysent->sv_errsize) {
- if (error >= p->p_sysent->sv_errsize)
- error = -1; /* XXX */
- else
- error = p->p_sysent->sv_errtbl[error];
- }
- tf->tf_scratch.gr8 = error;
- ia64_set_eflag(ia64_get_eflag() | PSL_C);
- break;
- }
-}
-
-int
-ia32_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
-{
- struct trapframe *tf;
- struct proc *p;
- uint32_t args[8];
- caddr_t params;
- int error, i;
-
- tf = td->td_frame;
- p = td->td_proc;
-
- params = (caddr_t)(tf->tf_special.sp & ((1L<<32)-1)) +
- sizeof(uint32_t);
- sa->code = tf->tf_scratch.gr8; /* eax */
-
- if (sa->code == SYS_syscall) {
- /* Code is first argument, followed by actual args. */
- sa->code = fuword32(params);
- params += sizeof(int);
- } else if (sa->code == SYS___syscall) {
- /*
- * Like syscall, but code is a quad, so as to maintain
- * quad alignment for the rest of the arguments. We
- * use a 32-bit fetch in case params is not aligned.
- */
- sa->code = fuword32(params);
- params += sizeof(quad_t);
- }
-
- if (p->p_sysent->sv_mask)
- sa->code &= p->p_sysent->sv_mask;
- if (sa->code >= p->p_sysent->sv_size)
- sa->callp = &p->p_sysent->sv_table[0];
- else
- sa->callp = &p->p_sysent->sv_table[sa->code];
- sa->narg = sa->callp->sy_narg;
-
- if (params != NULL && sa->narg != 0)
- error = copyin(params, (caddr_t)args, sa->narg * sizeof(int));
- else
- error = 0;
- sa->args = &sa->args32[0];
-
- if (error == 0) {
- for (i = 0; i < sa->narg; i++)
- sa->args32[i] = args[i];
- td->td_retval[0] = 0;
- td->td_retval[1] = tf->tf_scratch.gr10; /* edx */
- }
-
- return (error);
-}
-
-#include "../../kern/subr_syscall.c"
-
-static void
-ia32_syscall(struct trapframe *tf)
-{
- struct thread *td;
- struct syscall_args sa;
- register_t eflags;
- int error;
- ksiginfo_t ksi;
-
- td = curthread;
- eflags = ia64_get_eflag();
-
- error = syscallenter(td, &sa);
-
- /*
- * Traced syscall.
- */
- if ((eflags & PSL_T) && !(eflags & PSL_VM)) {
- ia64_set_eflag(ia64_get_eflag() & ~PSL_T);
- ksiginfo_init_trap(&ksi);
- ksi.ksi_signo = SIGTRAP;
- ksi.ksi_code = TRAP_TRACE;
- ksi.ksi_addr = (void *)tf->tf_special.iip;
- trapsignal(td, &ksi);
- }
-
- syscallret(td, error, &sa);
-}
-
-/*
- * ia32_trap() is called from exception.S to handle the IA-32 specific
- * interruption vectors.
- */
-void
-ia32_trap(int vector, struct trapframe *tf)
-{
- struct proc *p;
- struct thread *td;
- uint64_t ucode;
- int sig;
- ksiginfo_t ksi;
-
- KASSERT(TRAPF_USERMODE(tf), ("%s: In kernel mode???", __func__));
-
- ia64_set_fpsr(IA64_FPSR_DEFAULT);
- PCPU_INC(cnt.v_trap);
-
- td = curthread;
- td->td_frame = tf;
- td->td_pticks = 0;
- p = td->td_proc;
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
- sig = 0;
- ucode = 0;
- switch (vector) {
- case IA64_VEC_IA32_EXCEPTION:
- switch ((tf->tf_special.isr >> 16) & 0xffff) {
- case IA32_EXCEPTION_DIVIDE:
- ucode = FPE_INTDIV;
- sig = SIGFPE;
- break;
- case IA32_EXCEPTION_DEBUG:
- case IA32_EXCEPTION_BREAK:
- sig = SIGTRAP;
- break;
- case IA32_EXCEPTION_OVERFLOW:
- ucode = FPE_INTOVF;
- sig = SIGFPE;
- break;
- case IA32_EXCEPTION_BOUND:
- ucode = FPE_FLTSUB;
- sig = SIGFPE;
- break;
- case IA32_EXCEPTION_DNA:
- ucode = 0;
- sig = SIGFPE;
- break;
- case IA32_EXCEPTION_NOT_PRESENT:
- case IA32_EXCEPTION_STACK_FAULT:
- case IA32_EXCEPTION_GPFAULT:
- ucode = (tf->tf_special.isr & 0xffff) + BUS_SEGM_FAULT;
- sig = SIGBUS;
- break;
- case IA32_EXCEPTION_FPERROR:
- ucode = 0; /* XXX */
- sig = SIGFPE;
- break;
- case IA32_EXCEPTION_ALIGNMENT_CHECK:
- ucode = tf->tf_special.ifa; /* VA */
- sig = SIGBUS;
- break;
- case IA32_EXCEPTION_STREAMING_SIMD:
- ucode = 0; /* XXX */
- sig = SIGFPE;
- break;
- default:
- trap_panic(vector, tf);
- break;
- }
- break;
-
- case IA64_VEC_IA32_INTERCEPT:
- /* XXX Maybe need to emulate ia32 instruction. */
- trap_panic(vector, tf);
-
- case IA64_VEC_IA32_INTERRUPT:
- /* INT n instruction - probably a syscall. */
- if (((tf->tf_special.isr >> 16) & 0xffff) == 0x80) {
- ia32_syscall(tf);
- goto out;
- }
- ucode = (tf->tf_special.isr >> 16) & 0xffff;
- sig = SIGILL;
- break;
-
- default:
- /* Should never happen of course. */
- trap_panic(vector, tf);
- break;
- }
-
- KASSERT(sig != 0, ("%s: signal not set", __func__));
-
- ksiginfo_init_trap(&ksi);
- ksi.ksi_signo = sig;
- ksi.ksi_code = (int)ucode; /* XXX */
- /* ksi.ksi_addr */
- trapsignal(td, &ksi);
-
-out:
- userret(td, tf);
- do_ast(tf);
-}
diff --git a/sys/ia64/ia64/autoconf.c b/sys/ia64/ia64/autoconf.c
deleted file mode 100644
index fa99ecb..0000000
--- a/sys/ia64/ia64/autoconf.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include "opt_isa.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/conf.h>
-#include <sys/reboot.h>
-#include <sys/kernel.h>
-#include <sys/mount.h>
-#include <sys/sysctl.h>
-#include <sys/bus.h>
-#include <sys/cons.h>
-
-#include <machine/intr.h>
-#include <machine/md_var.h>
-
-static void configure_first(void *);
-static void configure(void *);
-static void configure_final(void *);
-
-SYSINIT(configure1, SI_SUB_CONFIGURE, SI_ORDER_FIRST, configure_first, NULL);
-/* SI_ORDER_SECOND is hookable */
-SYSINIT(configure2, SI_SUB_CONFIGURE, SI_ORDER_THIRD, configure, NULL);
-/* SI_ORDER_MIDDLE is hookable */
-SYSINIT(configure3, SI_SUB_CONFIGURE, SI_ORDER_ANY, configure_final, NULL);
-
-#ifdef DEV_ISA
-#include <isa/isavar.h>
-device_t isa_bus_device = 0;
-#endif
-
-/*
- * Determine i/o configuration for a machine.
- */
-static void
-configure_first(void *dummy)
-{
-
- device_add_child(root_bus, "nexus", 0);
-}
-
-static void
-configure(void *dummy)
-{
-
- root_bus_configure();
-
- /*
- * Probe ISA devices after everything.
- */
-#ifdef DEV_ISA
- if (isa_bus_device)
- isa_probe_children(isa_bus_device);
-#endif
-}
-
-static void
-configure_final(void *dummy)
-{
-
- cninit_finish();
-
- ia64_enable_intr();
-
- cold = 0;
-}
diff --git a/sys/ia64/ia64/bus_machdep.c b/sys/ia64/ia64/bus_machdep.c
deleted file mode 100644
index cd9ebc8..0000000
--- a/sys/ia64/ia64/bus_machdep.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/*-
- * Copyright (c) 2009 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <machine/bus.h>
-#include <vm/vm.h>
-#include <vm/pmap.h>
-
-extern u_long ia64_port_base;
-
-#define __PIO_ADDR(port) \
- (void *)(ia64_port_base | (((port) & 0xfffc) << 10) | ((port) & 0xFFF))
-
-int
-bus_space_map(bus_space_tag_t bst, bus_addr_t addr, bus_size_t size,
- int flags __unused, bus_space_handle_t *bshp)
-{
-
- *bshp = (__predict_false(bst == IA64_BUS_SPACE_IO))
- ? addr : (uintptr_t)pmap_mapdev(addr, size);
- return (0);
-}
-
-
-void
-bus_space_unmap(bus_space_tag_t bst __unused, bus_space_handle_t bsh,
- bus_size_t size)
-{
-
- pmap_unmapdev(bsh, size);
-}
-
-uint8_t
-bus_space_read_io_1(u_long port)
-{
- uint8_t v;
-
- ia64_mf();
- v = ia64_ld1(__PIO_ADDR(port));
- ia64_mf_a();
- ia64_mf();
- return (v);
-}
-
-uint16_t
-bus_space_read_io_2(u_long port)
-{
- uint16_t v;
-
- ia64_mf();
- v = ia64_ld2(__PIO_ADDR(port));
- ia64_mf_a();
- ia64_mf();
- return (v);
-}
-
-uint32_t
-bus_space_read_io_4(u_long port)
-{
- uint32_t v;
-
- ia64_mf();
- v = ia64_ld4(__PIO_ADDR(port));
- ia64_mf_a();
- ia64_mf();
- return (v);
-}
-
-#if 0
-uint64_t
-bus_space_read_io_8(u_long port)
-{
-}
-#endif
-
-void
-bus_space_write_io_1(u_long port, uint8_t val)
-{
-
- ia64_mf();
- ia64_st1(__PIO_ADDR(port), val);
- ia64_mf_a();
- ia64_mf();
-}
-
-void
-bus_space_write_io_2(u_long port, uint16_t val)
-{
-
- ia64_mf();
- ia64_st2(__PIO_ADDR(port), val);
- ia64_mf_a();
- ia64_mf();
-}
-
-void
-bus_space_write_io_4(u_long port, uint32_t val)
-{
-
- ia64_mf();
- ia64_st4(__PIO_ADDR(port), val);
- ia64_mf_a();
- ia64_mf();
-}
-
-#if 0
-void
-bus_space_write_io_8(u_long port, uint64_t val)
-{
-}
-#endif
-
-void
-bus_space_read_multi_io_1(u_long port, uint8_t *ptr, size_t count)
-{
-
- while (count-- > 0)
- *ptr++ = bus_space_read_io_1(port);
-}
-
-void
-bus_space_read_multi_io_2(u_long port, uint16_t *ptr, size_t count)
-{
-
- while (count-- > 0)
- *ptr++ = bus_space_read_io_2(port);
-}
-
-void
-bus_space_read_multi_io_4(u_long port, uint32_t *ptr, size_t count)
-{
-
- while (count-- > 0)
- *ptr++ = bus_space_read_io_4(port);
-}
-
-#if 0
-void
-bus_space_read_multi_io_8(u_long port, uint64_t *ptr, size_t count)
-{
-}
-#endif
-
-void
-bus_space_write_multi_io_1(u_long port, const uint8_t *ptr, size_t count)
-{
-
- while (count-- > 0)
- bus_space_write_io_1(port, *ptr++);
-}
-
-void
-bus_space_write_multi_io_2(u_long port, const uint16_t *ptr, size_t count)
-{
-
- while (count-- > 0)
- bus_space_write_io_2(port, *ptr++);
-}
-
-void
-bus_space_write_multi_io_4(u_long port, const uint32_t *ptr, size_t count)
-{
-
- while (count-- > 0)
- bus_space_write_io_4(port, *ptr++);
-}
-
-#if 0
-void
-bus_space_write_multi_io_8(u_long port, const uint64_t *ptr, size_t count)
-{
-}
-#endif
-
-void
-bus_space_read_region_io_1(u_long port, uint8_t *ptr, size_t count)
-{
-
- while (count-- > 0) {
- *ptr++ = bus_space_read_io_1(port);
- port += 1;
- }
-}
-
-void
-bus_space_read_region_io_2(u_long port, uint16_t *ptr, size_t count)
-{
-
- while (count-- > 0) {
- *ptr++ = bus_space_read_io_2(port);
- port += 2;
- }
-}
-
-void
-bus_space_read_region_io_4(u_long port, uint32_t *ptr, size_t count)
-{
-
- while (count-- > 0) {
- *ptr++ = bus_space_read_io_4(port);
- port += 4;
- }
-}
-
-#if 0
-void bus_space_read_region_io_8(u_long, uint64_t *, size_t);
-#endif
-
-void
-bus_space_write_region_io_1(u_long port, const uint8_t *ptr, size_t count)
-{
-
- while (count-- > 0) {
- bus_space_write_io_1(port, *ptr++);
- port += 1;
- }
-}
-
-void
-bus_space_write_region_io_2(u_long port, const uint16_t *ptr, size_t count)
-{
-
- while (count-- > 0) {
- bus_space_write_io_2(port, *ptr++);
- port += 2;
- }
-}
-
-void
-bus_space_write_region_io_4(u_long port, const uint32_t *ptr, size_t count)
-{
-
- while (count-- > 0) {
- bus_space_write_io_4(port, *ptr++);
- port += 4;
- }
-}
-
-#if 0
-void
-bus_space_write_region_io_8(u_long port, const uint64_t *ptr, size_t count)
-{
-}
-#endif
-
-void
-bus_space_set_region_io_1(u_long port, uint8_t val, size_t count)
-{
-
- while (count-- > 0) {
- bus_space_write_io_1(port, val);
- port += 1;
- }
-}
-
-void
-bus_space_set_region_io_2(u_long port, uint16_t val, size_t count)
-{
-
- while (count-- > 0) {
- bus_space_write_io_2(port, val);
- port += 2;
- }
-}
-
-void
-bus_space_set_region_io_4(u_long port, uint32_t val, size_t count)
-{
-
- while (count-- > 0) {
- bus_space_write_io_4(port, val);
- port += 4;
- }
-}
-
-#if 0
-void
-bus_space_set_region_io_8(u_long port, uint64_t val, size_t count)
-{
-}
-#endif
-
-void
-bus_space_copy_region_io_1(u_long src, u_long dst, size_t count)
-{
- long delta;
- uint8_t val;
-
- if (src < dst) {
- src += count - 1;
- dst += count - 1;
- delta = -1;
- } else
- delta = 1;
-
- while (count-- > 0) {
- val = bus_space_read_io_1(src);
- bus_space_write_io_1(dst, val);
- src += delta;
- dst += delta;
- }
-}
-
-void
-bus_space_copy_region_io_2(u_long src, u_long dst, size_t count)
-{
- long delta;
- uint16_t val;
-
- if (src < dst) {
- src += 2 * (count - 1);
- dst += 2 * (count - 1);
- delta = -2;
- } else
- delta = 2;
-
- while (count-- > 0) {
- val = bus_space_read_io_2(src);
- bus_space_write_io_2(dst, val);
- src += delta;
- dst += delta;
- }
-}
-
-void
-bus_space_copy_region_io_4(u_long src, u_long dst, size_t count)
-{
- long delta;
- uint32_t val;
-
- if (src < dst) {
- src += 4 * (count - 1);
- dst += 4 * (count - 1);
- delta = -4;
- } else
- delta = 4;
-
- while (count-- > 0) {
- val = bus_space_read_io_4(src);
- bus_space_write_io_4(dst, val);
- src += delta;
- dst += delta;
- }
-}
-
-#if 0
-void
-bus_space_copy_region_io_8(u_long src, u_long dst, size_t count)
-{
-}
-#endif
diff --git a/sys/ia64/ia64/busdma_machdep.c b/sys/ia64/ia64/busdma_machdep.c
deleted file mode 100644
index 206fc6e..0000000
--- a/sys/ia64/ia64/busdma_machdep.c
+++ /dev/null
@@ -1,975 +0,0 @@
-/*-
- * Copyright (c) 1997 Justin T. Gibbs.
- * All rights reserved.
- *
- * 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,
- * without modification, immediately at the beginning of the file.
- * 2. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/bus.h>
-#include <sys/interrupt.h>
-#include <sys/memdesc.h>
-#include <sys/proc.h>
-#include <sys/sysctl.h>
-#include <sys/uio.h>
-
-#include <vm/vm.h>
-#include <vm/vm_page.h>
-#include <vm/vm_map.h>
-
-#include <machine/atomic.h>
-#include <machine/bus.h>
-#include <machine/md_var.h>
-
-#define MAX_BPAGES 1024
-
-struct bus_dma_tag {
- bus_dma_tag_t parent;
- bus_size_t alignment;
- bus_addr_t boundary;
- bus_addr_t lowaddr;
- bus_addr_t highaddr;
- bus_dma_filter_t *filter;
- void *filterarg;
- bus_size_t maxsize;
- u_int nsegments;
- bus_size_t maxsegsz;
- int flags;
- int ref_count;
- int map_count;
- bus_dma_lock_t *lockfunc;
- void *lockfuncarg;
- bus_dma_segment_t *segments;
-};
-
-struct bounce_page {
- vm_offset_t vaddr; /* kva of bounce buffer */
- bus_addr_t busaddr; /* Physical address */
- vm_offset_t datavaddr; /* kva of client data */
- bus_addr_t dataaddr; /* client physical address */
- bus_size_t datacount; /* client data count */
- STAILQ_ENTRY(bounce_page) links;
-};
-
-u_int busdma_swi_pending;
-
-static struct mtx bounce_lock;
-static STAILQ_HEAD(bp_list, bounce_page) bounce_page_list;
-static int free_bpages;
-static int reserved_bpages;
-static int active_bpages;
-static int total_bpages;
-static int total_bounced;
-static int total_deferred;
-
-static SYSCTL_NODE(_hw, OID_AUTO, busdma, CTLFLAG_RD, 0, "Busdma parameters");
-SYSCTL_INT(_hw_busdma, OID_AUTO, free_bpages, CTLFLAG_RD, &free_bpages, 0,
- "Free bounce pages");
-SYSCTL_INT(_hw_busdma, OID_AUTO, reserved_bpages, CTLFLAG_RD, &reserved_bpages,
- 0, "Reserved bounce pages");
-SYSCTL_INT(_hw_busdma, OID_AUTO, active_bpages, CTLFLAG_RD, &active_bpages, 0,
- "Active bounce pages");
-SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0,
- "Total bounce pages");
-SYSCTL_INT(_hw_busdma, OID_AUTO, total_bounced, CTLFLAG_RD, &total_bounced, 0,
- "Total bounce requests");
-SYSCTL_INT(_hw_busdma, OID_AUTO, total_deferred, CTLFLAG_RD, &total_deferred,
- 0, "Total bounce requests that were deferred");
-
-struct bus_dmamap {
- struct bp_list bpages;
- int pagesneeded;
- int pagesreserved;
- bus_dma_tag_t dmat;
- struct memdesc mem;
- bus_dmamap_callback_t *callback;
- void *callback_arg;
- STAILQ_ENTRY(bus_dmamap) links;
-};
-
-static STAILQ_HEAD(, bus_dmamap) bounce_map_waitinglist;
-static STAILQ_HEAD(, bus_dmamap) bounce_map_callbacklist;
-static struct bus_dmamap nobounce_dmamap;
-
-static void init_bounce_pages(void *dummy);
-static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages);
-static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
- int commit);
-static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map,
- vm_offset_t vaddr, bus_addr_t addr, bus_size_t size);
-static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage);
-static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr,
- bus_size_t len);
-
-/*
- * Return true if a match is made.
- *
- * To find a match walk the chain of bus_dma_tag_t's looking for 'paddr'.
- *
- * If paddr is within the bounds of the dma tag then call the filter callback
- * to check for a match, if there is no filter callback then assume a match.
- */
-static __inline int
-run_filter(bus_dma_tag_t dmat, bus_addr_t paddr, bus_size_t len)
-{
- bus_addr_t bndy;
- int retval;
-
- retval = 0;
- bndy = dmat->boundary;
- do {
- if (((paddr > dmat->lowaddr && paddr <= dmat->highaddr) ||
- (paddr & (dmat->alignment - 1)) != 0 ||
- (paddr & bndy) != ((paddr + len) & bndy)) &&
- (dmat->filter == NULL ||
- (*dmat->filter)(dmat->filterarg, paddr) != 0))
- retval = 1;
- dmat = dmat->parent;
- } while (retval == 0 && dmat != NULL);
- return (retval);
-}
-
-/*
- * Convenience function for manipulating driver locks from busdma (during
- * busdma_swi, for example). Drivers that don't provide their own locks
- * should specify &Giant to dmat->lockfuncarg. Drivers that use their own
- * non-mutex locking scheme don't have to use this at all.
- */
-void
-busdma_lock_mutex(void *arg, bus_dma_lock_op_t op)
-{
- struct mtx *dmtx;
-
- dmtx = (struct mtx *)arg;
- switch (op) {
- case BUS_DMA_LOCK:
- mtx_lock(dmtx);
- break;
- case BUS_DMA_UNLOCK:
- mtx_unlock(dmtx);
- break;
- default:
- panic("Unknown operation 0x%x for busdma_lock_mutex!", op);
- }
-}
-
-/*
- * dflt_lock should never get called. It gets put into the dma tag when
- * lockfunc == NULL, which is only valid if the maps that are associated
- * with the tag are meant to never be defered.
- * XXX Should have a way to identify which driver is responsible here.
- */
-static void
-dflt_lock(void *arg, bus_dma_lock_op_t op)
-{
- panic("driver error: busdma dflt_lock called");
-}
-
-#define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4
-
-/*
- * Allocate a device specific dma_tag.
- */
-int
-bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
- bus_addr_t boundary, bus_addr_t lowaddr, bus_addr_t highaddr,
- bus_dma_filter_t *filter, void *filterarg, bus_size_t maxsize,
- int nsegments, bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc,
- void *lockfuncarg, bus_dma_tag_t *dmat)
-{
- bus_dma_tag_t newtag;
- int error = 0;
-
- /* Basic sanity checking */
- if (boundary != 0 && boundary < maxsegsz)
- maxsegsz = boundary;
-
- /* Return a NULL tag on failure */
- *dmat = NULL;
-
- newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, M_NOWAIT);
- if (newtag == NULL)
- return (ENOMEM);
-
- newtag->parent = parent;
- newtag->alignment = alignment;
- newtag->boundary = boundary;
- newtag->lowaddr = trunc_page(lowaddr) + (PAGE_SIZE - 1);
- newtag->highaddr = trunc_page(highaddr) + (PAGE_SIZE - 1);
- newtag->filter = filter;
- newtag->filterarg = filterarg;
- newtag->maxsize = maxsize;
- newtag->nsegments = nsegments;
- newtag->maxsegsz = maxsegsz;
- newtag->flags = flags;
- newtag->ref_count = 1; /* Count ourself */
- newtag->map_count = 0;
- if (lockfunc != NULL) {
- newtag->lockfunc = lockfunc;
- newtag->lockfuncarg = lockfuncarg;
- } else {
- newtag->lockfunc = dflt_lock;
- newtag->lockfuncarg = NULL;
- }
- newtag->segments = NULL;
-
- /* Take into account any restrictions imposed by our parent tag */
- if (parent != NULL) {
- newtag->lowaddr = MIN(parent->lowaddr, newtag->lowaddr);
- newtag->highaddr = MAX(parent->highaddr, newtag->highaddr);
- if (newtag->boundary == 0)
- newtag->boundary = parent->boundary;
- else if (parent->boundary != 0)
- newtag->boundary = MIN(parent->boundary,
- newtag->boundary);
- if (newtag->filter == NULL) {
- /*
- * Short circuit looking at our parent directly
- * since we have encapsulated all of its information
- */
- newtag->filter = parent->filter;
- newtag->filterarg = parent->filterarg;
- newtag->parent = parent->parent;
- }
- if (newtag->parent != NULL)
- atomic_add_int(&parent->ref_count, 1);
- }
-
- if (newtag->lowaddr < paddr_max && (flags & BUS_DMA_ALLOCNOW) != 0) {
- /* Must bounce */
-
- if (ptoa(total_bpages) < maxsize) {
- int pages;
-
- pages = atop(maxsize) - total_bpages;
-
- /* Add pages to our bounce pool */
- if (alloc_bounce_pages(newtag, pages) < pages)
- error = ENOMEM;
- }
- /* Performed initial allocation */
- newtag->flags |= BUS_DMA_MIN_ALLOC_COMP;
- }
-
- if (error != 0) {
- free(newtag, M_DEVBUF);
- } else {
- *dmat = newtag;
- }
- return (error);
-}
-
-int
-bus_dma_tag_destroy(bus_dma_tag_t dmat)
-{
- if (dmat != NULL) {
-
- if (dmat->map_count != 0)
- return (EBUSY);
-
- while (dmat != NULL) {
- bus_dma_tag_t parent;
-
- parent = dmat->parent;
- atomic_subtract_int(&dmat->ref_count, 1);
- if (dmat->ref_count == 0) {
- if (dmat->segments != NULL)
- free(dmat->segments, M_DEVBUF);
- free(dmat, M_DEVBUF);
- /*
- * Last reference count, so
- * release our reference
- * count on our parent.
- */
- dmat = parent;
- } else
- dmat = NULL;
- }
- }
- return (0);
-}
-
-/*
- * Allocate a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int
-bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
-{
- int error;
-
- error = 0;
-
- if (dmat->segments == NULL) {
- dmat->segments = (bus_dma_segment_t *)malloc(
- sizeof(bus_dma_segment_t) * dmat->nsegments, M_DEVBUF,
- M_NOWAIT);
- if (dmat->segments == NULL)
- return (ENOMEM);
- }
-
- /*
- * Bouncing might be required if the driver asks for an active
- * exclusion region, a data alignment that is stricter than 1, and/or
- * an active address boundary.
- */
- if (dmat->lowaddr < paddr_max) {
- /* Must bounce */
- int maxpages;
-
- *mapp = (bus_dmamap_t)malloc(sizeof(**mapp), M_DEVBUF,
- M_NOWAIT | M_ZERO);
- if (*mapp == NULL)
- return (ENOMEM);
-
- /* Initialize the new map */
- STAILQ_INIT(&((*mapp)->bpages));
-
- /*
- * Attempt to add pages to our pool on a per-instance
- * basis up to a sane limit.
- */
- maxpages = MIN(MAX_BPAGES, atop(paddr_max - dmat->lowaddr));
- if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0
- || (dmat->map_count > 0 && total_bpages < maxpages)) {
- int pages;
-
- pages = MAX(atop(dmat->maxsize), 1);
- pages = MIN(maxpages - total_bpages, pages);
- if (alloc_bounce_pages(dmat, pages) < pages)
- error = ENOMEM;
-
- if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0) {
- if (error == 0)
- dmat->flags |= BUS_DMA_MIN_ALLOC_COMP;
- } else {
- error = 0;
- }
- }
- } else {
- *mapp = NULL;
- }
- if (error == 0)
- dmat->map_count++;
- return (error);
-}
-
-/*
- * Destroy a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int
-bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
-{
-
- if (map != NULL && map != &nobounce_dmamap) {
- if (STAILQ_FIRST(&map->bpages) != NULL)
- return (EBUSY);
- free(map, M_DEVBUF);
- }
- dmat->map_count--;
- return (0);
-}
-
-
-/*
- * Allocate a piece of memory that can be efficiently mapped into
- * bus device space based on the constraints lited in the dma tag.
- * A dmamap to for use with dmamap_load is also allocated.
- */
-int
-bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp)
-{
- int mflags;
-
- if (flags & BUS_DMA_NOWAIT)
- mflags = M_NOWAIT;
- else
- mflags = M_WAITOK;
-
- /* If we succeed, no mapping/bouncing will be required */
- *mapp = NULL;
-
- if (dmat->segments == NULL) {
- dmat->segments = (bus_dma_segment_t *)malloc(
- sizeof(bus_dma_segment_t) * dmat->nsegments, M_DEVBUF,
- mflags);
- if (dmat->segments == NULL)
- return (ENOMEM);
- }
- if (flags & BUS_DMA_ZERO)
- mflags |= M_ZERO;
-
- /*
- * XXX:
- * (dmat->alignment < dmat->maxsize) is just a quick hack; the exact
- * alignment guarantees of malloc need to be nailed down, and the
- * code below should be rewritten to take that into account.
- *
- * In the meantime, we'll warn the user if malloc gets it wrong.
- */
- if ((dmat->maxsize <= PAGE_SIZE) &&
- (dmat->alignment < dmat->maxsize) &&
- dmat->lowaddr >= paddr_max) {
- *vaddr = malloc(dmat->maxsize, M_DEVBUF, mflags);
- } else {
- /*
- * XXX Use Contigmalloc until it is merged into this facility
- * and handles multi-seg allocations. Nobody is doing
- * multi-seg allocations yet though.
- * XXX Certain AGP hardware does.
- */
- *vaddr = contigmalloc(dmat->maxsize, M_DEVBUF, mflags,
- 0ul, dmat->lowaddr, dmat->alignment? dmat->alignment : 1ul,
- dmat->boundary);
- }
- if (*vaddr == NULL)
- return (ENOMEM);
- else if (vtophys(*vaddr) & (dmat->alignment - 1))
- printf("bus_dmamem_alloc failed to align memory properly.\n");
- return (0);
-}
-
-/*
- * Free a piece of memory and it's allociated dmamap, that was allocated
- * via bus_dmamem_alloc. Make the same choice for free/contigfree.
- */
-void
-bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
-{
- /*
- * dmamem does not need to be bounced, so the map should be
- * NULL
- */
- if (map != NULL)
- panic("bus_dmamem_free: Invalid map freed\n");
- if ((dmat->maxsize <= PAGE_SIZE) &&
- (dmat->alignment < dmat->maxsize) &&
- dmat->lowaddr >= paddr_max)
- free(vaddr, M_DEVBUF);
- else {
- contigfree(vaddr, dmat->maxsize, M_DEVBUF);
- }
-}
-
-static void
-_bus_dmamap_count_phys(bus_dma_tag_t dmat, bus_dmamap_t map, vm_paddr_t buf,
- bus_size_t buflen, int flags)
-{
- bus_addr_t curaddr;
- bus_size_t sgsize;
-
- if ((dmat->lowaddr < paddr_max || dmat->boundary > 0 ||
- dmat->alignment > 1) && map != &nobounce_dmamap &&
- map->pagesneeded == 0) {
- /*
- * Count the number of bounce pages
- * needed in order to complete this transfer
- */
- curaddr = buf;
- while (buflen != 0) {
- sgsize = MIN(buflen, dmat->maxsegsz);
- if (run_filter(dmat, curaddr, 0) != 0) {
- sgsize = MIN(sgsize, PAGE_SIZE);
- map->pagesneeded++;
- }
- curaddr += sgsize;
- buflen -= sgsize;
- }
- }
-}
-
-static void
-_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, pmap_t pmap,
- void *buf, bus_size_t buflen, int flags)
-{
- vm_offset_t vaddr;
- vm_offset_t vendaddr;
- bus_addr_t paddr;
-
- if ((dmat->lowaddr < paddr_max || dmat->boundary > 0 ||
- dmat->alignment > 1) && map != &nobounce_dmamap &&
- map->pagesneeded == 0) {
- /*
- * Count the number of bounce pages
- * needed in order to complete this transfer
- */
- vaddr = trunc_page((vm_offset_t)buf);
- vendaddr = (vm_offset_t)buf + buflen;
-
- while (vaddr < vendaddr) {
- if (pmap == kernel_pmap)
- paddr = pmap_kextract(vaddr);
- else
- paddr = pmap_extract(pmap, vaddr);
- if (run_filter(dmat, paddr, 0) != 0)
- map->pagesneeded++;
- vaddr += PAGE_SIZE;
- }
- }
-}
-
-static int
-_bus_dmamap_reserve_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int flags)
-{
-
- /* Reserve Necessary Bounce Pages */
- mtx_lock(&bounce_lock);
- if (flags & BUS_DMA_NOWAIT) {
- if (reserve_bounce_pages(dmat, map, 0) != 0) {
- mtx_unlock(&bounce_lock);
- return (ENOMEM);
- }
- } else {
- if (reserve_bounce_pages(dmat, map, 1) != 0) {
- /* Queue us for resources */
- STAILQ_INSERT_TAIL(&bounce_map_waitinglist,
- map, links);
- mtx_unlock(&bounce_lock);
- return (EINPROGRESS);
- }
- }
- mtx_unlock(&bounce_lock);
-
- return (0);
-}
-
-/*
- * Add a single contiguous physical range to the segment list.
- */
-static int
-_bus_dmamap_addseg(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t curaddr,
- bus_size_t sgsize, bus_dma_segment_t *segs, int *segp)
-{
- bus_addr_t baddr, bmask;
- int seg;
-
- /*
- * Make sure we don't cross any boundaries.
- */
- bmask = ~(dmat->boundary - 1);
- if (dmat->boundary > 0) {
- baddr = (curaddr + dmat->boundary) & bmask;
- if (sgsize > (baddr - curaddr))
- sgsize = (baddr - curaddr);
- }
-
- /*
- * Insert chunk into a segment, coalescing with
- * previous segment if possible.
- */
- seg = *segp;
- if (seg == -1) {
- seg = 0;
- segs[seg].ds_addr = curaddr;
- segs[seg].ds_len = sgsize;
- } else {
- if (curaddr == segs[seg].ds_addr + segs[seg].ds_len &&
- (segs[seg].ds_len + sgsize) <= dmat->maxsegsz &&
- (dmat->boundary == 0 ||
- (segs[seg].ds_addr & bmask) == (curaddr & bmask)))
- segs[seg].ds_len += sgsize;
- else {
- if (++seg >= dmat->nsegments)
- return (0);
- segs[seg].ds_addr = curaddr;
- segs[seg].ds_len = sgsize;
- }
- }
- *segp = seg;
- return (sgsize);
-}
-
-/*
- * Utility function to load a physical buffer. segp contains
- * the starting segment on entrace, and the ending segment on exit.
- */
-int
-_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map,
- vm_paddr_t buf, bus_size_t buflen, int flags, bus_dma_segment_t *segs,
- int *segp)
-{
- bus_addr_t curaddr;
- bus_size_t sgsize;
- int error;
-
- if (map == NULL)
- map = &nobounce_dmamap;
-
- if (segs == NULL)
- segs = dmat->segments;
-
- if (map != &nobounce_dmamap) {
- _bus_dmamap_count_phys(dmat, map, buf, buflen, flags);
- if (map->pagesneeded != 0) {
- error = _bus_dmamap_reserve_pages(dmat, map, flags);
- if (error)
- return (error);
- }
- }
-
- while (buflen > 0) {
- curaddr = buf;
- sgsize = MIN(buflen, dmat->maxsegsz);
- if (map->pagesneeded != 0 &&
- run_filter(dmat, curaddr, sgsize)) {
- sgsize = MIN(sgsize, PAGE_SIZE);
- curaddr = add_bounce_page(dmat, map, 0, curaddr,
- sgsize);
- }
- sgsize = _bus_dmamap_addseg(dmat, map, curaddr, sgsize, segs,
- segp);
- if (sgsize == 0)
- break;
- buf += sgsize;
- buflen -= sgsize;
- }
-
- /*
- * Did we fit?
- */
- return (buflen != 0 ? EFBIG : 0); /* XXX better return value here? */
-}
-
-int
-_bus_dmamap_load_ma(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct vm_page **ma, bus_size_t tlen, int ma_offs, int flags,
- bus_dma_segment_t *segs, int *segp)
-{
-
- return (bus_dmamap_load_ma_triv(dmat, map, ma, tlen, ma_offs, flags,
- segs, segp));
-}
-
-/*
- * Utility function to load a linear buffer. segp contains
- * the starting segment on entrace, and the ending segment on exit.
- */
-int
-_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
- bus_size_t buflen, pmap_t pmap, int flags,
- bus_dma_segment_t *segs, int *segp)
-{
- bus_size_t sgsize;
- bus_addr_t curaddr;
- vm_offset_t vaddr;
- int error;
-
- if (map == NULL)
- map = &nobounce_dmamap;
-
- if (segs == NULL)
- segs = dmat->segments;
-
- if (map != &nobounce_dmamap) {
- _bus_dmamap_count_pages(dmat, map, pmap, buf, buflen, flags);
- if (map->pagesneeded != 0) {
- error = _bus_dmamap_reserve_pages(dmat, map, flags);
- if (error)
- return (error);
- }
- }
-
- vaddr = (vm_offset_t)buf;
-
- while (buflen > 0) {
- /*
- * Get the physical address for this segment.
- */
- if (pmap == kernel_pmap)
- curaddr = pmap_kextract(vaddr);
- else
- curaddr = pmap_extract(pmap, vaddr);
-
- /*
- * Compute the segment size, and adjust counts.
- */
- sgsize = PAGE_SIZE - ((u_long)curaddr & PAGE_MASK);
- if (sgsize > dmat->maxsegsz)
- sgsize = dmat->maxsegsz;
- if (buflen < sgsize)
- sgsize = buflen;
-
- if (map->pagesneeded != 0 && run_filter(dmat, curaddr, sgsize))
- curaddr = add_bounce_page(dmat, map, vaddr, curaddr,
- sgsize);
-
- sgsize = _bus_dmamap_addseg(dmat, map, curaddr, sgsize, segs,
- segp);
- if (sgsize == 0)
- break;
-
- vaddr += sgsize;
- buflen -= sgsize;
- }
-
- /*
- * Did we fit?
- */
- return (buflen != 0 ? EFBIG : 0); /* XXX better return value here? */
-}
-
-
-void
-__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct memdesc *mem, bus_dmamap_callback_t *callback, void *callback_arg)
-{
- if (map != NULL) {
- map->dmat = dmat;
- map->mem = *mem;
- map->callback = callback;
- map->callback_arg = callback_arg;
- }
-}
-
-bus_dma_segment_t *
-_bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map,
- bus_dma_segment_t *segs, int nsegs, int error)
-{
-
- if (segs == NULL)
- segs = dmat->segments;
- return (segs);
-}
-
-/*
- * Release the mapping held by map.
- */
-void
-_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
-{
- struct bounce_page *bpage;
-
- while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
- STAILQ_REMOVE_HEAD(&map->bpages, links);
- free_bounce_page(dmat, bpage);
- }
-}
-
-void
-_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
-{
- struct bounce_page *bpage;
-
- if ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
- /*
- * Handle data bouncing. We might also
- * want to add support for invalidating
- * the caches on broken hardware
- */
-
- if (op & BUS_DMASYNC_PREWRITE) {
- while (bpage != NULL) {
- if (bpage->datavaddr != 0)
- bcopy((void *)bpage->datavaddr,
- (void *)bpage->vaddr,
- bpage->datacount);
- else
- physcopyout(bpage->dataaddr,
- (void *)bpage->vaddr,
- bpage->datacount);
- bpage = STAILQ_NEXT(bpage, links);
- }
- total_bounced++;
- }
-
- if (op & BUS_DMASYNC_POSTREAD) {
- while (bpage != NULL) {
- if (bpage->datavaddr != 0)
- bcopy((void *)bpage->vaddr,
- (void *)bpage->datavaddr,
- bpage->datacount);
- else
- physcopyin((void *)bpage->vaddr,
- bpage->dataaddr,
- bpage->datacount);
- bpage = STAILQ_NEXT(bpage, links);
- }
- total_bounced++;
- }
- }
-}
-
-static void
-init_bounce_pages(void *dummy __unused)
-{
-
- free_bpages = 0;
- reserved_bpages = 0;
- active_bpages = 0;
- total_bpages = 0;
- STAILQ_INIT(&bounce_page_list);
- STAILQ_INIT(&bounce_map_waitinglist);
- STAILQ_INIT(&bounce_map_callbacklist);
- mtx_init(&bounce_lock, "bounce pages lock", NULL, MTX_DEF);
-}
-SYSINIT(bpages, SI_SUB_LOCK, SI_ORDER_ANY, init_bounce_pages, NULL);
-
-static int
-alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages)
-{
- int count;
-
- count = 0;
- while (numpages > 0) {
- struct bounce_page *bpage;
-
- bpage = (struct bounce_page *)malloc(sizeof(*bpage), M_DEVBUF,
- M_NOWAIT | M_ZERO);
- if (bpage == NULL)
- break;
- bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE, M_DEVBUF,
- M_NOWAIT, 0ul, dmat->lowaddr, PAGE_SIZE, dmat->boundary);
- if (bpage->vaddr == 0) {
- free(bpage, M_DEVBUF);
- break;
- }
- bpage->busaddr = pmap_kextract(bpage->vaddr);
- mtx_lock(&bounce_lock);
- STAILQ_INSERT_TAIL(&bounce_page_list, bpage, links);
- total_bpages++;
- free_bpages++;
- mtx_unlock(&bounce_lock);
- count++;
- numpages--;
- }
- return (count);
-}
-
-static int
-reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit)
-{
- int pages;
-
- mtx_assert(&bounce_lock, MA_OWNED);
- pages = MIN(free_bpages, map->pagesneeded - map->pagesreserved);
- if (commit == 0 && map->pagesneeded > (map->pagesreserved + pages))
- return (map->pagesneeded - (map->pagesreserved + pages));
- free_bpages -= pages;
- reserved_bpages += pages;
- map->pagesreserved += pages;
- pages = map->pagesneeded - map->pagesreserved;
-
- return (pages);
-}
-
-static bus_addr_t
-add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,
- bus_addr_t addr, bus_size_t size)
-{
- struct bounce_page *bpage;
-
- KASSERT(map != NULL && map != &nobounce_dmamap,
- ("add_bounce_page: bad map %p", map));
-
- if (map->pagesneeded == 0)
- panic("add_bounce_page: map doesn't need any pages");
- map->pagesneeded--;
-
- if (map->pagesreserved == 0)
- panic("add_bounce_page: map doesn't need any pages");
- map->pagesreserved--;
-
- mtx_lock(&bounce_lock);
- bpage = STAILQ_FIRST(&bounce_page_list);
- if (bpage == NULL)
- panic("add_bounce_page: free page list is empty");
-
- STAILQ_REMOVE_HEAD(&bounce_page_list, links);
- reserved_bpages--;
- active_bpages++;
- mtx_unlock(&bounce_lock);
-
- if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) {
- /* Page offset needs to be preserved. */
- bpage->vaddr |= vaddr & PAGE_MASK;
- bpage->busaddr |= vaddr & PAGE_MASK;
- }
- bpage->datavaddr = vaddr;
- bpage->dataaddr = addr;
- bpage->datacount = size;
- STAILQ_INSERT_TAIL(&(map->bpages), bpage, links);
- return (bpage->busaddr);
-}
-
-static void
-free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage)
-{
- struct bus_dmamap *map;
-
- bpage->datavaddr = 0;
- bpage->datacount = 0;
- if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) {
- /*
- * Reset the bounce page to start at offset 0. Other uses
- * of this bounce page may need to store a full page of
- * data and/or assume it starts on a page boundary.
- */
- bpage->vaddr &= ~PAGE_MASK;
- bpage->busaddr &= ~PAGE_MASK;
- }
-
- mtx_lock(&bounce_lock);
- STAILQ_INSERT_HEAD(&bounce_page_list, bpage, links);
- free_bpages++;
- active_bpages--;
- if ((map = STAILQ_FIRST(&bounce_map_waitinglist)) != NULL) {
- if (reserve_bounce_pages(map->dmat, map, 1) == 0) {
- STAILQ_REMOVE_HEAD(&bounce_map_waitinglist, links);
- STAILQ_INSERT_TAIL(&bounce_map_callbacklist, map,
- links);
- busdma_swi_pending = 1;
- total_deferred++;
- swi_sched(vm_ih, 0);
- }
- }
- mtx_unlock(&bounce_lock);
-}
-
-void
-busdma_swi(void)
-{
- bus_dma_tag_t dmat;
- struct bus_dmamap *map;
-
- mtx_lock(&bounce_lock);
- while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) {
- STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links);
- mtx_unlock(&bounce_lock);
- dmat = map->dmat;
- (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_LOCK);
- bus_dmamap_load_mem(map->dmat, map, &map->mem, map->callback,
- map->callback_arg, BUS_DMA_WAITOK);
- (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_UNLOCK);
- mtx_lock(&bounce_lock);
- }
- mtx_unlock(&bounce_lock);
-}
diff --git a/sys/ia64/ia64/clock.c b/sys/ia64/ia64/clock.c
deleted file mode 100644
index 4a672be..0000000
--- a/sys/ia64/ia64/clock.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*-
- * Copyright (c) 2005, 2009-2011 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/bus.h>
-#include <sys/efi.h>
-#include <sys/interrupt.h>
-#include <sys/priority.h>
-#include <sys/proc.h>
-#include <sys/queue.h>
-#include <sys/sysctl.h>
-#include <sys/systm.h>
-#include <sys/timeet.h>
-#include <sys/timetc.h>
-#include <sys/pcpu.h>
-
-#include <machine/cpu.h>
-#include <machine/intr.h>
-#include <machine/intrcnt.h>
-#include <machine/md_var.h>
-#include <machine/smp.h>
-
-#define CLOCK_ET_OFF 0
-#define CLOCK_ET_PERIODIC 1
-#define CLOCK_ET_ONESHOT 2
-
-static struct eventtimer ia64_clock_et;
-static u_int ia64_clock_xiv;
-
-#ifndef SMP
-static timecounter_get_t ia64_get_timecount;
-
-static struct timecounter ia64_timecounter = {
- ia64_get_timecount, /* get_timecount */
- 0, /* no poll_pps */
- ~0u, /* counter_mask */
- 0, /* frequency */
- "ITC" /* name */
-};
-
-static u_int
-ia64_get_timecount(struct timecounter* tc)
-{
- return ia64_get_itc();
-}
-#endif
-
-static u_int
-ia64_ih_clock(struct thread *td, u_int xiv, struct trapframe *tf)
-{
- struct eventtimer *et;
- struct trapframe *stf;
- uint64_t itc, load;
- uint32_t mode;
-
- PCPU_INC(md.stats.pcs_nclks);
- intrcnt[INTRCNT_CLOCK]++;
-
- itc = ia64_get_itc();
- PCPU_SET(md.clock, itc);
-
- mode = PCPU_GET(md.clock_mode);
- if (mode == CLOCK_ET_PERIODIC) {
- load = PCPU_GET(md.clock_load);
- ia64_set_itm(itc + load);
- } else
- ia64_set_itv((1 << 16) | xiv);
-
- ia64_set_eoi(0);
- ia64_srlz_d();
-
- et = &ia64_clock_et;
- if (et->et_active) {
- stf = td->td_intr_frame;
- td->td_intr_frame = tf;
- et->et_event_cb(et, et->et_arg);
- td->td_intr_frame = stf;
- }
- return (1);
-}
-
-/*
- * Event timer start method.
- */
-static int
-ia64_clock_start(struct eventtimer *et, sbintime_t first, sbintime_t period)
-{
- u_long itc, load;
- register_t is;
-
- if (period != 0) {
- PCPU_SET(md.clock_mode, CLOCK_ET_PERIODIC);
- load = (et->et_frequency * period) >> 32;
- } else {
- PCPU_SET(md.clock_mode, CLOCK_ET_ONESHOT);
- load = 0;
- }
-
- PCPU_SET(md.clock_load, load);
-
- if (first != 0)
- load = (et->et_frequency * first) >> 32;
-
- is = intr_disable();
- itc = ia64_get_itc();
- ia64_set_itm(itc + load);
- ia64_set_itv(ia64_clock_xiv);
- ia64_srlz_d();
- intr_restore(is);
- return (0);
-}
-
-/*
- * Event timer stop method.
- */
-static int
-ia64_clock_stop(struct eventtimer *et)
-{
-
- ia64_set_itv((1 << 16) | ia64_clock_xiv);
- ia64_srlz_d();
- PCPU_SET(md.clock_mode, CLOCK_ET_OFF);
- PCPU_SET(md.clock_load, 0);
- return (0);
-}
-
-/*
- * We call cpu_initclocks() on the APs as well. It allows us to
- * group common initialization in the same function.
- */
-void
-cpu_initclocks()
-{
-
- ia64_clock_stop(NULL);
- if (PCPU_GET(cpuid) == 0)
- cpu_initclocks_bsp();
- else
- cpu_initclocks_ap();
-}
-
-static void
-clock_configure(void *dummy)
-{
- struct eventtimer *et;
- u_long itc_freq;
-
- ia64_clock_xiv = ia64_xiv_alloc(PI_REALTIME, IA64_XIV_IPI,
- ia64_ih_clock);
- if (ia64_clock_xiv == 0)
- panic("No XIV for clock interrupts");
-
- itc_freq = (u_long)ia64_itc_freq() * 1000000ul;
-
- et = &ia64_clock_et;
- et->et_name = "ITC";
- et->et_flags = ET_FLAGS_PERIODIC | ET_FLAGS_ONESHOT | ET_FLAGS_PERCPU;
- et->et_quality = 1000;
- et->et_frequency = itc_freq;
- et->et_min_period = SBT_1S / (10 * hz);
- et->et_max_period = (0xfffffffeul << 32) / itc_freq;
- et->et_start = ia64_clock_start;
- et->et_stop = ia64_clock_stop;
- et->et_priv = NULL;
- et_register(et);
-
-#ifndef SMP
- ia64_timecounter.tc_frequency = itc_freq;
- tc_init(&ia64_timecounter);
-#endif
-}
-SYSINIT(clkcfg, SI_SUB_CONFIGURE, SI_ORDER_SECOND, clock_configure, NULL);
diff --git a/sys/ia64/ia64/context.S b/sys/ia64/ia64/context.S
deleted file mode 100644
index 84d8fd1..0000000
--- a/sys/ia64/ia64/context.S
+++ /dev/null
@@ -1,804 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-#include <assym.s>
-
- .text
-
-/*
- * void restorectx(struct pcb *)
- */
-ENTRY(restorectx, 1)
-{ .mmi
- invala
- mov ar.rsc=0
- add r31=8,r32
- ;;
-}
-{ .mmi
- ld8 r12=[r32] // sp
- ld8 r16=[r31],16 // unat (before)
- add r30=16,r32
- ;;
-}
-{ .mmi
- ld8 r17=[r30],16 // rp
- ld8 r18=[r31],16 // pr
- add r14=SIZEOF_SPECIAL,r32
- ;;
-}
-{ .mmi
- ld8 r19=[r30],16 // pfs
- ld8 r20=[r31],16 // bspstore
- mov rp=r17
- ;;
-}
-{ .mmi
- loadrs
- ld8 r21=[r30],16 // rnat
- mov pr=r18,0x1fffe
- ;;
-}
-{ .mmi
- ld8 r17=[r14],8 // unat (after)
- mov ar.bspstore=r20
- mov ar.pfs=r19
- ;;
-}
-{ .mmi
- mov ar.unat=r17
- mov ar.rnat=r21
- add r15=8,r14
- ;;
-}
-{ .mmi
- ld8.fill r4=[r14],16 // r4
- ld8.fill r5=[r15],16 // r5
- nop 0
- ;;
-}
-{ .mmi
- ld8.fill r6=[r14],16 // r6
- ld8.fill r7=[r15],16 // r7
- nop 0
- ;;
-}
-{ .mmi
- mov ar.unat=r16
- mov ar.rsc=3
- nop 0
-}
-{ .mmi
- ld8 r17=[r14],16 // b1
- ld8 r18=[r15],16 // b2
- nop 0
- ;;
-}
-{ .mmi
- ld8 r19=[r14],16 // b3
- ld8 r20=[r15],16 // b4
- mov b1=r17
- ;;
-}
-{ .mmi
- ld8 r16=[r14],24 // b5
- ld8 r17=[r15],32 // lc
- mov b2=r18
- ;;
-}
-{ .mmi
- ldf.fill f2=[r14],32
- ldf.fill f3=[r15],32
- mov b3=r19
- ;;
-}
-{ .mmi
- ldf.fill f4=[r14],32
- ldf.fill f5=[r15],32
- mov b4=r20
- ;;
-}
-{ .mmi
- ldf.fill f16=[r14],32
- ldf.fill f17=[r15],32
- mov b5=r16
- ;;
-}
-{ .mmi
- ldf.fill f18=[r14],32
- ldf.fill f19=[r15],32
- mov ar.lc=r17
- ;;
-}
- ldf.fill f20=[r14],32
- ldf.fill f21=[r15],32
- ;;
- ldf.fill f22=[r14],32
- ldf.fill f23=[r15],32
- ;;
- ldf.fill f24=[r14],32
- ldf.fill f25=[r15],32
- ;;
- ldf.fill f26=[r14],32
- ldf.fill f27=[r15],32
- ;;
-{ .mmi
- ldf.fill f28=[r14],32
- ldf.fill f29=[r15],32
- add r8=1,r0
- ;;
-}
-{ .mmb
- ldf.fill f30=[r14]
- ldf.fill f31=[r15]
- br.ret.sptk rp
- ;;
-}
-END(restorectx)
-
-/*
- * void swapctx(struct pcb *old, struct pcb *new)
- */
-
-ENTRY(swapctx, 2)
-{ .mmi
- mov ar.rsc=0
- mov r16=ar.unat
- add r31=8,r32
- ;;
-}
-{ .mmi
- flushrs
- st8 [r32]=sp,16 // sp
- mov r17=rp
- ;;
-}
-{ .mmi
- st8 [r31]=r16,16 // unat (before)
- st8 [r32]=r17,16 // rp
- mov r16=pr
- ;;
-}
-{ .mmi
- st8 [r31]=r16,16 // pr
- mov r17=ar.bsp
- mov r16=ar.pfs
- ;;
-}
-{ .mmi
- st8 [r32]=r16,16 // pfs
- st8 [r31]=r17,16 // bspstore
- cmp.eq p15,p0=0,r33
- ;;
-}
-{ .mmi
- mov r16=ar.rnat
-(p15) mov ar.rsc=3
- add r30=SIZEOF_SPECIAL-(6*8),r32
- ;;
-}
-{ .mmi
- st8 [r32]=r16,SIZEOF_SPECIAL-(4*8) // rnat
- st8 [r31]=r0,SIZEOF_SPECIAL-(6*8) // __spare
- mov r16=b1
- ;;
-}
- /* callee_saved */
-{ .mmi
- .mem.offset 8,0
- st8.spill [r31]=r4,16 // r4
- .mem.offset 16,0
- st8.spill [r32]=r5,16 // r5
- mov r17=b2
- ;;
-}
-{ .mmi
- .mem.offset 24,0
- st8.spill [r31]=r6,16 // r6
- .mem.offset 32,0
- st8.spill [r32]=r7,16 // r7
- mov r18=b3
- ;;
-}
-{ .mmi
- st8 [r31]=r16,16 // b1
- mov r16=ar.unat
- mov r19=b4
- ;;
-}
-{ .mmi
- st8 [r30]=r16 // unat (after)
- st8 [r32]=r17,16 // b2
- mov r16=b5
- ;;
-}
-{ .mmi
- st8 [r31]=r18,16 // b3
- st8 [r32]=r19,16 // b4
- mov r17=ar.lc
- ;;
-}
- st8 [r31]=r16,16 // b5
- st8 [r32]=r17,16 // lc
- ;;
- st8 [r31]=r0,24 // __spare
- stf.spill [r32]=f2,32
- ;;
- stf.spill [r31]=f3,32
- stf.spill [r32]=f4,32
- ;;
- stf.spill [r31]=f5,32
- stf.spill [r32]=f16,32
- ;;
- stf.spill [r31]=f17,32
- stf.spill [r32]=f18,32
- ;;
- stf.spill [r31]=f19,32
- stf.spill [r32]=f20,32
- ;;
- stf.spill [r31]=f21,32
- stf.spill [r32]=f22,32
- ;;
- stf.spill [r31]=f23,32
- stf.spill [r32]=f24,32
- ;;
- stf.spill [r31]=f25,32
- stf.spill [r32]=f26,32
- ;;
- stf.spill [r31]=f27,32
- stf.spill [r32]=f28,32
- ;;
-{ .mmi
- stf.spill [r31]=f29,32
- stf.spill [r32]=f30
-(p15) add r8=0,r0
- ;;
-}
-{ .mmb
- stf.spill [r31]=f31
- mf
-(p15) br.ret.sptk rp
- ;;
-}
-{ .mib
- mov r32=r33
- nop 0
- br.sptk restorectx
- ;;
-}
-END(swapctx)
-
-/*
- * save_callee_saved(struct _callee_saved *)
- */
-ENTRY(save_callee_saved, 1)
-{ .mii
- nop 0
- add r14=8,r32
- add r15=16,r32
- ;;
-}
-{ .mmi
- .mem.offset 8,0
- st8.spill [r14]=r4,16 // r4
- .mem.offset 16,0
- st8.spill [r15]=r5,16 // r5
- mov r16=b1
- ;;
-}
-{ .mmi
- .mem.offset 24,0
- st8.spill [r14]=r6,16 // r6
- .mem.offset 32,0
- st8.spill [r15]=r7,16 // r7
- mov r17=b2
- ;;
-}
-{ .mmi
- st8 [r14]=r16,16 // b1
- mov r18=ar.unat
- mov r19=b3
- ;;
-}
-{ .mmi
- st8 [r32]=r18 // nat (after)
- st8 [r15]=r17,16 // b2
- mov r16=b4
- ;;
-}
-{ .mmi
- st8 [r14]=r19,16 // b3
- st8 [r15]=r16,16 // b4
- mov r17=b5
- ;;
-}
-{ .mii
- st8 [r14]=r17,16 // b5
- mov r16=ar.lc
- nop 0
- ;;
-}
-{ .mmb
- st8 [r15]=r16 // ar.lc
- st8 [r14]=r0 // __spare
- br.ret.sptk rp
- ;;
-}
-END(save_callee_saved)
-
-/*
- * restore_callee_saved(struct _callee_saved *)
- */
-ENTRY(restore_callee_saved, 1)
-{ .mmi
- ld8 r30=[r32],16 // nat (after)
- ;;
- mov ar.unat=r30
- add r31=-8,r32
- ;;
-}
-{ .mmi
- ld8.fill r4=[r31],16 // r4
- ld8.fill r5=[r32],16 // r5
- nop 0
- ;;
-}
-{ .mmi
- ld8.fill r6=[r31],16 // r6
- ld8.fill r7=[r32],16 // r7
- nop 0
- ;;
-}
-{ .mmi
- ld8 r30=[r31],16 // b1
- ld8 r29=[r32],16 // b2
- nop 0
- ;;
-}
-{ .mmi
- ld8 r28=[r31],16 // b3
- ld8 r27=[r32],16 // b4
- mov b1=r30
- ;;
-}
-{ .mii
- ld8 r26=[r31] // b5
- mov b2=r29
- mov b3=r28
- ;;
-}
-{ .mii
- ld8 r25=[r32] // lc
- mov b4=r27
- mov b5=r26
- ;;
-}
-{ .mib
- nop 0
- mov ar.lc=r25
- br.ret.sptk rp
- ;;
-}
-END(restore_callee_saved)
-
-/*
- * save_callee_saved_fp(struct _callee_saved_fp *)
- */
-ENTRY(save_callee_saved_fp, 1)
- add r31=16,r32
- stf.spill [r32]=f2,32
- ;;
- stf.spill [r31]=f3,32
- stf.spill [r32]=f4,32
- ;;
- stf.spill [r31]=f5,32
- stf.spill [r32]=f16,32
- ;;
- stf.spill [r31]=f17,32
- stf.spill [r32]=f18,32
- ;;
- stf.spill [r31]=f19,32
- stf.spill [r32]=f20,32
- ;;
- stf.spill [r31]=f21,32
- stf.spill [r32]=f22,32
- ;;
- stf.spill [r31]=f23,32
- stf.spill [r32]=f24,32
- ;;
- stf.spill [r31]=f25,32
- stf.spill [r32]=f26,32
- ;;
- stf.spill [r31]=f27,32
- stf.spill [r32]=f28,32
- ;;
- stf.spill [r31]=f29,32
- stf.spill [r32]=f30
- ;;
- stf.spill [r31]=f31
- br.ret.sptk rp
- ;;
-END(save_callee_saved_fp)
-
-/*
- * restore_callee_saved_fp(struct _callee_saved_fp *)
- */
-ENTRY(restore_callee_saved_fp, 1)
- add r31=16,r32
- ldf.fill f2=[r32],32
- ;;
- ldf.fill f3=[r31],32
- ldf.fill f4=[r32],32
- ;;
- ldf.fill f5=[r31],32
- ldf.fill f16=[r32],32
- ;;
- ldf.fill f17=[r31],32
- ldf.fill f18=[r32],32
- ;;
- ldf.fill f19=[r31],32
- ldf.fill f20=[r32],32
- ;;
- ldf.fill f21=[r31],32
- ldf.fill f22=[r32],32
- ;;
- ldf.fill f23=[r31],32
- ldf.fill f24=[r32],32
- ;;
- ldf.fill f25=[r31],32
- ldf.fill f26=[r32],32
- ;;
- ldf.fill f27=[r31],32
- ldf.fill f28=[r32],32
- ;;
- ldf.fill f29=[r31],32
- ldf.fill f30=[r32]
- ;;
- ldf.fill f31=[r31]
- br.ret.sptk rp
- ;;
-END(restore_callee_saved_fp)
-
-/*
- * save_high_fp(struct _high_fp *)
- */
-ENTRY(save_high_fp, 1)
- rsm psr.dfh
- ;;
- srlz.d
- add r31=16,r32
- stf.spill [r32]=f32,32
- ;;
- stf.spill [r31]=f33,32
- stf.spill [r32]=f34,32
- ;;
- stf.spill [r31]=f35,32
- stf.spill [r32]=f36,32
- ;;
- stf.spill [r31]=f37,32
- stf.spill [r32]=f38,32
- ;;
- stf.spill [r31]=f39,32
- stf.spill [r32]=f40,32
- ;;
- stf.spill [r31]=f41,32
- stf.spill [r32]=f42,32
- ;;
- stf.spill [r31]=f43,32
- stf.spill [r32]=f44,32
- ;;
- stf.spill [r31]=f45,32
- stf.spill [r32]=f46,32
- ;;
- stf.spill [r31]=f47,32
- stf.spill [r32]=f48,32
- ;;
- stf.spill [r31]=f49,32
- stf.spill [r32]=f50,32
- ;;
- stf.spill [r31]=f51,32
- stf.spill [r32]=f52,32
- ;;
- stf.spill [r31]=f53,32
- stf.spill [r32]=f54,32
- ;;
- stf.spill [r31]=f55,32
- stf.spill [r32]=f56,32
- ;;
- stf.spill [r31]=f57,32
- stf.spill [r32]=f58,32
- ;;
- stf.spill [r31]=f59,32
- stf.spill [r32]=f60,32
- ;;
- stf.spill [r31]=f61,32
- stf.spill [r32]=f62,32
- ;;
- stf.spill [r31]=f63,32
- stf.spill [r32]=f64,32
- ;;
- stf.spill [r31]=f65,32
- stf.spill [r32]=f66,32
- ;;
- stf.spill [r31]=f67,32
- stf.spill [r32]=f68,32
- ;;
- stf.spill [r31]=f69,32
- stf.spill [r32]=f70,32
- ;;
- stf.spill [r31]=f71,32
- stf.spill [r32]=f72,32
- ;;
- stf.spill [r31]=f73,32
- stf.spill [r32]=f74,32
- ;;
- stf.spill [r31]=f75,32
- stf.spill [r32]=f76,32
- ;;
- stf.spill [r31]=f77,32
- stf.spill [r32]=f78,32
- ;;
- stf.spill [r31]=f79,32
- stf.spill [r32]=f80,32
- ;;
- stf.spill [r31]=f81,32
- stf.spill [r32]=f82,32
- ;;
- stf.spill [r31]=f83,32
- stf.spill [r32]=f84,32
- ;;
- stf.spill [r31]=f85,32
- stf.spill [r32]=f86,32
- ;;
- stf.spill [r31]=f87,32
- stf.spill [r32]=f88,32
- ;;
- stf.spill [r31]=f89,32
- stf.spill [r32]=f90,32
- ;;
- stf.spill [r31]=f91,32
- stf.spill [r32]=f92,32
- ;;
- stf.spill [r31]=f93,32
- stf.spill [r32]=f94,32
- ;;
- stf.spill [r31]=f95,32
- stf.spill [r32]=f96,32
- ;;
- stf.spill [r31]=f97,32
- stf.spill [r32]=f98,32
- ;;
- stf.spill [r31]=f99,32
- stf.spill [r32]=f100,32
- ;;
- stf.spill [r31]=f101,32
- stf.spill [r32]=f102,32
- ;;
- stf.spill [r31]=f103,32
- stf.spill [r32]=f104,32
- ;;
- stf.spill [r31]=f105,32
- stf.spill [r32]=f106,32
- ;;
- stf.spill [r31]=f107,32
- stf.spill [r32]=f108,32
- ;;
- stf.spill [r31]=f109,32
- stf.spill [r32]=f110,32
- ;;
- stf.spill [r31]=f111,32
- stf.spill [r32]=f112,32
- ;;
- stf.spill [r31]=f113,32
- stf.spill [r32]=f114,32
- ;;
- stf.spill [r31]=f115,32
- stf.spill [r32]=f116,32
- ;;
- stf.spill [r31]=f117,32
- stf.spill [r32]=f118,32
- ;;
- stf.spill [r31]=f119,32
- stf.spill [r32]=f120,32
- ;;
- stf.spill [r31]=f121,32
- stf.spill [r32]=f122,32
- ;;
- stf.spill [r31]=f123,32
- stf.spill [r32]=f124,32
- ;;
- stf.spill [r31]=f125,32
- stf.spill [r32]=f126
- ;;
- stf.spill [r31]=f127
- ssm psr.dfh
- ;;
- srlz.d
- br.ret.sptk rp
- ;;
-END(save_high_fp)
-
-/*
- * restore_high_fp(struct _high_fp *)
- */
-ENTRY(restore_high_fp, 1)
- rsm psr.dfh
- ;;
- srlz.d
- add r31=16,r32
- ldf.fill f32=[r32],32
- ;;
- ldf.fill f33=[r31],32
- ldf.fill f34=[r32],32
- ;;
- ldf.fill f35=[r31],32
- ldf.fill f36=[r32],32
- ;;
- ldf.fill f37=[r31],32
- ldf.fill f38=[r32],32
- ;;
- ldf.fill f39=[r31],32
- ldf.fill f40=[r32],32
- ;;
- ldf.fill f41=[r31],32
- ldf.fill f42=[r32],32
- ;;
- ldf.fill f43=[r31],32
- ldf.fill f44=[r32],32
- ;;
- ldf.fill f45=[r31],32
- ldf.fill f46=[r32],32
- ;;
- ldf.fill f47=[r31],32
- ldf.fill f48=[r32],32
- ;;
- ldf.fill f49=[r31],32
- ldf.fill f50=[r32],32
- ;;
- ldf.fill f51=[r31],32
- ldf.fill f52=[r32],32
- ;;
- ldf.fill f53=[r31],32
- ldf.fill f54=[r32],32
- ;;
- ldf.fill f55=[r31],32
- ldf.fill f56=[r32],32
- ;;
- ldf.fill f57=[r31],32
- ldf.fill f58=[r32],32
- ;;
- ldf.fill f59=[r31],32
- ldf.fill f60=[r32],32
- ;;
- ldf.fill f61=[r31],32
- ldf.fill f62=[r32],32
- ;;
- ldf.fill f63=[r31],32
- ldf.fill f64=[r32],32
- ;;
- ldf.fill f65=[r31],32
- ldf.fill f66=[r32],32
- ;;
- ldf.fill f67=[r31],32
- ldf.fill f68=[r32],32
- ;;
- ldf.fill f69=[r31],32
- ldf.fill f70=[r32],32
- ;;
- ldf.fill f71=[r31],32
- ldf.fill f72=[r32],32
- ;;
- ldf.fill f73=[r31],32
- ldf.fill f74=[r32],32
- ;;
- ldf.fill f75=[r31],32
- ldf.fill f76=[r32],32
- ;;
- ldf.fill f77=[r31],32
- ldf.fill f78=[r32],32
- ;;
- ldf.fill f79=[r31],32
- ldf.fill f80=[r32],32
- ;;
- ldf.fill f81=[r31],32
- ldf.fill f82=[r32],32
- ;;
- ldf.fill f83=[r31],32
- ldf.fill f84=[r32],32
- ;;
- ldf.fill f85=[r31],32
- ldf.fill f86=[r32],32
- ;;
- ldf.fill f87=[r31],32
- ldf.fill f88=[r32],32
- ;;
- ldf.fill f89=[r31],32
- ldf.fill f90=[r32],32
- ;;
- ldf.fill f91=[r31],32
- ldf.fill f92=[r32],32
- ;;
- ldf.fill f93=[r31],32
- ldf.fill f94=[r32],32
- ;;
- ldf.fill f95=[r31],32
- ldf.fill f96=[r32],32
- ;;
- ldf.fill f97=[r31],32
- ldf.fill f98=[r32],32
- ;;
- ldf.fill f99=[r31],32
- ldf.fill f100=[r32],32
- ;;
- ldf.fill f101=[r31],32
- ldf.fill f102=[r32],32
- ;;
- ldf.fill f103=[r31],32
- ldf.fill f104=[r32],32
- ;;
- ldf.fill f105=[r31],32
- ldf.fill f106=[r32],32
- ;;
- ldf.fill f107=[r31],32
- ldf.fill f108=[r32],32
- ;;
- ldf.fill f109=[r31],32
- ldf.fill f110=[r32],32
- ;;
- ldf.fill f111=[r31],32
- ldf.fill f112=[r32],32
- ;;
- ldf.fill f113=[r31],32
- ldf.fill f114=[r32],32
- ;;
- ldf.fill f115=[r31],32
- ldf.fill f116=[r32],32
- ;;
- ldf.fill f117=[r31],32
- ldf.fill f118=[r32],32
- ;;
- ldf.fill f119=[r31],32
- ldf.fill f120=[r32],32
- ;;
- ldf.fill f121=[r31],32
- ldf.fill f122=[r32],32
- ;;
- ldf.fill f123=[r31],32
- ldf.fill f124=[r32],32
- ;;
- ldf.fill f125=[r31],32
- ldf.fill f126=[r32]
- ;;
- ldf.fill f127=[r31]
- ssm psr.dfh
- ;;
- srlz.d
- br.ret.sptk rp
- ;;
-END(restore_high_fp)
diff --git a/sys/ia64/ia64/db_machdep.c b/sys/ia64/ia64/db_machdep.c
deleted file mode 100644
index 3befbd8..0000000
--- a/sys/ia64/ia64/db_machdep.c
+++ /dev/null
@@ -1,610 +0,0 @@
-/*-
- * Copyright (c) 2003-2005 Marcel Moolenaar
- * Copyright (c) 2000-2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 "opt_xtrace.h"
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/cons.h>
-#include <sys/kdb.h>
-#include <sys/ktr.h>
-#include <sys/kernel.h>
-#include <sys/proc.h>
-#include <sys/reboot.h>
-#include <sys/smp.h>
-#include <sys/stack.h>
-
-#include <vm/vm.h>
-
-#include <machine/db_machdep.h>
-#include <machine/frame.h>
-#include <machine/kdb.h>
-#include <machine/md_var.h>
-#include <machine/pcb.h>
-#include <machine/setjmp.h>
-#include <machine/unwind.h>
-#include <machine/vmparam.h>
-
-#include <ddb/ddb.h>
-#include <ddb/db_access.h>
-#include <ddb/db_output.h>
-#include <ddb/db_sym.h>
-#include <ddb/db_variables.h>
-
-#include <ia64/disasm/disasm.h>
-
-#define TMPL_BITS 5
-#define TMPL_MASK ((1 << TMPL_BITS) - 1)
-#define SLOT_BITS 41
-#define SLOT_COUNT 3
-#define SLOT_MASK ((1ULL << SLOT_BITS) - 1ULL)
-#define SLOT_SHIFT(i) (TMPL_BITS+((i)<<3)+(i))
-
-typedef db_expr_t __db_f(db_expr_t, db_expr_t, db_expr_t, db_expr_t, db_expr_t,
- db_expr_t, db_expr_t, db_expr_t);
-
-register uint64_t __db_gp __asm__("gp");
-
-static db_varfcn_t db_frame;
-static db_varfcn_t db_getip;
-static db_varfcn_t db_getrse;
-
-#define DB_OFFSET(x) (db_expr_t *)offsetof(struct trapframe, x)
-struct db_variable db_regs[] = {
- {"ip", NULL, db_getip},
- {"cr.ifs", DB_OFFSET(tf_special.cfm), db_frame},
- {"cr.ifa", DB_OFFSET(tf_special.ifa), db_frame},
- {"ar.bspstore", DB_OFFSET(tf_special.bspstore), db_frame},
- {"ndirty", DB_OFFSET(tf_special.ndirty), db_frame},
- {"rp", DB_OFFSET(tf_special.rp), db_frame},
- {"ar.pfs", DB_OFFSET(tf_special.pfs), db_frame},
- {"psr", DB_OFFSET(tf_special.psr), db_frame},
- {"cr.isr", DB_OFFSET(tf_special.isr), db_frame},
- {"pr", DB_OFFSET(tf_special.pr), db_frame},
- {"ar.rsc", DB_OFFSET(tf_special.rsc), db_frame},
- {"ar.rnat", DB_OFFSET(tf_special.rnat), db_frame},
- {"ar.unat", DB_OFFSET(tf_special.unat), db_frame},
- {"ar.fpsr", DB_OFFSET(tf_special.fpsr), db_frame},
- {"gp", DB_OFFSET(tf_special.gp), db_frame},
- {"sp", DB_OFFSET(tf_special.sp), db_frame},
- {"tp", DB_OFFSET(tf_special.tp), db_frame},
- {"b6", DB_OFFSET(tf_scratch.br6), db_frame},
- {"b7", DB_OFFSET(tf_scratch.br7), db_frame},
- {"r2", DB_OFFSET(tf_scratch.gr2), db_frame},
- {"r3", DB_OFFSET(tf_scratch.gr3), db_frame},
- {"r8", DB_OFFSET(tf_scratch.gr8), db_frame},
- {"r9", DB_OFFSET(tf_scratch.gr9), db_frame},
- {"r10", DB_OFFSET(tf_scratch.gr10), db_frame},
- {"r11", DB_OFFSET(tf_scratch.gr11), db_frame},
- {"r14", DB_OFFSET(tf_scratch.gr14), db_frame},
- {"r15", DB_OFFSET(tf_scratch.gr15), db_frame},
- {"r16", DB_OFFSET(tf_scratch.gr16), db_frame},
- {"r17", DB_OFFSET(tf_scratch.gr17), db_frame},
- {"r18", DB_OFFSET(tf_scratch.gr18), db_frame},
- {"r19", DB_OFFSET(tf_scratch.gr19), db_frame},
- {"r20", DB_OFFSET(tf_scratch.gr20), db_frame},
- {"r21", DB_OFFSET(tf_scratch.gr21), db_frame},
- {"r22", DB_OFFSET(tf_scratch.gr22), db_frame},
- {"r23", DB_OFFSET(tf_scratch.gr23), db_frame},
- {"r24", DB_OFFSET(tf_scratch.gr24), db_frame},
- {"r25", DB_OFFSET(tf_scratch.gr25), db_frame},
- {"r26", DB_OFFSET(tf_scratch.gr26), db_frame},
- {"r27", DB_OFFSET(tf_scratch.gr27), db_frame},
- {"r28", DB_OFFSET(tf_scratch.gr28), db_frame},
- {"r29", DB_OFFSET(tf_scratch.gr29), db_frame},
- {"r30", DB_OFFSET(tf_scratch.gr30), db_frame},
- {"r31", DB_OFFSET(tf_scratch.gr31), db_frame},
- {"r32", (db_expr_t*)0, db_getrse},
- {"r33", (db_expr_t*)1, db_getrse},
- {"r34", (db_expr_t*)2, db_getrse},
- {"r35", (db_expr_t*)3, db_getrse},
- {"r36", (db_expr_t*)4, db_getrse},
- {"r37", (db_expr_t*)5, db_getrse},
- {"r38", (db_expr_t*)6, db_getrse},
- {"r39", (db_expr_t*)7, db_getrse},
- {"r40", (db_expr_t*)8, db_getrse},
- {"r41", (db_expr_t*)9, db_getrse},
- {"r42", (db_expr_t*)10, db_getrse},
- {"r43", (db_expr_t*)11, db_getrse},
- {"r44", (db_expr_t*)12, db_getrse},
- {"r45", (db_expr_t*)13, db_getrse},
- {"r46", (db_expr_t*)14, db_getrse},
- {"r47", (db_expr_t*)15, db_getrse},
- {"r48", (db_expr_t*)16, db_getrse},
- {"r49", (db_expr_t*)17, db_getrse},
- {"r50", (db_expr_t*)18, db_getrse},
- {"r51", (db_expr_t*)19, db_getrse},
- {"r52", (db_expr_t*)20, db_getrse},
- {"r53", (db_expr_t*)21, db_getrse},
- {"r54", (db_expr_t*)22, db_getrse},
- {"r55", (db_expr_t*)23, db_getrse},
- {"r56", (db_expr_t*)24, db_getrse},
- {"r57", (db_expr_t*)25, db_getrse},
- {"r58", (db_expr_t*)26, db_getrse},
- {"r59", (db_expr_t*)27, db_getrse},
- {"r60", (db_expr_t*)28, db_getrse},
- {"r61", (db_expr_t*)29, db_getrse},
- {"r62", (db_expr_t*)30, db_getrse},
- {"r63", (db_expr_t*)31, db_getrse},
- {"r64", (db_expr_t*)32, db_getrse},
- {"r65", (db_expr_t*)33, db_getrse},
- {"r66", (db_expr_t*)34, db_getrse},
- {"r67", (db_expr_t*)35, db_getrse},
- {"r68", (db_expr_t*)36, db_getrse},
- {"r69", (db_expr_t*)37, db_getrse},
- {"r70", (db_expr_t*)38, db_getrse},
- {"r71", (db_expr_t*)39, db_getrse},
- {"r72", (db_expr_t*)40, db_getrse},
- {"r73", (db_expr_t*)41, db_getrse},
- {"r74", (db_expr_t*)42, db_getrse},
- {"r75", (db_expr_t*)43, db_getrse},
- {"r76", (db_expr_t*)44, db_getrse},
- {"r77", (db_expr_t*)45, db_getrse},
- {"r78", (db_expr_t*)46, db_getrse},
- {"r79", (db_expr_t*)47, db_getrse},
- {"r80", (db_expr_t*)48, db_getrse},
- {"r81", (db_expr_t*)49, db_getrse},
- {"r82", (db_expr_t*)50, db_getrse},
- {"r83", (db_expr_t*)51, db_getrse},
- {"r84", (db_expr_t*)52, db_getrse},
- {"r85", (db_expr_t*)53, db_getrse},
- {"r86", (db_expr_t*)54, db_getrse},
- {"r87", (db_expr_t*)55, db_getrse},
- {"r88", (db_expr_t*)56, db_getrse},
- {"r89", (db_expr_t*)57, db_getrse},
- {"r90", (db_expr_t*)58, db_getrse},
- {"r91", (db_expr_t*)59, db_getrse},
- {"r92", (db_expr_t*)60, db_getrse},
- {"r93", (db_expr_t*)61, db_getrse},
- {"r94", (db_expr_t*)62, db_getrse},
- {"r95", (db_expr_t*)63, db_getrse},
- {"r96", (db_expr_t*)64, db_getrse},
- {"r97", (db_expr_t*)65, db_getrse},
- {"r98", (db_expr_t*)66, db_getrse},
- {"r99", (db_expr_t*)67, db_getrse},
- {"r100", (db_expr_t*)68, db_getrse},
- {"r101", (db_expr_t*)69, db_getrse},
- {"r102", (db_expr_t*)70, db_getrse},
- {"r103", (db_expr_t*)71, db_getrse},
- {"r104", (db_expr_t*)72, db_getrse},
- {"r105", (db_expr_t*)73, db_getrse},
- {"r106", (db_expr_t*)74, db_getrse},
- {"r107", (db_expr_t*)75, db_getrse},
- {"r108", (db_expr_t*)76, db_getrse},
- {"r109", (db_expr_t*)77, db_getrse},
- {"r110", (db_expr_t*)78, db_getrse},
- {"r111", (db_expr_t*)79, db_getrse},
- {"r112", (db_expr_t*)80, db_getrse},
- {"r113", (db_expr_t*)81, db_getrse},
- {"r114", (db_expr_t*)82, db_getrse},
- {"r115", (db_expr_t*)83, db_getrse},
- {"r116", (db_expr_t*)84, db_getrse},
- {"r117", (db_expr_t*)85, db_getrse},
- {"r118", (db_expr_t*)86, db_getrse},
- {"r119", (db_expr_t*)87, db_getrse},
- {"r120", (db_expr_t*)88, db_getrse},
- {"r121", (db_expr_t*)89, db_getrse},
- {"r122", (db_expr_t*)90, db_getrse},
- {"r123", (db_expr_t*)91, db_getrse},
- {"r124", (db_expr_t*)92, db_getrse},
- {"r125", (db_expr_t*)93, db_getrse},
- {"r126", (db_expr_t*)94, db_getrse},
- {"r127", (db_expr_t*)95, db_getrse},
-};
-struct db_variable *db_eregs = db_regs + sizeof(db_regs)/sizeof(db_regs[0]);
-
-static int
-db_backtrace(struct thread *td, struct pcb *pcb, int count)
-{
- struct unw_regstate rs;
- struct trapframe *tf;
- const char *name;
- db_expr_t offset;
- uint64_t bsp, cfm, ip, pfs, reg, sp;
- c_db_sym_t sym;
- int args, error, i;
-
- error = unw_create_from_pcb(&rs, pcb);
- while (!error && count-- && !db_pager_quit) {
- error = unw_get_cfm(&rs, &cfm);
- if (!error)
- error = unw_get_bsp(&rs, &bsp);
- if (!error)
- error = unw_get_ip(&rs, &ip);
- if (!error)
- error = unw_get_sp(&rs, &sp);
- if (error)
- break;
-
- args = IA64_CFM_SOL(cfm);
- if (args > 8)
- args = 8;
-
- error = unw_step(&rs);
- if (!error) {
- if (!unw_get_cfm(&rs, &pfs)) {
- i = IA64_CFM_SOF(pfs) - IA64_CFM_SOL(pfs);
- if (args > i)
- args = i;
- }
- }
-
- sym = db_search_symbol(ip, DB_STGY_ANY, &offset);
- db_symbol_values(sym, &name, NULL);
- db_printf("%s(", name);
- if (bsp >= VM_MAXUSER_ADDRESS) {
- for (i = 0; i < args; i++) {
- if ((bsp & 0x1ff) == 0x1f8)
- bsp += 8;
- db_read_bytes(bsp, sizeof(reg), (void*)&reg);
- if (i > 0)
- db_printf(", ");
- db_printf("0x%lx", reg);
- bsp += 8;
- }
- } else
- db_printf("...");
- db_printf(") at ");
-
- db_printsym(ip, DB_STGY_PROC);
- db_printf("\n");
-
- if (error != ERESTART)
- continue;
- if (sp < VM_MAXUSER_ADDRESS)
- break;
-
- tf = (struct trapframe *)(sp + 16);
- if ((tf->tf_flags & FRAME_SYSCALL) != 0 ||
- tf->tf_special.iip < VM_MAXUSER_ADDRESS)
- break;
-
- /* XXX ask if we should unwind across the trapframe. */
- db_printf("--- trapframe at %p\n", tf);
- unw_delete(&rs);
- error = unw_create_from_frame(&rs, tf);
- }
-
- unw_delete(&rs);
- /*
- * EJUSTRETURN and ERESTART signal the end of a trace and
- * are not really errors.
- */
- return ((error > 0) ? error : 0);
-}
-
-void
-db_bkpt_clear(db_addr_t addr, BKPT_INST_TYPE *storage)
-{
- BKPT_INST_TYPE tmp;
- db_addr_t loc;
- int slot;
-
- slot = addr & 0xfUL;
- if (slot >= SLOT_COUNT)
- return;
- loc = (addr & ~0xfUL) + (slot << 2);
-
- db_read_bytes(loc, sizeof(BKPT_INST_TYPE), (char *)&tmp);
- tmp &= ~(SLOT_MASK << SLOT_SHIFT(slot));
- tmp |= *storage << SLOT_SHIFT(slot);
- db_write_bytes(loc, sizeof(BKPT_INST_TYPE), (char *)&tmp);
-}
-
-void
-db_bkpt_skip(void)
-{
-
- if (kdb_frame == NULL)
- return;
-
- kdb_frame->tf_special.psr += IA64_PSR_RI_1;
- if ((kdb_frame->tf_special.psr & IA64_PSR_RI) > IA64_PSR_RI_2) {
- kdb_frame->tf_special.psr &= ~IA64_PSR_RI;
- kdb_frame->tf_special.iip += 16;
- }
-}
-
-void
-db_bkpt_write(db_addr_t addr, BKPT_INST_TYPE *storage)
-{
- BKPT_INST_TYPE tmp;
- db_addr_t loc;
- int slot;
-
- slot = addr & 0xfUL;
- if (slot >= SLOT_COUNT)
- return;
- loc = (addr & ~0xfUL) + (slot << 2);
-
- db_read_bytes(loc, sizeof(BKPT_INST_TYPE), (char *)&tmp);
- *storage = (tmp >> SLOT_SHIFT(slot)) & SLOT_MASK;
-
- tmp &= ~(SLOT_MASK << SLOT_SHIFT(slot));
- tmp |= (0x84000 << 6) << SLOT_SHIFT(slot);
- db_write_bytes(loc, sizeof(BKPT_INST_TYPE), (char *)&tmp);
-}
-
-db_addr_t
-db_disasm(db_addr_t loc, boolean_t altfmt)
-{
- char buf[32];
- struct asm_bundle bundle;
- const struct asm_inst *i;
- const char *tmpl;
- int n, slot;
-
- slot = loc & 0xf;
- loc &= ~0xful;
- db_read_bytes(loc, 16, buf);
- if (asm_decode((uintptr_t)buf, &bundle)) {
- i = bundle.b_inst + slot;
- tmpl = bundle.b_templ + slot;
- if (*tmpl == ';' || (slot == 2 && bundle.b_templ[1] == ';'))
- tmpl++;
- if (*tmpl == 'L' || i->i_op == ASM_OP_NONE) {
- db_printf("\n");
- goto out;
- }
-
- /* Unit + slot. */
- db_printf("[%c%d] ", *tmpl, slot);
-
- /* Predicate. */
- if (i->i_oper[0].o_value != 0) {
- asm_operand(i->i_oper+0, buf, loc);
- db_printf("(%s) ", buf);
- } else
- db_printf(" ");
-
- /* Mnemonic & completers. */
- asm_mnemonic(i->i_op, buf);
- db_printf(buf);
- n = 0;
- while (n < i->i_ncmpltrs) {
- asm_completer(i->i_cmpltr + n, buf);
- db_printf(buf);
- n++;
- }
- db_printf(" ");
-
- /* Operands. */
- n = 1;
- while (n < 7 && i->i_oper[n].o_type != ASM_OPER_NONE) {
- if (n > 1) {
- if (n == i->i_srcidx)
- db_printf("=");
- else
- db_printf(",");
- }
- asm_operand(i->i_oper + n, buf, loc);
- db_printf(buf);
- n++;
- }
- if (tmpl[1] == ';')
- db_printf(" ;;");
- } else {
- tmpl = NULL;
- slot = 2;
- }
- db_printf("\n");
-
-out:
- slot++;
- if (slot == 1 && tmpl[1] == 'L')
- slot++;
- if (slot > 2)
- slot = 16;
- return (loc + slot);
-}
-
-int
-db_fncall_ia64(db_expr_t addr, db_expr_t *rv, int nargs, db_expr_t args[])
-{
- struct ia64_fdesc fdesc;
- __db_f *f;
-
- f = (__db_f *)&fdesc;
- fdesc.func = addr;
- fdesc.gp = __db_gp; /* XXX doesn't work for modules. */
- *rv = (*f)(args[0], args[1], args[2], args[3], args[4], args[5],
- args[6], args[7]);
- return (1);
-}
-
-static int
-db_frame(struct db_variable *vp, db_expr_t *valuep, int op)
-{
- uint64_t *reg;
-
- if (kdb_frame == NULL)
- return (0);
- reg = (uint64_t*)((uintptr_t)kdb_frame + (uintptr_t)vp->valuep);
- if (op == DB_VAR_GET)
- *valuep = *reg;
- else
- *reg = *valuep;
- return (1);
-}
-
-static int
-db_getip(struct db_variable *vp, db_expr_t *valuep, int op)
-{
- u_long iip, slot;
-
- if (kdb_frame == NULL)
- return (0);
-
- if (op == DB_VAR_GET) {
- iip = kdb_frame->tf_special.iip;
- slot = (kdb_frame->tf_special.psr >> 41) & 3;
- *valuep = iip + slot;
- } else {
- iip = *valuep & ~0xf;
- slot = *valuep & 0xf;
- if (slot > 2)
- return (0);
- kdb_frame->tf_special.iip = iip;
- kdb_frame->tf_special.psr &= ~IA64_PSR_RI;
- kdb_frame->tf_special.psr |= slot << 41;
- }
- return (1);
-}
-
-static int
-db_getrse(struct db_variable *vp, db_expr_t *valuep, int op)
-{
- u_int64_t *reg;
- uint64_t bsp;
- int nats, regno, sof;
-
- if (kdb_frame == NULL)
- return (0);
-
- regno = (int)(intptr_t)valuep;
- bsp = kdb_frame->tf_special.bspstore + kdb_frame->tf_special.ndirty;
- sof = (int)(kdb_frame->tf_special.cfm & 0x7f);
-
- if (regno >= sof)
- return (0);
-
- nats = (sof - regno + 63 - ((int)(bsp >> 3) & 0x3f)) / 63;
- reg = (void*)(bsp - ((sof - regno + nats) << 3));
- if (op == DB_VAR_GET)
- *valuep = *reg;
- else
- *reg = *valuep;
- return (1);
-}
-
-int
-db_md_clr_watchpoint(db_expr_t addr, db_expr_t size)
-{
-
- return (-1);
-}
-
-void
-db_md_list_watchpoints()
-{
-
- return;
-}
-
-int
-db_md_set_watchpoint(db_expr_t addr, db_expr_t size)
-{
-
- return (-1);
-}
-
-/*
- * Read bytes from kernel address space for debugger.
- */
-int
-db_read_bytes(vm_offset_t addr, size_t size, char *data)
-{
- jmp_buf jb;
- void *prev_jb;
- char *src;
- int ret;
-
- prev_jb = kdb_jmpbuf(jb);
- ret = setjmp(jb);
- if (ret == 0) {
- src = (char *)addr;
- while (size-- > 0)
- *data++ = *src++;
- }
- (void)kdb_jmpbuf(prev_jb);
- return (ret);
-}
-
-/*
- * Write bytes to kernel address space for debugger.
- */
-int
-db_write_bytes(vm_offset_t addr, size_t size, char *data)
-{
- jmp_buf jb;
- void *prev_jb;
- size_t cnt;
- char *dst;
- int ret;
-
- prev_jb = kdb_jmpbuf(jb);
- ret = setjmp(jb);
- if (ret == 0) {
- dst = (char *)addr;
- cnt = size;
- while (cnt-- > 0)
- *dst++ = *data++;
- kdb_cpu_sync_icache((void *)addr, size);
- }
- (void)kdb_jmpbuf(prev_jb);
- return (ret);
-}
-
-void
-db_show_mdpcpu(struct pcpu *pc)
-{
- struct pcpu_md *md = &pc->pc_md;
-
- db_printf("MD: vhpt = %#lx\n", md->vhpt);
- db_printf("MD: lid = %#lx\n", md->lid);
- db_printf("MD: clock = %#lx\n", md->clock);
- db_printf("MD: clock_mode = %u\n", md->clock_mode);
- db_printf("MD: clock_load = %#lx\n", md->clock_load);
- db_printf("MD: stats = %p\n", &md->stats);
- db_printf("MD: pmap = %p\n", md->current_pmap);
-#ifdef XTRACE
- db_printf("MD: xtrace_buffer = %p\n", md->xtrace_buffer);
- db_printf("MD: xtrace_tail = %#lx\n", md->xtrace_tail);
-#endif
-}
-
-void
-db_trace_self(void)
-{
- struct pcb pcb;
-
- savectx(&pcb);
- db_backtrace(curthread, &pcb, -1);
-}
-
-int
-db_trace_thread(struct thread *td, int count)
-{
- struct pcb *ctx;
-
- ctx = kdb_thr_ctx(td);
- return (db_backtrace(td, ctx, count));
-}
diff --git a/sys/ia64/ia64/dump_machdep.c b/sys/ia64/ia64/dump_machdep.c
deleted file mode 100644
index d6d9d04..0000000
--- a/sys/ia64/ia64/dump_machdep.c
+++ /dev/null
@@ -1,439 +0,0 @@
-/*-
- * Copyright (c) 2002 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_watchdog.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/conf.h>
-#include <sys/cons.h>
-#include <sys/efi.h>
-#include <sys/kernel.h>
-#include <sys/kerneldump.h>
-#ifdef SW_WATCHDOG
-#include <sys/watchdog.h>
-#endif
-#include <vm/vm.h>
-#include <vm/pmap.h>
-#include <machine/bootinfo.h>
-#include <machine/elf.h>
-#include <machine/md_var.h>
-
-CTASSERT(sizeof(struct kerneldumpheader) == 512);
-
-/*
- * Don't touch the first SIZEOF_METADATA bytes on the dump device. This
- * is to protect us from metadata and to protect metadata from us.
- */
-#define SIZEOF_METADATA (64*1024)
-
-#define MD_ALIGN(x) (((off_t)(x) + EFI_PAGE_MASK) & ~EFI_PAGE_MASK)
-#define DEV_ALIGN(x) (((off_t)(x) + (DEV_BSIZE-1)) & ~(DEV_BSIZE-1))
-
-static int minidump = 0;
-SYSCTL_INT(_debug, OID_AUTO, minidump, CTLFLAG_RWTUN, &minidump, 0,
- "Enable mini crash dumps");
-
-static struct kerneldumpheader kdh;
-static off_t dumplo, fileofs;
-
-/* Handle buffered writes. */
-static char buffer[DEV_BSIZE];
-static size_t fragsz;
-
-static int
-buf_write(struct dumperinfo *di, char *ptr, size_t sz)
-{
- size_t len;
- int error;
-
- while (sz) {
- len = DEV_BSIZE - fragsz;
- if (len > sz)
- len = sz;
- bcopy(ptr, buffer + fragsz, len);
- fragsz += len;
- ptr += len;
- sz -= len;
- if (fragsz == DEV_BSIZE) {
- error = dump_write(di, buffer, 0, dumplo,
- DEV_BSIZE);
- if (error)
- return (error);
- dumplo += DEV_BSIZE;
- fragsz = 0;
- }
- }
-
- return (0);
-}
-
-static int
-buf_flush(struct dumperinfo *di)
-{
- int error;
-
- if (fragsz == 0)
- return (0);
-
- error = dump_write(di, buffer, 0, dumplo, DEV_BSIZE);
- dumplo += DEV_BSIZE;
- fragsz = 0;
- return (error);
-}
-
-/*
- * Physical dump support
- */
-
-typedef int phys_callback_t(struct efi_md*, int, void*);
-
-static int
-phys_cb_dumpdata(struct efi_md *mdp, int seqnr, void *arg)
-{
- struct dumperinfo *di = (struct dumperinfo*)arg;
- vm_offset_t pa;
- uint64_t pgs;
- size_t counter, sz;
- int c, error, twiddle;
-
- error = 0; /* catch case in which mdp->md_pages is 0 */
- counter = 0; /* Update twiddle every 16MB */
- twiddle = 0;
- pgs = mdp->md_pages;
- pa = IA64_PHYS_TO_RR7(mdp->md_phys);
-
- printf(" chunk %d: %ld pages ", seqnr, (long)pgs);
-
- while (pgs) {
- sz = (pgs > (DFLTPHYS >> EFI_PAGE_SHIFT))
- ? DFLTPHYS : pgs << EFI_PAGE_SHIFT;
- counter += sz;
- if (counter >> 24) {
- printf("%c\b", "|/-\\"[twiddle++ & 3]);
- counter &= (1<<24) - 1;
- }
-#ifdef SW_WATCHDOG
- wdog_kern_pat(WD_LASTVAL);
-#endif
- error = dump_write(di, (void*)pa, 0, dumplo, sz);
- if (error)
- break;
- dumplo += sz;
- pgs -= sz >> EFI_PAGE_SHIFT;
- pa += sz;
-
- /* Check for user abort. */
- c = cncheckc();
- if (c == 0x03)
- return (ECANCELED);
- if (c != -1)
- printf("(CTRL-C to abort) ");
- }
- printf("... %s\n", (error) ? "fail" : "ok");
- return (error);
-}
-
-static int
-phys_cb_dumphdr(struct efi_md *mdp, int seqnr, void *arg)
-{
- struct dumperinfo *di = (struct dumperinfo*)arg;
- Elf64_Phdr phdr;
- int error;
-
- bzero(&phdr, sizeof(phdr));
- phdr.p_type = PT_LOAD;
- phdr.p_flags = PF_R; /* XXX */
- phdr.p_offset = fileofs;
- phdr.p_vaddr = (uintptr_t)mdp->md_virt; /* XXX probably bogus. */
- phdr.p_paddr = mdp->md_phys;
- phdr.p_filesz = mdp->md_pages << EFI_PAGE_SHIFT;
- phdr.p_memsz = mdp->md_pages << EFI_PAGE_SHIFT;
- phdr.p_align = EFI_PAGE_SIZE;
-
- error = buf_write(di, (char*)&phdr, sizeof(phdr));
- fileofs += phdr.p_filesz;
- return (error);
-}
-
-static int
-phys_cb_size(struct efi_md *mdp, int seqnr, void *arg)
-{
- uint64_t *sz = (uint64_t*)arg;
-
- *sz += (uint64_t)mdp->md_pages << EFI_PAGE_SHIFT;
- return (0);
-}
-
-static int
-phys_foreach(phys_callback_t cb, void *arg)
-{
- struct efi_md *mdp;
- int error, seqnr;
-
- seqnr = 0;
- mdp = efi_md_first();
- while (mdp != NULL) {
- if (mdp->md_type == EFI_MD_TYPE_FREE ||
- mdp->md_type == EFI_MD_TYPE_DATA ||
- mdp->md_type == EFI_MD_TYPE_CODE ||
- mdp->md_type == EFI_MD_TYPE_BS_DATA ||
- mdp->md_type == EFI_MD_TYPE_BS_CODE) {
- error = (*cb)(mdp, seqnr++, arg);
- if (error)
- return (-error);
- }
- mdp = efi_md_next(mdp);
- }
- return (seqnr);
-}
-
-/*
- * Virtual dump (aka minidump) support
- */
-
-typedef int virt_callback_t(vm_offset_t, vm_size_t, int, void*);
-
-static int
-virt_cb_size(vm_offset_t va, vm_size_t sz, int seqnr, void *arg)
-{
- uint64_t *dumpsize = (uint64_t *)arg;
-
- *dumpsize += sz;
- return (0);
-}
-
-static int
-virt_cb_dumphdr(vm_offset_t va, vm_size_t sz, int seqnr, void *arg)
-{
- struct dumperinfo *di = (struct dumperinfo *)arg;
- Elf64_Phdr phdr;
- int error;
-
- bzero(&phdr, sizeof(phdr));
- phdr.p_type = PT_LOAD;
- phdr.p_flags = PF_R; /* XXX */
- phdr.p_offset = fileofs;
- phdr.p_vaddr = va;
- phdr.p_paddr = ~0UL;
- phdr.p_filesz = sz;
- phdr.p_memsz = sz;
- phdr.p_align = PAGE_SIZE;
-
- error = buf_write(di, (char*)&phdr, sizeof(phdr));
- fileofs += phdr.p_filesz;
- return (error);
-}
-
-static int
-virt_cb_dumpdata(vm_offset_t va, vm_size_t sz, int seqnr, void *arg)
-{
- struct dumperinfo *di = (struct dumperinfo *)arg;
- size_t counter, iosz;
- int c, error, twiddle;
-
- error = 0; /* catch case in which pgs is 0 */
- counter = 0; /* Update twiddle every 16MB */
- twiddle = 0;
-
- printf(" chunk %d: %ld pages ", seqnr, atop(sz));
-
- while (sz) {
- iosz = (sz > DFLTPHYS) ? DFLTPHYS : sz;
- counter += iosz;
- if (counter >> 24) {
- printf("%c\b", "|/-\\"[twiddle++ & 3]);
- counter &= (1<<24) - 1;
- }
-#ifdef SW_WATCHDOG
- wdog_kern_pat(WD_LASTVAL);
-#endif
- error = dump_write(di, (void*)va, 0, dumplo, iosz);
- if (error)
- break;
- dumplo += iosz;
- sz -= iosz;
- va += iosz;
-
- /* Check for user abort. */
- c = cncheckc();
- if (c == 0x03)
- return (ECANCELED);
- if (c != -1)
- printf("(CTRL-C to abort) ");
- }
- printf("... %s\n", (error) ? "fail" : "ok");
- return (error);
-}
-
-static int
-virt_foreach(virt_callback_t cb, void *arg)
-{
- vm_offset_t va;
- vm_size_t sz;
- int error, seqnr;
-
- seqnr = 0;
- while (1) {
- switch (seqnr) {
- case 0:
- va = IA64_PBVM_BASE;
- sz = round_page(bootinfo->bi_kernend) - va;
- break;
- default:
- va = 0;
- sz = 0;
- break;
- }
- if (va == 0 && sz == 0)
- break;
- error = (*cb)(va, sz, seqnr, arg);
- if (error)
- return (-error);
- seqnr++;
- }
- return (seqnr);
-}
-
-/*
- * main entry point.
- */
-
-void
-dumpsys(struct dumperinfo *di)
-{
- Elf64_Ehdr ehdr;
- uint64_t dumpsize;
- off_t hdrgap;
- size_t hdrsz;
- int error, status;
-
- bzero(&ehdr, sizeof(ehdr));
- ehdr.e_ident[EI_MAG0] = ELFMAG0;
- ehdr.e_ident[EI_MAG1] = ELFMAG1;
- ehdr.e_ident[EI_MAG2] = ELFMAG2;
- ehdr.e_ident[EI_MAG3] = ELFMAG3;
- ehdr.e_ident[EI_CLASS] = ELFCLASS64;
-#if BYTE_ORDER == LITTLE_ENDIAN
- ehdr.e_ident[EI_DATA] = ELFDATA2LSB;
-#else
- ehdr.e_ident[EI_DATA] = ELFDATA2MSB;
-#endif
- ehdr.e_ident[EI_VERSION] = EV_CURRENT;
- ehdr.e_ident[EI_OSABI] = ELFOSABI_STANDALONE; /* XXX big picture? */
- ehdr.e_type = ET_CORE;
- ehdr.e_machine = EM_IA_64;
- ehdr.e_entry = (minidump) ? (uintptr_t)bootinfo :
- ia64_tpa((uintptr_t)bootinfo);
- ehdr.e_phoff = sizeof(ehdr);
- ehdr.e_flags = (minidump) ? 0 : EF_IA_64_ABSOLUTE; /* XXX misuse? */
- ehdr.e_ehsize = sizeof(ehdr);
- ehdr.e_phentsize = sizeof(Elf64_Phdr);
- ehdr.e_shentsize = sizeof(Elf64_Shdr);
-
- /* Calculate dump size. */
- dumpsize = 0L;
- status = (minidump) ? virt_foreach(virt_cb_size, &dumpsize) :
- phys_foreach(phys_cb_size, &dumpsize);
- if (status < 0) {
- error = -status;
- goto fail;
- }
- ehdr.e_phnum = status;
- hdrsz = ehdr.e_phoff + ehdr.e_phnum * ehdr.e_phentsize;
- fileofs = (minidump) ? round_page(hdrsz) : MD_ALIGN(hdrsz);
- dumpsize += fileofs;
- hdrgap = fileofs - DEV_ALIGN(hdrsz);
-
- /* Determine dump offset on device. */
- if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
- error = ENOSPC;
- goto fail;
- }
- dumplo = di->mediaoffset + di->mediasize - dumpsize;
- dumplo -= sizeof(kdh) * 2;
-
- mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_IA64_VERSION, dumpsize, di->blocksize);
-
- printf("Dumping %llu MB (%d chunks)\n", (long long)dumpsize >> 20,
- ehdr.e_phnum);
-
- /* Dump leader */
- error = dump_write(di, &kdh, 0, dumplo, sizeof(kdh));
- if (error)
- goto fail;
- dumplo += sizeof(kdh);
-
- /* Dump ELF header */
- error = buf_write(di, (char*)&ehdr, sizeof(ehdr));
- if (error)
- goto fail;
-
- /* Dump program headers */
- status = (minidump) ? virt_foreach(virt_cb_dumphdr, di) :
- phys_foreach(phys_cb_dumphdr, di);
- if (status < 0) {
- error = -status;
- goto fail;
- }
- buf_flush(di);
-
- /*
- * All headers are written using blocked I/O, so we know the
- * current offset is (still) block aligned. Skip the alignment
- * in the file to have the segment contents aligned at page
- * boundary. For physical dumps, it's the EFI page size (= 4K).
- * For minidumps it's the kernel's page size (= 8K).
- */
- dumplo += hdrgap;
-
- /* Dump memory chunks (updates dumplo) */
- status = (minidump) ? virt_foreach(virt_cb_dumpdata, di) :
- phys_foreach(phys_cb_dumpdata, di);
- if (status < 0) {
- error = -status;
- goto fail;
- }
-
- /* Dump trailer */
- error = dump_write(di, &kdh, 0, dumplo, sizeof(kdh));
- if (error)
- goto fail;
-
- /* Signal completion, signoff and exit stage left. */
- dump_write(di, NULL, 0, 0, 0);
- printf("\nDump complete\n");
- return;
-
- fail:
- if (error == ECANCELED)
- printf("\nDump aborted\n");
- else
- printf("\n** DUMP FAILED (ERROR %d) **\n", error);
-}
diff --git a/sys/ia64/ia64/efi.c b/sys/ia64/ia64/efi.c
deleted file mode 100644
index 55adb67..0000000
--- a/sys/ia64/ia64/efi.c
+++ /dev/null
@@ -1,270 +0,0 @@
-/*-
- * Copyright (c) 2004 Marcel Moolenaar
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/efi.h>
-#include <sys/systm.h>
-#include <machine/bootinfo.h>
-#include <machine/md_var.h>
-#include <machine/sal.h>
-#include <vm/vm.h>
-#include <vm/pmap.h>
-
-static struct efi_systbl *efi_systbl;
-static struct efi_cfgtbl *efi_cfgtbl;
-static struct efi_rt *efi_runtime;
-
-static int efi_status2err[25] = {
- 0, /* EFI_SUCCESS */
- ENOEXEC, /* EFI_LOAD_ERROR */
- EINVAL, /* EFI_INVALID_PARAMETER */
- ENOSYS, /* EFI_UNSUPPORTED */
- EMSGSIZE, /* EFI_BAD_BUFFER_SIZE */
- EOVERFLOW, /* EFI_BUFFER_TOO_SMALL */
- EBUSY, /* EFI_NOT_READY */
- EIO, /* EFI_DEVICE_ERROR */
- EROFS, /* EFI_WRITE_PROTECTED */
- EAGAIN, /* EFI_OUT_OF_RESOURCES */
- EIO, /* EFI_VOLUME_CORRUPTED */
- ENOSPC, /* EFI_VOLUME_FULL */
- ENXIO, /* EFI_NO_MEDIA */
- ESTALE, /* EFI_MEDIA_CHANGED */
- ENOENT, /* EFI_NOT_FOUND */
- EACCES, /* EFI_ACCESS_DENIED */
- ETIMEDOUT, /* EFI_NO_RESPONSE */
- EADDRNOTAVAIL, /* EFI_NO_MAPPING */
- ETIMEDOUT, /* EFI_TIMEOUT */
- EDOOFUS, /* EFI_NOT_STARTED */
- EALREADY, /* EFI_ALREADY_STARTED */
- ECANCELED, /* EFI_ABORTED */
- EPROTO, /* EFI_ICMP_ERROR */
- EPROTO, /* EFI_TFTP_ERROR */
- EPROTO /* EFI_PROTOCOL_ERROR */
-};
-
-static int
-efi_status_to_errno(efi_status status)
-{
- u_long code;
- int error;
-
- code = status & 0x3ffffffffffffffful;
- error = (code < 25) ? efi_status2err[code] : EDOOFUS;
- return (error);
-}
-
-void
-efi_boot_finish(void)
-{
-}
-
-/*
- * Collect the entry points for PAL and SAL. Be extra careful about NULL
- * pointer values. We're running pre-console, so it's better to return
- * error values than to cause panics, machine checks and other traps and
- * faults. Keep this minimal...
- */
-int
-efi_boot_minimal(uint64_t systbl)
-{
- ia64_efi_f setvirt;
- struct efi_md *md;
- efi_status status;
-
- if (systbl == 0)
- return (EINVAL);
- efi_systbl = (struct efi_systbl *)IA64_PHYS_TO_RR7(systbl);
- if (efi_systbl->st_hdr.th_sig != EFI_SYSTBL_SIG) {
- efi_systbl = NULL;
- return (EFAULT);
- }
- efi_cfgtbl = (efi_systbl->st_cfgtbl == 0) ? NULL :
- (struct efi_cfgtbl *)IA64_PHYS_TO_RR7(efi_systbl->st_cfgtbl);
- if (efi_cfgtbl == NULL)
- return (ENOENT);
- efi_runtime = (efi_systbl->st_rt == 0) ? NULL :
- (struct efi_rt *)IA64_PHYS_TO_RR7(efi_systbl->st_rt);
- if (efi_runtime == NULL)
- return (ENOENT);
-
- /*
- * Relocate runtime memory segments for firmware.
- */
- md = efi_md_first();
- while (md != NULL) {
- if (md->md_attr & EFI_MD_ATTR_RT) {
- md->md_virt = (md->md_attr & EFI_MD_ATTR_WB) ?
- (void *)IA64_PHYS_TO_RR7(md->md_phys) :
- (void *)IA64_PHYS_TO_RR6(md->md_phys);
- }
- md = efi_md_next(md);
- }
- setvirt = (void *)IA64_PHYS_TO_RR7((u_long)efi_runtime->rt_setvirtual);
- status = ia64_efi_physical(setvirt, bootinfo->bi_memmap_size,
- bootinfo->bi_memdesc_size, bootinfo->bi_memdesc_version,
- ia64_tpa(bootinfo->bi_memmap));
- return ((status < 0) ? EFAULT : 0);
-}
-
-void *
-efi_get_table(struct uuid *uuid)
-{
- struct efi_cfgtbl *ct;
- u_long count;
-
- if (efi_cfgtbl == NULL)
- return (NULL);
- count = efi_systbl->st_entries;
- ct = efi_cfgtbl;
- while (count--) {
- if (!bcmp(&ct->ct_uuid, uuid, sizeof(*uuid)))
- return ((void *)IA64_PHYS_TO_RR7(ct->ct_data));
- ct++;
- }
- return (NULL);
-}
-
-void
-efi_get_time(struct efi_tm *tm)
-{
-
- efi_runtime->rt_gettime(tm, NULL);
-}
-
-struct efi_md *
-efi_md_first(void)
-{
- struct efi_md *md;
-
- if (bootinfo->bi_memmap == 0)
- return (NULL);
- md = (struct efi_md *)bootinfo->bi_memmap;
- return (md);
-}
-
-struct efi_md *
-efi_md_last(void)
-{
- struct efi_md *md;
-
- if (bootinfo->bi_memmap == 0)
- return (NULL);
- md = (struct efi_md *)(bootinfo->bi_memmap + bootinfo->bi_memmap_size -
- bootinfo->bi_memdesc_size);
- return (md);
-}
-
-struct efi_md *
-efi_md_next(struct efi_md *md)
-{
- struct efi_md *lim;
-
- lim = efi_md_last();
- md = (struct efi_md *)((uintptr_t)md + bootinfo->bi_memdesc_size);
- return ((md > lim) ? NULL : md);
-}
-
-struct efi_md *
-efi_md_prev(struct efi_md *md)
-{
- struct efi_md *lim;
-
- lim = efi_md_first();
- md = (struct efi_md *)((uintptr_t)md - bootinfo->bi_memdesc_size);
- return ((md < lim) ? NULL : md);
-}
-
-struct efi_md *
-efi_md_find(vm_paddr_t pa)
-{
- static struct efi_md *last = NULL;
- struct efi_md *md, *p0, *p1;
-
- md = (last != NULL) ? last : efi_md_first();
- p1 = p0 = NULL;
- while (md != NULL && md != p1) {
- if (pa >= md->md_phys &&
- pa < md->md_phys + md->md_pages * EFI_PAGE_SIZE) {
- last = md;
- return (md);
- }
-
- p1 = p0;
- p0 = md;
- md = (pa < md->md_phys) ? efi_md_prev(md) : efi_md_next(md);
- }
-
- return (NULL);
-}
-
-void
-efi_reset_system(void)
-{
-
- if (efi_runtime != NULL)
- efi_runtime->rt_reset(EFI_RESET_WARM, 0, 0, NULL);
- panic("%s: unable to reset the machine", __func__);
-}
-
-int
-efi_set_time(struct efi_tm *tm)
-{
-
- return (efi_status_to_errno(efi_runtime->rt_settime(tm)));
-}
-
-int
-efi_var_get(efi_char *name, struct uuid *vendor, uint32_t *attrib,
- size_t *datasize, void *data)
-{
- efi_status status;
-
- status = efi_runtime->rt_getvar(name, vendor, attrib, datasize, data);
- return (efi_status_to_errno(status));
-}
-
-int
-efi_var_nextname(size_t *namesize, efi_char *name, struct uuid *vendor)
-{
- efi_status status;
-
- status = efi_runtime->rt_scanvar(namesize, name, vendor);
- return (efi_status_to_errno(status));
-}
-
-int
-efi_var_set(efi_char *name, struct uuid *vendor, uint32_t attrib,
- size_t datasize, void *data)
-{
- efi_status status;
-
- status = efi_runtime->rt_setvar(name, vendor, attrib, datasize, data);
- return (efi_status_to_errno(status));
-}
diff --git a/sys/ia64/ia64/elf_machdep.c b/sys/ia64/ia64/elf_machdep.c
deleted file mode 100644
index 05cb641..0000000
--- a/sys/ia64/ia64/elf_machdep.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/*-
- * Copyright 1996-1998 John D. Polstra.
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/exec.h>
-#include <sys/imgact.h>
-#include <sys/malloc.h>
-#include <sys/proc.h>
-#include <sys/namei.h>
-#include <sys/fcntl.h>
-#include <sys/vnode.h>
-#include <sys/linker.h>
-#include <sys/sysent.h>
-#include <sys/imgact_elf.h>
-#include <sys/syscall.h>
-#include <sys/signalvar.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <machine/elf.h>
-#include <machine/frame.h>
-#include <machine/md_var.h>
-#include <machine/unwind.h>
-
-Elf_Addr link_elf_get_gp(linker_file_t);
-
-extern Elf_Addr fptr_storage[];
-
-struct sysentvec elf64_freebsd_sysvec = {
- .sv_size = SYS_MAXSYSCALL,
- .sv_table = sysent,
- .sv_mask = 0,
- .sv_sigsize = 0,
- .sv_sigtbl = NULL,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
- .sv_transtrap = NULL,
- .sv_fixup = __elfN(freebsd_fixup),
- .sv_sendsig = sendsig,
- .sv_sigcode = NULL,
- .sv_szsigcode = NULL,
- .sv_prepsyscall = NULL,
- .sv_name = "FreeBSD ELF64",
- .sv_coredump = __elfN(coredump),
- .sv_imgact_try = NULL,
- .sv_minsigstksz = MINSIGSTKSZ,
- .sv_pagesize = PAGE_SIZE,
- .sv_minuser = VM_MIN_ADDRESS,
- .sv_maxuser = VM_MAXUSER_ADDRESS,
- .sv_usrstack = USRSTACK,
- .sv_psstrings = PS_STRINGS,
- .sv_stackprot = VM_PROT_READ|VM_PROT_WRITE,
- .sv_copyout_strings = exec_copyout_strings,
- .sv_setregs = exec_setregs,
- .sv_fixlimit = NULL,
- .sv_maxssiz = NULL,
- .sv_flags = SV_ABI_FREEBSD | SV_LP64,
- .sv_set_syscall_retval = cpu_set_syscall_retval,
- .sv_fetch_syscall_args = cpu_fetch_syscall_args,
- .sv_syscallnames = syscallnames,
- .sv_schedtail = NULL,
-};
-
-static Elf64_Brandinfo freebsd_brand_info = {
- .brand = ELFOSABI_FREEBSD,
- .machine = EM_IA_64,
- .compat_3_brand = "FreeBSD",
- .emul_path = NULL,
- .interp_path = "/libexec/ld-elf.so.1",
- .sysvec = &elf64_freebsd_sysvec,
- .interp_newpath = NULL,
- .brand_note = &elf64_freebsd_brandnote,
- .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE
-};
-SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_FIRST,
- (sysinit_cfunc_t)elf64_insert_brand_entry, &freebsd_brand_info);
-
-static Elf64_Brandinfo freebsd_brand_oinfo = {
- .brand = ELFOSABI_FREEBSD,
- .machine = EM_IA_64,
- .compat_3_brand = "FreeBSD",
- .emul_path = NULL,
- .interp_path = "/usr/libexec/ld-elf.so.1",
- .sysvec = &elf64_freebsd_sysvec,
- .interp_newpath = NULL,
- .brand_note = &elf64_freebsd_brandnote,
- .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE
-};
-SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY,
- (sysinit_cfunc_t)elf64_insert_brand_entry, &freebsd_brand_oinfo);
-
-
-void
-elf64_dump_thread(struct thread *td, void *dst, size_t *off __unused)
-{
-
- /* Flush the dirty registers onto the backingstore. */
- if (dst == NULL)
- ia64_flush_dirty(td, &td->td_frame->tf_special);
-}
-
-
-static Elf_Addr
-lookup_fdesc(linker_file_t lf, Elf_Size symidx, elf_lookup_fn lookup)
-{
- linker_file_t top;
- Elf_Addr addr;
- const char *symname;
- int i;
- static int eot = 0;
-
- addr = lookup(lf, symidx, 0);
- if (addr == 0) {
- top = lf;
- symname = elf_get_symname(top, symidx);
- for (i = 0; i < top->ndeps; i++) {
- lf = top->deps[i];
- addr = (Elf_Addr)linker_file_lookup_symbol(lf,
- symname, 0);
- if (addr != 0)
- break;
- }
- if (addr == 0)
- return (0);
- }
-
- if (eot)
- return (0);
-
- /*
- * Lookup and/or construct OPD
- */
- for (i = 0; i < 8192; i += 2) {
- if (fptr_storage[i] == addr)
- return (Elf_Addr)(fptr_storage + i);
-
- if (fptr_storage[i] == 0) {
- fptr_storage[i] = addr;
- fptr_storage[i+1] = link_elf_get_gp(lf);
- return (Elf_Addr)(fptr_storage + i);
- }
- }
-
- printf("%s: fptr table full\n", __func__);
- eot = 1;
-
- return (0);
-}
-
-/* Process one elf relocation with addend. */
-static int
-elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
- int type, int local, elf_lookup_fn lookup)
-{
- Elf_Addr *where;
- Elf_Addr addend, addr;
- Elf_Size rtype, symidx;
- const Elf_Rel *rel;
- const Elf_Rela *rela;
-
- switch (type) {
- case ELF_RELOC_REL:
- rel = (const Elf_Rel *)data;
- where = (Elf_Addr *)(relocbase + rel->r_offset);
- rtype = ELF_R_TYPE(rel->r_info);
- symidx = ELF_R_SYM(rel->r_info);
- switch (rtype) {
- case R_IA_64_DIR64LSB:
- case R_IA_64_FPTR64LSB:
- case R_IA_64_REL64LSB:
- addend = *where;
- break;
- default:
- addend = 0;
- break;
- }
- break;
- case ELF_RELOC_RELA:
- rela = (const Elf_Rela *)data;
- where = (Elf_Addr *)(relocbase + rela->r_offset);
- rtype = ELF_R_TYPE(rela->r_info);
- symidx = ELF_R_SYM(rela->r_info);
- addend = rela->r_addend;
- break;
- default:
- panic("%s: invalid ELF relocation (0x%x)\n", __func__, type);
- }
-
- if (local) {
- if (rtype == R_IA_64_REL64LSB)
- *where = elf_relocaddr(lf, relocbase + addend);
- return (0);
- }
-
- switch (rtype) {
- case R_IA_64_NONE:
- break;
- case R_IA_64_DIR64LSB: /* word64 LSB S + A */
- addr = lookup(lf, symidx, 1);
- if (addr == 0)
- return (-1);
- *where = addr + addend;
- break;
- case R_IA_64_FPTR64LSB: /* word64 LSB @fptr(S + A) */
- if (addend != 0) {
- printf("%s: addend ignored for OPD relocation\n",
- __func__);
- }
- addr = lookup_fdesc(lf, symidx, lookup);
- if (addr == 0)
- return (-1);
- *where = addr;
- break;
- case R_IA_64_REL64LSB: /* word64 LSB BD + A */
- break;
- case R_IA_64_IPLTLSB:
- addr = lookup_fdesc(lf, symidx, lookup);
- if (addr == 0)
- return (-1);
- where[0] = *((Elf_Addr*)addr) + addend;
- where[1] = *((Elf_Addr*)addr + 1);
- break;
- default:
- printf("%s: unknown relocation (0x%x)\n", __func__,
- (int)rtype);
- return -1;
- }
-
- return (0);
-}
-
-int
-elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type,
- elf_lookup_fn lookup)
-{
-
- return (elf_reloc_internal(lf, relocbase, data, type, 0, lookup));
-}
-
-int
-elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, const void *data,
- int type, elf_lookup_fn lookup)
-{
-
- return (elf_reloc_internal(lf, relocbase, data, type, 1, lookup));
-}
-
-int
-elf_cpu_load_file(linker_file_t lf)
-{
- Elf_Ehdr *hdr;
- Elf_Phdr *ph, *phlim;
- Elf_Addr reloc, vaddr;
-
- hdr = (Elf_Ehdr *)(lf->address);
- if (!IS_ELF(*hdr)) {
- printf("Missing or corrupted ELF header at %p\n", hdr);
- return (EFTYPE);
- }
-
- /*
- * Iterate over the segments and register the unwind table if
- * we come across it.
- */
- ph = (Elf_Phdr *)(lf->address + hdr->e_phoff);
- phlim = ph + hdr->e_phnum;
- reloc = ~0ULL;
- while (ph < phlim) {
- if (ph->p_type == PT_LOAD && reloc == ~0ULL)
- reloc = (Elf_Addr)lf->address - ph->p_vaddr;
-
- if (ph->p_type == PT_IA_64_UNWIND) {
- vaddr = ph->p_vaddr + reloc;
- unw_table_add((vm_offset_t)lf->address, vaddr,
- vaddr + ph->p_memsz);
- }
- ++ph;
- }
-
- /*
- * Make the I-cache coherent, but don't worry obout the kernel
- * itself because the loader needs to do that.
- */
- if (lf->id != 1)
- ia64_sync_icache((uintptr_t)lf->address, lf->size);
-
- return (0);
-}
-
-int
-elf_cpu_unload_file(linker_file_t lf)
-{
-
- unw_table_remove((vm_offset_t)lf->address);
- return (0);
-}
diff --git a/sys/ia64/ia64/emulate.c b/sys/ia64/ia64/emulate.c
deleted file mode 100644
index 37fcf55..0000000
--- a/sys/ia64/ia64/emulate.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/proc.h>
-
-#include <machine/frame.h>
-#include <machine/md_var.h>
-
-#include <ia64/disasm/disasm.h>
-
-int
-ia64_emulate(struct trapframe *tf, struct thread *td)
-{
- struct asm_bundle bundle;
- struct asm_inst *i;
- int slot;
-
- if (!asm_decode(tf->tf_special.iip, &bundle))
- return (SIGILL);
-
- slot = ((tf->tf_special.psr & IA64_PSR_RI) == IA64_PSR_RI_0) ? 0 :
- ((tf->tf_special.psr & IA64_PSR_RI) == IA64_PSR_RI_1) ? 1 : 2;
- if (slot == 1 && bundle.b_templ[slot] == 'L')
- slot++;
-
- i = bundle.b_inst + slot;
- switch (i->i_op) {
- case ASM_OP_BRL:
- /*
- * We get the fault even if the predicate is false, so we
- * need to check the predicate first and simply advance to
- * the next bundle in that case.
- */
- if (!(tf->tf_special.pr & (1UL << i->i_oper[0].o_value))) {
- tf->tf_special.psr &= ~IA64_PSR_RI;
- tf->tf_special.iip += 16;
- return (0);
- }
- /*
- * The brl.cond is the simplest form. We only have to set
- * the IP to the address in the instruction and return.
- */
- if (i->i_cmpltr[0].c_type == ASM_CT_COND) {
- tf->tf_special.psr &= ~IA64_PSR_RI;
- tf->tf_special.iip += i->i_oper[1].o_value;
- return (0);
- }
- /* Sanity check... */
- if (i->i_cmpltr[0].c_type != ASM_CT_CALL)
- break;
- /*
- * The brl.call is more difficult as we need to set-up the
- * call properly.
- */
- break;
- default:
- break;
- }
-
- return (SIGILL);
-}
diff --git a/sys/ia64/ia64/exception.S b/sys/ia64/ia64/exception.S
deleted file mode 100644
index 4a927e7..0000000
--- a/sys/ia64/ia64/exception.S
+++ /dev/null
@@ -1,1758 +0,0 @@
-/*-
- * Copyright (c) 2003,2004 Marcel Moolenaar
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_xtrace.h"
-
-#include <machine/pte.h>
-#include <assym.s>
-
-/*
- * Nested TLB restart tokens. These are used by the
- * nested TLB handler for jumping back to the code
- * where the nested TLB was caused.
- */
-#define NTLBRT_SAVE 0x12c12c
-#define NTLBRT_RESTORE 0x12c12d
-
-/*
- * ar.k7 = kernel memory stack
- * ar.k6 = kernel register stack
- * ar.k5 = EPC gateway page
- * ar.k4 = PCPU data
- */
-
- .section .ivt.data, "aw"
-
- .align 8
- .global ia64_kptdir
- .size ia64_kptdir, 8
-ia64_kptdir: data8 0
-
-#ifdef XTRACE
-
- .align 8
- .global ia64_xtrace_mask
- .size ia64_xtrace_mask, 8
-ia64_xtrace_mask: data8 0
-
- .align 4
- .global ia64_xtrace_enabled
- .size ia64_xtrace_enabled, 4
-ia64_xtrace_enabled: data4 0
-
-#define XTRACE_HOOK(offset) \
-{ .mii ; \
- nop 0 ; \
- mov r31 = b7 ; \
- mov r28 = pr ; \
-} ; \
-{ .mib ; \
- nop 0 ; \
- mov r25 = ip ; \
- br.sptk ia64_xtrace_write ;; \
-} ; \
-{ .mii ; \
- nop 0 ; \
- mov b7 = r31 ; \
- mov pr = r28, 0x1ffff ;; \
-}
-
- .section .ivt.text, "ax"
-
-// We can only use r25, r26 & r27
-ENTRY_NOPROFILE(ia64_xtrace_write, 0)
-{ .mlx
- add r25 = 16, r25
- movl r26 = ia64_xtrace_enabled
- ;;
-}
-{ .mmi
- mov r27 = ar.k3
- ld4 r26 = [r26]
- mov b7 = r25
- ;;
-}
-{ .mib
- add r25 = -32, r25
- cmp.eq p15,p0 = r0, r26
-(p15) br.dptk.few b7
- ;;
-}
-{ .mib
- nop 0
- cmp.eq p15,p0 = r0, r27
-(p15) br.dptk.few b7
- ;;
-}
-{ .mmi
- st8 [r27] = r25, 8 // 0x00 IVT
- mov r26 = ar.itc
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r26, 8 // 0x08 ITC
- mov r25 = cr.iip
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r25, 8 // 0x10 IIP
- mov r26 = cr.ifa
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r26, 8 // 0x18 IFA
- mov r25 = cr.isr
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r25, 8 // 0x20 ISR
- mov r26 = cr.ipsr
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r26, 8 // 0x28 IPSR
- mov r25 = cr.itir
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r25, 8 // 0x30 ITIR
- mov r26 = cr.iipa
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r26, 8 // 0x38 IIPA
- mov r25 = cr.ifs
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r25, 8 // 0x40 IFS
- mov r26 = cr.iim
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r26, 8 // 0x48 IIM
- mov r25 = cr.iha
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r25, 8 // 0x50 IHA
- mov r26 = ar.unat
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r26, 8 // 0x58 UNAT
- mov r25 = ar.rsc
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r25, 8 // 0x60 RSC
- mov r26 = ar.bsp
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r26, 8 // 0x68 BSP
- mov r25 = r13
- nop 0
- ;;
-}
-{ .mmi
- st8 [r27] = r25, 8 // 0x70 PCPU/TLS
- mov r26 = r12
- nop 0
- ;;
-}
-{ .mlx
- st8 [r27] = r26, 8 // 0x78 SP
- movl r25 = ia64_xtrace_mask
- ;;
-}
-{ .mmi
- ld8 r26 = [r25]
- ;;
- and r25 = r27, r26
- nop 0
- ;;
-}
-{ .mib
- mov ar.k3 = r25
- nop 0
- br.sptk b7
- ;;
-}
-END(ia64_xtrace_write)
-
-#else /* XTRACE */
-
-#define XTRACE_HOOK(offset)
-
- .section .ivt.text, "ax"
-
-#endif /* XTRACE */
-
-/*
- * exception_save: save interrupted state
- *
- * Arguments:
- * r16 address of bundle that contains the branch. The
- * return address will be the next bundle.
- * r17 the value to save as ifa in the trapframe. This
- * normally is cr.ifa, but some interruptions set
- * set cr.iim and not cr.ifa.
- *
- * Returns:
- * p15 interrupted from user stack
- * p14 interrupted from kernel stack
- * p13 interrupted from user backing store
- * p12 interrupted from kernel backing store
- * p11 interrupts were enabled
- * p10 interrupts were disabled
- */
-ENTRY_NOPROFILE(exception_save, 0)
-{ .mii
- mov r20=ar.unat
- extr.u r31=sp,61,3
- mov r18=pr
- ;;
-}
-{ .mmi
- cmp.le p14,p15=IA64_VM_MINKERN_REGION,r31
- ;;
-(p15) mov r23=ar.k7 // kernel memory stack
-(p14) mov r23=sp
- ;;
-}
-{ .mii
- mov r21=ar.rsc
- add r30=-SIZEOF_TRAPFRAME,r23
- ;;
- dep r30=0,r30,0,10
- ;;
-}
-{ .mmi
- mov ar.rsc=0
- mov r22=cr.iip
- addl r29=NTLBRT_SAVE,r0 // 22-bit restart token.
- ;;
-}
-
- /*
- * We have a 1KB aligned trapframe, pointed to by r30. We can't
- * reliably write to the trapframe using virtual addressing, due
- * to the fact that TC entries we depend on can be removed by:
- * 1. ptc.g instructions issued by other threads/cores/CPUs, or
- * 2. TC modifications in another thread on the same core.
- * When our TC entry gets removed, we get nested TLB faults and
- * since no state is saved, we can only deal with those when
- * explicitly coded and expected.
- * As such, we switch to physical addressing and account for the
- * fact that the tpa instruction can cause a nested TLB fault.
- * Since the data nested TLB fault does not preserve any state,
- * we have to be careful what we clobber. Consequently, we have
- * to be careful what we use here. Below a list of registers that
- * are considered alive:
- * r16,r17=arguments
- * r18=pr, r19=length, r20=unat, r21=rsc, r22=iip, r23=TOS
- * r29=restart token
- * r30=trapframe pointers
- * p14,p15=memory stack switch
- */
-exception_save_restart:
- tpa r24=r30 // Nested TLB fault possible
- sub r19=r23,r30
- nop 0
- ;;
-
- rsm psr.dt
- add r29=16,r19 // Clobber restart token
- mov r30=r24
- ;;
- srlz.d
- add r31=8,r24
- ;;
-
- // r18=pr, r19=length, r20=unat, r21=rsc, r22=iip, r23=TOS
- // r29=delta
-{ .mmi
- st8 [r30]=r19,16 // length
- st8 [r31]=r0,16 // flags
- ;;
-}
-{ .mmi
- st8.spill [r30]=sp,16 // sp
- st8 [r31]=r20,16 // unat
- sub sp=r23,r29
- ;;
-}
-{ .mmi
- mov r19=ar.rnat
- mov r20=ar.bspstore
- mov r23=rp
- ;;
-}
- // r18=pr, r19=rnat, r20=bspstore, r21=rsc, r22=iip, r23=rp
- // r24=pfs
-{ .mmi
- st8 [r30]=r23,16 // rp
- st8 [r31]=r18,16 // pr
- mov r24=ar.pfs
- ;;
-}
-{ .mmb
- st8 [r30]=r24,16 // pfs
- st8 [r31]=r20,16 // bspstore
- cover
- ;;
-}
-{ .mmi
- mov r18=ar.fpsr
- mov r23=cr.ipsr
- extr.u r24=r20,61,3
- ;;
-}
- // r18=fpsr, r19=rnat, r20=bspstore, r21=rsc, r22=iip, r23=ipsr
-{ .mmi
- st8 [r30]=r19,16 // rnat
- st8 [r31]=r0,16 // __spare
- cmp.le p12,p13=IA64_VM_MINKERN_REGION,r24
- ;;
-}
-{ .mmi
- st8.spill [r30]=r13,16 // tp
- st8 [r31]=r21,16 // rsc
- tbit.nz p11,p10=r23,14 // p11=interrupts enabled
- ;;
-}
-{ .mmi
-(p13) mov r21=ar.k6 // kernel register stack
- ;;
- st8 [r30]=r18,16 // fpsr
-(p13) dep r20=r20,r21,0,9 // align dirty registers
- ;;
-}
- // r19=rnat, r20=bspstore, r22=iip, r23=ipsr
-{ .mmi
- st8 [r31]=r23,16 // psr
-(p13) mov ar.bspstore=r20
- nop 0
- ;;
-}
-{ .mmi
-(p13) mov ar.rnat=r19
- mov r18=ar.bsp
- nop 0
- ;;
-}
-{ .mmi
- mov r19=cr.ifs
- st8.spill [r30]=gp,16 // gp
- sub r18=r18,r20
- ;;
-}
- // r18=ndirty, r19=ifs, r22=iip
-{ .mmi
- st8 [r31]=r18,16 // ndirty
- st8 [r30]=r19,16 // cfm
- nop 0
- ;;
-}
-{ .mmi
- mov r18=cr.isr
- st8 [r31]=r22,16 // iip
- add r29=16,r30
- ;;
-}
-{ .mmi
- st8 [r30]=r17,24 // ifa
- st8 [r31]=r18,24 // isr
- nop 0
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r30]=r2,16 // r2
- .mem.offset 8,0
- st8.spill [r31]=r3,16 // r3
- add r2=9*8,r29
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r30]=r8,16 // r8
- .mem.offset 8,0
- st8.spill [r31]=r9,16 // r9
- add r3=8,r2
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r30]=r10,16 // r10
- .mem.offset 8,0
- st8.spill [r31]=r11,16 // r11
- add r8=16,r16
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r30]=r14 // r14
- .mem.offset 8,0
- st8.spill [r31]=r15 // r15
- mov r9=r29
-}
-{ .mmb
- mov r10=ar.csd
- mov r11=ar.ssd
- bsw.1
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r2]=r16,16 // r16
- .mem.offset 8,0
- st8.spill [r3]=r17,16 // r17
- mov r14=b6
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r2]=r18,16 // r18
- .mem.offset 8,0
- st8.spill [r3]=r19,16 // r19
- mov r15=b7
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r2]=r20,16 // r20
- .mem.offset 8,0
- st8.spill [r3]=r21,16 // r21
- mov b7=r8
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r2]=r22,16 // r22
- .mem.offset 8,0
- st8.spill [r3]=r23,16 // r23
- ;;
-}
-
- .mem.offset 0,0
- st8.spill [r2]=r24,16 // r24
- .mem.offset 8,0
- st8.spill [r3]=r25,16 // r25
- ;;
- .mem.offset 0,0
- st8.spill [r2]=r26,16 // r26
- .mem.offset 8,0
- st8.spill [r3]=r27,16 // r27
- ;;
- .mem.offset 0,0
- st8.spill [r2]=r28,16 // r28
- .mem.offset 8,0
- st8.spill [r3]=r29,16 // r29
- ;;
- .mem.offset 0,0
- st8.spill [r2]=r30,16 // r30
- .mem.offset 8,0
- st8.spill [r3]=r31,16 // r31
- ;;
-
-{ .mmi
- st8 [r2]=r14,16 // b6
- mov r17=ar.unat
- nop 0
- ;;
-}
-{ .mmi
- st8 [r3]=r15,16 // b7
- mov r16=ar.ccv
- nop 0
- ;;
-}
-{ .mmi
- st8 [r2]=r16,16 // ccv
- st8 [r3]=r10,16 // csd
- nop 0
- ;;
-}
-{ .mmi
- st8 [r2]=r11,24 // ssd
- st8 [r9]=r17
- nop 0
- ;;
-}
-
- stf.spill [r3]=f6,32 // f6
- stf.spill [r2]=f7,32 // f7
- ;;
- stf.spill [r3]=f8,32 // f8
- stf.spill [r2]=f9,32 // f9
- ;;
- stf.spill [r3]=f10,32 // f10
- stf.spill [r2]=f11,32 // f11
- ;;
- stf.spill [r3]=f12,32 // f12
- stf.spill [r2]=f13,32 // f13
- ;;
- stf.spill [r3]=f14 // f14
- stf.spill [r2]=f15 // f15
- ;;
-{ .mmi
- mov ar.rsc=3
- mov r13=ar.k4
- nop 0
- ;;
-}
-{ .mlx
- ssm psr.dt|psr.ic|psr.dfh
- movl gp=__gp
- ;;
-}
-{ .mib
- srlz.d
- nop 0
- br.sptk b7
- ;;
-}
-END(exception_save)
-
-/*
- * exception_restore: restore interrupted state
- *
- * Arguments:
- * sp+16 trapframe pointer
- */
-ENTRY_NOPROFILE(exception_restore, 0)
-{ .mmi
- rsm psr.i
- add sp=16,sp
- nop 0
- ;;
-}
-
- // The next instruction can fault. Let it be...
- tpa r9=sp
- ;;
- rsm psr.dt|psr.ic
- add r8=SIZEOF_SPECIAL+16,r9
- ;;
- srlz.d
- add r2=SIZEOF_TRAPFRAME-16,r9
- add r3=SIZEOF_TRAPFRAME-32,r9
- ;;
-
-{ .mmi
- ldf.fill f15=[r2],-32 // f15
- ldf.fill f14=[r3],-32 // f14
- nop 0
- ;;
-}
-{ .mmi
- ldf.fill f13=[r2],-32 // f13
- ldf.fill f12=[r3],-32 // f12
- nop 0
- ;;
-}
-{ .mmi
- ldf.fill f11=[r2],-32 // f11
- ldf.fill f10=[r3],-32 // f10
- nop 0
- ;;
-}
-{ .mmi
- ldf.fill f9=[r2],-32 // f9
- ldf.fill f8=[r3],-32 // f8
- nop 0
- ;;
-}
-{ .mmi
- ldf.fill f7=[r2],-24 // f7
- ldf.fill f6=[r3],-16 // f6
- nop 0
- ;;
-}
-{ .mmi
- ld8 r8=[r8] // unat (after)
- ;;
- mov ar.unat=r8
- nop 0
- ;;
-}
-
- ld8 r10=[r2],-16 // ssd
- ld8 r11=[r3],-16 // csd
- ;;
- mov ar.ssd=r10
- mov ar.csd=r11
-
- ld8 r14=[r2],-16 // ccv
- ld8 r15=[r3],-16 // b7
- ;;
-
-{ .mmi
- mov ar.ccv=r14
- ld8 r8=[r2],-16 // b6
- mov b7=r15
- ;;
-}
-{ .mmi
- ld8.fill r31=[r3],-16 // r31
- ld8.fill r30=[r2],-16 // r30
- mov b6=r8
- ;;
-}
-
- ld8.fill r29=[r3],-16 // r29
- ld8.fill r28=[r2],-16 // r28
- ;;
- ld8.fill r27=[r3],-16 // r27
- ld8.fill r26=[r2],-16 // r26
- ;;
- ld8.fill r25=[r3],-16 // r25
- ld8.fill r24=[r2],-16 // r24
- ;;
- ld8.fill r23=[r3],-16 // r23
- ld8.fill r22=[r2],-16 // r22
- ;;
- ld8.fill r21=[r3],-16 // r21
- ld8.fill r20=[r2],-16 // r20
- ;;
- ld8.fill r19=[r3],-16 // r19
- ld8.fill r18=[r2],-16 // r18
- ;;
-
-{ .mmb
- ld8.fill r17=[r3],-16 // r17
- ld8.fill r16=[r2],-16 // r16
- bsw.0
- ;;
-}
-{ .mii
- ld8 r16=[r9] // tf_length
- add r31=16,r9
- add r30=24,r9
-}
-{ .mmi
- ld8.fill r15=[r3],-16 // r15
- ld8.fill r14=[r2],-16 // r14
- nop 0
- ;;
-}
-{ .mmi
- ld8.fill r11=[r3],-16 // r11
- ld8.fill r10=[r2],-16 // r10
- add r16=r16,sp // ar.k7
- ;;
-}
-{ .mmi
- ld8.fill r9=[r3],-16 // r9
- ld8.fill r8=[r2],-16 // r8
- nop 0
- ;;
-}
-{ .mmi
- ld8.fill r3=[r3] // r3
- ld8.fill r2=[r2] // r2
- nop 0
- ;;
-}
-
- ld8.fill sp=[r31],16 // sp
- ld8 r17=[r30],16 // unat
- ;;
- ld8 r29=[r31],16 // rp
- ld8 r18=[r30],16 // pr
- ;;
- ld8 r28=[r31],16 // pfs
- ld8 r20=[r30],24 // bspstore
- mov rp=r29
- ;;
- ld8 r21=[r31],24 // rnat
- mov ar.pfs=r28
- ;;
- ld8.fill r26=[r30],16 // tp
- ld8 r22=[r31],16 // rsc
- ;;
-
-{ .mmi
- ld8 r23=[r30],16 // fpsr
- ld8 r24=[r31],16 // psr
- extr.u r28=r20,61,3
- ;;
-}
-{ .mmi
- ld8.fill r1=[r30],16 // gp
- ld8 r27=[r31],16 // ndirty
- cmp.le p14,p15=IA64_VM_MINKERN_REGION,r28
- ;;
-}
-{ .mmi
- ld8 r25=[r30] // cfm
- ld8 r19=[r31] // ip
- nop 0
- ;;
-}
-{ .mii
- // Switch register stack
- alloc r30=ar.pfs,0,0,0,0 // discard current frame
- shl r31=r27,16 // value for ar.rsc
-(p15) mov r13=r26
- ;;
-}
- // The loadrs can fault if the backing store is not currently
- // mapped. We assured forward progress by getting everything we
- // need from the trapframe so that we don't care if the CPU
- // purges that translation when it needs to insert a new one for
- // the backing store.
-{ .mmi
- mov ar.rsc=r31 // setup for loadrs
- mov ar.k7=r16
- addl r29=NTLBRT_RESTORE,r0 // 22-bit restart token
- ;;
-}
-
- ssm psr.dt
- ;;
- srlz.d
- mov r16 = r25
-
-exception_restore_restart:
-{ .mmi
- mov r30=ar.bspstore
- ;;
- loadrs // load user regs
- mov r29=0 // Clobber restart token
- ;;
-}
-{ .mmi
- mov r31=ar.bspstore
- ;;
- mov ar.bspstore=r20
- dep r31=0,r31,0,13 // 8KB aligned
- ;;
-}
-{ .mmi
- mov cr.ifs=r16
- mov ar.k6=r31
- mov pr=r18,0x1ffff
- ;;
-}
-{ .mmi
- mov cr.iip=r19
- mov ar.unat=r17
- nop 0
- ;;
-}
-{ .mmi
- mov cr.ipsr=r24
- mov ar.rnat=r21
- nop 0
- ;;
-}
-{ .mmb
- mov ar.rsc=r22
- mov ar.fpsr=r23
- rfi
- ;;
-}
-END(exception_restore)
-
-/*
- * Call exception_save_regs to preserve the interrupted state in a
- * trapframe. Note that we don't use a call instruction because we
- * must be careful not to lose track of the RSE state. We then call
- * trap() with the value of _n_ as an argument to handle the
- * exception. We arrange for trap() to return to exception_restore
- * which will restore the interrupted state before executing an rfi to
- * resume it.
- */
-#define CALL(_func_, _n_, _ifa_) \
-{ .mib ; \
- mov r17=_ifa_ ; \
- mov r16=ip ; \
- br.sptk exception_save ;; \
-} ; \
-{ .mmi ; \
- alloc r15=ar.pfs,0,0,2,0 ;; \
-(p11) ssm psr.i ; \
- mov out0=_n_ ;; \
-} ; \
-{ .mib ; \
-(p11) srlz.d ; \
- add out1=16,sp ; \
- br.call.sptk rp=_func_ ;; \
-} ; \
-{ .mib ; \
- nop 0 ; \
- nop 0 ; \
- br.sptk exception_restore ;; \
-}
-
-#define IVT_ENTRY(name, offset) \
- .org ia64_vector_table + offset; \
- .global ivt_##name; \
- .proc ivt_##name; \
- .prologue; \
- .unwabi @svr4, 'I'; \
- .save rp, r0; \
- .body; \
-ivt_##name: \
- XTRACE_HOOK(offset)
-
-#define IVT_END(name) \
- .endp ivt_##name
-
-#ifdef COMPAT_FREEBSD32
-#define IA32_TRAP ia32_trap
-#else
-#define IA32_TRAP trap
-#endif
-
-/*
- * The IA64 Interrupt Vector Table (IVT) contains 20 slots with 64
- * bundles per vector and 48 slots with 16 bundles per vector.
- */
-
- .section .ivt, "ax"
-
- .align 32768
- .global ia64_vector_table
- .size ia64_vector_table, 32768
-ia64_vector_table:
-
-IVT_ENTRY(VHPT_Translation, 0x0000)
- CALL(trap, 0, cr.ifa)
-IVT_END(VHPT_Translation)
-
-IVT_ENTRY(Instruction_TLB, 0x0400)
- mov r16=cr.ifa
- mov r17=pr
- ;;
- thash r18=r16
- ttag r19=r16
- ;;
- add r21=16,r18 // tag
- add r20=24,r18 // collision chain
- ;;
- ld8 r21=[r21] // check VHPT tag
- ld8 r20=[r20] // bucket head
- ;;
- cmp.ne p15,p0=r21,r19
-(p15) br.dpnt.few 1f
- ;;
- ld8 r21=[r18] // read pte
- ;;
- itc.i r21 // insert pte
- mov pr=r17,0x1ffff
- ;;
- rfi // done
- ;;
-1: rsm psr.dt // turn off data translations
- dep r20=0,r20,61,3 // convert vhpt ptr to physical
- ;;
- srlz.d // serialize
- ld8 r20=[r20] // first entry
- ;;
-2: cmp.eq p15,p0=r0,r20 // done?
-(p15) br.cond.spnt.few 9f // bail if done
- ;;
- add r21=16,r20 // tag location
- ;;
- ld8 r21=[r21] // read tag
- ;;
- cmp.ne p15,p0=r21,r19 // compare tags
-(p15) br.cond.sptk.few 3f // if not, read next in chain
- ;;
- ld8 r21=[r20] // read pte
- mov r22=PTE_ACCESSED
- ;;
- or r21=r21,r22
- ;;
- st8 [r20]=r21,8
- ;;
- ld8 r22=[r20] // read rest of pte
- ;;
- dep r18=0,r18,61,3 // convert vhpt ptr to physical
- ;;
- add r20=16,r18 // address of tag
- ;;
- ld8.acq r23=[r20] // read old tag
- ;;
- dep r23=-1,r23,63,1 // set ti bit
- ;;
- st8.rel [r20]=r23 // store old tag + ti
- ;;
- mf // make sure everyone sees
- ;;
- st8 [r18]=r21,8 // store pte
- ;;
- st8 [r18]=r22,8
- ;;
- st8.rel [r18]=r19 // store new tag
- ;;
- itc.i r21 // and place in TLB
- ssm psr.dt
- ;;
- srlz.d
- mov pr=r17,0x1ffff // restore predicates
- rfi
- ;;
-3: add r20=24,r20 // next in chain
- ;;
- ld8 r20=[r20] // read chain
- br.sptk 2b // loop
- ;;
-9: ssm psr.dt
- mov pr=r17,0x1ffff // restore predicates
- ;;
- srlz.d
- ;;
- CALL(trap, 20, cr.ifa) // Page Not Present trap
-IVT_END(Instruction_TLB)
-
-IVT_ENTRY(Data_TLB, 0x0800)
- mov r16=cr.ifa
- mov r17=pr
- ;;
- thash r18=r16
- ttag r19=r16
- ;;
- add r21=16,r18 // tag
- add r20=24,r18 // collision chain
- ;;
- ld8 r21=[r21] // check VHPT tag
- ld8 r20=[r20] // bucket head
- ;;
- cmp.ne p15,p0=r21,r19
-(p15) br.dpnt.few 1f
- ;;
- ld8 r21=[r18] // read pte
- ;;
- itc.d r21 // insert pte
- mov pr=r17,0x1ffff
- ;;
- rfi // done
- ;;
-1: rsm psr.dt // turn off data translations
- dep r20=0,r20,61,3 // convert vhpt ptr to physical
- ;;
- srlz.d // serialize
- ld8 r20=[r20] // first entry
- ;;
-2: cmp.eq p15,p0=r0,r20 // done?
-(p15) br.cond.spnt.few 9f // bail if done
- ;;
- add r21=16,r20 // tag location
- ;;
- ld8 r21=[r21] // read tag
- ;;
- cmp.ne p15,p0=r21,r19 // compare tags
-(p15) br.cond.sptk.few 3f // if not, read next in chain
- ;;
- ld8 r21=[r20] // read pte
- mov r22=PTE_ACCESSED
- ;;
- or r21=r21,r22
- ;;
- st8 [r20]=r21,8
- ;;
- ld8 r22=[r20] // read rest of pte
- ;;
- dep r18=0,r18,61,3 // convert vhpt ptr to physical
- ;;
- add r20=16,r18 // address of tag
- ;;
- ld8.acq r23=[r20] // read old tag
- ;;
- dep r23=-1,r23,63,1 // set ti bit
- ;;
- st8.rel [r20]=r23 // store old tag + ti
- ;;
- mf // make sure everyone sees
- ;;
- st8 [r18]=r21,8 // store pte
- ;;
- st8 [r18]=r22,8
- ;;
- st8.rel [r18]=r19 // store new tag
- ;;
- itc.d r21 // and place in TLB
- ssm psr.dt
- ;;
- srlz.d
- mov pr=r17,0x1ffff // restore predicates
- rfi
- ;;
-3: add r20=24,r20 // next in chain
- ;;
- ld8 r20=[r20] // read chain
- br.sptk 2b // loop
- ;;
-9: ssm psr.dt
- mov pr=r17,0x1ffff // restore predicates
- ;;
- srlz.d
- ;;
- CALL(trap, 20, cr.ifa) // Page Not Present trap
-IVT_END(Data_TLB)
-
-IVT_ENTRY(Alternate_Instruction_TLB, 0x0c00)
- mov r16=cr.ifa // where did it happen
- mov r18=pr // save predicates
- ;;
- extr.u r17=r16,61,3 // get region number
- mov r19=PTE_PRESENT+PTE_ACCESSED+PTE_DIRTY+PTE_PL_KERN+PTE_AR_RWX
- ;;
- cmp.eq p13,p0=IA64_PBVM_RR,r17 // RR4?
-(p13) br.cond.sptk.few 4f
- ;;
- cmp.ge p13,p0=5,r17 // RR0-RR5?
- cmp.eq p14,p15=7,r17 // RR7?
-(p13) br.cond.spnt.few 9f
- ;;
-(p14) add r19=PTE_MA_WB,r19
-(p15) add r19=PTE_MA_UC,r19
- dep r17=0,r16,50,14 // clear bits above PPN
- ;;
-1: dep r16=r19,r17,0,12 // put pte bits in 0..11
- ;;
- itc.i r16
- mov pr=r18,0x1ffff // restore predicates
- ;;
- rfi
- ;;
-4:
- add r19=PTE_MA_WB,r19
- movl r17=IA64_PBVM_BASE
- ;;
- sub r17=r16,r17
- movl r16=IA64_PBVM_PGTBL
- ;;
- extr.u r17=r17,IA64_PBVM_PAGE_SHIFT,61-IA64_PBVM_PAGE_SHIFT
- ;;
- shladd r16=r17,3,r16
- ;;
- ld8 r17=[r16]
- br.sptk 1b
- ;;
-9: mov pr=r18,0x1ffff // restore predicates
- CALL(trap, 3, cr.ifa)
-IVT_END(Alternate_Instruction_TLB)
-
-IVT_ENTRY(Alternate_Data_TLB, 0x1000)
- mov r16=cr.ifa // where did it happen
- mov r18=pr // save predicates
- ;;
- extr.u r17=r16,61,3 // get region number
- mov r19=PTE_PRESENT+PTE_ACCESSED+PTE_DIRTY+PTE_PL_KERN+PTE_AR_RWX
- ;;
- cmp.eq p13,p0=IA64_PBVM_RR,r17 // RR4?
-(p13) br.cond.sptk.few 4f
- ;;
- cmp.ge p13,p0=5,r17 // RR0-RR5?
- cmp.eq p14,p15=7,r17 // RR7?
-(p13) br.cond.spnt.few 9f
- ;;
-(p14) add r19=PTE_MA_WB,r19
-(p15) add r19=PTE_MA_UC,r19
- dep r17=0,r16,50,14 // clear bits above PPN
- ;;
-1: dep r16=r19,r17,0,12 // put pte bits in 0..11
- ;;
- itc.d r16
- mov pr=r18,0x1ffff // restore predicates
- ;;
- rfi
- ;;
-4:
- add r19=PTE_MA_WB,r19
- movl r17=IA64_PBVM_BASE
- ;;
- sub r17=r16,r17
- movl r16=IA64_PBVM_PGTBL
- ;;
- extr.u r17=r17,IA64_PBVM_PAGE_SHIFT,61-IA64_PBVM_PAGE_SHIFT
- ;;
- shladd r16=r17,3,r16
- ;;
- ld8 r17=[r16]
- br.sptk 1b
- ;;
-9: mov pr=r18,0x1ffff // restore predicates
- CALL(trap, 4, cr.ifa)
-IVT_END(Alternate_Data_TLB)
-
-IVT_ENTRY(Data_Nested_TLB, 0x1400)
- // See exception_save_restart and exception_restore_restart for the
- // contexts that may cause a data nested TLB. We can only use the
- // banked general registers and predicates, but don't use:
- // p14 & p15 - Set in exception save
- // r16 & r17 - Arguments to exception save
- // r30 - Faulting address (modulo page size)
- // We assume r30 has the virtual addresses that relate to the data
- // nested TLB fault. The address does not have to be exact, as long
- // as it's in the same page. We use physical addressing to avoid
- // double nested faults. Since all virtual addresses we encounter
- // here are direct mapped region 7 addresses, we have no problem
- // constructing physical addresses.
-
-{ .mmi
- mov cr.ifa=r30
- mov r26=rr[r30]
- extr.u r27=r30,61,3
- ;;
-}
-{ .mii
- nop 0
- dep r26=0,r26,0,2
- cmp.eq p12,p13=7,r27
- ;;
-}
-{ .mii
- mov cr.itir=r26
-(p12) dep r28=0,r30,0,12
-(p13) extr.u r28=r30,3*PAGE_SHIFT-8, PAGE_SHIFT-3 // dir L0 index
- ;;
-}
-{ .mlx
-(p12) add r28=PTE_PRESENT+PTE_ACCESSED+PTE_DIRTY+PTE_PL_KERN+PTE_AR_RWX+PTE_MA_WB,r28
-(p13) movl r27=ia64_kptdir
- ;;
-}
-{ .mib
-(p13) ld8 r27=[r27]
-(p13) extr.u r26=r30,2*PAGE_SHIFT-5, PAGE_SHIFT-3 // dir L1 index
-(p12) br.cond.spnt.few 1f
- ;;
-}
-{ .mmi
- rsm psr.dt
- ;;
- srlz.d
- dep r27=0,r27,61,3
- ;;
-}
-{ .mmi
- shladd r27=r28,3,r27
- ;;
- ld8 r27=[r27] // dir L1 page
- extr.u r28=r30,PAGE_SHIFT,PAGE_SHIFT-5 // pte index
- ;;
-}
-{ .mii
- shladd r27=r26,3,r27
- shl r28=r28,5
- ;;
- dep r27=0,r27,61,3
- ;;
-}
- ld8 r27=[r27] // pte page
- ;;
- add r27=r28,r27
- ;;
- dep r27=0,r27,61,3
- ;;
- ld8 r28=[r27] // pte
- ;;
- or r28=PTE_DIRTY+PTE_ACCESSED,r28
- ;;
- st8 [r27]=r28
- ;;
- ssm psr.dt
- ;;
-1:
-{ .mmi
- itc.d r28
- ;;
- addl r26=NTLBRT_SAVE,r0
- addl r27=NTLBRT_RESTORE,r0
- ;;
-}
-{ .mmi
- srlz.d
- cmp.eq p12,p0=r29,r26
- cmp.eq p13,p0=r29,r27
- ;;
-}
-{ .mbb
- nop 0
-(p12) br.cond.sptk.few exception_save_restart
-(p13) br.cond.sptk.few exception_restore_restart
- ;;
-}
-
-{ .mlx
- mov r26=ar.bsp
- movl r29=kstack
- ;;
-}
-{ .mlx
- mov r28=sp
- movl r27=kstack_top
- ;;
-}
-{ .mmi
- add sp=-16,r27
- ;;
- mov r27=ar.bspstore
- nop 0
- ;;
-}
- mov ar.rsc=0
- dep r29=r27,r29,0,9
- ;;
- mov ar.bspstore=r29
- ;;
- CALL(trap, 5, r30)
-IVT_END(Data_Nested_TLB)
-
-IVT_ENTRY(Instruction_Key_Miss, 0x1800)
- CALL(trap, 6, cr.ifa)
-IVT_END(Instruction_Key_Miss)
-
-IVT_ENTRY(Data_Key_Miss, 0x1c00)
- CALL(trap, 7, cr.ifa)
-IVT_END(Data_Key_Miss)
-
-IVT_ENTRY(Dirty_Bit, 0x2000)
- mov r16=cr.ifa
- mov r17=pr
- ;;
- thash r18=r16
- ;;
- ttag r19=r16
- add r20=24,r18 // collision chain
- ;;
- ld8 r20=[r20] // bucket head
- ;;
- rsm psr.dt // turn off data translations
- dep r20=0,r20,61,3 // convert vhpt ptr to physical
- ;;
- srlz.d // serialize
- ld8 r20=[r20] // first entry
- ;;
-1: cmp.eq p15,p0=r0,r20 // done?
-(p15) br.cond.spnt.few 9f // bail if done
- ;;
- add r21=16,r20 // tag location
- ;;
- ld8 r21=[r21] // read tag
- ;;
- cmp.ne p15,p0=r21,r19 // compare tags
-(p15) br.cond.sptk.few 2f // if not, read next in chain
- ;;
- ld8 r21=[r20] // read pte
- mov r22=PTE_DIRTY+PTE_ACCESSED
- ;;
- or r21=r22,r21 // set dirty & access bit
- ;;
- st8 [r20]=r21,8 // store back
- ;;
- ld8 r22=[r20] // read rest of pte
- ;;
- dep r18=0,r18,61,3 // convert vhpt ptr to physical
- ;;
- add r20=16,r18 // address of tag
- ;;
- ld8.acq r23=[r20] // read old tag
- ;;
- dep r23=-1,r23,63,1 // set ti bit
- ;;
- st8.rel [r20]=r23 // store old tag + ti
- ;;
- mf // make sure everyone sees
- ;;
- st8 [r18]=r21,8 // store pte
- ;;
- st8 [r18]=r22,8
- ;;
- st8.rel [r18]=r19 // store new tag
- ;;
- itc.d r21 // and place in TLB
- ssm psr.dt
- ;;
- srlz.d
- mov pr=r17,0x1ffff // restore predicates
- rfi
- ;;
-2: add r20=24,r20 // next in chain
- ;;
- ld8 r20=[r20] // read chain
- br.sptk 1b // loop
- ;;
-9: ssm psr.dt
- mov pr=r17,0x1ffff // restore predicates
- ;;
- srlz.d
- ;;
- CALL(trap, 8, cr.ifa) // die horribly
-IVT_END(Dirty_Bit)
-
-IVT_ENTRY(Instruction_Access_Bit, 0x2400)
- mov r16=cr.ifa
- mov r17=pr
- ;;
- thash r18=r16
- ;;
- ttag r19=r16
- add r20=24,r18 // collision chain
- ;;
- ld8 r20=[r20] // bucket head
- ;;
- rsm psr.dt // turn off data translations
- dep r20=0,r20,61,3 // convert vhpt ptr to physical
- ;;
- srlz.d // serialize
- ld8 r20=[r20] // first entry
- ;;
-1: cmp.eq p15,p0=r0,r20 // done?
-(p15) br.cond.spnt.few 9f // bail if done
- ;;
- add r21=16,r20 // tag location
- ;;
- ld8 r21=[r21] // read tag
- ;;
- cmp.ne p15,p0=r21,r19 // compare tags
-(p15) br.cond.sptk.few 2f // if not, read next in chain
- ;;
- ld8 r21=[r20] // read pte
- mov r22=PTE_ACCESSED
- ;;
- or r21=r22,r21 // set accessed bit
- ;;
- st8 [r20]=r21,8 // store back
- ;;
- ld8 r22=[r20] // read rest of pte
- ;;
- dep r18=0,r18,61,3 // convert vhpt ptr to physical
- ;;
- add r20=16,r18 // address of tag
- ;;
- ld8.acq r23=[r20] // read old tag
- ;;
- dep r23=-1,r23,63,1 // set ti bit
- ;;
- st8.rel [r20]=r23 // store old tag + ti
- ;;
- mf // make sure everyone sees
- ;;
- st8 [r18]=r21,8 // store pte
- ;;
- st8 [r18]=r22,8
- ;;
- st8.rel [r18]=r19 // store new tag
- ;;
- itc.i r21 // and place in TLB
- ssm psr.dt
- ;;
- srlz.d
- mov pr=r17,0x1ffff // restore predicates
- rfi // walker will retry the access
- ;;
-2: add r20=24,r20 // next in chain
- ;;
- ld8 r20=[r20] // read chain
- br.sptk 1b // loop
- ;;
-9: ssm psr.dt
- mov pr=r17,0x1ffff // restore predicates
- ;;
- srlz.d
- ;;
- CALL(trap, 9, cr.ifa)
-IVT_END(Instruction_Access_Bit)
-
-IVT_ENTRY(Data_Access_Bit, 0x2800)
- mov r16=cr.ifa
- mov r17=pr
- ;;
- thash r18=r16
- ;;
- ttag r19=r16
- add r20=24,r18 // collision chain
- ;;
- ld8 r20=[r20] // bucket head
- ;;
- rsm psr.dt // turn off data translations
- dep r20=0,r20,61,3 // convert vhpt ptr to physical
- ;;
- srlz.d // serialize
- ld8 r20=[r20] // first entry
- ;;
-1: cmp.eq p15,p0=r0,r20 // done?
-(p15) br.cond.spnt.few 9f // bail if done
- ;;
- add r21=16,r20 // tag location
- ;;
- ld8 r21=[r21] // read tag
- ;;
- cmp.ne p15,p0=r21,r19 // compare tags
-(p15) br.cond.sptk.few 2f // if not, read next in chain
- ;;
- ld8 r21=[r20] // read pte
- mov r22=PTE_ACCESSED
- ;;
- or r21=r22,r21 // set accessed bit
- ;;
- st8 [r20]=r21,8 // store back
- ;;
- ld8 r22=[r20] // read rest of pte
- ;;
- dep r18=0,r18,61,3 // convert vhpt ptr to physical
- ;;
- add r20=16,r18 // address of tag
- ;;
- ld8.acq r23=[r20] // read old tag
- ;;
- dep r23=-1,r23,63,1 // set ti bit
- ;;
- st8.rel [r20]=r23 // store old tag + ti
- ;;
- mf // make sure everyone sees
- ;;
- st8 [r18]=r21,8 // store pte
- ;;
- st8 [r18]=r22,8
- ;;
- st8.rel [r18]=r19 // store new tag
- ;;
- itc.d r21 // and place in TLB
- ssm psr.dt
- ;;
- srlz.d
- mov pr=r17,0x1ffff // restore predicates
- rfi // walker will retry the access
- ;;
-2: add r20=24,r20 // next in chain
- ;;
- ld8 r20=[r20] // read chain
- br.sptk 1b // loop
- ;;
-9: ssm psr.dt
- mov pr=r17,0x1ffff // restore predicates
- ;;
- srlz.d
- ;;
- CALL(trap, 10, cr.ifa)
-IVT_END(Data_Access_Bit)
-
-IVT_ENTRY(Break_Instruction, 0x2c00)
-{ .mib
- mov r17=cr.iim
- mov r16=ip
- br.sptk exception_save
- ;;
-}
-{ .mmi
- alloc r15=ar.pfs,0,0,2,0
- ;;
-(p11) ssm psr.i
- mov out0=11
- ;;
-}
-{ .mmi
- flushrs
- ;;
-(p11) srlz.d
- add out1=16,sp
-}
-{ .mib
- nop 0
- nop 0
- br.call.sptk rp=trap
- ;;
-}
-{ .mib
- nop 0
- nop 0
- br.sptk exception_restore
- ;;
-}
-IVT_END(Break_Instruction)
-
-IVT_ENTRY(External_Interrupt, 0x3000)
-{ .mib
- mov r17=0
- mov r16=ip
- br.sptk exception_save
- ;;
-}
-{ .mmi
- alloc r15=ar.pfs,0,0,1,0
- nop 0
- nop 0
- ;;
-}
-{ .mib
- add out0=16,sp
- nop 0
- br.call.sptk rp=ia64_handle_intr
- ;;
-}
-{ .mib
- nop 0
- nop 0
- br.sptk exception_restore
- ;;
-}
-IVT_END(External_Interrupt)
-
-IVT_ENTRY(Reserved_3400, 0x3400)
- CALL(trap, 13, cr.ifa)
-IVT_END(Reserved_3400)
-
-IVT_ENTRY(Reserved_3800, 0x3800)
- CALL(trap, 14, cr.ifa)
-IVT_END(Reserved_3800)
-
-IVT_ENTRY(Reserved_3c00, 0x3c00)
- CALL(trap, 15, cr.ifa)
-IVT_END(Reserved_3c00)
-
-IVT_ENTRY(Reserved_4000, 0x4000)
- CALL(trap, 16, cr.ifa)
-IVT_END(Reserved_4000)
-
-IVT_ENTRY(Reserved_4400, 0x4400)
- CALL(trap, 17, cr.ifa)
-IVT_END(Reserved_4400)
-
-IVT_ENTRY(Reserved_4800, 0x4800)
- CALL(trap, 18, cr.ifa)
-IVT_END(Reserved_4800)
-
-IVT_ENTRY(Reserved_4c00, 0x4c00)
- CALL(trap, 19, cr.ifa)
-IVT_END(Reserved_4c00)
-
-IVT_ENTRY(Page_Not_Present, 0x5000)
- CALL(trap, 20, cr.ifa)
-IVT_END(Page_Not_Present)
-
-IVT_ENTRY(Key_Permission, 0x5100)
- CALL(trap, 21, cr.ifa)
-IVT_END(Key_Permission)
-
-IVT_ENTRY(Instruction_Access_Rights, 0x5200)
- CALL(trap, 22, cr.ifa)
-IVT_END(Instruction_Access_Rights)
-
-IVT_ENTRY(Data_Access_Rights, 0x5300)
- CALL(trap, 23, cr.ifa)
-IVT_END(Data_Access_Rights)
-
-IVT_ENTRY(General_Exception, 0x5400)
- CALL(trap, 24, cr.ifa)
-IVT_END(General_Exception)
-
-IVT_ENTRY(Disabled_FP_Register, 0x5500)
- CALL(trap, 25, cr.ifa)
-IVT_END(Disabled_FP_Register)
-
-IVT_ENTRY(NaT_Consumption, 0x5600)
- CALL(trap, 26, cr.ifa)
-IVT_END(NaT_Consumption)
-
-IVT_ENTRY(Speculation, 0x5700)
- CALL(trap, 27, cr.iim)
-IVT_END(Speculation)
-
-IVT_ENTRY(Reserved_5800, 0x5800)
- CALL(trap, 28, cr.ifa)
-IVT_END(Reserved_5800)
-
-IVT_ENTRY(Debug, 0x5900)
- CALL(trap, 29, cr.ifa)
-IVT_END(Debug)
-
-IVT_ENTRY(Unaligned_Reference, 0x5a00)
- CALL(trap, 30, cr.ifa)
-IVT_END(Unaligned_Reference)
-
-IVT_ENTRY(Unsupported_Data_Reference, 0x5b00)
- CALL(trap, 31, cr.ifa)
-IVT_END(Unsupported_Data_Reference)
-
-IVT_ENTRY(Floating_Point_Fault, 0x5c00)
- CALL(trap, 32, cr.ifa)
-IVT_END(Floating_Point_Fault)
-
-IVT_ENTRY(Floating_Point_Trap, 0x5d00)
- CALL(trap, 33, cr.ifa)
-IVT_END(Floating_Point_Trap)
-
-IVT_ENTRY(Lower_Privilege_Transfer_Trap, 0x5e00)
- CALL(trap, 34, cr.ifa)
-IVT_END(Lower_Privilege_Transfer_Trap)
-
-IVT_ENTRY(Taken_Branch_Trap, 0x5f00)
- CALL(trap, 35, cr.ifa)
-IVT_END(Taken_Branch_Trap)
-
-IVT_ENTRY(Single_Step_Trap, 0x6000)
- CALL(trap, 36, cr.ifa)
-IVT_END(Single_Step_Trap)
-
-IVT_ENTRY(Reserved_6100, 0x6100)
- CALL(trap, 37, cr.ifa)
-IVT_END(Reserved_6100)
-
-IVT_ENTRY(Reserved_6200, 0x6200)
- CALL(trap, 38, cr.ifa)
-IVT_END(Reserved_6200)
-
-IVT_ENTRY(Reserved_6300, 0x6300)
- CALL(trap, 39, cr.ifa)
-IVT_END(Reserved_6300)
-
-IVT_ENTRY(Reserved_6400, 0x6400)
- CALL(trap, 40, cr.ifa)
-IVT_END(Reserved_6400)
-
-IVT_ENTRY(Reserved_6500, 0x6500)
- CALL(trap, 41, cr.ifa)
-IVT_END(Reserved_6500)
-
-IVT_ENTRY(Reserved_6600, 0x6600)
- CALL(trap, 42, cr.ifa)
-IVT_END(Reserved_6600)
-
-IVT_ENTRY(Reserved_6700, 0x6700)
- CALL(trap, 43, cr.ifa)
-IVT_END(Reserved_6700)
-
-IVT_ENTRY(Reserved_6800, 0x6800)
- CALL(trap, 44, cr.ifa)
-IVT_END(Reserved_6800)
-
-IVT_ENTRY(IA_32_Exception, 0x6900)
- CALL(IA32_TRAP, 45, cr.ifa)
-IVT_END(IA_32_Exception)
-
-IVT_ENTRY(IA_32_Intercept, 0x6a00)
- CALL(IA32_TRAP, 46, cr.iim)
-IVT_END(IA_32_Intercept)
-
-IVT_ENTRY(IA_32_Interrupt, 0x6b00)
- CALL(IA32_TRAP, 47, cr.ifa)
-IVT_END(IA_32_Interrupt)
-
-IVT_ENTRY(Reserved_6c00, 0x6c00)
- CALL(trap, 48, cr.ifa)
-IVT_END(Reserved_6c00)
-
-IVT_ENTRY(Reserved_6d00, 0x6d00)
- CALL(trap, 49, cr.ifa)
-IVT_END(Reserved_6d00)
-
-IVT_ENTRY(Reserved_6e00, 0x6e00)
- CALL(trap, 50, cr.ifa)
-IVT_END(Reserved_6e00)
-
-IVT_ENTRY(Reserved_6f00, 0x6f00)
- CALL(trap, 51, cr.ifa)
-IVT_END(Reserved_6f00)
-
-IVT_ENTRY(Reserved_7000, 0x7000)
- CALL(trap, 52, cr.ifa)
-IVT_END(Reserved_7000)
-
-IVT_ENTRY(Reserved_7100, 0x7100)
- CALL(trap, 53, cr.ifa)
-IVT_END(Reserved_7100)
-
-IVT_ENTRY(Reserved_7200, 0x7200)
- CALL(trap, 54, cr.ifa)
-IVT_END(Reserved_7200)
-
-IVT_ENTRY(Reserved_7300, 0x7300)
- CALL(trap, 55, cr.ifa)
-IVT_END(Reserved_7300)
-
-IVT_ENTRY(Reserved_7400, 0x7400)
- CALL(trap, 56, cr.ifa)
-IVT_END(Reserved_7400)
-
-IVT_ENTRY(Reserved_7500, 0x7500)
- CALL(trap, 57, cr.ifa)
-IVT_END(Reserved_7500)
-
-IVT_ENTRY(Reserved_7600, 0x7600)
- CALL(trap, 58, cr.ifa)
-IVT_END(Reserved_7600)
-
-IVT_ENTRY(Reserved_7700, 0x7700)
- CALL(trap, 59, cr.ifa)
-IVT_END(Reserved_7700)
-
-IVT_ENTRY(Reserved_7800, 0x7800)
- CALL(trap, 60, cr.ifa)
-IVT_END(Reserved_7800)
-
-IVT_ENTRY(Reserved_7900, 0x7900)
- CALL(trap, 61, cr.ifa)
-IVT_END(Reserved_7900)
-
-IVT_ENTRY(Reserved_7a00, 0x7a00)
- CALL(trap, 62, cr.ifa)
-IVT_END(Reserved_7a00)
-
-IVT_ENTRY(Reserved_7b00, 0x7b00)
- CALL(trap, 63, cr.ifa)
-IVT_END(Reserved_7b00)
-
-IVT_ENTRY(Reserved_7c00, 0x7c00)
- CALL(trap, 64, cr.ifa)
-IVT_END(Reserved_7c00)
-
-IVT_ENTRY(Reserved_7d00, 0x7d00)
- CALL(trap, 65, cr.ifa)
-IVT_END(Reserved_7d00)
-
-IVT_ENTRY(Reserved_7e00, 0x7e00)
- CALL(trap, 66, cr.ifa)
-IVT_END(Reserved_7e00)
-
-IVT_ENTRY(Reserved_7f00, 0x7f00)
- CALL(trap, 67, cr.ifa)
-IVT_END(Reserved_7f00)
diff --git a/sys/ia64/ia64/gdb_machdep.c b/sys/ia64/ia64/gdb_machdep.c
deleted file mode 100644
index 54d27d9..0000000
--- a/sys/ia64/ia64/gdb_machdep.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*-
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHORS ``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 AUTHORS 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kdb.h>
-#include <sys/kernel.h>
-#include <sys/proc.h>
-#include <sys/signal.h>
-
-#include <machine/gdb_machdep.h>
-#include <machine/md_var.h>
-#include <machine/pcb.h>
-#include <machine/reg.h>
-
-#include <gdb/gdb.h>
-#include <gdb/gdb_int.h>
-
-void *
-gdb_cpu_getreg(int regnum, size_t *regsz)
-{
- static uint64_t synth;
- uint64_t cfm;
-
- *regsz = gdb_cpu_regsz(regnum);
- switch (regnum) {
- /* Registers 0-127: general registers. */
- case 1: return (&kdb_thrctx->pcb_special.gp);
- case 4: return (&kdb_thrctx->pcb_preserved.gr4);
- case 5: return (&kdb_thrctx->pcb_preserved.gr5);
- case 6: return (&kdb_thrctx->pcb_preserved.gr6);
- case 7: return (&kdb_thrctx->pcb_preserved.gr7);
- case 12: return (&kdb_thrctx->pcb_special.sp);
- case 13: return (&kdb_thrctx->pcb_special.tp);
- /* Registers 128-255: floating-point registers. */
- case 130: return (&kdb_thrctx->pcb_preserved_fp.fr2);
- case 131: return (&kdb_thrctx->pcb_preserved_fp.fr3);
- case 132: return (&kdb_thrctx->pcb_preserved_fp.fr4);
- case 133: return (&kdb_thrctx->pcb_preserved_fp.fr5);
- case 144: return (&kdb_thrctx->pcb_preserved_fp.fr16);
- case 145: return (&kdb_thrctx->pcb_preserved_fp.fr17);
- case 146: return (&kdb_thrctx->pcb_preserved_fp.fr18);
- case 147: return (&kdb_thrctx->pcb_preserved_fp.fr19);
- case 148: return (&kdb_thrctx->pcb_preserved_fp.fr20);
- case 149: return (&kdb_thrctx->pcb_preserved_fp.fr21);
- case 150: return (&kdb_thrctx->pcb_preserved_fp.fr22);
- case 151: return (&kdb_thrctx->pcb_preserved_fp.fr23);
- case 152: return (&kdb_thrctx->pcb_preserved_fp.fr24);
- case 153: return (&kdb_thrctx->pcb_preserved_fp.fr25);
- case 154: return (&kdb_thrctx->pcb_preserved_fp.fr26);
- case 155: return (&kdb_thrctx->pcb_preserved_fp.fr27);
- case 156: return (&kdb_thrctx->pcb_preserved_fp.fr28);
- case 157: return (&kdb_thrctx->pcb_preserved_fp.fr29);
- case 158: return (&kdb_thrctx->pcb_preserved_fp.fr30);
- case 159: return (&kdb_thrctx->pcb_preserved_fp.fr31);
- /* Registers 320-327: branch registers. */
- case 320:
- if (kdb_thrctx->pcb_special.__spare == ~0UL)
- return (&kdb_thrctx->pcb_special.rp);
- break;
- case 321: return (&kdb_thrctx->pcb_preserved.br1);
- case 322: return (&kdb_thrctx->pcb_preserved.br2);
- case 323: return (&kdb_thrctx->pcb_preserved.br3);
- case 324: return (&kdb_thrctx->pcb_preserved.br4);
- case 325: return (&kdb_thrctx->pcb_preserved.br5);
- /* Registers 328-333: misc. other registers. */
- case 330: return (&kdb_thrctx->pcb_special.pr);
- case 331:
- if (kdb_thrctx->pcb_special.__spare == ~0UL) {
- synth = kdb_thrctx->pcb_special.iip;
- synth += (kdb_thrctx->pcb_special.psr >> 41) & 3;
- return (&synth);
- }
- return (&kdb_thrctx->pcb_special.rp);
- case 333:
- if (kdb_thrctx->pcb_special.__spare == ~0UL)
- return (&kdb_thrctx->pcb_special.cfm);
- return (&kdb_thrctx->pcb_special.pfs);
- /* Registers 334-461: application registers. */
- case 350: return (&kdb_thrctx->pcb_special.rsc);
- case 351: /* bsp */
- case 352: /* bspstore. */
- synth = kdb_thrctx->pcb_special.bspstore;
- if (kdb_thrctx->pcb_special.__spare == ~0UL) {
- synth += kdb_thrctx->pcb_special.ndirty;
- } else {
- cfm = kdb_thrctx->pcb_special.pfs;
- synth = ia64_bsp_adjust(synth,
- IA64_CFM_SOF(cfm) - IA64_CFM_SOL(cfm));
- }
- return (&synth);
- case 353: return (&kdb_thrctx->pcb_special.rnat);
- case 370: return (&kdb_thrctx->pcb_special.unat);
- case 374: return (&kdb_thrctx->pcb_special.fpsr);
- case 398:
- if (kdb_thrctx->pcb_special.__spare == ~0UL)
- return (&kdb_thrctx->pcb_special.pfs);
- break;
- case 399: return (&kdb_thrctx->pcb_preserved.lc);
- }
- return (NULL);
-}
-
-void
-gdb_cpu_setreg(int regnum, void *val)
-{
-
- switch (regnum) {
- case GDB_REG_PC: break;
- }
-}
-
-int
-gdb_cpu_signal(int vector, int dummy __unused)
-{
-
- if (vector == IA64_VEC_BREAK || vector == IA64_VEC_SINGLE_STEP_TRAP)
- return (SIGTRAP);
- /* Add 100 so GDB won't translate the vector into signal names. */
- return (vector + 100);
-}
-
-int
-gdb_cpu_query(void)
-{
-#if 0
- uint64_t bspstore, *kstack;
-#endif
- uintmax_t slot;
-
- if (!gdb_rx_equal("Part:dirty:read::"))
- return (0);
-
- if (gdb_rx_varhex(&slot) < 0) {
- gdb_tx_err(EINVAL);
- return (-1);
- }
-
- gdb_tx_err(EINVAL);
- return (-1);
-
-#if 0
- /* slot is unsigned. No need to test for negative values. */
- if (slot >= (kdb_frame->tf_special.ndirty >> 3)) {
- return (-1);
- }
-
- /*
- * If the trapframe describes a kernel entry, bspstore holds
- * the address of the user backing store. Calculate the right
- * kernel stack address. See also ptrace_machdep().
- */
- bspstore = kdb_frame->tf_special.bspstore;
- kstack = (bspstore >= VM_MAXUSER_ADDRESS) ? (uint64_t*)bspstore :
- (uint64_t*)(kdb_thread->td_kstack + (bspstore & 0x1ffUL));
- gdb_tx_begin('\0');
- gdb_tx_mem((void*)(kstack + slot), 8);
- gdb_tx_end();
- return (1);
-#endif
-}
diff --git a/sys/ia64/ia64/genassym.c b/sys/ia64/ia64/genassym.c
deleted file mode 100644
index 10ba5ab..0000000
--- a/sys/ia64/ia64/genassym.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-
- * Copyright (c) 1982, 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * $FreeBSD$
- */
-
-#include "opt_compat.h"
-#include "opt_kstack_pages.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/assym.h>
-#include <sys/proc.h>
-#include <sys/bio.h>
-#include <sys/buf.h>
-#include <sys/errno.h>
-#include <sys/proc.h>
-#include <sys/mount.h>
-#include <sys/socket.h>
-#include <sys/resource.h>
-#include <sys/resourcevar.h>
-#include <sys/ucontext.h>
-#include <machine/frame.h>
-#include <machine/elf.h>
-#include <machine/pal.h>
-#include <machine/pcb.h>
-#include <sys/vmmeter.h>
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/pmap.h>
-#include <vm/vm_map.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-#ifdef COMPAT_FREEBSD32
-ASSYM(COMPAT_FREEBSD32, COMPAT_FREEBSD32);
-#endif
-
-ASSYM(DT_NULL, DT_NULL);
-ASSYM(DT_RELA, DT_RELA);
-ASSYM(DT_RELAENT, DT_RELAENT);
-ASSYM(DT_RELASZ, DT_RELASZ);
-ASSYM(DT_SYMTAB, DT_SYMTAB);
-ASSYM(DT_SYMENT, DT_SYMENT);
-
-ASSYM(EFAULT, EFAULT);
-ASSYM(ENAMETOOLONG, ENAMETOOLONG);
-ASSYM(ERESTART, ERESTART);
-
-ASSYM(FRAME_SYSCALL, FRAME_SYSCALL);
-
-ASSYM(IA64_PBVM_BASE, IA64_PBVM_BASE);
-ASSYM(IA64_PBVM_PAGE_SHIFT, IA64_PBVM_PAGE_SHIFT);
-ASSYM(IA64_PBVM_PGTBL, IA64_PBVM_PGTBL);
-ASSYM(IA64_PBVM_RR, IA64_PBVM_RR);
-
-ASSYM(IA64_VM_MINKERN_REGION, IA64_VM_MINKERN_REGION);
-
-ASSYM(KSTACK_PAGES, KSTACK_PAGES);
-
-ASSYM(MC_PRESERVED, offsetof(mcontext_t, mc_preserved));
-ASSYM(MC_PRESERVED_FP, offsetof(mcontext_t, mc_preserved_fp));
-ASSYM(MC_SPECIAL, offsetof(mcontext_t, mc_special));
-ASSYM(MC_SPECIAL_BSPSTORE, offsetof(mcontext_t, mc_special.bspstore));
-ASSYM(MC_SPECIAL_RNAT, offsetof(mcontext_t, mc_special.rnat));
-
-ASSYM(PAGE_SHIFT, PAGE_SHIFT);
-ASSYM(PAGE_SIZE, PAGE_SIZE);
-
-ASSYM(PC_CURRENT_PMAP, offsetof(struct pcpu, pc_md.current_pmap));
-ASSYM(PC_IDLETHREAD, offsetof(struct pcpu, pc_idlethread));
-
-ASSYM(PCB_CURRENT_PMAP, offsetof(struct pcb, pcb_current_pmap));
-ASSYM(PCB_ONFAULT, offsetof(struct pcb, pcb_onfault));
-ASSYM(PCB_SPECIAL_RP, offsetof(struct pcb, pcb_special.rp));
-
-ASSYM(R_IA_64_DIR64LSB, R_IA_64_DIR64LSB);
-ASSYM(R_IA_64_FPTR64LSB, R_IA_64_FPTR64LSB);
-ASSYM(R_IA_64_NONE, R_IA_64_NONE);
-ASSYM(R_IA_64_REL64LSB, R_IA_64_REL64LSB);
-
-ASSYM(SIZEOF_PCB, sizeof(struct pcb));
-ASSYM(SIZEOF_SPECIAL, sizeof(struct _special));
-ASSYM(SIZEOF_TRAPFRAME, sizeof(struct trapframe));
-
-ASSYM(TD_FLAGS, offsetof(struct thread, td_flags));
-ASSYM(TD_KSTACK, offsetof(struct thread, td_kstack));
-ASSYM(TD_PCB, offsetof(struct thread, td_pcb));
-
-ASSYM(TDF_ASTPENDING, TDF_ASTPENDING);
-ASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED);
-
-ASSYM(UC_MCONTEXT, offsetof(ucontext_t, uc_mcontext));
-
-ASSYM(VM_MAXUSER_ADDRESS, VM_MAXUSER_ADDRESS);
diff --git a/sys/ia64/ia64/highfp.c b/sys/ia64/ia64/highfp.c
deleted file mode 100644
index f18773b..0000000
--- a/sys/ia64/ia64/highfp.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*-
- * Copyright (c) 2009 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/proc.h>
-
-#include <machine/frame.h>
-#include <machine/md_var.h>
-#include <machine/smp.h>
-
-static struct mtx ia64_highfp_mtx;
-
-static void
-ia64_highfp_init(void *_)
-{
- mtx_init(&ia64_highfp_mtx, "High FP lock", NULL, MTX_SPIN);
-}
-SYSINIT(ia64_highfp_init, SI_SUB_LOCK, SI_ORDER_ANY, ia64_highfp_init, NULL);
-
-#ifdef SMP
-static int
-ia64_highfp_ipi(struct pcpu *cpu)
-{
- int error;
-
- ipi_send(cpu, ia64_ipi_highfp);
- error = msleep_spin(&cpu->pc_fpcurthread, &ia64_highfp_mtx,
- "High FP", 0);
- return (error);
-}
-#endif
-
-int
-ia64_highfp_drop(struct thread *td)
-{
- struct pcb *pcb;
- struct pcpu *cpu;
-
- pcb = td->td_pcb;
-
- mtx_lock_spin(&ia64_highfp_mtx);
- cpu = pcb->pcb_fpcpu;
- if (cpu != NULL) {
- KASSERT(cpu->pc_fpcurthread == td,
- ("cpu->pc_fpcurthread != td"));
- td->td_frame->tf_special.psr |= IA64_PSR_DFH;
- pcb->pcb_fpcpu = NULL;
- cpu->pc_fpcurthread = NULL;
- }
- mtx_unlock_spin(&ia64_highfp_mtx);
-
- return ((cpu != NULL) ? 1 : 0);
-}
-
-int
-ia64_highfp_enable(struct thread *td, struct trapframe *tf)
-{
- struct pcb *pcb;
- struct pcpu *cpu;
- struct thread *td1;
-
- pcb = td->td_pcb;
-
- mtx_lock_spin(&ia64_highfp_mtx);
- cpu = pcb->pcb_fpcpu;
-#ifdef SMP
- if (cpu != NULL && cpu != pcpup) {
- KASSERT(cpu->pc_fpcurthread == td,
- ("cpu->pc_fpcurthread != td"));
- ia64_highfp_ipi(cpu);
- }
-#endif
- td1 = PCPU_GET(fpcurthread);
- if (td1 != NULL && td1 != td) {
- KASSERT(td1->td_pcb->pcb_fpcpu == pcpup,
- ("td1->td_pcb->pcb_fpcpu != pcpup"));
- save_high_fp(&td1->td_pcb->pcb_high_fp);
- td1->td_frame->tf_special.psr |= IA64_PSR_DFH;
- td1->td_pcb->pcb_fpcpu = NULL;
- PCPU_SET(fpcurthread, NULL);
- td1 = NULL;
- }
- if (td1 == NULL) {
- KASSERT(pcb->pcb_fpcpu == NULL, ("pcb->pcb_fpcpu != NULL"));
- KASSERT(PCPU_GET(fpcurthread) == NULL,
- ("PCPU_GET(fpcurthread) != NULL"));
- restore_high_fp(&pcb->pcb_high_fp);
- PCPU_SET(fpcurthread, td);
- pcb->pcb_fpcpu = pcpup;
- tf->tf_special.psr &= ~IA64_PSR_MFH;
- }
- tf->tf_special.psr &= ~IA64_PSR_DFH;
- mtx_unlock_spin(&ia64_highfp_mtx);
-
- return ((td1 != NULL) ? 1 : 0);
-}
-
-int
-ia64_highfp_save(struct thread *td)
-{
- struct pcb *pcb;
- struct pcpu *cpu;
-
- pcb = td->td_pcb;
-
- mtx_lock_spin(&ia64_highfp_mtx);
- cpu = pcb->pcb_fpcpu;
-#ifdef SMP
- if (cpu != NULL && cpu != pcpup) {
- KASSERT(cpu->pc_fpcurthread == td,
- ("cpu->pc_fpcurthread != td"));
- ia64_highfp_ipi(cpu);
- } else
-#endif
- if (cpu != NULL) {
- KASSERT(cpu->pc_fpcurthread == td,
- ("cpu->pc_fpcurthread != td"));
- save_high_fp(&pcb->pcb_high_fp);
- td->td_frame->tf_special.psr |= IA64_PSR_DFH;
- pcb->pcb_fpcpu = NULL;
- cpu->pc_fpcurthread = NULL;
- }
- mtx_unlock_spin(&ia64_highfp_mtx);
-
- return ((cpu != NULL) ? 1 : 0);
-}
-
-#ifdef SMP
-int
-ia64_highfp_save_ipi(void)
-{
- struct thread *td;
-
- mtx_lock_spin(&ia64_highfp_mtx);
- td = PCPU_GET(fpcurthread);
- if (td != NULL) {
- KASSERT(td->td_pcb->pcb_fpcpu == pcpup,
- ("td->td_pcb->pcb_fpcpu != pcpup"));
- save_high_fp(&td->td_pcb->pcb_high_fp);
- td->td_frame->tf_special.psr |= IA64_PSR_DFH;
- td->td_pcb->pcb_fpcpu = NULL;
- PCPU_SET(fpcurthread, NULL);
- }
- mtx_unlock_spin(&ia64_highfp_mtx);
- wakeup(&PCPU_GET(fpcurthread));
-
- return ((td != NULL) ? 1 : 0);
-}
-#endif
diff --git a/sys/ia64/ia64/in_cksum.c b/sys/ia64/ia64/in_cksum.c
deleted file mode 100644
index 6c9959f..0000000
--- a/sys/ia64/ia64/in_cksum.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: in_cksum.c,v 1.7 1997/09/02 13:18:15 thorpej Exp $ */
-
-/*-
- * Copyright (c) 1988, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1996
- * Matt Thomas <matt@3am-software.com>
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)in_cksum.c 8.1 (Berkeley) 6/10/93
- */
-
-#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-
-#include <sys/param.h>
-#include <sys/mbuf.h>
-#include <sys/systm.h>
-#include <netinet/in_systm.h>
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <machine/in_cksum.h>
-
-/*
- * Checksum routine for Internet Protocol family headers
- * (Portable Alpha version).
- *
- * This routine is very heavily used in the network
- * code and should be modified for each CPU to be as fast as possible.
- */
-
-#define ADDCARRY(x) (x > 65535 ? x -= 65535 : x)
-#define REDUCE32 \
- { \
- q_util.q = sum; \
- sum = q_util.s[0] + q_util.s[1] + q_util.s[2] + q_util.s[3]; \
- }
-#define REDUCE16 \
- { \
- q_util.q = sum; \
- l_util.l = q_util.s[0] + q_util.s[1] + q_util.s[2] + q_util.s[3]; \
- sum = l_util.s[0] + l_util.s[1]; \
- ADDCARRY(sum); \
- }
-
-static const u_int32_t in_masks[] = {
- /*0 bytes*/ /*1 byte*/ /*2 bytes*/ /*3 bytes*/
- 0x00000000, 0x000000FF, 0x0000FFFF, 0x00FFFFFF, /* offset 0 */
- 0x00000000, 0x0000FF00, 0x00FFFF00, 0xFFFFFF00, /* offset 1 */
- 0x00000000, 0x00FF0000, 0xFFFF0000, 0xFFFF0000, /* offset 2 */
- 0x00000000, 0xFF000000, 0xFF000000, 0xFF000000, /* offset 3 */
-};
-
-union l_util {
- u_int16_t s[2];
- u_int32_t l;
-};
-union q_util {
- u_int16_t s[4];
- u_int32_t l[2];
- u_int64_t q;
-};
-
-static u_int64_t
-in_cksumdata(const void *buf, int len)
-{
- const u_int32_t *lw = (const u_int32_t *) buf;
- u_int64_t sum = 0;
- u_int64_t prefilled;
- int offset;
- union q_util q_util;
-
- if ((3 & (long) lw) == 0 && len == 20) {
- sum = (u_int64_t) lw[0] + lw[1] + lw[2] + lw[3] + lw[4];
- REDUCE32;
- return sum;
- }
-
- if ((offset = 3 & (long) lw) != 0) {
- const u_int32_t *masks = in_masks + (offset << 2);
- lw = (u_int32_t *) (((long) lw) - offset);
- sum = *lw++ & masks[len >= 3 ? 3 : len];
- len -= 4 - offset;
- if (len <= 0) {
- REDUCE32;
- return sum;
- }
- }
-#if 0
- /*
- * Force to cache line boundary.
- */
- offset = 32 - (0x1f & (long) lw);
- if (offset < 32 && len > offset) {
- len -= offset;
- if (4 & offset) {
- sum += (u_int64_t) lw[0];
- lw += 1;
- }
- if (8 & offset) {
- sum += (u_int64_t) lw[0] + lw[1];
- lw += 2;
- }
- if (16 & offset) {
- sum += (u_int64_t) lw[0] + lw[1] + lw[2] + lw[3];
- lw += 4;
- }
- }
-#endif
- /*
- * access prefilling to start load of next cache line.
- * then add current cache line
- * save result of prefilling for loop iteration.
- */
- prefilled = lw[0];
- while ((len -= 32) >= 4) {
- u_int64_t prefilling = lw[8];
- sum += prefilled + lw[1] + lw[2] + lw[3]
- + lw[4] + lw[5] + lw[6] + lw[7];
- lw += 8;
- prefilled = prefilling;
- }
- if (len >= 0) {
- sum += prefilled + lw[1] + lw[2] + lw[3]
- + lw[4] + lw[5] + lw[6] + lw[7];
- lw += 8;
- } else {
- len += 32;
- }
- while ((len -= 16) >= 0) {
- sum += (u_int64_t) lw[0] + lw[1] + lw[2] + lw[3];
- lw += 4;
- }
- len += 16;
- while ((len -= 4) >= 0) {
- sum += (u_int64_t) *lw++;
- }
- len += 4;
- if (len > 0)
- sum += (u_int64_t) (in_masks[len] & *lw);
- REDUCE32;
- return sum;
-}
-
-u_short
-in_addword(u_short a, u_short b)
-{
- u_int64_t sum = a + b;
-
- ADDCARRY(sum);
- return (sum);
-}
-
-u_short
-in_pseudo(u_int32_t a, u_int32_t b, u_int32_t c)
-{
- u_int64_t sum;
- union q_util q_util;
- union l_util l_util;
-
- sum = (u_int64_t) a + b + c;
- REDUCE16;
- return (sum);
-}
-
-u_short
-in_cksum_skip(struct mbuf *m, int len, int skip)
-{
- u_int64_t sum = 0;
- int mlen = 0;
- int clen = 0;
- caddr_t addr;
- union q_util q_util;
- union l_util l_util;
-
- len -= skip;
- for (; skip && m; m = m->m_next) {
- if (m->m_len > skip) {
- mlen = m->m_len - skip;
- addr = mtod(m, caddr_t) + skip;
- goto skip_start;
- } else {
- skip -= m->m_len;
- }
- }
-
- for (; m && len; m = m->m_next) {
- if (m->m_len == 0)
- continue;
- mlen = m->m_len;
- addr = mtod(m, caddr_t);
-skip_start:
- if (len < mlen)
- mlen = len;
- if ((clen ^ (long) addr) & 1)
- sum += in_cksumdata(addr, mlen) << 8;
- else
- sum += in_cksumdata(addr, mlen);
-
- clen += mlen;
- len -= mlen;
- }
- REDUCE16;
- return (~sum & 0xffff);
-}
-
-u_int in_cksum_hdr(const struct ip *ip)
-{
- u_int64_t sum = in_cksumdata(ip, sizeof(struct ip));
- union q_util q_util;
- union l_util l_util;
- REDUCE16;
- return (~sum & 0xffff);
-}
diff --git a/sys/ia64/ia64/interrupt.c b/sys/ia64/ia64/interrupt.c
deleted file mode 100644
index 2d80c09..0000000
--- a/sys/ia64/ia64/interrupt.c
+++ /dev/null
@@ -1,411 +0,0 @@
-/*-
- * Copyright (c) 2010-2011 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 "opt_ddb.h"
-#include "opt_xtrace.h"
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/proc.h>
-#include <sys/vmmeter.h>
-#include <sys/bus.h>
-#include <sys/interrupt.h>
-#include <sys/malloc.h>
-#include <sys/ktr.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/sched.h>
-#include <sys/smp.h>
-#include <sys/sysctl.h>
-#include <sys/syslog.h>
-
-#include <machine/cpu.h>
-#include <machine/fpu.h>
-#include <machine/frame.h>
-#include <machine/intr.h>
-#include <machine/intrcnt.h>
-#include <machine/md_var.h>
-#include <machine/pcb.h>
-#include <machine/reg.h>
-#include <machine/smp.h>
-
-#ifdef DDB
-#include <ddb/ddb.h>
-#endif
-
-struct ia64_intr {
- struct intr_event *event; /* interrupt event */
- volatile long *cntp; /* interrupt counter */
- struct sapic *sapic;
- u_int irq;
-};
-
-ia64_ihtype *ia64_handler[IA64_NXIVS];
-
-static enum ia64_xiv_use ia64_xiv[IA64_NXIVS];
-static struct ia64_intr *ia64_intrs[IA64_NXIVS];
-
-static ia64_ihtype ia64_ih_invalid;
-static ia64_ihtype ia64_ih_irq;
-
-void
-ia64_xiv_init(void)
-{
- u_int xiv;
-
- for (xiv = 0; xiv < IA64_NXIVS; xiv++) {
- ia64_handler[xiv] = ia64_ih_invalid;
- ia64_xiv[xiv] = IA64_XIV_FREE;
- ia64_intrs[xiv] = NULL;
- }
- (void)ia64_xiv_reserve(15, IA64_XIV_ARCH, NULL);
-}
-
-int
-ia64_xiv_free(u_int xiv, enum ia64_xiv_use what)
-{
-
- if (xiv >= IA64_NXIVS)
- return (EINVAL);
- if (what == IA64_XIV_FREE || what == IA64_XIV_ARCH)
- return (EINVAL);
- if (ia64_xiv[xiv] != what)
- return (ENXIO);
- ia64_xiv[xiv] = IA64_XIV_FREE;
- ia64_handler[xiv] = ia64_ih_invalid;
- return (0);
-}
-
-int
-ia64_xiv_reserve(u_int xiv, enum ia64_xiv_use what, ia64_ihtype ih)
-{
-
- if (xiv >= IA64_NXIVS)
- return (EINVAL);
- if (what == IA64_XIV_FREE)
- return (EINVAL);
- if (ia64_xiv[xiv] != IA64_XIV_FREE)
- return (EBUSY);
- ia64_xiv[xiv] = what;
- ia64_handler[xiv] = (ih == NULL) ? ia64_ih_invalid: ih;
- if (bootverbose)
- printf("XIV %u: use=%u, IH=%p\n", xiv, what, ih);
- return (0);
-}
-
-u_int
-ia64_xiv_alloc(u_int prio, enum ia64_xiv_use what, ia64_ihtype ih)
-{
- u_int hwprio;
- u_int xiv0, xiv;
-
- hwprio = prio >> 2;
- if (hwprio > IA64_MAX_HWPRIO)
- hwprio = IA64_MAX_HWPRIO;
-
- xiv0 = IA64_NXIVS - (hwprio + 1) * 16;
-
- KASSERT(xiv0 >= IA64_MIN_XIV, ("%s: min XIV", __func__));
- KASSERT(xiv0 < IA64_NXIVS, ("%s: max XIV", __func__));
-
- xiv = xiv0;
- while (xiv < IA64_NXIVS && ia64_xiv_reserve(xiv, what, ih))
- xiv++;
-
- if (xiv < IA64_NXIVS)
- return (xiv);
-
- xiv = xiv0;
- while (xiv >= IA64_MIN_XIV && ia64_xiv_reserve(xiv, what, ih))
- xiv--;
-
- return ((xiv >= IA64_MIN_XIV) ? xiv : 0);
-}
-
-static void
-ia64_intr_eoi(void *arg)
-{
- u_int xiv = (uintptr_t)arg;
- struct ia64_intr *i;
-
- i = ia64_intrs[xiv];
- KASSERT(i != NULL, ("%s", __func__));
- sapic_eoi(i->sapic, xiv);
-}
-
-static void
-ia64_intr_mask(void *arg)
-{
- u_int xiv = (uintptr_t)arg;
- struct ia64_intr *i;
-
- i = ia64_intrs[xiv];
- KASSERT(i != NULL, ("%s", __func__));
- sapic_mask(i->sapic, i->irq);
- sapic_eoi(i->sapic, xiv);
-}
-
-static void
-ia64_intr_unmask(void *arg)
-{
- u_int xiv = (uintptr_t)arg;
- struct ia64_intr *i;
-
- i = ia64_intrs[xiv];
- KASSERT(i != NULL, ("%s", __func__));
- sapic_unmask(i->sapic, i->irq);
-}
-
-int
-ia64_setup_intr(const char *name, int irq, driver_filter_t filter,
- driver_intr_t handler, void *arg, enum intr_type flags, void **cookiep)
-{
- struct ia64_intr *i;
- struct sapic *sa;
- char *intrname;
- u_int prio, xiv;
- int error;
-
- prio = intr_priority(flags);
- if (prio > PRI_MAX_ITHD)
- return (EINVAL);
-
- /* XXX lock */
-
- /* Get the I/O SAPIC and XIV that corresponds to the IRQ. */
- sa = sapic_lookup(irq, &xiv);
- if (sa == NULL) {
- /* XXX unlock */
- return (EINVAL);
- }
-
- if (xiv == 0) {
- /* XXX unlock */
- i = malloc(sizeof(struct ia64_intr), M_DEVBUF,
- M_ZERO | M_WAITOK);
- /* XXX lock */
- sa = sapic_lookup(irq, &xiv);
- KASSERT(sa != NULL, ("sapic_lookup"));
- if (xiv != 0)
- free(i, M_DEVBUF);
- }
-
- /*
- * If the IRQ has no XIV assigned to it yet, assign one based
- * on the priority.
- */
- if (xiv == 0) {
- xiv = ia64_xiv_alloc(prio, IA64_XIV_IRQ, ia64_ih_irq);
- if (xiv == 0) {
- /* XXX unlock */
- free(i, M_DEVBUF);
- return (ENOSPC);
- }
-
- error = intr_event_create(&i->event, (void *)(uintptr_t)xiv,
- 0, irq, ia64_intr_mask, ia64_intr_unmask, ia64_intr_eoi,
- NULL, "irq%u:", irq);
- if (error) {
- ia64_xiv_free(xiv, IA64_XIV_IRQ);
- /* XXX unlock */
- free(i, M_DEVBUF);
- return (error);
- }
-
- i->sapic = sa;
- i->irq = irq;
- i->cntp = intrcnt + xiv;
- ia64_intrs[xiv] = i;
-
- /* XXX unlock */
-
- sapic_enable(sa, irq, xiv);
-
- if (name != NULL && *name != '\0') {
- /* XXX needs abstraction. Too error prone. */
- intrname = intrnames + xiv * INTRNAME_LEN;
- memset(intrname, ' ', INTRNAME_LEN - 1);
- bcopy(name, intrname, strlen(name));
- }
- } else {
- i = ia64_intrs[xiv];
- /* XXX unlock */
- }
-
- KASSERT(i != NULL, ("XIV mapping bug"));
-
- error = intr_event_add_handler(i->event, name, filter, handler, arg,
- prio, flags, cookiep);
- return (error);
-}
-
-int
-ia64_teardown_intr(void *cookie)
-{
-
- return (intr_event_remove_handler(cookie));
-}
-
-void
-ia64_bind_intr(void)
-{
- struct ia64_intr *i;
- struct pcpu *pc;
- u_int xiv;
- int cpu;
-
- cpu = MAXCPU;
- for (xiv = IA64_NXIVS - 1; xiv >= IA64_MIN_XIV; xiv--) {
- if (ia64_xiv[xiv] != IA64_XIV_IRQ)
- continue;
- i = ia64_intrs[xiv];
- do {
- cpu = (cpu == 0) ? MAXCPU - 1 : cpu - 1;
- pc = cpuid_to_pcpu[cpu];
- } while (pc == NULL || !pc->pc_md.awake);
- sapic_bind_intr(i->irq, pc);
- }
-}
-
-/*
- * Interrupt handlers.
- */
-
-void
-ia64_handle_intr(struct trapframe *tf)
-{
- struct thread *td;
- u_int xiv;
-
- td = curthread;
- ia64_set_fpsr(IA64_FPSR_DEFAULT);
-
-#ifdef XTRACE
- ia64_xtrace_save();
-#endif
-
- PCPU_INC(cnt.v_intr);
-
- xiv = ia64_get_ivr();
- ia64_srlz_d();
- if (xiv == 15) {
- PCPU_INC(md.stats.pcs_nstrays);
- goto out;
- }
-
- critical_enter();
- do {
- CTR3(KTR_INTR, "INTR: XIV=%u, #%u: frame=%p", xiv,
- PCPU_GET(cnt.v_intr), tf);
- if (!(ia64_handler[xiv])(td, xiv, tf)) {
- ia64_set_eoi(0);
- ia64_srlz_d();
- }
- xiv = ia64_get_ivr();
- ia64_srlz_d();
- } while (xiv != 15);
- critical_exit();
-
- out:
- if (TRAPF_USERMODE(tf)) {
- while (td->td_flags & (TDF_ASTPENDING|TDF_NEEDRESCHED)) {
- ia64_enable_intr();
- ast(tf);
- ia64_disable_intr();
- }
- }
-}
-
-static u_int
-ia64_ih_invalid(struct thread *td, u_int xiv, struct trapframe *tf)
-{
-
- panic("invalid XIV: %u", xiv);
- return (0);
-}
-
-static u_int
-ia64_ih_irq(struct thread *td, u_int xiv, struct trapframe *tf)
-{
- struct ia64_intr *i;
- struct intr_event *ie; /* our interrupt event */
-
- PCPU_INC(md.stats.pcs_nhwints);
-
- /* Find the interrupt thread for this XIV. */
- i = ia64_intrs[xiv];
- KASSERT(i != NULL, ("%s: unassigned XIV", __func__));
-
- (*i->cntp)++;
-
- ie = i->event;
- KASSERT(ie != NULL, ("%s: interrupt without event", __func__));
-
- if (intr_event_handle(ie, tf) != 0) {
- ia64_intr_mask((void *)(uintptr_t)xiv);
- log(LOG_ERR, "stray irq%u\n", i->irq);
- }
-
- return (0);
-}
-
-#ifdef DDB
-
-static void
-db_print_xiv(u_int xiv, int always)
-{
- struct ia64_intr *i;
-
- i = ia64_intrs[xiv];
- if (i != NULL) {
- db_printf("XIV %u (%p): ", xiv, i);
- sapic_print(i->sapic, i->irq);
- } else if (always)
- db_printf("XIV %u: unassigned\n", xiv);
-}
-
-DB_SHOW_COMMAND(xiv, db_show_xiv)
-{
- u_int xiv;
-
- if (have_addr) {
- xiv = ((addr >> 4) % 16) * 10 + (addr % 16);
- if (xiv >= IA64_NXIVS)
- db_printf("error: XIV %u not in range [0..%u]\n",
- xiv, IA64_NXIVS - 1);
- else
- db_print_xiv(xiv, 1);
- } else {
- for (xiv = 0; xiv < IA64_NXIVS; xiv++)
- db_print_xiv(xiv, 0);
- }
-}
-
-#endif
diff --git a/sys/ia64/ia64/iodev_machdep.c b/sys/ia64/ia64/iodev_machdep.c
deleted file mode 100644
index a5aaf9f..0000000
--- a/sys/ia64/ia64/iodev_machdep.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*-
- * Copyright (c) 2010 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/conf.h>
-#include <sys/efi.h>
-#include <sys/fcntl.h>
-#include <sys/ioccom.h>
-#include <sys/malloc.h>
-#include <sys/priv.h>
-#include <sys/proc.h>
-#include <sys/systm.h>
-
-#include <machine/bus.h>
-#include <machine/iodev.h>
-
-static int iodev_efivar_getvar(struct iodev_efivar_req *req);
-static int iodev_efivar_nextname(struct iodev_efivar_req *req);
-static int iodev_efivar_setvar(struct iodev_efivar_req *req);
-
-/* ARGSUSED */
-int
-iodev_open(struct thread *td __unused)
-{
-
- return (0);
-}
-
-/* ARGSUSED */
-int
-iodev_close(struct thread *td __unused)
-{
-
- return (0);
-}
-
-int
-iodev_ioctl(u_long cmd, caddr_t data)
-{
- struct iodev_efivar_req *efivar_req;
- int error;
-
- switch (cmd) {
- case IODEV_EFIVAR:
- efivar_req = (struct iodev_efivar_req *)data;
- efivar_req->result = 0; /* So it's well-defined */
- switch (efivar_req->access) {
- case IODEV_EFIVAR_GETVAR:
- error = iodev_efivar_getvar(efivar_req);
- break;
- case IODEV_EFIVAR_NEXTNAME:
- error = iodev_efivar_nextname(efivar_req);
- break;
- case IODEV_EFIVAR_SETVAR:
- error = iodev_efivar_setvar(efivar_req);
- break;
- default:
- error = EINVAL;
- break;
- }
- break;
- default:
- error = ENOIOCTL;
- }
-
- return (error);
-}
-
-static int
-iodev_efivar_getvar(struct iodev_efivar_req *req)
-{
- void *data;
- efi_char *name;
- int error;
-
- if ((req->namesize & 1) != 0 || req->namesize < 4)
- return (EINVAL);
- if (req->datasize == 0)
- return (EINVAL);
-
- /*
- * Pre-zero the allocated memory and don't copy the last 2 bytes
- * of the name. That should be the closing nul character (ucs-2)
- * and if not, then we ensured a nul-terminating string. This is
- * to protect the firmware and thus ourselves.
- */
- name = malloc(req->namesize, M_TEMP, M_WAITOK | M_ZERO);
- error = copyin(req->name, name, req->namesize - 2);
- if (error) {
- free(name, M_TEMP);
- return (error);
- }
-
- data = malloc(req->datasize, M_TEMP, M_WAITOK);
- error = efi_var_get(name, &req->vendor, &req->attrib, &req->datasize,
- data);
- if (error == EOVERFLOW || error == ENOENT) {
- req->result = error;
- error = 0;
- }
- if (!error && !req->result)
- error = copyout(data, req->data, req->datasize);
-
- free(data, M_TEMP);
- free(name, M_TEMP);
- return (error);
-}
-
-static int
-iodev_efivar_nextname(struct iodev_efivar_req *req)
-{
- efi_char *name;
- int error;
-
- /* Enforce a reasonable minimum size of the name buffer. */
- if (req->namesize < 4)
- return (EINVAL);
-
- name = malloc(req->namesize, M_TEMP, M_WAITOK);
- error = copyin(req->name, name, req->namesize);
- if (error) {
- free(name, M_TEMP);
- return (error);
- }
-
- error = efi_var_nextname(&req->namesize, name, &req->vendor);
- if (error == EOVERFLOW || error == ENOENT) {
- req->result = error;
- error = 0;
- }
- if (!error && !req->result)
- error = copyout(name, req->name, req->namesize);
-
- free(name, M_TEMP);
- return (error);
-}
-
-static int
-iodev_efivar_setvar(struct iodev_efivar_req *req)
-{
- void *data;
- efi_char *name;
- int error;
-
- if ((req->namesize & 1) != 0 || req->namesize < 4)
- return (EINVAL);
-
- /*
- * Pre-zero the allocated memory and don't copy the last 2 bytes
- * of the name. That should be the closing nul character (ucs-2)
- * and if not, then we ensured a nul-terminating string. This is
- * to protect the firmware and thus ourselves.
- */
- name = malloc(req->namesize, M_TEMP, M_WAITOK | M_ZERO);
- error = copyin(req->name, name, req->namesize - 2);
- if (error) {
- free(name, M_TEMP);
- return (error);
- }
-
- if (req->datasize) {
- data = malloc(req->datasize, M_TEMP, M_WAITOK);
- error = copyin(req->data, data, req->datasize);
- if (error) {
- free(data, M_TEMP);
- free(name, M_TEMP);
- return (error);
- }
- } else
- data = NULL;
-
- error = efi_var_set(name, &req->vendor, req->attrib, req->datasize,
- data);
- if (error == EAGAIN || error == ENOENT) {
- req->result = error;
- error = 0;
- }
-
- free(data, M_TEMP);
- free(name, M_TEMP);
- return (error);
-}
diff --git a/sys/ia64/ia64/locore.S b/sys/ia64/ia64/locore.S
deleted file mode 100644
index f79ca68..0000000
--- a/sys/ia64/ia64/locore.S
+++ /dev/null
@@ -1,361 +0,0 @@
-/*-
- * Copyright (c) 2001-2011 Marcel Moolenaar
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-#include <machine/ia64_cpu.h>
-#include <machine/intrcnt.h>
-#include <machine/pte.h>
-#include <assym.s>
-
-/*
- * The Altix 350 needs more than the architected 16KB (8KB for stack and
- * 8KB for RSE backing store) when calling EFI to setup virtual mode.
- */
-#define FW_STACK_SIZE 3*PAGE_SIZE
-
- .section .ivt.data, "aw"
- .align PAGE_SIZE
- .global kstack
-kstack: .space FW_STACK_SIZE
- .global kstack_top
-kstack_top:
-
- .text
-
-/*
- * Not really a leaf but we can't return.
- * The EFI loader passes the physical address of the bootinfo block in
- * register r8.
- */
-ENTRY_NOPROFILE(__start, 1)
- .prologue
- .save rp,r0
- .body
-{ .mlx
- mov ar.rsc=0
- movl r16=ia64_vector_table // set up IVT early
- ;;
-}
-{ .mlx
- mov cr.iva=r16
- movl r16=kstack
- ;;
-}
-{ .mmi
- srlz.i
- ;;
- ssm IA64_PSR_DFH
- mov r17=FW_STACK_SIZE-16
- ;;
-}
-{ .mlx
- add sp=r16,r17 // proc0's stack
- movl gp=__gp // find kernel globals
- ;;
-}
-{ .mlx
- mov ar.bspstore=r16 // switch backing store
- movl r16=bootinfo
- ;;
-}
-{ .mmi
- st8 [r16]=r8 // save the PA of the bootinfo block
- loadrs // invalidate regs
- mov r17=IA64_DCR_DEFAULT
- ;;
-}
-{ .mmi
- mov cr.dcr=r17
- mov ar.rsc=3 // turn rse back on
- nop 0
- ;;
-}
-{ .mmi
- srlz.d
- alloc r16=ar.pfs,0,0,1,0
- mov out0=r0 // we are linked at the right address
- ;; // we just need to process fptrs
-}
-{ .mib
- nop 0
- nop 0
- br.call.sptk.many rp=_reloc
- ;;
-}
-{ .mib
- nop 0
- nop 0
- br.call.sptk.many rp=ia64_init
- ;;
-}
- // We have the new bspstore in r8 and the new sp in r9.
- // Switch onto the new stack and call mi_startup().
-{ .mmi
- mov ar.rsc = 0
- ;;
- mov ar.bspstore = r8
- mov sp = r9
- ;;
-}
-{ .mmi
- loadrs
- ;;
- mov ar.rsc = 3
- nop 0
- ;;
-}
-{ .mib
- nop 0
- nop 0
- br.call.sptk.many rp=mi_startup
- ;;
-}
- /* NOTREACHED */
-1: br.cond.sptk.few 1b
-END(__start)
-
-/*
- * fork_trampoline()
- *
- * Arrange for a function to be invoked neatly, after a cpu_switch().
- *
- * Invokes fork_exit() passing in three arguments: a callout function, an
- * argument to the callout, and a trapframe pointer. For child processes
- * returning from fork(2), the argument is a pointer to the child process.
- *
- * The callout function and its argument is in the trapframe in scratch
- * registers r2 and r3.
- */
-ENTRY(fork_trampoline, 0)
- .prologue
- .save rp,r0
- .body
-{ .mmi
- alloc r14=ar.pfs,0,0,3,0
- add r15=32+SIZEOF_SPECIAL+8,sp
- add r16=32+SIZEOF_SPECIAL+16,sp
- ;;
-}
-{ .mmi
- ld8 out0=[r15]
- ld8 out1=[r16]
- nop 0
-}
-{ .mib
- add out2=16,sp
- nop 0
- br.call.sptk rp=fork_exit
- ;;
-}
- // If we get back here, it means we're a user space process that's
- // the immediate result of fork(2).
- .global enter_userland
- .type enter_userland, @function
-enter_userland:
-{ .mib
- nop 0
- nop 0
- br.sptk epc_syscall_return
- ;;
-}
-END(fork_trampoline)
-
-/*
- * Create a default interrupt name table. The first entry (vector 0) is
- * hardwaired to the clock interrupt.
- */
- .data
- .align 8
-EXPORT(intrnames)
- .ascii "clock"
- .fill INTRNAME_LEN - 5 - 1, 1, ' '
- .byte 0
-intr_n = 1
-.rept INTRCNT_COUNT - 1
- .ascii "#"
- .byte intr_n / 100 + '0'
- .byte (intr_n % 100) / 10 + '0'
- .byte intr_n % 10 + '0'
- .fill INTRNAME_LEN - 1 - 3 - 1, 1, ' '
- .byte 0
- intr_n = intr_n + 1
-.endr
-EXPORT(sintrnames)
- data8 INTRCNT_COUNT * INTRNAME_LEN
-
- .align 8
-EXPORT(intrcnt)
- .fill INTRCNT_COUNT, 8, 0
-EXPORT(sintrcnt)
- data8 INTRCNT_COUNT * 8
-
- .text
- // in0: image base
-STATIC_ENTRY(_reloc, 1)
- alloc loc0=ar.pfs,1,2,0,0
- mov loc1=rp
- ;;
- movl r15=@gprel(_DYNAMIC) // find _DYNAMIC etc.
- movl r2=@gprel(fptr_storage)
- movl r3=@gprel(fptr_storage_end)
- ;;
- add r15=r15,gp // relocate _DYNAMIC etc.
- add r2=r2,gp
- add r3=r3,gp
- ;;
-1: ld8 r16=[r15],8 // read r15->d_tag
- ;;
- ld8 r17=[r15],8 // and r15->d_val
- ;;
- cmp.eq p6,p0=DT_NULL,r16 // done?
-(p6) br.cond.dpnt.few 2f
- ;;
- cmp.eq p6,p0=DT_RELA,r16
- ;;
-(p6) add r18=r17,in0 // found rela section
- ;;
- cmp.eq p6,p0=DT_RELASZ,r16
- ;;
-(p6) mov r19=r17 // found rela size
- ;;
- cmp.eq p6,p0=DT_SYMTAB,r16
- ;;
-(p6) add r20=r17,in0 // found symbol table
- ;;
-(p6) setf.sig f8=r20
- ;;
- cmp.eq p6,p0=DT_SYMENT,r16
- ;;
-(p6) setf.sig f9=r17 // found symbol entry size
- ;;
- cmp.eq p6,p0=DT_RELAENT,r16
- ;;
-(p6) mov r22=r17 // found rela entry size
- ;;
- br.sptk.few 1b
-
-2:
- ld8 r15=[r18],8 // read r_offset
- ;;
- ld8 r16=[r18],8 // read r_info
- add r15=r15,in0 // relocate r_offset
- ;;
- ld8 r17=[r18],8 // read r_addend
- sub r19=r19,r22 // update relasz
-
- extr.u r23=r16,0,32 // ELF64_R_TYPE(r16)
- ;;
- cmp.eq p6,p0=R_IA_64_NONE,r23
-(p6) br.cond.dpnt.few 3f
- ;;
- cmp.eq p6,p0=R_IA_64_REL64LSB,r23
-(p6) br.cond.dptk.few 4f
- ;;
-
- extr.u r16=r16,32,32 // ELF64_R_SYM(r16)
- ;;
- setf.sig f10=r16 // so we can multiply
- ;;
- xma.lu f10=f10,f9,f8 // f10=symtab + r_sym*syment
- ;;
- getf.sig r16=f10
- ;;
- add r16=8,r16 // address of st_value
- ;;
- ld8 r16=[r16] // read symbol value
- ;;
- add r16=r16,in0 // relocate symbol value
- ;;
-
- cmp.eq p6,p0=R_IA_64_DIR64LSB,r23
-(p6) br.cond.dptk.few 5f
- ;;
- cmp.eq p6,p0=R_IA_64_FPTR64LSB,r23
-(p6) br.cond.dptk.few 6f
- ;;
-
-3:
- cmp.ltu p6,p0=0,r19 // more?
-(p6) br.cond.dptk.few 2b // loop
- mov r8=0 // success return value
- br.cond.sptk.few 9f // done
-
-4:
- add r16=in0,r17 // BD + A
- ;;
- st8 [r15]=r16 // word64 (LSB)
- br.cond.sptk.few 3b
-
-5:
- add r16=r16,r17 // S + A
- ;;
- st8 [r15]=r16 // word64 (LSB)
- br.cond.sptk.few 3b
-
-6:
- movl r17=@gprel(fptr_storage)
- ;;
- add r17=r17,gp // start of fptrs
- ;;
-7: cmp.geu p6,p0=r17,r2 // end of fptrs?
-(p6) br.cond.dpnt.few 8f // can't find existing fptr
- ld8 r20=[r17] // read function from fptr
- ;;
- cmp.eq p6,p0=r16,r20 // same function?
- ;;
-(p6) st8 [r15]=r17 // reuse fptr
-(p6) br.cond.sptk.few 3b // done
- add r17=16,r17 // next fptr
- br.cond.sptk.few 7b
-
-8: // allocate new fptr
- mov r8=1 // failure return value
- cmp.geu p6,p0=r2,r3 // space left?
-(p6) br.cond.dpnt.few 9f // bail out
-
- st8 [r15]=r2 // install fptr
- st8 [r2]=r16,8 // write fptr address
- ;;
- st8 [r2]=gp,8 // write fptr gp
- br.cond.sptk.few 3b
-
-9:
- mov ar.pfs=loc0
- mov rp=loc1
- ;;
- br.ret.sptk.few rp
-
-END(_reloc)
-
- .data
- .align 16
- .global fptr_storage
-fptr_storage:
- .space 4096*16 // XXX
-fptr_storage_end:
diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c
deleted file mode 100644
index eaa82a8..0000000
--- a/sys/ia64/ia64/machdep.c
+++ /dev/null
@@ -1,1540 +0,0 @@
-/*-
- * Copyright (c) 2003,2004 Marcel Moolenaar
- * Copyright (c) 2000,2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_compat.h"
-#include "opt_ddb.h"
-#include "opt_kstack_pages.h"
-#include "opt_sched.h"
-#include "opt_xtrace.h"
-
-#include <sys/param.h>
-#include <sys/proc.h>
-#include <sys/systm.h>
-#include <sys/bio.h>
-#include <sys/buf.h>
-#include <sys/bus.h>
-#include <sys/cons.h>
-#include <sys/cpu.h>
-#include <sys/efi.h>
-#include <sys/eventhandler.h>
-#include <sys/exec.h>
-#include <sys/imgact.h>
-#include <sys/kdb.h>
-#include <sys/kernel.h>
-#include <sys/linker.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/mbuf.h>
-#include <sys/msgbuf.h>
-#include <sys/pcpu.h>
-#include <sys/ptrace.h>
-#include <sys/random.h>
-#include <sys/reboot.h>
-#include <sys/rwlock.h>
-#include <sys/sched.h>
-#include <sys/signalvar.h>
-#include <sys/syscall.h>
-#include <sys/syscallsubr.h>
-#include <sys/sysctl.h>
-#include <sys/sysproto.h>
-#include <sys/ucontext.h>
-#include <sys/uio.h>
-#include <sys/uuid.h>
-#include <sys/vmmeter.h>
-#include <sys/vnode.h>
-
-#include <ddb/ddb.h>
-
-#include <net/netisr.h>
-
-#include <vm/vm.h>
-#include <vm/vm_extern.h>
-#include <vm/vm_kern.h>
-#include <vm/vm_page.h>
-#include <vm/vm_map.h>
-#include <vm/vm_object.h>
-#include <vm/vm_pager.h>
-
-#include <machine/bootinfo.h>
-#include <machine/cpu.h>
-#include <machine/elf.h>
-#include <machine/fpu.h>
-#include <machine/intr.h>
-#include <machine/kdb.h>
-#include <machine/mca.h>
-#include <machine/md_var.h>
-#include <machine/pal.h>
-#include <machine/pcb.h>
-#include <machine/reg.h>
-#include <machine/sal.h>
-#include <machine/sigframe.h>
-#ifdef SMP
-#include <machine/smp.h>
-#endif
-#include <machine/unwind.h>
-#include <machine/vmparam.h>
-
-/*
- * For atomicity reasons, we demand that pc_curthread is the first
- * field in the struct pcpu. It allows us to read the pointer with
- * a single atomic instruction:
- * ld8 %curthread = [r13]
- * Otherwise we would first have to calculate the load address and
- * store the result in a temporary register and that for the load:
- * add %temp = %offsetof(struct pcpu), r13
- * ld8 %curthread = [%temp]
- * A context switch inbetween the add and the ld8 could have the
- * thread migrate to a different core. In that case, %curthread
- * would be the thread running on the original core and not actually
- * the current thread.
- */
-CTASSERT(offsetof(struct pcpu, pc_curthread) == 0);
-
-static SYSCTL_NODE(_hw, OID_AUTO, freq, CTLFLAG_RD, 0, "");
-static SYSCTL_NODE(_machdep, OID_AUTO, cpu, CTLFLAG_RD, 0, "");
-
-static u_int bus_freq;
-SYSCTL_UINT(_hw_freq, OID_AUTO, bus, CTLFLAG_RD, &bus_freq, 0,
- "Bus clock frequency");
-
-static u_int cpu_freq;
-SYSCTL_UINT(_hw_freq, OID_AUTO, cpu, CTLFLAG_RD, &cpu_freq, 0,
- "CPU clock frequency");
-
-static u_int itc_freq;
-SYSCTL_UINT(_hw_freq, OID_AUTO, itc, CTLFLAG_RD, &itc_freq, 0,
- "ITC frequency");
-
-int cold = 1;
-int unmapped_buf_allowed = 0;
-
-struct bootinfo *bootinfo;
-
-struct pcpu pcpu0;
-
-extern u_int64_t kernel_text[], _end[];
-
-extern u_int64_t ia64_gateway_page[];
-extern u_int64_t break_sigtramp[];
-extern u_int64_t epc_sigtramp[];
-
-struct fpswa_iface *fpswa_iface;
-
-vm_size_t ia64_pal_size;
-vm_paddr_t ia64_pal_base;
-vm_offset_t ia64_port_base;
-
-u_int64_t ia64_lapic_addr = PAL_PIB_DEFAULT_ADDR;
-
-struct ia64_pib *ia64_pib;
-
-static int ia64_sync_icache_needed;
-
-char machine[] = MACHINE;
-SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0, "");
-
-static char cpu_model[64];
-SYSCTL_STRING(_hw, HW_MODEL, model, CTLFLAG_RD, cpu_model, 0,
- "The CPU model name");
-
-static char cpu_family[64];
-SYSCTL_STRING(_hw, OID_AUTO, family, CTLFLAG_RD, cpu_family, 0,
- "The CPU family name");
-
-#ifdef DDB
-extern vm_offset_t ksym_start, ksym_end;
-#endif
-
-struct msgbuf *msgbufp = NULL;
-
-/* Other subsystems (e.g., ACPI) can hook this later. */
-void (*cpu_idle_hook)(sbintime_t) = NULL;
-
-struct kva_md_info kmi;
-
-static void
-identifycpu(void)
-{
- char vendor[17];
- char *family_name, *model_name;
- u_int64_t features, tmp;
- int number, revision, model, family, archrev;
-
- /*
- * Assumes little-endian.
- */
- *(u_int64_t *) &vendor[0] = ia64_get_cpuid(0);
- *(u_int64_t *) &vendor[8] = ia64_get_cpuid(1);
- vendor[16] = '\0';
-
- tmp = ia64_get_cpuid(3);
- number = (tmp >> 0) & 0xff;
- revision = (tmp >> 8) & 0xff;
- model = (tmp >> 16) & 0xff;
- family = (tmp >> 24) & 0xff;
- archrev = (tmp >> 32) & 0xff;
-
- family_name = model_name = "unknown";
- switch (family) {
- case 0x07:
- family_name = "Itanium";
- model_name = "Merced";
- break;
- case 0x1f:
- family_name = "Itanium 2";
- switch (model) {
- case 0x00:
- model_name = "McKinley";
- break;
- case 0x01:
- /*
- * Deerfield is a low-voltage variant based on the
- * Madison core. We need circumstantial evidence
- * (i.e. the clock frequency) to identify those.
- * Allow for roughly 1% error margin.
- */
- if (cpu_freq > 990 && cpu_freq < 1010)
- model_name = "Deerfield";
- else
- model_name = "Madison";
- break;
- case 0x02:
- model_name = "Madison II";
- break;
- }
- break;
- case 0x20:
- ia64_sync_icache_needed = 1;
-
- family_name = "Itanium 2";
- switch (model) {
- case 0x00:
- model_name = "Montecito";
- break;
- case 0x01:
- model_name = "Montvale";
- break;
- }
- break;
- }
- snprintf(cpu_family, sizeof(cpu_family), "%s", family_name);
- snprintf(cpu_model, sizeof(cpu_model), "%s", model_name);
-
- features = ia64_get_cpuid(4);
-
- printf("CPU: %s (", model_name);
- if (cpu_freq)
- printf("%u MHz ", cpu_freq);
- printf("%s)\n", family_name);
- printf(" Origin = \"%s\" Revision = %d\n", vendor, revision);
- printf(" Features = 0x%b\n", (u_int32_t) features,
- "\020"
- "\001LB" /* long branch (brl) instruction. */
- "\002SD" /* Spontaneous deferral. */
- "\003AO" /* 16-byte atomic operations (ld, st, cmpxchg). */ );
-}
-
-static void
-cpu_startup(void *dummy)
-{
- char nodename[16];
- struct pcpu *pc;
- struct pcpu_stats *pcs;
-
- /*
- * Good {morning,afternoon,evening,night}.
- */
- identifycpu();
-
-#ifdef PERFMON
- perfmon_init();
-#endif
- printf("real memory = %ld (%ld MB)\n", ptoa(realmem),
- ptoa(realmem) / 1048576);
-
- vm_ksubmap_init(&kmi);
-
- printf("avail memory = %ld (%ld MB)\n", ptoa(vm_cnt.v_free_count),
- ptoa(vm_cnt.v_free_count) / 1048576);
-
- if (fpswa_iface == NULL)
- printf("Warning: no FPSWA package supplied\n");
- else
- printf("FPSWA Revision = 0x%lx, Entry = %p\n",
- (long)fpswa_iface->if_rev, (void *)fpswa_iface->if_fpswa);
-
- /*
- * Set up buffers, so they can be used to read disk labels.
- */
- bufinit();
- vm_pager_bufferinit();
-
- /*
- * Traverse the MADT to discover IOSAPIC and Local SAPIC
- * information.
- */
- ia64_probe_sapics();
- ia64_pib = pmap_mapdev(ia64_lapic_addr, sizeof(*ia64_pib));
-
- ia64_mca_init();
-
- /*
- * Create sysctl tree for per-CPU information.
- */
- STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) {
- snprintf(nodename, sizeof(nodename), "%u", pc->pc_cpuid);
- sysctl_ctx_init(&pc->pc_md.sysctl_ctx);
- pc->pc_md.sysctl_tree = SYSCTL_ADD_NODE(&pc->pc_md.sysctl_ctx,
- SYSCTL_STATIC_CHILDREN(_machdep_cpu), OID_AUTO, nodename,
- CTLFLAG_RD, NULL, "");
- if (pc->pc_md.sysctl_tree == NULL)
- continue;
-
- pcs = &pc->pc_md.stats;
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nasts", CTLFLAG_RD, &pcs->pcs_nasts,
- "Number of IPI_AST interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nclks", CTLFLAG_RD, &pcs->pcs_nclks,
- "Number of clock interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nextints", CTLFLAG_RD, &pcs->pcs_nextints,
- "Number of ExtINT interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nhardclocks", CTLFLAG_RD, &pcs->pcs_nhardclocks,
- "Number of IPI_HARDCLOCK interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nhighfps", CTLFLAG_RD, &pcs->pcs_nhighfps,
- "Number of IPI_HIGH_FP interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nhwints", CTLFLAG_RD, &pcs->pcs_nhwints,
- "Number of hardware (device) interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "npreempts", CTLFLAG_RD, &pcs->pcs_npreempts,
- "Number of IPI_PREEMPT interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nrdvs", CTLFLAG_RD, &pcs->pcs_nrdvs,
- "Number of IPI_RENDEZVOUS interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nstops", CTLFLAG_RD, &pcs->pcs_nstops,
- "Number of IPI_STOP interrupts");
-
- SYSCTL_ADD_ULONG(&pc->pc_md.sysctl_ctx,
- SYSCTL_CHILDREN(pc->pc_md.sysctl_tree), OID_AUTO,
- "nstrays", CTLFLAG_RD, &pcs->pcs_nstrays,
- "Number of stray interrupts");
- }
-}
-SYSINIT(cpu_startup, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL);
-
-void
-cpu_flush_dcache(void *ptr, size_t len)
-{
- vm_offset_t lim, va;
-
- va = (uintptr_t)ptr & ~31;
- lim = (uintptr_t)ptr + len;
- while (va < lim) {
- ia64_fc(va);
- va += 32;
- }
-
- ia64_srlz_d();
-}
-
-/* Get current clock frequency for the given cpu id. */
-int
-cpu_est_clockrate(int cpu_id, uint64_t *rate)
-{
-
- if (pcpu_find(cpu_id) == NULL || rate == NULL)
- return (EINVAL);
- *rate = (u_long)cpu_freq * 1000000ul;
- return (0);
-}
-
-void
-cpu_halt()
-{
-
- efi_reset_system();
-}
-
-void
-cpu_idle(int busy)
-{
- register_t ie;
- sbintime_t sbt = -1;
-
- if (!busy) {
- critical_enter();
- sbt = cpu_idleclock();
- }
-
- ie = intr_disable();
- KASSERT(ie != 0, ("%s called with interrupts disabled\n", __func__));
-
- if (sched_runnable())
- ia64_enable_intr();
- else if (cpu_idle_hook != NULL) {
- (*cpu_idle_hook)(sbt);
- /* The hook must enable interrupts! */
- } else {
- ia64_call_pal_static(PAL_HALT_LIGHT, 0, 0, 0);
- ia64_enable_intr();
- }
-
- if (!busy) {
- cpu_activeclock();
- critical_exit();
- }
-}
-
-int
-cpu_idle_wakeup(int cpu)
-{
-
- return (0);
-}
-
-void
-cpu_reset()
-{
-
- efi_reset_system();
-}
-
-void
-cpu_switch(struct thread *old, struct thread *new, struct mtx *mtx)
-{
- struct pcb *oldpcb, *newpcb;
-
- oldpcb = old->td_pcb;
-#ifdef COMPAT_FREEBSD32
- ia32_savectx(oldpcb);
-#endif
- if (PCPU_GET(fpcurthread) == old)
- old->td_frame->tf_special.psr |= IA64_PSR_DFH;
- if (!savectx(oldpcb)) {
- newpcb = new->td_pcb;
- oldpcb->pcb_current_pmap =
- pmap_switch(newpcb->pcb_current_pmap);
-
- atomic_store_rel_ptr(&old->td_lock, mtx);
-
-#if defined(SCHED_ULE) && defined(SMP)
- while (atomic_load_acq_ptr(&new->td_lock) == &blocked_lock)
- cpu_spinwait();
-#endif
-
- PCPU_SET(curthread, new);
-
-#ifdef COMPAT_FREEBSD32
- ia32_restorectx(newpcb);
-#endif
-
- if (PCPU_GET(fpcurthread) == new)
- new->td_frame->tf_special.psr &= ~IA64_PSR_DFH;
- restorectx(newpcb);
- /* We should not get here. */
- panic("cpu_switch: restorectx() returned");
- /* NOTREACHED */
- }
-}
-
-void
-cpu_throw(struct thread *old __unused, struct thread *new)
-{
- struct pcb *newpcb;
-
- newpcb = new->td_pcb;
- (void)pmap_switch(newpcb->pcb_current_pmap);
-
-#if defined(SCHED_ULE) && defined(SMP)
- while (atomic_load_acq_ptr(&new->td_lock) == &blocked_lock)
- cpu_spinwait();
-#endif
-
- PCPU_SET(curthread, new);
-
-#ifdef COMPAT_FREEBSD32
- ia32_restorectx(newpcb);
-#endif
-
- restorectx(newpcb);
- /* We should not get here. */
- panic("cpu_throw: restorectx() returned");
- /* NOTREACHED */
-}
-
-void
-cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size)
-{
-
- /*
- * Set pc_acpi_id to "uninitialized".
- * See sys/dev/acpica/acpi_cpu.c
- */
- pcpu->pc_acpi_id = 0xffffffff;
-}
-
-void
-cpu_pcpu_setup(struct pcpu *pc, u_int acpi_id, u_int sapic_id)
-{
-
- pc->pc_acpi_id = acpi_id;
- pc->pc_md.lid = IA64_LID_SET_SAPIC_ID(sapic_id);
-}
-
-void
-spinlock_enter(void)
-{
- struct thread *td;
- int intr;
-
- td = curthread;
- if (td->td_md.md_spinlock_count == 0) {
- intr = intr_disable();
- td->td_md.md_spinlock_count = 1;
- td->td_md.md_saved_intr = intr;
- } else
- td->td_md.md_spinlock_count++;
- critical_enter();
-}
-
-void
-spinlock_exit(void)
-{
- struct thread *td;
- int intr;
-
- td = curthread;
- critical_exit();
- intr = td->td_md.md_saved_intr;
- td->td_md.md_spinlock_count--;
- if (td->td_md.md_spinlock_count == 0)
- intr_restore(intr);
-}
-
-void
-kdb_cpu_trap(int vector, int code __unused)
-{
-
-#ifdef XTRACE
- ia64_xtrace_stop();
-#endif
- __asm __volatile("flushrs;;");
-
- /* Restart after the break instruction. */
- if (vector == IA64_VEC_BREAK &&
- kdb_frame->tf_special.ifa == IA64_FIXED_BREAK)
- kdb_frame->tf_special.psr += IA64_PSR_RI_1;
-}
-
-void
-map_vhpt(uintptr_t vhpt)
-{
- pt_entry_t pte;
- uint64_t psr;
-
- pte = PTE_PRESENT | PTE_MA_WB | PTE_ACCESSED | PTE_DIRTY |
- PTE_PL_KERN | PTE_AR_RW;
- pte |= vhpt & PTE_PPN_MASK;
-
- __asm __volatile("ptr.d %0,%1" :: "r"(vhpt),
- "r"(pmap_vhpt_log2size << 2));
-
- __asm __volatile("mov %0=psr" : "=r"(psr));
- __asm __volatile("rsm psr.ic|psr.i");
- ia64_srlz_i();
- ia64_set_ifa(vhpt);
- ia64_set_itir(pmap_vhpt_log2size << 2);
- ia64_srlz_d();
- __asm __volatile("itr.d dtr[%0]=%1" :: "r"(3), "r"(pte));
- __asm __volatile("mov psr.l=%0" :: "r" (psr));
- ia64_srlz_i();
-}
-
-void
-map_pal_code(void)
-{
- pt_entry_t pte;
- vm_offset_t va;
- vm_size_t sz;
- uint64_t psr;
- u_int shft;
-
- if (ia64_pal_size == 0)
- return;
-
- va = IA64_PHYS_TO_RR7(ia64_pal_base);
-
- sz = ia64_pal_size;
- shft = 0;
- while (sz > 1) {
- shft++;
- sz >>= 1;
- }
-
- pte = PTE_PRESENT | PTE_MA_WB | PTE_ACCESSED | PTE_DIRTY |
- PTE_PL_KERN | PTE_AR_RWX;
- pte |= ia64_pal_base & PTE_PPN_MASK;
-
- __asm __volatile("ptr.d %0,%1; ptr.i %0,%1" :: "r"(va), "r"(shft<<2));
-
- __asm __volatile("mov %0=psr" : "=r"(psr));
- __asm __volatile("rsm psr.ic|psr.i");
- ia64_srlz_i();
- ia64_set_ifa(va);
- ia64_set_itir(shft << 2);
- ia64_srlz_d();
- __asm __volatile("itr.d dtr[%0]=%1" :: "r"(4), "r"(pte));
- ia64_srlz_d();
- __asm __volatile("itr.i itr[%0]=%1" :: "r"(1), "r"(pte));
- __asm __volatile("mov psr.l=%0" :: "r" (psr));
- ia64_srlz_i();
-}
-
-void
-map_gateway_page(void)
-{
- pt_entry_t pte;
- uint64_t psr;
-
- pte = PTE_PRESENT | PTE_MA_WB | PTE_ACCESSED | PTE_DIRTY |
- PTE_PL_KERN | PTE_AR_X_RX;
- pte |= ia64_tpa((uint64_t)ia64_gateway_page) & PTE_PPN_MASK;
-
- __asm __volatile("ptr.d %0,%1; ptr.i %0,%1" ::
- "r"(VM_MAXUSER_ADDRESS), "r"(PAGE_SHIFT << 2));
-
- __asm __volatile("mov %0=psr" : "=r"(psr));
- __asm __volatile("rsm psr.ic|psr.i");
- ia64_srlz_i();
- ia64_set_ifa(VM_MAXUSER_ADDRESS);
- ia64_set_itir(PAGE_SHIFT << 2);
- ia64_srlz_d();
- __asm __volatile("itr.d dtr[%0]=%1" :: "r"(5), "r"(pte));
- ia64_srlz_d();
- __asm __volatile("itr.i itr[%0]=%1" :: "r"(2), "r"(pte));
- __asm __volatile("mov psr.l=%0" :: "r" (psr));
- ia64_srlz_i();
-
- /* Expose the mapping to userland in ar.k5 */
- ia64_set_k5(VM_MAXUSER_ADDRESS);
-}
-
-static u_int
-freq_ratio(u_long base, u_long ratio)
-{
- u_long f;
-
- f = (base * (ratio >> 32)) / (ratio & 0xfffffffful);
- return ((f + 500000) / 1000000);
-}
-
-static void
-calculate_frequencies(void)
-{
- struct ia64_sal_result sal;
- struct ia64_pal_result pal;
- register_t ie;
-
- ie = intr_disable();
- sal = ia64_sal_entry(SAL_FREQ_BASE, 0, 0, 0, 0, 0, 0, 0);
- pal = ia64_call_pal_static(PAL_FREQ_RATIOS, 0, 0, 0);
- intr_restore(ie);
-
- if (sal.sal_status == 0 && pal.pal_status == 0) {
- if (bootverbose) {
- printf("Platform clock frequency %ld Hz\n",
- sal.sal_result[0]);
- printf("Processor ratio %ld/%ld, Bus ratio %ld/%ld, "
- "ITC ratio %ld/%ld\n",
- pal.pal_result[0] >> 32,
- pal.pal_result[0] & ((1L << 32) - 1),
- pal.pal_result[1] >> 32,
- pal.pal_result[1] & ((1L << 32) - 1),
- pal.pal_result[2] >> 32,
- pal.pal_result[2] & ((1L << 32) - 1));
- }
- cpu_freq = freq_ratio(sal.sal_result[0], pal.pal_result[0]);
- bus_freq = freq_ratio(sal.sal_result[0], pal.pal_result[1]);
- itc_freq = freq_ratio(sal.sal_result[0], pal.pal_result[2]);
- }
-}
-
-struct ia64_init_return
-ia64_init(void)
-{
- struct ia64_init_return ret;
- struct efi_md *md;
- pt_entry_t *pbvm_pgtbl_ent, *pbvm_pgtbl_lim;
- char *p;
- vm_size_t mdlen;
- int metadata_missing;
-
- /*
- * NO OUTPUT ALLOWED UNTIL FURTHER NOTICE.
- */
-
- ia64_set_fpsr(IA64_FPSR_DEFAULT);
-
- /*
- * Region 6 is direct mapped UC and region 7 is direct mapped
- * WC. The details of this is controlled by the Alt {I,D}TLB
- * handlers. Here we just make sure that they have the largest
- * possible page size to minimise TLB usage.
- */
- ia64_set_rr(IA64_RR_BASE(6), (6 << 8) | (LOG2_ID_PAGE_SIZE << 2));
- ia64_set_rr(IA64_RR_BASE(7), (7 << 8) | (LOG2_ID_PAGE_SIZE << 2));
- ia64_srlz_d();
-
- /* Initialize/setup physical memory datastructures */
- ia64_physmem_init();
-
- /*
- * Process the memory map. This gives us the PAL locations,
- * the I/O port base address, the available memory regions
- * for initializing the physical memory map.
- */
- for (md = efi_md_first(); md != NULL; md = efi_md_next(md)) {
- mdlen = md->md_pages * EFI_PAGE_SIZE;
- switch (md->md_type) {
- case EFI_MD_TYPE_IOPORT:
- ia64_port_base = pmap_mapdev_priv(md->md_phys,
- mdlen, VM_MEMATTR_UNCACHEABLE);
- break;
- case EFI_MD_TYPE_PALCODE:
- ia64_pal_base = md->md_phys;
- ia64_pal_size = mdlen;
- /*FALLTHROUGH*/
- case EFI_MD_TYPE_BAD:
- case EFI_MD_TYPE_FIRMWARE:
- case EFI_MD_TYPE_RECLAIM:
- case EFI_MD_TYPE_RT_CODE:
- case EFI_MD_TYPE_RT_DATA:
- /* Don't use these memory regions. */
- ia64_physmem_track(md->md_phys, mdlen);
- break;
- case EFI_MD_TYPE_BS_CODE:
- case EFI_MD_TYPE_BS_DATA:
- case EFI_MD_TYPE_CODE:
- case EFI_MD_TYPE_DATA:
- case EFI_MD_TYPE_FREE:
- /* These are ok to use. */
- ia64_physmem_add(md->md_phys, mdlen);
- break;
- }
- }
-
- /*
- * Remove the PBVM and its page table from phys_avail. The loader
- * passes the physical address of the page table to us. The virtual
- * address of the page table is fixed.
- * Track and the PBVM limit for later use.
- */
- ia64_physmem_delete(bootinfo->bi_pbvm_pgtbl, bootinfo->bi_pbvm_pgtblsz);
- pbvm_pgtbl_ent = (void *)IA64_PBVM_PGTBL;
- pbvm_pgtbl_lim = (void *)(IA64_PBVM_PGTBL + bootinfo->bi_pbvm_pgtblsz);
- while (pbvm_pgtbl_ent < pbvm_pgtbl_lim) {
- if ((*pbvm_pgtbl_ent & PTE_PRESENT) == 0)
- break;
- ia64_physmem_delete(*pbvm_pgtbl_ent & PTE_PPN_MASK,
- IA64_PBVM_PAGE_SIZE);
- pbvm_pgtbl_ent++;
- }
-
- /* Finalize physical memory datastructures */
- ia64_physmem_fini();
-
- metadata_missing = 0;
- if (bootinfo->bi_modulep)
- preload_metadata = (caddr_t)bootinfo->bi_modulep;
- else
- metadata_missing = 1;
-
- if (envmode == 0 && bootinfo->bi_envp)
- kern_envp = (caddr_t)bootinfo->bi_envp;
- else
- kern_envp = static_env;
-
- /*
- * Look at arguments passed to us and compute boothowto.
- */
- boothowto = bootinfo->bi_boothowto;
-
- if (boothowto & RB_VERBOSE)
- bootverbose = 1;
-
- /*
- * Wire things up so we can call the firmware.
- */
- map_pal_code();
- efi_boot_minimal(bootinfo->bi_systab);
- ia64_xiv_init();
- ia64_sal_init();
- calculate_frequencies();
-
- set_cputicker(ia64_get_itc, (u_long)itc_freq * 1000000, 0);
-
- /*
- * Setup the PCPU data for the bootstrap processor. It is needed
- * by printf(). Also, since printf() has critical sections, we
- * need to initialize at least pc_curthread.
- */
- pcpup = &pcpu0;
- ia64_set_k4((u_int64_t)pcpup);
- pcpu_init(pcpup, 0, sizeof(pcpu0));
- dpcpu_init(ia64_physmem_alloc(DPCPU_SIZE, PAGE_SIZE), 0);
- cpu_pcpu_setup(pcpup, ~0U, ia64_get_lid());
- PCPU_SET(curthread, &thread0);
-
- /*
- * Initialize the console before we print anything out.
- */
- cninit();
-
- /* OUTPUT NOW ALLOWED */
-
- if (metadata_missing)
- printf("WARNING: loader(8) metadata is missing!\n");
-
- /* Get FPSWA interface */
- fpswa_iface = (bootinfo->bi_fpswa == 0) ? NULL :
- (struct fpswa_iface *)IA64_PHYS_TO_RR7(bootinfo->bi_fpswa);
-
- /* Init basic tunables, including hz */
- init_param1();
-
- p = getenv("kernelname");
- if (p != NULL) {
- strlcpy(kernelname, p, sizeof(kernelname));
- freeenv(p);
- }
-
- init_param2(physmem);
-
- /*
- * Initialize error message buffer (at end of core).
- */
- msgbufp = ia64_physmem_alloc(msgbufsize, PAGE_SIZE);
- msgbufinit(msgbufp, msgbufsize);
-
- proc_linkup0(&proc0, &thread0);
- /*
- * Init mapping for kernel stack for proc 0
- */
- p = ia64_physmem_alloc(KSTACK_PAGES * PAGE_SIZE, PAGE_SIZE);
- thread0.td_kstack = (uintptr_t)p;
- thread0.td_kstack_pages = KSTACK_PAGES;
-
- mutex_init();
-
- /*
- * Initialize the rest of proc 0's PCB.
- *
- * Set the kernel sp, reserving space for an (empty) trapframe,
- * and make proc0's trapframe pointer point to it for sanity.
- * Initialise proc0's backing store to start after u area.
- */
- cpu_thread_alloc(&thread0);
- thread0.td_frame->tf_flags = FRAME_SYSCALL;
- thread0.td_pcb->pcb_special.sp =
- (u_int64_t)thread0.td_frame - 16;
- thread0.td_pcb->pcb_special.bspstore = thread0.td_kstack;
-
- /*
- * Initialize the virtual memory system.
- */
- pmap_bootstrap();
-
-#ifdef XTRACE
- ia64_xtrace_init_bsp();
-#endif
-
- /*
- * Initialize debuggers, and break into them if appropriate.
- */
-#ifdef DDB
- ksym_start = bootinfo->bi_symtab;
- ksym_end = bootinfo->bi_esymtab;
-#endif
-
- kdb_init();
-
-#ifdef KDB
- if (boothowto & RB_KDB)
- kdb_enter(KDB_WHY_BOOTFLAGS,
- "Boot flags requested debugger\n");
-#endif
-
- ia64_set_tpr(0);
- ia64_srlz_d();
-
- ret.bspstore = thread0.td_pcb->pcb_special.bspstore;
- ret.sp = thread0.td_pcb->pcb_special.sp;
- return (ret);
-}
-
-uint64_t
-ia64_get_hcdp(void)
-{
-
- return (bootinfo->bi_hcdp);
-}
-
-void
-bzero(void *buf, size_t len)
-{
- caddr_t p = buf;
-
- while (((vm_offset_t) p & (sizeof(u_long) - 1)) && len) {
- *p++ = 0;
- len--;
- }
- while (len >= sizeof(u_long) * 8) {
- *(u_long*) p = 0;
- *((u_long*) p + 1) = 0;
- *((u_long*) p + 2) = 0;
- *((u_long*) p + 3) = 0;
- len -= sizeof(u_long) * 8;
- *((u_long*) p + 4) = 0;
- *((u_long*) p + 5) = 0;
- *((u_long*) p + 6) = 0;
- *((u_long*) p + 7) = 0;
- p += sizeof(u_long) * 8;
- }
- while (len >= sizeof(u_long)) {
- *(u_long*) p = 0;
- len -= sizeof(u_long);
- p += sizeof(u_long);
- }
- while (len) {
- *p++ = 0;
- len--;
- }
-}
-
-u_int
-ia64_itc_freq(void)
-{
-
- return (itc_freq);
-}
-
-void
-DELAY(int n)
-{
- u_int64_t start, end, now;
-
- sched_pin();
-
- start = ia64_get_itc();
- end = start + itc_freq * n;
- /* printf("DELAY from 0x%lx to 0x%lx\n", start, end); */
- do {
- now = ia64_get_itc();
- } while (now < end || (now > start && end < start));
-
- sched_unpin();
-}
-
-/*
- * Send an interrupt (signal) to a process.
- */
-void
-sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
-{
- struct proc *p;
- struct thread *td;
- struct trapframe *tf;
- struct sigacts *psp;
- struct sigframe sf, *sfp;
- u_int64_t sbs, sp;
- int oonstack;
- int sig;
- u_long code;
-
- td = curthread;
- p = td->td_proc;
- PROC_LOCK_ASSERT(p, MA_OWNED);
- sig = ksi->ksi_signo;
- code = ksi->ksi_code;
- psp = p->p_sigacts;
- mtx_assert(&psp->ps_mtx, MA_OWNED);
- tf = td->td_frame;
- sp = tf->tf_special.sp;
- oonstack = sigonstack(sp);
- sbs = 0;
-
- /* save user context */
- bzero(&sf, sizeof(struct sigframe));
- sf.sf_uc.uc_sigmask = *mask;
- sf.sf_uc.uc_stack = td->td_sigstk;
- sf.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK)
- ? ((oonstack) ? SS_ONSTACK : 0) : SS_DISABLE;
-
- /*
- * Allocate and validate space for the signal handler
- * context. Note that if the stack is in P0 space, the
- * call to grow() is a nop, and the useracc() check
- * will fail if the process has not already allocated
- * the space with a `brk'.
- */
- if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack &&
- SIGISMEMBER(psp->ps_sigonstack, sig)) {
- sbs = (u_int64_t)td->td_sigstk.ss_sp;
- sbs = (sbs + 15) & ~15;
- sfp = (struct sigframe *)(sbs + td->td_sigstk.ss_size);
-#if defined(COMPAT_43)
- td->td_sigstk.ss_flags |= SS_ONSTACK;
-#endif
- } else
- sfp = (struct sigframe *)sp;
- sfp = (struct sigframe *)((u_int64_t)(sfp - 1) & ~15);
-
- /* Fill in the siginfo structure for POSIX handlers. */
- if (SIGISMEMBER(psp->ps_siginfo, sig)) {
- sf.sf_si = ksi->ksi_info;
- sf.sf_si.si_signo = sig;
- /*
- * XXX this shouldn't be here after code in trap.c
- * is fixed
- */
- sf.sf_si.si_addr = (void*)tf->tf_special.ifa;
- code = (u_int64_t)&sfp->sf_si;
- }
-
- mtx_unlock(&psp->ps_mtx);
- PROC_UNLOCK(p);
-
- get_mcontext(td, &sf.sf_uc.uc_mcontext, 0);
-
- /* Copy the frame out to userland. */
- if (copyout(&sf, sfp, sizeof(sf)) != 0) {
- /*
- * Process has trashed its stack; give it an illegal
- * instruction to halt it in its tracks.
- */
- PROC_LOCK(p);
- sigexit(td, SIGILL);
- return;
- }
-
- if ((tf->tf_flags & FRAME_SYSCALL) == 0) {
- tf->tf_special.psr &= ~IA64_PSR_RI;
- tf->tf_special.iip = ia64_get_k5() +
- ((uint64_t)break_sigtramp - (uint64_t)ia64_gateway_page);
- } else
- tf->tf_special.iip = ia64_get_k5() +
- ((uint64_t)epc_sigtramp - (uint64_t)ia64_gateway_page);
-
- /*
- * Setup the trapframe to return to the signal trampoline. We pass
- * information to the trampoline in the following registers:
- *
- * gp new backing store or NULL
- * r8 signal number
- * r9 signal code or siginfo pointer
- * r10 signal handler (function descriptor)
- */
- tf->tf_special.sp = (u_int64_t)sfp - 16;
- tf->tf_special.gp = sbs;
- tf->tf_special.bspstore = sf.sf_uc.uc_mcontext.mc_special.bspstore;
- tf->tf_special.ndirty = 0;
- tf->tf_special.rnat = sf.sf_uc.uc_mcontext.mc_special.rnat;
- tf->tf_scratch.gr8 = sig;
- tf->tf_scratch.gr9 = code;
- tf->tf_scratch.gr10 = (u_int64_t)catcher;
-
- PROC_LOCK(p);
- mtx_lock(&psp->ps_mtx);
-}
-
-/*
- * System call to cleanup state after a signal
- * has been taken. Reset signal mask and
- * stack state from context left by sendsig (above).
- * Return to previous pc and psl as specified by
- * context left by sendsig. Check carefully to
- * make sure that the user has not modified the
- * state to gain improper privileges.
- *
- * MPSAFE
- */
-int
-sys_sigreturn(struct thread *td,
- struct sigreturn_args /* {
- ucontext_t *sigcntxp;
- } */ *uap)
-{
- ucontext_t uc;
- struct trapframe *tf;
- struct pcb *pcb;
-
- tf = td->td_frame;
- pcb = td->td_pcb;
-
- /*
- * Fetch the entire context structure at once for speed.
- * We don't use a normal argument to simplify RSE handling.
- */
- if (copyin(uap->sigcntxp, (caddr_t)&uc, sizeof(uc)))
- return (EFAULT);
-
- set_mcontext(td, &uc.uc_mcontext);
-
-#if defined(COMPAT_43)
- if (sigonstack(tf->tf_special.sp))
- td->td_sigstk.ss_flags |= SS_ONSTACK;
- else
- td->td_sigstk.ss_flags &= ~SS_ONSTACK;
-#endif
- kern_sigprocmask(td, SIG_SETMASK, &uc.uc_sigmask, NULL, 0);
-
- return (EJUSTRETURN);
-}
-
-#ifdef COMPAT_FREEBSD4
-int
-freebsd4_sigreturn(struct thread *td, struct freebsd4_sigreturn_args *uap)
-{
-
- return sys_sigreturn(td, (struct sigreturn_args *)uap);
-}
-#endif
-
-/*
- * Construct a PCB from a trapframe. This is called from kdb_trap() where
- * we want to start a backtrace from the function that caused us to enter
- * the debugger. We have the context in the trapframe, but base the trace
- * on the PCB. The PCB doesn't have to be perfect, as long as it contains
- * enough for a backtrace.
- */
-void
-makectx(struct trapframe *tf, struct pcb *pcb)
-{
-
- pcb->pcb_special = tf->tf_special;
- pcb->pcb_special.__spare = ~0UL; /* XXX see unwind.c */
- save_callee_saved(&pcb->pcb_preserved);
- save_callee_saved_fp(&pcb->pcb_preserved_fp);
-}
-
-int
-ia64_flush_dirty(struct thread *td, struct _special *r)
-{
- struct iovec iov;
- struct uio uio;
- uint64_t bspst, kstk, rnat;
- int error, locked;
-
- if (r->ndirty == 0)
- return (0);
-
- kstk = td->td_kstack + (r->bspstore & 0x1ffUL);
- if (td == curthread) {
- __asm __volatile("mov ar.rsc=0;;");
- __asm __volatile("mov %0=ar.bspstore" : "=r"(bspst));
- /* Make sure we have all the user registers written out. */
- if (bspst - kstk < r->ndirty) {
- __asm __volatile("flushrs;;");
- __asm __volatile("mov %0=ar.bspstore" : "=r"(bspst));
- }
- __asm __volatile("mov %0=ar.rnat;;" : "=r"(rnat));
- __asm __volatile("mov ar.rsc=3");
- error = copyout((void*)kstk, (void*)r->bspstore, r->ndirty);
- kstk += r->ndirty;
- r->rnat = (bspst > kstk && (bspst & 0x1ffL) < (kstk & 0x1ffL))
- ? *(uint64_t*)(kstk | 0x1f8L) : rnat;
- } else {
- locked = PROC_LOCKED(td->td_proc);
- if (!locked)
- PHOLD(td->td_proc);
- iov.iov_base = (void*)(uintptr_t)kstk;
- iov.iov_len = r->ndirty;
- uio.uio_iov = &iov;
- uio.uio_iovcnt = 1;
- uio.uio_offset = r->bspstore;
- uio.uio_resid = r->ndirty;
- uio.uio_segflg = UIO_SYSSPACE;
- uio.uio_rw = UIO_WRITE;
- uio.uio_td = td;
- error = proc_rwmem(td->td_proc, &uio);
- /*
- * XXX proc_rwmem() doesn't currently return ENOSPC,
- * so I think it can bogusly return 0. Neither do
- * we allow short writes.
- */
- if (uio.uio_resid != 0 && error == 0)
- error = ENOSPC;
- if (!locked)
- PRELE(td->td_proc);
- }
-
- r->bspstore += r->ndirty;
- r->ndirty = 0;
- return (error);
-}
-
-int
-get_mcontext(struct thread *td, mcontext_t *mc, int flags)
-{
- struct trapframe *tf;
- int error;
-
- tf = td->td_frame;
- bzero(mc, sizeof(*mc));
- mc->mc_special = tf->tf_special;
- error = ia64_flush_dirty(td, &mc->mc_special);
- if (tf->tf_flags & FRAME_SYSCALL) {
- mc->mc_flags |= _MC_FLAGS_SYSCALL_CONTEXT;
- mc->mc_scratch = tf->tf_scratch;
- if (flags & GET_MC_CLEAR_RET) {
- mc->mc_scratch.gr8 = 0;
- mc->mc_scratch.gr9 = 0;
- mc->mc_scratch.gr10 = 0;
- mc->mc_scratch.gr11 = 0;
- }
- } else {
- mc->mc_flags |= _MC_FLAGS_ASYNC_CONTEXT;
- mc->mc_scratch = tf->tf_scratch;
- mc->mc_scratch_fp = tf->tf_scratch_fp;
- /*
- * XXX If the thread never used the high FP registers, we
- * probably shouldn't waste time saving them.
- */
- ia64_highfp_save(td);
- mc->mc_flags |= _MC_FLAGS_HIGHFP_VALID;
- mc->mc_high_fp = td->td_pcb->pcb_high_fp;
- }
- save_callee_saved(&mc->mc_preserved);
- save_callee_saved_fp(&mc->mc_preserved_fp);
- return (error);
-}
-
-int
-set_mcontext(struct thread *td, const mcontext_t *mc)
-{
- struct _special s;
- struct trapframe *tf;
- uint64_t psrmask;
-
- tf = td->td_frame;
-
- KASSERT((tf->tf_special.ndirty & ~PAGE_MASK) == 0,
- ("Whoa there! We have more than 8KB of dirty registers!"));
-
- s = mc->mc_special;
- /*
- * Only copy the user mask and the restart instruction bit from
- * the new context.
- */
- psrmask = IA64_PSR_BE | IA64_PSR_UP | IA64_PSR_AC | IA64_PSR_MFL |
- IA64_PSR_MFH | IA64_PSR_RI;
- s.psr = (tf->tf_special.psr & ~psrmask) | (s.psr & psrmask);
- /* We don't have any dirty registers of the new context. */
- s.ndirty = 0;
- if (mc->mc_flags & _MC_FLAGS_ASYNC_CONTEXT) {
- /*
- * We can get an async context passed to us while we
- * entered the kernel through a syscall: sigreturn(2)
- * takes contexts that could previously be the result of
- * a trap or interrupt.
- * Hence, we cannot assert that the trapframe is not
- * a syscall frame, but we can assert that it's at
- * least an expected syscall.
- */
- if (tf->tf_flags & FRAME_SYSCALL) {
- KASSERT(tf->tf_scratch.gr15 == SYS_sigreturn, ("foo"));
- tf->tf_flags &= ~FRAME_SYSCALL;
- }
- tf->tf_scratch = mc->mc_scratch;
- tf->tf_scratch_fp = mc->mc_scratch_fp;
- if (mc->mc_flags & _MC_FLAGS_HIGHFP_VALID)
- td->td_pcb->pcb_high_fp = mc->mc_high_fp;
- } else {
- KASSERT((tf->tf_flags & FRAME_SYSCALL) != 0, ("foo"));
- if ((mc->mc_flags & _MC_FLAGS_SYSCALL_CONTEXT) == 0) {
- s.cfm = tf->tf_special.cfm;
- s.iip = tf->tf_special.iip;
- tf->tf_scratch.gr15 = 0; /* Clear syscall nr. */
- } else
- tf->tf_scratch = mc->mc_scratch;
- }
- tf->tf_special = s;
- restore_callee_saved(&mc->mc_preserved);
- restore_callee_saved_fp(&mc->mc_preserved_fp);
-
- return (0);
-}
-
-/*
- * Clear registers on exec.
- */
-void
-exec_setregs(struct thread *td, struct image_params *imgp, u_long stack)
-{
- struct trapframe *tf;
- uint64_t *ksttop, *kst;
-
- tf = td->td_frame;
- ksttop = (uint64_t*)(td->td_kstack + tf->tf_special.ndirty +
- (tf->tf_special.bspstore & 0x1ffUL));
-
- /*
- * We can ignore up to 8KB of dirty registers by masking off the
- * lower 13 bits in exception_restore() or epc_syscall(). This
- * should be enough for a couple of years, but if there are more
- * than 8KB of dirty registers, we lose track of the bottom of
- * the kernel stack. The solution is to copy the active part of
- * the kernel stack down 1 page (or 2, but not more than that)
- * so that we always have less than 8KB of dirty registers.
- */
- KASSERT((tf->tf_special.ndirty & ~PAGE_MASK) == 0,
- ("Whoa there! We have more than 8KB of dirty registers!"));
-
- bzero(&tf->tf_special, sizeof(tf->tf_special));
- if ((tf->tf_flags & FRAME_SYSCALL) == 0) { /* break syscalls. */
- bzero(&tf->tf_scratch, sizeof(tf->tf_scratch));
- bzero(&tf->tf_scratch_fp, sizeof(tf->tf_scratch_fp));
- tf->tf_special.cfm = (1UL<<63) | (3UL<<7) | 3UL;
- tf->tf_special.bspstore = IA64_BACKINGSTORE;
- /*
- * Copy the arguments onto the kernel register stack so that
- * they get loaded by the loadrs instruction. Skip over the
- * NaT collection points.
- */
- kst = ksttop - 1;
- if (((uintptr_t)kst & 0x1ff) == 0x1f8)
- *kst-- = 0;
- *kst-- = 0;
- if (((uintptr_t)kst & 0x1ff) == 0x1f8)
- *kst-- = 0;
- *kst-- = imgp->ps_strings;
- if (((uintptr_t)kst & 0x1ff) == 0x1f8)
- *kst-- = 0;
- *kst = stack;
- tf->tf_special.ndirty = (ksttop - kst) << 3;
- } else { /* epc syscalls (default). */
- tf->tf_special.cfm = (3UL<<62) | (3UL<<7) | 3UL;
- tf->tf_special.bspstore = IA64_BACKINGSTORE + 24;
- /*
- * Write values for out0, out1 and out2 to the user's backing
- * store and arrange for them to be restored into the user's
- * initial register frame.
- * Assumes that (bspstore & 0x1f8) < 0x1e0.
- */
- suword((caddr_t)tf->tf_special.bspstore - 24, stack);
- suword((caddr_t)tf->tf_special.bspstore - 16, imgp->ps_strings);
- suword((caddr_t)tf->tf_special.bspstore - 8, 0);
- }
-
- tf->tf_special.iip = imgp->entry_addr;
- tf->tf_special.sp = (stack & ~15) - 16;
- tf->tf_special.rsc = 0xf;
- tf->tf_special.fpsr = IA64_FPSR_DEFAULT;
- tf->tf_special.psr = IA64_PSR_IC | IA64_PSR_I | IA64_PSR_IT |
- IA64_PSR_DT | IA64_PSR_RT | IA64_PSR_DFH | IA64_PSR_BN |
- IA64_PSR_CPL_USER;
-}
-
-int
-ptrace_set_pc(struct thread *td, unsigned long addr)
-{
- uint64_t slot;
-
- switch (addr & 0xFUL) {
- case 0:
- slot = IA64_PSR_RI_0;
- break;
- case 1:
- /* XXX we need to deal with MLX bundles here */
- slot = IA64_PSR_RI_1;
- break;
- case 2:
- slot = IA64_PSR_RI_2;
- break;
- default:
- return (EINVAL);
- }
-
- td->td_frame->tf_special.iip = addr & ~0x0FULL;
- td->td_frame->tf_special.psr =
- (td->td_frame->tf_special.psr & ~IA64_PSR_RI) | slot;
- return (0);
-}
-
-int
-ptrace_single_step(struct thread *td)
-{
- struct trapframe *tf;
-
- /*
- * There's no way to set single stepping when we're leaving the
- * kernel through the EPC syscall path. The way we solve this is
- * by enabling the lower-privilege trap so that we re-enter the
- * kernel as soon as the privilege level changes. See trap.c for
- * how we proceed from there.
- */
- tf = td->td_frame;
- if (tf->tf_flags & FRAME_SYSCALL)
- tf->tf_special.psr |= IA64_PSR_LP;
- else
- tf->tf_special.psr |= IA64_PSR_SS;
- return (0);
-}
-
-int
-ptrace_clear_single_step(struct thread *td)
-{
- struct trapframe *tf;
-
- /*
- * Clear any and all status bits we may use to implement single
- * stepping.
- */
- tf = td->td_frame;
- tf->tf_special.psr &= ~IA64_PSR_SS;
- tf->tf_special.psr &= ~IA64_PSR_LP;
- tf->tf_special.psr &= ~IA64_PSR_TB;
- return (0);
-}
-
-int
-fill_regs(struct thread *td, struct reg *regs)
-{
- struct trapframe *tf;
-
- tf = td->td_frame;
- regs->r_special = tf->tf_special;
- regs->r_scratch = tf->tf_scratch;
- save_callee_saved(&regs->r_preserved);
- return (0);
-}
-
-int
-set_regs(struct thread *td, struct reg *regs)
-{
- struct trapframe *tf;
- int error;
-
- tf = td->td_frame;
- error = ia64_flush_dirty(td, &tf->tf_special);
- if (!error) {
- tf->tf_special = regs->r_special;
- tf->tf_special.bspstore += tf->tf_special.ndirty;
- tf->tf_special.ndirty = 0;
- tf->tf_scratch = regs->r_scratch;
- restore_callee_saved(&regs->r_preserved);
- }
- return (error);
-}
-
-int
-fill_dbregs(struct thread *td, struct dbreg *dbregs)
-{
-
- return (ENOSYS);
-}
-
-int
-set_dbregs(struct thread *td, struct dbreg *dbregs)
-{
-
- return (ENOSYS);
-}
-
-int
-fill_fpregs(struct thread *td, struct fpreg *fpregs)
-{
- struct trapframe *frame = td->td_frame;
- struct pcb *pcb = td->td_pcb;
-
- /* Save the high FP registers. */
- ia64_highfp_save(td);
-
- fpregs->fpr_scratch = frame->tf_scratch_fp;
- save_callee_saved_fp(&fpregs->fpr_preserved);
- fpregs->fpr_high = pcb->pcb_high_fp;
- return (0);
-}
-
-int
-set_fpregs(struct thread *td, struct fpreg *fpregs)
-{
- struct trapframe *frame = td->td_frame;
- struct pcb *pcb = td->td_pcb;
-
- /* Throw away the high FP registers (should be redundant). */
- ia64_highfp_drop(td);
-
- frame->tf_scratch_fp = fpregs->fpr_scratch;
- restore_callee_saved_fp(&fpregs->fpr_preserved);
- pcb->pcb_high_fp = fpregs->fpr_high;
- return (0);
-}
-
-void
-ia64_sync_icache(vm_offset_t va, vm_offset_t sz)
-{
- vm_offset_t lim;
-
- if (!ia64_sync_icache_needed)
- return;
-
- lim = va + sz;
- while (va < lim) {
- ia64_fc_i(va);
- va += 32; /* XXX */
- }
-
- ia64_sync_i();
- ia64_srlz_i();
-}
diff --git a/sys/ia64/ia64/mca.c b/sys/ia64/ia64/mca.c
deleted file mode 100644
index dd0b9c3..0000000
--- a/sys/ia64/ia64/mca.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/*-
- * Copyright (c) 2002-2010 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/bus.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/mutex.h>
-#include <sys/sysctl.h>
-#include <sys/uuid.h>
-#include <vm/vm.h>
-#include <vm/vm_kern.h>
-#include <machine/intr.h>
-#include <machine/mca.h>
-#include <machine/pal.h>
-#include <machine/sal.h>
-#include <machine/smp.h>
-
-static MALLOC_DEFINE(M_MCA, "MCA", "Machine Check Architecture");
-
-struct mca_info {
- STAILQ_ENTRY(mca_info) mi_link;
- u_long mi_seqnr;
- u_int mi_cpuid;
- size_t mi_recsz;
- char mi_record[0];
-};
-
-STAILQ_HEAD(mca_info_list, mca_info);
-
-static int64_t mca_info_size[SAL_INFO_TYPES];
-static vm_offset_t mca_info_block;
-static struct mtx mca_info_block_lock;
-
-static SYSCTL_NODE(_hw, OID_AUTO, mca, CTLFLAG_RW, NULL, "MCA container");
-
-static int mca_count; /* Number of records stored. */
-static int mca_first; /* First (lowest) record ID. */
-static int mca_last; /* Last (highest) record ID. */
-
-SYSCTL_INT(_hw_mca, OID_AUTO, count, CTLFLAG_RD, &mca_count, 0,
- "Record count");
-SYSCTL_INT(_hw_mca, OID_AUTO, first, CTLFLAG_RD, &mca_first, 0,
- "First record id");
-SYSCTL_INT(_hw_mca, OID_AUTO, last, CTLFLAG_RD, &mca_last, 0,
- "Last record id");
-
-static struct mtx mca_sysctl_lock;
-
-static u_int mca_xiv_cmc;
-
-static int
-mca_sysctl_inject(SYSCTL_HANDLER_ARGS)
-{
- struct ia64_pal_result res;
- u_int val;
- int error;
-
- val = 0;
- error = sysctl_wire_old_buffer(req, sizeof(u_int));
- if (!error)
- error = sysctl_handle_int(oidp, &val, 0, req);
-
- if (error != 0 || req->newptr == NULL)
- return (error);
-
- /*
- * Example values for injecting PAL determined machine checks:
- * corrected 9
- * recoverable 73
- * fatal 137
- */
- res = ia64_call_pal_stacked(PAL_MC_ERROR_INJECT, val, 0, 0);
- printf("%s: %#lx, %#lx, %#lx, %#lx\n", __func__, res.pal_status,
- res.pal_result[0], res.pal_result[1], res.pal_result[2]);
- return (0);
-}
-SYSCTL_PROC(_hw_mca, OID_AUTO, inject, CTLTYPE_INT | CTLFLAG_RW, NULL, 0,
- mca_sysctl_inject, "I", "set to trigger a MCA");
-
-static int
-mca_sysctl_handler(SYSCTL_HANDLER_ARGS)
-{
- int error = 0;
-
- if (!arg1)
- return (EINVAL);
- error = SYSCTL_OUT(req, arg1, arg2);
-
- if (error || !req->newptr)
- return (error);
-
- error = SYSCTL_IN(req, arg1, arg2);
- return (error);
-}
-
-static void
-ia64_mca_collect_state(int type, struct mca_info_list *reclst)
-{
- struct ia64_sal_result result;
- struct mca_record_header *hdr;
- struct mca_info *rec;
- uint64_t seqnr;
- size_t recsz;
-
- /*
- * Don't try to get the state if we couldn't get the size of
- * the state information previously.
- */
- if (mca_info_size[type] == -1)
- return;
-
- if (mca_info_block == 0)
- return;
-
- while (1) {
- mtx_lock_spin(&mca_info_block_lock);
- result = ia64_sal_entry(SAL_GET_STATE_INFO, type, 0,
- mca_info_block, 0, 0, 0, 0);
- if (result.sal_status < 0) {
- mtx_unlock_spin(&mca_info_block_lock);
- break;
- }
-
- hdr = (struct mca_record_header *)mca_info_block;
- recsz = hdr->rh_length;
- seqnr = hdr->rh_seqnr;
-
- mtx_unlock_spin(&mca_info_block_lock);
-
- rec = malloc(sizeof(struct mca_info) + recsz, M_MCA,
- M_NOWAIT | M_ZERO);
- if (rec == NULL)
- /* XXX: Not sure what to do. */
- break;
-
- rec->mi_seqnr = seqnr;
- rec->mi_cpuid = PCPU_GET(cpuid);
-
- mtx_lock_spin(&mca_info_block_lock);
-
- /*
- * If the info block doesn't have our record anymore because
- * we temporarily unlocked it, get it again from SAL. I assume
- * that it's possible that we could get a different record.
- * I expect this to happen in a SMP configuration where the
- * record has been cleared by a different processor. So, if
- * we get a different record we simply abort with this record
- * and start over.
- */
- if (seqnr != hdr->rh_seqnr) {
- result = ia64_sal_entry(SAL_GET_STATE_INFO, type, 0,
- mca_info_block, 0, 0, 0, 0);
- if (seqnr != hdr->rh_seqnr) {
- mtx_unlock_spin(&mca_info_block_lock);
- free(rec, M_MCA);
- continue;
- }
- }
-
- rec->mi_recsz = recsz;
- bcopy((char*)mca_info_block, rec->mi_record, recsz);
-
- /*
- * Clear the state so that we get any other records when
- * they exist.
- */
- result = ia64_sal_entry(SAL_CLEAR_STATE_INFO, type, 0, 0, 0,
- 0, 0, 0);
-
- mtx_unlock_spin(&mca_info_block_lock);
-
- STAILQ_INSERT_TAIL(reclst, rec, mi_link);
- }
-}
-
-void
-ia64_mca_save_state(int type)
-{
- char name[64];
- struct mca_info_list reclst = STAILQ_HEAD_INITIALIZER(reclst);
- struct mca_info *rec;
- struct sysctl_oid *oid;
-
- ia64_mca_collect_state(type, &reclst);
-
- STAILQ_FOREACH(rec, &reclst, mi_link) {
- sprintf(name, "%lu", rec->mi_seqnr);
- oid = SYSCTL_ADD_NODE(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca),
- OID_AUTO, name, CTLFLAG_RW, NULL, name);
- if (oid == NULL)
- continue;
-
- mtx_lock(&mca_sysctl_lock);
- if (mca_count > 0) {
- if (rec->mi_seqnr < mca_first)
- mca_first = rec->mi_seqnr;
- else if (rec->mi_seqnr > mca_last)
- mca_last = rec->mi_seqnr;
- } else
- mca_first = mca_last = rec->mi_seqnr;
- mca_count++;
- mtx_unlock(&mca_sysctl_lock);
-
- sprintf(name, "%u", rec->mi_cpuid);
- SYSCTL_ADD_PROC(NULL, SYSCTL_CHILDREN(oid), rec->mi_cpuid,
- name, CTLTYPE_OPAQUE | CTLFLAG_RD, rec->mi_record,
- rec->mi_recsz, mca_sysctl_handler, "S,MCA", "MCA record");
- }
-}
-
-static u_int
-ia64_mca_intr(struct thread *td, u_int xiv, struct trapframe *tf)
-{
-
- if (xiv == mca_xiv_cmc) {
- printf("MCA: corrected machine check (CMC) interrupt\n");
- return (0);
- }
-
- return (0);
-}
-
-void
-ia64_mca_init_ap(void)
-{
-
- if (mca_xiv_cmc != 0)
- ia64_set_cmcv(mca_xiv_cmc);
-}
-
-void
-ia64_mca_init(void)
-{
- struct ia64_sal_result result;
- uint64_t max_size;
- char *p;
- int i;
-
- /*
- * Get the sizes of the state information we can get from SAL and
- * allocate a common block (forgive me my Fortran :-) for use by
- * support functions. We create a region 7 address to make it
- * easy on the OS_MCA or OS_INIT handlers to get the state info
- * under unreliable conditions.
- */
- max_size = 0;
- for (i = 0; i < SAL_INFO_TYPES; i++) {
- result = ia64_sal_entry(SAL_GET_STATE_INFO_SIZE, i, 0, 0, 0,
- 0, 0, 0);
- if (result.sal_status == 0) {
- mca_info_size[i] = result.sal_result[0];
- if (mca_info_size[i] > max_size)
- max_size = mca_info_size[i];
- } else
- mca_info_size[i] = -1;
- }
- max_size = round_page(max_size);
-
- p = (max_size) ? contigmalloc(max_size, M_TEMP, M_NOWAIT, 0ul, ~0ul,
- PAGE_SIZE, 256*1024*1024) : NULL;
- if (p != NULL) {
- mca_info_block = IA64_PHYS_TO_RR7(ia64_tpa((u_int64_t)p));
-
- if (bootverbose)
- printf("MCA: allocated %ld bytes for state info.\n",
- max_size);
- }
-
- /*
- * Initialize the spin lock used to protect the info block. When APs
- * get launched, there's a short moment of contention, but in all other
- * cases it's not a hot spot. I think it's possible to have the MCA
- * handler be called on multiple processors at the same time, but that
- * should be rare. On top of that, performance is not an issue when
- * dealing with machine checks...
- */
- mtx_init(&mca_info_block_lock, "MCA info lock", NULL, MTX_SPIN);
-
- /*
- * Serialize sysctl operations with a sleep lock. Note that this
- * implies that we update the sysctl tree in a context that allows
- * sleeping.
- */
- mtx_init(&mca_sysctl_lock, "MCA sysctl lock", NULL, MTX_DEF);
-
- /*
- * Get and save any processor and platfom error records. Note that in
- * a SMP configuration the processor records are for the BSP only. We
- * let the APs get and save their own records when we wake them up.
- */
- for (i = 0; i < SAL_INFO_TYPES; i++)
- ia64_mca_save_state(i);
-
- /*
- * Allocate a XIV for CMC interrupts, so that we can collect and save
- * the corrected processor checks.
- */
- mca_xiv_cmc = ia64_xiv_alloc(PI_SOFT, IA64_XIV_PLAT, ia64_mca_intr);
- if (mca_xiv_cmc != 0)
- ia64_set_cmcv(mca_xiv_cmc);
- else
- printf("MCA: CMC vector could not be allocated\n");
-}
diff --git a/sys/ia64/ia64/mem.c b/sys/ia64/ia64/mem.c
deleted file mode 100644
index 6faf437..0000000
--- a/sys/ia64/ia64/mem.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*-
- * Copyright (c) 1988 University of Utah.
- * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * the Systems Programming Group of the University of Utah Computer
- * Science Department, and code derived from software contributed to
- * Berkeley by William Jolitz.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from: Utah $Hdr: mem.c 1.13 89/10/08$
- * from: @(#)mem.c 7.2 (Berkeley) 5/9/91
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * Memory special file
- */
-
-#include <sys/param.h>
-#include <sys/conf.h>
-#include <sys/efi.h>
-#include <sys/fcntl.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/memrange.h>
-#include <sys/systm.h>
-#include <sys/uio.h>
-
-#include <vm/vm.h>
-#include <vm/pmap.h>
-#include <vm/vm_extern.h>
-
-#include <machine/memdev.h>
-
-struct mem_range_softc mem_range_softc;
-
-static int
-mem_phys2virt(vm_offset_t offset, int prot, void **ptr, u_long *limit)
-{
- struct efi_md *md;
-
- if (prot & ~(VM_PROT_READ | VM_PROT_WRITE))
- return (EPERM);
-
- md = efi_md_find(offset);
- if (md == NULL)
- return (EFAULT);
-
- if (md->md_type == EFI_MD_TYPE_BAD)
- return (EIO);
-
- *ptr = (void *)((md->md_attr & EFI_MD_ATTR_WB)
- ? IA64_PHYS_TO_RR7(offset) : IA64_PHYS_TO_RR6(offset));
- *limit = (md->md_pages * EFI_PAGE_SIZE) - (offset - md->md_phys);
- return (0);
-}
-
-/* ARGSUSED */
-int
-memrw(struct cdev *dev, struct uio *uio, int flags)
-{
- struct iovec *iov;
- off_t ofs;
- vm_offset_t addr;
- void *ptr;
- u_long limit;
- int count, error, phys, rw;
-
- error = 0;
- rw = (uio->uio_rw == UIO_READ) ? VM_PROT_READ : VM_PROT_WRITE;
-
- while (uio->uio_resid > 0 && !error) {
- iov = uio->uio_iov;
- if (iov->iov_len == 0) {
- uio->uio_iov++;
- uio->uio_iovcnt--;
- if (uio->uio_iovcnt < 0)
- panic("memrw");
- continue;
- }
-
- ofs = uio->uio_offset;
-
- phys = (dev2unit(dev) == CDEV_MINOR_MEM) ? 1 : 0;
- if (phys == 0 && ofs >= IA64_RR_BASE(6)) {
- ofs = IA64_RR_MASK(ofs);
- phys++;
- }
-
- if (phys) {
- error = mem_phys2virt(ofs, rw, &ptr, &limit);
- if (error)
- return (error);
-
- count = min(uio->uio_resid, limit);
- error = uiomove(ptr, count, uio);
- } else {
- ptr = (void *)ofs;
- count = iov->iov_len;
-
- /*
- * Make sure that all of the pages are currently
- * resident so that we don't create any zero-fill
- * pages.
- */
- limit = round_page(ofs + count);
- addr = trunc_page(ofs);
- if (addr < VM_MAXUSER_ADDRESS)
- return (EINVAL);
- for (; addr < limit; addr += PAGE_SIZE) {
- if (pmap_kextract(addr) == 0)
- return (EFAULT);
- }
- if (!kernacc(ptr, count, rw))
- return (EFAULT);
- error = uiomove(ptr, count, uio);
- }
- /* else panic! */
- }
- return (error);
-}
-
-/*
- * allow user processes to MMAP some memory sections
- * instead of going through read/write
- */
-int
-memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
- int prot, vm_memattr_t *memattr)
-{
- void *ptr;
- u_long limit;
- int error;
-
- /*
- * /dev/mem is the only one that makes sense through this
- * interface. For /dev/kmem any physaddr we return here
- * could be transient and hence incorrect or invalid at
- * a later time.
- */
- if (dev2unit(dev) != CDEV_MINOR_MEM)
- return (ENXIO);
-
- error = mem_phys2virt(offset, prot, &ptr, &limit);
- if (error)
- return (error);
-
- *paddr = offset;
- *memattr = ((uintptr_t)ptr >= IA64_RR_BASE(7)) ?
- VM_MEMATTR_WRITE_BACK : VM_MEMATTR_UNCACHEABLE;
- return (0);
-}
diff --git a/sys/ia64/ia64/mp_locore.S b/sys/ia64/ia64/mp_locore.S
deleted file mode 100644
index 75f75a9..0000000
--- a/sys/ia64/ia64/mp_locore.S
+++ /dev/null
@@ -1,275 +0,0 @@
-/*-
- * Copyright (c) 2011 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-#include <machine/ia64_cpu.h>
-#include <machine/pte.h>
-#include <assym.s>
-
-/*
- * AP wake-up entry point. The handoff state is similar as for the BSP,
- * as described on page 3-9 of the IPF SAL Specification. The difference
- * lies in the contents of register b0. For APs this register holds the
- * return address into the SAL rendezvous routine.
- *
- * Note that we're responsible for clearing the IRR bit by reading cr.ivr
- * and issuing the EOI to the local SAPIC.
- */
- .align 32
-ENTRY_NOPROFILE(os_boot_rendez,0)
-{ .mmi
- st8 [gp] = gp // trace = 0x00
- mov r8 = cr.ivr // clear IRR bit
- add r2 = 8, gp
- ;;
-}
-{ .mmi
- srlz.d
- mov cr.eoi = r0 // ACK the wake-up
- add r3 = 16, gp
- ;;
-}
-{ .mmi
- srlz.d
- rsm IA64_PSR_IC | IA64_PSR_I
- mov r16 = (IA64_PBVM_RR << 8) | (IA64_PBVM_PAGE_SHIFT << 2)
- ;;
-}
-{ .mmi
- srlz.d
- st8 [gp] = r2 // trace = 0x08
- dep.z r17 = IA64_PBVM_RR, 61, 3
- ;;
-}
-{ .mlx
- mov rr[r17] = r16
- movl r18 = IA64_PBVM_PGTBL
- ;;
-}
-{ .mmi
- srlz.i
- ;;
- st8 [gp] = r3 // trace = 0x10
- nop 0
- ;;
-}
-{ .mmi
- ld8 r16 = [r2], 16 // as_pgtbl_pte
- ld8 r17 = [r3], 16 // as_pgtbl_itir
- nop 0
- ;;
-}
-{ .mmi
- mov cr.itir = r17
- mov cr.ifa = r18
- nop 0
- ;;
-}
-{ .mmi
- srlz.d
- ptr.d r18, r17
- nop 0
- ;;
-}
-{ .mmi
- srlz.d
- st8 [gp] = r2 // trace = 0x18
- mov r8 = r0
- ;;
-}
-{ .mmi
- itr.d dtr[r8] = r16
- ;;
- srlz.d
- mov r9 = r0
- ;;
-}
-{ .mmi
- ld8 r16 = [r2], 16 // as_text_va
- st8 [gp] = r3 // trace = 0x20
- add r8 = 1, r8
- ;;
-}
-{ .mmi
- ld8 r17 = [r3], 16 // as_text_pte
- ld8 r18 = [r2], 16 // as_text_itir
- nop 0
- ;;
-}
-{ .mmi
- mov cr.ifa = r16
- mov cr.itir = r18
- nop 0
- ;;
-}
-{ .mmi
- srlz.d
- ptr.d r16, r18
- nop 0
- ;;
-}
-{ .mmi
- srlz.d
- st8 [gp] = r3 // trace = 0x30
- nop 0
- ;;
-}
-{ .mmi
- itr.d dtr[r8] = r17
- ;;
- srlz.d
- nop 0
-}
-{ .mmi
- st8 [gp] = r2 // trace = 0x38
- ptr.i r16, r18
- add r8 = 1, r8
- ;;
-}
-{ .mmi
- srlz.i
- ;;
- itr.i itr[r9] = r17
- nop 0
- ;;
-}
-{ .mmi
- srlz.i
- ;;
- ld8 r16 = [r3], 16 // as_data_va
- add r9 = 1, r9
- ;;
-}
-{ .mmi
- st8 [gp] = r3 // trace = 0x40
- ld8 r17 = [r2], 16 // as_data_pte
- nop 0
- ;;
-}
-{ .mmi
- mov cr.ifa = r16
- ld8 r18 = [r3], 16 // as_data_itir
- nop 0
- ;;
-}
-{ .mmi
- mov cr.itir = r18
- ;;
- srlz.d
- nop 0
- ;;
-}
-{ .mmi
- ptr.d r16, r18
- ;;
- srlz.d
- mov r19 = IA64_DCR_DEFAULT
- ;;
-}
-{ .mmi
- itr.d dtr[r8] = r17
- ;;
- srlz.d
- add r8 = 1, r8
- ;;
-}
-{ .mmi
- st8 [gp] = r2 // trace = 0x48
- ;;
- ld8 r16 = [r2], 16 // as_kstack
- nop 0
-}
-{ .mmi
- ld8 r17 = [r3], 16 // as_kstack_top
- mov cr.dcr = r19
- nop 0
- ;;
-}
-{ .mlx
- srlz.i
- movl r18 = IA64_PSR_BN | IA64_PSR_IT | IA64_PSR_DT | IA64_PSR_IC | \
- IA64_PSR_RT | IA64_PSR_DFH
- ;;
-}
-{ .mlx
- mov cr.ipsr = r18
- movl r19 = ia64_vector_table // set up IVT early
- ;;
-}
-{ .mlx
- mov cr.iva = r19
- movl r18 = 1f
- ;;
-}
-{ .mmi
- mov cr.iip = r18
- mov cr.ifs = r0
- nop 0
- ;;
-}
-{ .mmb
- srlz.d
- st8 [gp] = r2 // trace = 0x58
- rfi
- ;;
-}
-
- .align 32
-1:
-{ .mlx
- mov ar.bspstore = r16
- movl gp = __gp
- ;;
-}
-{ .mmi
- loadrs
- add sp = -16, r17
- nop 0
- ;;
-}
-{ .mmi
- mov ar.rsc = 3
- ;;
- alloc r18 = ar.pfs, 0, 0, 0, 0
- ;;
-}
-{ .mib
- nop 0
- nop 0
- br.call.sptk.few rp = ia64_ap_startup
- ;;
-}
- /* NOT REACHED */
-9:
-{ .mib
- nop 0
- nop 0
- br.sptk 9b
- ;;
-}
-END(os_boot_rendez)
diff --git a/sys/ia64/ia64/mp_machdep.c b/sys/ia64/ia64/mp_machdep.c
deleted file mode 100644
index 4e7ffb8..0000000
--- a/sys/ia64/ia64/mp_machdep.c
+++ /dev/null
@@ -1,543 +0,0 @@
-/*-
- * Copyright (c) 2001-2005 Marcel Moolenaar
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_kstack_pages.h"
-#include "opt_xtrace.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/ktr.h>
-#include <sys/proc.h>
-#include <sys/bus.h>
-#include <sys/kthread.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/mutex.h>
-#include <sys/kernel.h>
-#include <sys/pcpu.h>
-#include <sys/sched.h>
-#include <sys/smp.h>
-#include <sys/sysctl.h>
-#include <sys/uuid.h>
-
-#include <machine/atomic.h>
-#include <machine/bootinfo.h>
-#include <machine/cpu.h>
-#include <machine/fpu.h>
-#include <machine/intr.h>
-#include <machine/mca.h>
-#include <machine/md_var.h>
-#include <machine/pal.h>
-#include <machine/pcb.h>
-#include <machine/sal.h>
-#include <machine/smp.h>
-
-#include <vm/vm.h>
-#include <vm/pmap.h>
-#include <vm/vm_extern.h>
-#include <vm/vm_kern.h>
-
-extern uint64_t bdata[];
-
-extern int smp_disabled;
-
-MALLOC_DEFINE(M_SMP, "SMP", "SMP related allocations");
-
-void ia64_ap_startup(void);
-
-#define SAPIC_ID_GET_ID(x) ((u_int)((x) >> 8) & 0xff)
-#define SAPIC_ID_GET_EID(x) ((u_int)(x) & 0xff)
-#define SAPIC_ID_SET(id, eid) ((u_int)(((id) & 0xff) << 8) | ((eid) & 0xff))
-
-/* State used to wake and bootstrap APs. */
-struct ia64_ap_state ia64_ap_state;
-
-int ia64_ipi_ast;
-int ia64_ipi_hardclock;
-int ia64_ipi_highfp;
-int ia64_ipi_nmi;
-int ia64_ipi_preempt;
-int ia64_ipi_rndzvs;
-int ia64_ipi_stop;
-
-static u_int
-sz2shft(uint64_t sz)
-{
- uint64_t s;
- u_int shft;
-
- shft = 12; /* Start with 4K */
- s = 1 << shft;
- while (s < sz) {
- shft++;
- s <<= 1;
- }
- return (shft);
-}
-
-static u_int
-ia64_ih_ast(struct thread *td, u_int xiv, struct trapframe *tf)
-{
-
- PCPU_INC(md.stats.pcs_nasts);
- CTR1(KTR_SMP, "IPI_AST, cpuid=%d", PCPU_GET(cpuid));
- return (0);
-}
-
-static u_int
-ia64_ih_hardclock(struct thread *td, u_int xiv, struct trapframe *tf)
-{
- struct trapframe *stf;
-
- PCPU_INC(md.stats.pcs_nhardclocks);
- CTR1(KTR_SMP, "IPI_HARDCLOCK, cpuid=%d", PCPU_GET(cpuid));
- stf = td->td_intr_frame;
- td->td_intr_frame = tf;
- hardclockintr();
- td->td_intr_frame = stf;
- return (0);
-}
-
-static u_int
-ia64_ih_highfp(struct thread *td, u_int xiv, struct trapframe *tf)
-{
-
- PCPU_INC(md.stats.pcs_nhighfps);
- ia64_highfp_save_ipi();
- return (0);
-}
-
-static u_int
-ia64_ih_preempt(struct thread *td, u_int xiv, struct trapframe *tf)
-{
-
- PCPU_INC(md.stats.pcs_npreempts);
- CTR1(KTR_SMP, "IPI_PREEMPT, cpuid=%d", PCPU_GET(cpuid));
- sched_preempt(curthread);
- return (0);
-}
-
-static u_int
-ia64_ih_rndzvs(struct thread *td, u_int xiv, struct trapframe *tf)
-{
-
- PCPU_INC(md.stats.pcs_nrdvs);
- CTR1(KTR_SMP, "IPI_RENDEZVOUS, cpuid=%d", PCPU_GET(cpuid));
- smp_rendezvous_action();
- return (0);
-}
-
-static u_int
-ia64_ih_stop(struct thread *td, u_int xiv, struct trapframe *tf)
-{
- u_int cpuid;
-
- PCPU_INC(md.stats.pcs_nstops);
- cpuid = PCPU_GET(cpuid);
-
- savectx(PCPU_PTR(md.pcb));
-
- CPU_SET_ATOMIC(cpuid, &stopped_cpus);
- while (!CPU_ISSET(cpuid, &started_cpus))
- cpu_spinwait();
- CPU_CLR_ATOMIC(cpuid, &started_cpus);
- CPU_CLR_ATOMIC(cpuid, &stopped_cpus);
- return (0);
-}
-
-struct cpu_group *
-cpu_topo(void)
-{
-
- return smp_topo_none();
-}
-
-static void
-ia64_store_mca_state(void* arg)
-{
- struct pcpu *pc = arg;
- struct thread *td = curthread;
-
- /*
- * ia64_mca_save_state() is CPU-sensitive, so bind ourself to our
- * target CPU.
- */
- thread_lock(td);
- sched_bind(td, pc->pc_cpuid);
- thread_unlock(td);
-
- ia64_mca_init_ap();
-
- /*
- * Get and save the CPU specific MCA records. Should we get the
- * MCA state for each processor, or just the CMC state?
- */
- ia64_mca_save_state(SAL_INFO_MCA);
- ia64_mca_save_state(SAL_INFO_CMC);
-
- kproc_exit(0);
-}
-
-void
-ia64_ap_startup(void)
-{
- uint64_t vhpt;
-
- ia64_ap_state.as_trace = 0x100;
-
- ia64_set_rr(IA64_RR_BASE(5), (5 << 8) | (PAGE_SHIFT << 2) | 1);
- ia64_set_rr(IA64_RR_BASE(6), (6 << 8) | (LOG2_ID_PAGE_SIZE << 2));
- ia64_set_rr(IA64_RR_BASE(7), (7 << 8) | (LOG2_ID_PAGE_SIZE << 2));
- ia64_srlz_d();
-
- pcpup = ia64_ap_state.as_pcpu;
- ia64_set_k4((intptr_t)pcpup);
-
- ia64_ap_state.as_trace = 0x108;
-
- vhpt = PCPU_GET(md.vhpt);
- map_vhpt(vhpt);
- ia64_set_pta(vhpt + (1 << 8) + (pmap_vhpt_log2size << 2) + 1);
- ia64_srlz_i();
-
- ia64_ap_state.as_trace = 0x110;
-
- ia64_ap_state.as_awake = 1;
- ia64_ap_state.as_delay = 0;
-
- map_pal_code();
- map_gateway_page();
-
- ia64_set_fpsr(IA64_FPSR_DEFAULT);
-
-#ifdef XTRACE
- ia64_xtrace_init_ap(ia64_ap_state.as_xtrace_buffer);
-#endif
-
- /* Wait until it's time for us to be unleashed */
- while (ia64_ap_state.as_spin)
- cpu_spinwait();
-
- /* Initialize curthread. */
- KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread"));
- PCPU_SET(curthread, PCPU_GET(idlethread));
-
- pmap_invalidate_all();
-
- atomic_add_int(&ia64_ap_state.as_awake, 1);
- while (!smp_started)
- cpu_spinwait();
-
- CTR1(KTR_SMP, "SMP: cpu%d launched", PCPU_GET(cpuid));
-
- cpu_initclocks();
-
- ia64_set_tpr(0);
- ia64_srlz_d();
-
- sched_throw(NULL);
- /* NOTREACHED */
-}
-
-void
-cpu_mp_setmaxid(void)
-{
-
- /*
- * Count the number of processors in the system by walking the ACPI
- * tables. Note that we record the actual number of processors, even
- * if this is larger than MAXCPU. We only activate MAXCPU processors.
- */
- mp_ncpus = ia64_count_cpus();
-
- /*
- * Set the largest cpuid we're going to use. This is necessary for
- * VM initialization.
- */
- mp_maxid = min(mp_ncpus, MAXCPU) - 1;
-}
-
-int
-cpu_mp_probe(void)
-{
-
- /*
- * If there's only 1 processor, or we don't have a wake-up vector,
- * we're not going to enable SMP. Note that no wake-up vector can
- * also mean that the wake-up mechanism is not supported. In this
- * case we can have multiple processors, but we simply can't wake
- * them up...
- */
- return (mp_ncpus > 1 && ia64_ipi_wakeup != 0);
-}
-
-void
-cpu_mp_add(u_int acpi_id, u_int id, u_int eid)
-{
- struct pcpu *pc;
- void *dpcpu;
- u_int cpuid, sapic_id;
-
- if (smp_disabled)
- return;
-
- sapic_id = SAPIC_ID_SET(id, eid);
- cpuid = (IA64_LID_GET_SAPIC_ID(ia64_get_lid()) == sapic_id)
- ? 0 : smp_cpus++;
-
- KASSERT(!CPU_ISSET(cpuid, &all_cpus),
- ("%s: cpu%d already in CPU map", __func__, acpi_id));
-
- if (cpuid != 0) {
- pc = (struct pcpu *)malloc(sizeof(*pc), M_SMP, M_WAITOK);
- pcpu_init(pc, cpuid, sizeof(*pc));
- dpcpu = (void *)kmem_malloc(kernel_arena, DPCPU_SIZE,
- M_WAITOK | M_ZERO);
- dpcpu_init(dpcpu, cpuid);
- } else
- pc = pcpup;
-
- cpu_pcpu_setup(pc, acpi_id, sapic_id);
-
- CPU_SET(pc->pc_cpuid, &all_cpus);
-}
-
-void
-cpu_mp_announce()
-{
- struct pcpu *pc;
- uint32_t sapic_id;
- int i;
-
- for (i = 0; i <= mp_maxid; i++) {
- pc = pcpu_find(i);
- if (pc != NULL) {
- sapic_id = IA64_LID_GET_SAPIC_ID(pc->pc_md.lid);
- printf("cpu%d: ACPI Id=%x, SAPIC Id=%x, SAPIC Eid=%x",
- i, pc->pc_acpi_id, SAPIC_ID_GET_ID(sapic_id),
- SAPIC_ID_GET_EID(sapic_id));
- if (i == 0)
- printf(" (BSP)\n");
- else
- printf("\n");
- }
- }
-}
-
-void
-cpu_mp_start()
-{
- struct ia64_sal_result result;
- struct ia64_fdesc *fd;
- struct pcpu *pc;
- uintptr_t state;
- u_char *stp;
-
- state = ia64_tpa((uintptr_t)&ia64_ap_state);
- fd = (struct ia64_fdesc *) os_boot_rendez;
- result = ia64_sal_entry(SAL_SET_VECTORS, SAL_OS_BOOT_RENDEZ,
- ia64_tpa(fd->func), state, 0, 0, 0, 0);
-
- ia64_ap_state.as_pgtbl_pte = PTE_PRESENT | PTE_MA_WB |
- PTE_ACCESSED | PTE_DIRTY | PTE_PL_KERN | PTE_AR_RW |
- (bootinfo->bi_pbvm_pgtbl & PTE_PPN_MASK);
- ia64_ap_state.as_pgtbl_itir = sz2shft(bootinfo->bi_pbvm_pgtblsz) << 2;
- ia64_ap_state.as_text_va = IA64_PBVM_BASE;
- ia64_ap_state.as_text_pte = PTE_PRESENT | PTE_MA_WB |
- PTE_ACCESSED | PTE_DIRTY | PTE_PL_KERN | PTE_AR_RX |
- (ia64_tpa(IA64_PBVM_BASE) & PTE_PPN_MASK);
- ia64_ap_state.as_text_itir = bootinfo->bi_text_mapped << 2;
- ia64_ap_state.as_data_va = (uintptr_t)bdata;
- ia64_ap_state.as_data_pte = PTE_PRESENT | PTE_MA_WB |
- PTE_ACCESSED | PTE_DIRTY | PTE_PL_KERN | PTE_AR_RW |
- (ia64_tpa((uintptr_t)bdata) & PTE_PPN_MASK);
- ia64_ap_state.as_data_itir = bootinfo->bi_data_mapped << 2;
-
- /* Keep 'em spinning until we unleash them... */
- ia64_ap_state.as_spin = 1;
-
- STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) {
- pc->pc_md.current_pmap = kernel_pmap;
- /* The BSP is obviously running already. */
- if (pc->pc_cpuid == 0) {
- pc->pc_md.awake = 1;
- continue;
- }
-
- ia64_ap_state.as_pcpu = pc;
- pc->pc_md.vhpt = pmap_alloc_vhpt();
- if (pc->pc_md.vhpt == 0) {
- printf("SMP: WARNING: unable to allocate VHPT"
- " for cpu%d", pc->pc_cpuid);
- continue;
- }
-
- stp = malloc(KSTACK_PAGES * PAGE_SIZE, M_SMP, M_WAITOK);
- ia64_ap_state.as_kstack = stp;
- ia64_ap_state.as_kstack_top = stp + KSTACK_PAGES * PAGE_SIZE;
-
-#ifdef XTRACE
- ia64_ap_state.as_xtrace_buffer = ia64_xtrace_alloc();
-#endif
-
- ia64_ap_state.as_trace = 0;
- ia64_ap_state.as_delay = 2000;
- ia64_ap_state.as_awake = 0;
-
- if (bootverbose)
- printf("SMP: waking up cpu%d\n", pc->pc_cpuid);
-
- /* Here she goes... */
- ipi_send(pc, ia64_ipi_wakeup);
- do {
- DELAY(1000);
- } while (--ia64_ap_state.as_delay > 0);
-
- pc->pc_md.awake = ia64_ap_state.as_awake;
-
- if (!ia64_ap_state.as_awake) {
- printf("SMP: WARNING: cpu%d did not wake up (code "
- "%#lx)\n", pc->pc_cpuid,
- ia64_ap_state.as_trace - state);
- }
- }
-}
-
-static void
-cpu_mp_unleash(void *dummy)
-{
- struct pcpu *pc;
- int cpus;
-
- if (mp_ncpus <= 1)
- return;
-
- /* Allocate XIVs for IPIs */
- ia64_ipi_ast = ia64_xiv_alloc(PI_DULL, IA64_XIV_IPI, ia64_ih_ast);
- ia64_ipi_hardclock = ia64_xiv_alloc(PI_REALTIME, IA64_XIV_IPI,
- ia64_ih_hardclock);
- ia64_ipi_highfp = ia64_xiv_alloc(PI_AV, IA64_XIV_IPI, ia64_ih_highfp);
- ia64_ipi_preempt = ia64_xiv_alloc(PI_SOFT, IA64_XIV_IPI,
- ia64_ih_preempt);
- ia64_ipi_rndzvs = ia64_xiv_alloc(PI_AV, IA64_XIV_IPI, ia64_ih_rndzvs);
- ia64_ipi_stop = ia64_xiv_alloc(PI_REALTIME, IA64_XIV_IPI, ia64_ih_stop);
-
- /* Reserve the NMI vector for IPI_STOP_HARD if possible */
- ia64_ipi_nmi = (ia64_xiv_reserve(2, IA64_XIV_IPI, ia64_ih_stop) != 0)
- ? ia64_ipi_stop : 0x400; /* DM=NMI, Vector=n/a */
-
- cpus = 0;
- smp_cpus = 0;
- STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) {
- cpus++;
- if (pc->pc_md.awake) {
- kproc_create(ia64_store_mca_state, pc, NULL, 0, 0,
- "mca %u", pc->pc_cpuid);
- smp_cpus++;
- }
- }
-
- ia64_ap_state.as_awake = 1;
- ia64_ap_state.as_spin = 0;
-
- while (ia64_ap_state.as_awake != smp_cpus)
- cpu_spinwait();
-
- if (smp_cpus != cpus || cpus != mp_ncpus) {
- printf("SMP: %d CPUs found; %d CPUs usable; %d CPUs woken\n",
- mp_ncpus, cpus, smp_cpus);
- }
-
- /* XXX Atomic set operation? */
- smp_started = 1;
-
- /*
- * Now that all CPUs are up and running, bind interrupts to each of
- * them.
- */
- ia64_bind_intr();
-}
-SYSINIT(start_aps, SI_SUB_KICK_SCHEDULER, SI_ORDER_ANY, cpu_mp_unleash, NULL);
-
-/*
- * send an IPI to a set of cpus.
- */
-void
-ipi_selected(cpuset_t cpus, int ipi)
-{
- struct pcpu *pc;
-
- STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) {
- if (CPU_ISSET(pc->pc_cpuid, &cpus))
- ipi_send(pc, ipi);
- }
-}
-
-/*
- * send an IPI to a specific CPU.
- */
-void
-ipi_cpu(int cpu, u_int ipi)
-{
-
- ipi_send(cpuid_to_pcpu[cpu], ipi);
-}
-
-/*
- * send an IPI to all CPUs EXCEPT myself.
- */
-void
-ipi_all_but_self(int ipi)
-{
- struct pcpu *pc;
-
- STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) {
- if (pc != pcpup)
- ipi_send(pc, ipi);
- }
-}
-
-/*
- * Send an IPI to the specified processor.
- */
-void
-ipi_send(struct pcpu *cpu, int xiv)
-{
- u_int sapic_id;
-
- KASSERT(xiv != 0, ("ipi_send"));
-
- sapic_id = IA64_LID_GET_SAPIC_ID(cpu->pc_md.lid);
-
- ia64_mf();
- ia64_st8(&(ia64_pib->ib_ipi[sapic_id][0]), xiv);
- ia64_mf_a();
- CTR3(KTR_SMP, "ipi_send(%p, %d): cpuid=%d", cpu, xiv, PCPU_GET(cpuid));
-}
diff --git a/sys/ia64/ia64/nexus.c b/sys/ia64/ia64/nexus.c
deleted file mode 100644
index a4d3e24..0000000
--- a/sys/ia64/ia64/nexus.c
+++ /dev/null
@@ -1,530 +0,0 @@
-/*-
- * Copyright 1998 Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby
- * granted, provided that both the above copyright notice and this
- * permission notice appear in all copies, that both the above
- * copyright notice and this permission notice appear in all
- * supporting documentation, and that the name of M.I.T. not be used
- * in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. M.I.T. makes
- * no representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
- * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
- * SHALL M.I.T. 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.
- *
- * $FreeBSD$
- */
-
-/*
- * This code implements a `root nexus' for Intel Architecture
- * machines. The function of the root nexus is to serve as an
- * attachment point for both processors and buses, and to manage
- * resources which are common to all of them. In particular,
- * this code implements the core resource managers for interrupt
- * requests, DMA requests (which rightfully should be a part of the
- * ISA code but it's easier to do it here for now), I/O port addresses,
- * and I/O memory address space.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/bus.h>
-#include <sys/clock.h>
-#include <sys/efi.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/module.h>
-#include <machine/bus.h>
-#include <sys/rman.h>
-#include <sys/interrupt.h>
-#include <sys/pcpu.h>
-
-#include <vm/vm.h>
-#include <vm/pmap.h>
-
-#include <machine/intr.h>
-#include <machine/pmap.h>
-#include <machine/resource.h>
-#include <machine/vmparam.h>
-
-#include <contrib/dev/acpica/include/acpi.h>
-
-#include <dev/acpica/acpivar.h>
-
-#include "clock_if.h"
-
-static MALLOC_DEFINE(M_NEXUSDEV, "nexusdev", "Nexus device");
-struct nexus_device {
- struct resource_list nx_resources;
-};
-
-#define DEVTONX(dev) ((struct nexus_device *)device_get_ivars(dev))
-
-static struct rman irq_rman, port_rman, mem_rman;
-
-static int nexus_probe(device_t);
-static int nexus_attach(device_t);
-static int nexus_print_child(device_t, device_t);
-static device_t nexus_add_child(device_t bus, u_int order, const char *name,
- int unit);
-static struct resource *nexus_alloc_resource(device_t, device_t, int, int *,
- u_long, u_long, u_long, u_int);
-static int nexus_adjust_resource(device_t, device_t, int, struct resource *,
- u_long, u_long);
-static int nexus_activate_resource(device_t, device_t, int, int,
- struct resource *);
-static int nexus_deactivate_resource(device_t, device_t, int, int,
- struct resource *);
-static int nexus_release_resource(device_t, device_t, int, int,
- struct resource *);
-static int nexus_setup_intr(device_t, device_t, struct resource *, int flags,
- driver_filter_t filter, void (*)(void *), void *,
- void **);
-static int nexus_teardown_intr(device_t, device_t, struct resource *,
- void *);
-static struct resource_list *nexus_get_reslist(device_t dev, device_t child);
-static int nexus_set_resource(device_t, device_t, int, int, u_long, u_long);
-static int nexus_get_resource(device_t, device_t, int, int, u_long *,
- u_long *);
-static void nexus_delete_resource(device_t, device_t, int, int);
-static int nexus_bind_intr(device_t, device_t, struct resource *, int);
-static int nexus_config_intr(device_t, int, enum intr_trigger,
- enum intr_polarity);
-
-static int nexus_gettime(device_t, struct timespec *);
-static int nexus_settime(device_t, struct timespec *);
-
-static device_method_t nexus_methods[] = {
- /* Device interface */
- DEVMETHOD(device_probe, nexus_probe),
- DEVMETHOD(device_attach, nexus_attach),
- DEVMETHOD(device_detach, bus_generic_detach),
- DEVMETHOD(device_shutdown, bus_generic_shutdown),
- DEVMETHOD(device_suspend, bus_generic_suspend),
- DEVMETHOD(device_resume, bus_generic_resume),
-
- /* Bus interface */
- DEVMETHOD(bus_print_child, nexus_print_child),
- DEVMETHOD(bus_add_child, nexus_add_child),
- DEVMETHOD(bus_alloc_resource, nexus_alloc_resource),
- DEVMETHOD(bus_adjust_resource, nexus_adjust_resource),
- DEVMETHOD(bus_release_resource, nexus_release_resource),
- DEVMETHOD(bus_activate_resource, nexus_activate_resource),
- DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource),
- DEVMETHOD(bus_setup_intr, nexus_setup_intr),
- DEVMETHOD(bus_teardown_intr, nexus_teardown_intr),
- DEVMETHOD(bus_get_resource_list, nexus_get_reslist),
- DEVMETHOD(bus_set_resource, nexus_set_resource),
- DEVMETHOD(bus_get_resource, nexus_get_resource),
- DEVMETHOD(bus_delete_resource, nexus_delete_resource),
- DEVMETHOD(bus_bind_intr, nexus_bind_intr),
- DEVMETHOD(bus_config_intr, nexus_config_intr),
-
- /* Clock interface */
- DEVMETHOD(clock_gettime, nexus_gettime),
- DEVMETHOD(clock_settime, nexus_settime),
-
- { 0, 0 }
-};
-
-static driver_t nexus_driver = {
- "nexus",
- nexus_methods,
- 1, /* no softc */
-};
-static devclass_t nexus_devclass;
-
-DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0);
-
-static int
-nexus_probe(device_t dev)
-{
-
- device_quiet(dev); /* suppress attach message for neatness */
-
- irq_rman.rm_type = RMAN_ARRAY;
- irq_rman.rm_descr = "Interrupt request lines";
- irq_rman.rm_start = 0;
- irq_rman.rm_end = IA64_NXIVS - 1;
- if (rman_init(&irq_rman)
- || rman_manage_region(&irq_rman,
- irq_rman.rm_start, irq_rman.rm_end))
- panic("nexus_probe irq_rman");
-
- port_rman.rm_start = 0;
- port_rman.rm_end = 0xffff;
- port_rman.rm_type = RMAN_ARRAY;
- port_rman.rm_descr = "I/O ports";
- if (rman_init(&port_rman)
- || rman_manage_region(&port_rman, 0, 0xffff))
- panic("nexus_probe port_rman");
-
- mem_rman.rm_start = 0;
- mem_rman.rm_end = ~0ul;
- mem_rman.rm_type = RMAN_ARRAY;
- mem_rman.rm_descr = "I/O memory addresses";
- if (rman_init(&mem_rman)
- || rman_manage_region(&mem_rman, 0, ~0))
- panic("nexus_probe mem_rman");
-
- return bus_generic_probe(dev);
-}
-
-static int
-nexus_attach(device_t dev)
-{
-
- if (acpi_identify() == 0)
- BUS_ADD_CHILD(dev, 10, "acpi", 0);
- clock_register(dev, 1000);
- bus_generic_attach(dev);
- return 0;
-}
-
-static int
-nexus_print_child(device_t bus, device_t child)
-{
- struct nexus_device *ndev = DEVTONX(child);
- struct resource_list *rl = &ndev->nx_resources;
- int retval = 0;
-
- retval += bus_print_child_header(bus, child);
- retval += resource_list_print_type(rl, "port", SYS_RES_IOPORT, "%#lx");
- retval += resource_list_print_type(rl, "iomem", SYS_RES_MEMORY, "%#lx");
- retval += resource_list_print_type(rl, "irq", SYS_RES_IRQ, "%ld");
- if (device_get_flags(child))
- retval += printf(" flags %#x", device_get_flags(child));
- retval += printf(" on motherboard\n"); /* XXX "motherboard", ick */
-
- return (retval);
-}
-
-static device_t
-nexus_add_child(device_t bus, u_int order, const char *name, int unit)
-{
- device_t child;
- struct nexus_device *ndev;
-
- ndev = malloc(sizeof(struct nexus_device), M_NEXUSDEV, M_NOWAIT|M_ZERO);
- if (!ndev)
- return(0);
- resource_list_init(&ndev->nx_resources);
-
- child = device_add_child_ordered(bus, order, name, unit);
-
- /* should we free this in nexus_child_detached? */
- device_set_ivars(child, ndev);
-
- return(child);
-}
-
-static struct rman *
-nexus_rman(int type)
-{
- switch (type) {
- case SYS_RES_IRQ:
- return (&irq_rman);
- case SYS_RES_IOPORT:
- return (&port_rman);
- case SYS_RES_MEMORY:
- return (&mem_rman);
- default:
- return (NULL);
- }
-}
-
-/*
- * Allocate a resource on behalf of child. NB: child is usually going to be a
- * child of one of our descendants, not a direct child of nexus0.
- * (Exceptions include npx.)
- */
-static struct resource *
-nexus_alloc_resource(device_t bus, device_t child, int type, int *rid,
- u_long start, u_long end, u_long count, u_int flags)
-{
- struct nexus_device *ndev = DEVTONX(child);
- struct resource *rv;
- struct resource_list_entry *rle;
- struct rman *rm;
- int needactivate = flags & RF_ACTIVE;
-
- /*
- * If this is an allocation of the "default" range for a given RID, and
- * we know what the resources for this device are (ie. they aren't maintained
- * by a child bus), then work out the start/end values.
- */
- if ((start == 0UL) && (end == ~0UL) && (count == 1)) {
- if (ndev == NULL)
- return(NULL);
- rle = resource_list_find(&ndev->nx_resources, type, *rid);
- if (rle == NULL)
- return(NULL);
- start = rle->start;
- end = rle->end;
- count = rle->count;
- }
-
- flags &= ~RF_ACTIVE;
- rm = nexus_rman(type);
- if (rm == NULL)
- return (NULL);
-
- rv = rman_reserve_resource(rm, start, end, count, flags, child);
- if (rv == 0)
- return 0;
- rman_set_rid(rv, *rid);
-
- if (needactivate) {
- if (bus_activate_resource(child, type, *rid, rv)) {
- rman_release_resource(rv);
- return 0;
- }
- }
-
- return rv;
-}
-
-static int
-nexus_adjust_resource(device_t bus, device_t child, int type,
- struct resource *r, u_long start, u_long end)
-{
- struct rman *rm;
-
- rm = nexus_rman(type);
- if (rm == NULL)
- return (ENXIO);
- if (!rman_is_region_manager(r, rm))
- return (EINVAL);
- return (rman_adjust_resource(r, start, end));
-}
-
-static int
-nexus_activate_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
-{
- vm_paddr_t paddr;
- void *vaddr;
-
- paddr = rman_get_start(r);
-
- switch (type) {
- case SYS_RES_IOPORT:
- rman_set_bustag(r, IA64_BUS_SPACE_IO);
- rman_set_bushandle(r, paddr);
- break;
- case SYS_RES_MEMORY:
- vaddr = pmap_mapdev(paddr, rman_get_size(r));
- rman_set_bustag(r, IA64_BUS_SPACE_MEM);
- rman_set_bushandle(r, (bus_space_handle_t) vaddr);
- rman_set_virtual(r, vaddr);
- break;
- }
- return (rman_activate_resource(r));
-}
-
-static int
-nexus_deactivate_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
-{
-
- return (rman_deactivate_resource(r));
-}
-
-static int
-nexus_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
-{
- if (rman_get_flags(r) & RF_ACTIVE) {
- int error = bus_deactivate_resource(child, type, rid, r);
- if (error)
- return error;
- }
- return (rman_release_resource(r));
-}
-
-/*
- * Currently this uses the really grody interface from kern/kern_intr.c
- * (which really doesn't belong in kern/anything.c). Eventually, all of
- * the code in kern_intr.c and machdep_intr.c should get moved here, since
- * this is going to be the official interface.
- */
-static int
-nexus_setup_intr(device_t bus, device_t child, struct resource *irq,
- int flags, driver_filter_t filter, void (*ihand)(void *),
- void *arg, void **cookiep)
-{
- driver_t *driver;
- int error;
-
- /* somebody tried to setup an irq that failed to allocate! */
- if (irq == NULL)
- panic("nexus_setup_intr: NULL irq resource!");
-
- *cookiep = 0;
- if ((rman_get_flags(irq) & RF_SHAREABLE) == 0)
- flags |= INTR_EXCL;
-
- driver = device_get_driver(child);
-
- /*
- * We depend here on rman_activate_resource() being idempotent.
- */
- error = rman_activate_resource(irq);
- if (error)
- return (error);
-
- error = ia64_setup_intr(device_get_nameunit(child),
- rman_get_start(irq), filter, ihand, arg, flags, cookiep);
-
- return (error);
-}
-
-static int
-nexus_teardown_intr(device_t dev, device_t child, struct resource *ires,
- void *cookie)
-{
-
- return (ia64_teardown_intr(cookie));
-}
-
-static struct resource_list *
-nexus_get_reslist(device_t dev, device_t child)
-{
- struct nexus_device *ndev = DEVTONX(child);
-
- return (&ndev->nx_resources);
-}
-
-static int
-nexus_set_resource(device_t dev, device_t child, int type, int rid,
- u_long start, u_long count)
-{
- struct nexus_device *ndev = DEVTONX(child);
- struct resource_list *rl = &ndev->nx_resources;
-
- if (type == SYS_RES_IOPORT && start > (0x10000 - count)) {
- /*
- * Work around a firmware bug in the HP rx2660, where in ACPI
- * an I/O port is really a memory mapped I/O address. The bug
- * is in the GAS that describes the address and in particular
- * the SpaceId field. The field should not say the address is
- * an I/O port when it is in fact an I/O memory address.
- */
- if (bootverbose)
- printf("%s: invalid port range (%#lx-%#lx); "
- "assuming I/O memory range.\n", __func__, start,
- start + count - 1);
- type = SYS_RES_MEMORY;
- }
-
- /* XXX this should return a success/failure indicator */
- resource_list_add(rl, type, rid, start, start + count - 1, count);
- return(0);
-}
-
-static int
-nexus_get_resource(device_t dev, device_t child, int type, int rid, u_long *startp, u_long *countp)
-{
- struct nexus_device *ndev = DEVTONX(child);
- struct resource_list *rl = &ndev->nx_resources;
- struct resource_list_entry *rle;
-
- rle = resource_list_find(rl, type, rid);
- device_printf(child, "type %d rid %d startp %p countp %p - got %p\n",
- type, rid, startp, countp, rle);
- if (!rle)
- return(ENOENT);
- if (startp)
- *startp = rle->start;
- if (countp)
- *countp = rle->count;
- return(0);
-}
-
-static void
-nexus_delete_resource(device_t dev, device_t child, int type, int rid)
-{
- struct nexus_device *ndev = DEVTONX(child);
- struct resource_list *rl = &ndev->nx_resources;
-
- resource_list_delete(rl, type, rid);
-}
-
-static int
-nexus_config_intr(device_t dev, int irq, enum intr_trigger trig,
- enum intr_polarity pol)
-{
-
- return (sapic_config_intr(irq, trig, pol));
-}
-
-static int
-nexus_bind_intr(device_t dev, device_t child, struct resource *irq, int cpu)
-{
- struct pcpu *pc;
-
- pc = cpuid_to_pcpu[cpu];
- if (pc == NULL)
- return (EINVAL);
- return (sapic_bind_intr(rman_get_start(irq), pc));
-}
-
-static int
-nexus_gettime(device_t dev, struct timespec *ts)
-{
- struct clocktime ct;
- struct efi_tm tm;
-
- efi_get_time(&tm);
-
- /*
- * This code was written in 2005, so logically EFI cannot return
- * a year smaller than that. Assume the EFI clock is out of whack
- * in that case and reset the EFI clock.
- */
- if (tm.tm_year < 2005)
- return (EINVAL);
-
- ct.nsec = tm.tm_nsec;
- ct.sec = tm.tm_sec;
- ct.min = tm.tm_min;
- ct.hour = tm.tm_hour;
- ct.day = tm.tm_mday;
- ct.mon = tm.tm_mon;
- ct.year = tm.tm_year;
- ct.dow = -1;
- return (clock_ct_to_ts(&ct, ts));
-}
-
-static int
-nexus_settime(device_t dev, struct timespec *ts)
-{
- struct clocktime ct;
- struct efi_tm tm;
-
- efi_get_time(&tm);
-
- clock_ts_to_ct(ts, &ct);
- tm.tm_nsec = ts->tv_nsec;
- tm.tm_sec = ct.sec;
- tm.tm_min = ct.min;
- tm.tm_hour = ct.hour;
- tm.tm_year = ct.year;
- tm.tm_mon = ct.mon;
- tm.tm_mday = ct.day;
- return (efi_set_time(&tm));
-}
diff --git a/sys/ia64/ia64/pal.S b/sys/ia64/ia64/pal.S
deleted file mode 100644
index 2e3f4cd..0000000
--- a/sys/ia64/ia64/pal.S
+++ /dev/null
@@ -1,116 +0,0 @@
-/*-
- * Copyright (c) 2000-2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-
- .data
- .global ia64_pal_entry
-ia64_pal_entry: .quad 0
- .text
-
-/*
- * struct ia64_pal_result ia64_call_pal_static(u_int64_t proc,
- * u_int64_t arg1, u_int64_t arg2, u_int64_t arg3)
- */
-ENTRY(ia64_call_pal_static, 4)
-
- .regstk 4,4,0,0
-palret = loc0
-entry = loc1
-rpsave = loc2
-pfssave = loc3
-
- alloc pfssave=ar.pfs,4,4,0,0
- ;;
- mov rpsave=rp
- movl entry=@gprel(ia64_pal_entry)
-
-1: mov palret=ip // for return address
- ;;
- add entry=entry,gp
- add palret=2f-1b,palret // calculate return address
- mov r28=in0 // procedure number
- mov r29=in1 // copy arguments
- mov r30=in2
- mov r31=in3
- ;;
- ld8 entry=[entry] // read entry point
- mov b0=palret
- ;;
- mov b6=entry
- ;;
- br.cond.sptk b6 // call into firmware
- ;;
-2:
- mov rp=rpsave
- mov ar.pfs=pfssave
- ;;
- br.ret.sptk rp
- ;;
-END(ia64_call_pal_static)
-
-/*
- * struct ia64_pal_result ia64_call_pal_stacked(u_int64_t proc,
- * u_int64_t arg1, u_int64_t arg2, u_int64_t arg3)
- */
-ENTRY(ia64_call_pal_stacked, 4)
-
- .regstk 4,4,4,0
-entry = loc0
-rpsave = loc1
-pfssave = loc2
-psrsave = loc3
-
- alloc pfssave=ar.pfs,4,4,4,0
- ;;
- mov rpsave=rp
- movl entry=@gprel(ia64_pal_entry)
- ;;
- add entry=entry,gp
- mov psrsave=psr
- mov r28=in0 // procedure number
- mov out0=in0
- ;;
- ld8 entry=[entry] // read entry point
- mov out1=in1 // copy arguments
- mov out2=in2
- mov out3=in3
- ;;
- mov b6=entry
- ;;
- rsm psr.i // disable interrupts
- ;;
- br.call.sptk.many rp=b6 // call into firmware
- mov psr.l=psrsave
- mov rp=rpsave
- mov ar.pfs=pfssave
- ;;
- srlz.d
- br.ret.sptk rp
-
-END(ia64_call_pal_stacked)
diff --git a/sys/ia64/ia64/physical.S b/sys/ia64/ia64/physical.S
deleted file mode 100644
index 1dd5b36..0000000
--- a/sys/ia64/ia64/physical.S
+++ /dev/null
@@ -1,258 +0,0 @@
-/*-
- * Copyright (c) 2011 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-#include <machine/ia64_cpu.h>
-
- .text
-
-/*
- * u_long ia64_efi_physical(ia64_efi_f, u_long, u_long, u_long, u_long)
- *
- * loc0 = ar.pfs
- * loc1 = rp
- * loc2 = psr
- * loc3 = sp
- * loc4 = bsp
- * loc5 = gp
- */
-ENTRY(ia64_efi_physical, 5)
- .prologue
- .regstk 5,6,4,0
- .save ar.pfs,loc0
- alloc loc0=ar.pfs,5,6,4,0
- ;;
- .save rp,loc1
- mov loc1=rp
- ;;
- .body
- mov loc2=psr // save psr
- movl r16=IA64_PSR_I | IA64_PSR_IT | IA64_PSR_DT | \
- IA64_PSR_RT | IA64_PSR_DFL | IA64_PSR_DFH
- ;;
- andcm r14=loc2,r16
- movl r15=IA64_PSR_BN
- ;;
- rsm psr.i
- mov r17=ar.rsc
- or r16=r14,r15 // new psr
- ;;
- mov ar.rsc=0
- or loc2=loc2,r15
- ;;
- flushrs
- mov loc3=sp // save sp
- ;;
- mov loc4=ar.bsp // save ar.bsp
- mov r18=ar.rnat
- ;;
- tpa r19=loc4 // new bspstore
- mov loc5=gp
- ;;
- tpa r20=loc3 // new sp
- ld8 r21=[in0],8
- ;;
-1:
- mov r14=ip
- ;;
- ld8 r22=[in0]
- add r15=2f-1b,r14
- ;;
- tpa r14=r15
- ;;
- rsm psr.ic
- ;;
- srlz.i
- ;;
- mov cr.iip=r14
- mov cr.ifs=r0
- mov cr.ipsr=r16
- ;;
- rfi
-2:
- mov ar.bspstore=r19
- mov sp=r20
- ;;
- mov ar.rnat=r18
- mov ar.rsc=r17
- ;;
- mov b6=r21
- mov gp=r22
- mov out0=in1
- mov out1=in2
- mov out2=in3
- mov out3=in4
- ;;
- br.call.sptk.many rp=b6
- mov gp=loc5
- ;;
- rsm psr.i | psr.ic
- mov r16=ar.rsc
- ;;
- srlz.i
- mov ar.rsc=0
- ;;
- flushrs
- ;;
- mov r17=ar.rnat
- movl r18=3f
- ;;
- mov cr.iip=r18
- mov cr.ifs=r0
- mov cr.ipsr=loc2
- ;;
- rfi
-3:
- mov ar.bspstore=loc4
- mov sp=loc3
- ;;
- mov ar.rnat=r17
- mov ar.rsc=r16
- ;;
- mov rp=loc1
- mov ar.pfs=loc0
- ;;
- br.ret.sptk.many rp
-END(ia64_efi_physical)
-
-
-/*
- * ia64_pal_ret ia64_pal_physical(ia64_fw_f, u_long, u_long, u_long, u_long)
- *
- * loc0 = ar.pfs
- * loc1 = rp
- * loc2 = psr
- * loc3 = sp
- * loc4 = bsp
- * loc5 = gp
- */
-ENTRY(ia64_pal_physical, 5)
- .prologue
- .regstk 5,6,4,0
- .save ar.pfs,loc0
- alloc loc0=ar.pfs,5,6,4,0
- ;;
- .save rp,loc1
- mov loc1=rp
- ;;
- .body
- mov loc2=psr // save psr
- movl r16=IA64_PSR_I | IA64_PSR_IT | IA64_PSR_DT | \
- IA64_PSR_RT | IA64_PSR_DFL | IA64_PSR_DFH
- ;;
- andcm r14=loc2,r16
- movl r15=IA64_PSR_BN
- ;;
- rsm psr.i
- mov r17=ar.rsc
- or r16=r14,r15 // new psr
- ;;
- mov ar.rsc=0
- or loc2=loc2,r15
- ;;
- flushrs
- mov loc3=sp // save sp
- ;;
- mov loc4=ar.bsp // save ar.bsp
- mov r18=ar.rnat
- ;;
- mov loc5=gp
- movl r14=kstack
- ;;
- tpa r19=r14 // new bspstore
- movl r15=kstack_top
- ;;
- tpa r20=r15 // new sp
- movl r21=ia64_pal_entry
- ;;
-1:
- mov r14=ip
- ld8 r22=[r21]
- ;;
- tpa r21=r22
- add r15=2f-1b,r14
- ;;
- tpa r14=r15
- ;;
- rsm psr.ic
- ;;
- srlz.i
- ;;
- mov cr.iip=r14
- mov cr.ifs=r0
- mov cr.ipsr=r16
- ;;
- rfi
-2:
- mov ar.bspstore=r19
- add sp=-16,r20
- ;;
- mov ar.rnat=r18
- mov ar.rsc=r17
- ;;
- mov b6=r21
- mov out0=in0
- mov out1=in1
- mov out2=in2
- mov out3=in3
- // PAL static calls
- mov r28=in0
- mov r29=in1
- mov r30=in2
- mov r31=in3
- br.call.sptk.many rp=b6
- mov gp=loc5
- ;;
- rsm psr.i | psr.ic
- mov r16=ar.rsc
- ;;
- srlz.i
- mov ar.rsc=0
- ;;
- flushrs
- ;;
- mov r17=ar.rnat
- movl r18=3f
- ;;
- mov cr.iip=r18
- mov cr.ifs=r0
- mov cr.ipsr=loc2
- ;;
- rfi
-3:
- mov ar.bspstore=loc4
- mov sp=loc3
- ;;
- mov ar.rnat=r17
- mov ar.rsc=r16
- ;;
- mov rp=loc1
- mov ar.pfs=loc0
- ;;
- br.ret.sptk.many rp
-END(ia64_pal_physical)
diff --git a/sys/ia64/ia64/physmem.c b/sys/ia64/ia64/physmem.c
deleted file mode 100644
index 11ee840..0000000
--- a/sys/ia64/ia64/physmem.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/*-
- * Copyright (c) 2012 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-
-#include <machine/md_var.h>
-#include <machine/vmparam.h>
-
-static u_int phys_avail_segs;
-
-vm_paddr_t phys_avail[2 * VM_PHYSSEG_MAX + 2];
-
-vm_paddr_t paddr_max;
-
-long realmem;
-
-static u_int
-ia64_physmem_find(vm_paddr_t base, vm_paddr_t lim)
-{
- u_int idx;
-
- for (idx = 0; phys_avail[idx + 1] != 0; idx += 2) {
- if (phys_avail[idx] >= lim ||
- phys_avail[idx + 1] > base)
- break;
- }
- return (idx);
-}
-
-static int
-ia64_physmem_insert(u_int idx, vm_paddr_t base, vm_paddr_t lim)
-{
- u_int ridx;
-
- if (phys_avail_segs == VM_PHYSSEG_MAX)
- return (ENOMEM);
-
- ridx = phys_avail_segs * 2;
- while (idx < ridx) {
- phys_avail[ridx + 1] = phys_avail[ridx - 1];
- phys_avail[ridx] = phys_avail[ridx - 2];
- ridx -= 2;
- }
- phys_avail[idx] = base;
- phys_avail[idx + 1] = lim;
- phys_avail_segs++;
- return (0);
-}
-
-static int
-ia64_physmem_remove(u_int idx)
-{
-
- if (phys_avail_segs == 0)
- return (ENOENT);
- do {
- phys_avail[idx] = phys_avail[idx + 2];
- phys_avail[idx + 1] = phys_avail[idx + 3];
- idx += 2;
- } while (phys_avail[idx + 1] != 0);
- phys_avail_segs--;
- return (0);
-}
-
-int
-ia64_physmem_add(vm_paddr_t base, vm_size_t len)
-{
- vm_paddr_t lim;
- u_int idx;
-
- realmem += len;
-
- lim = base + len;
- idx = ia64_physmem_find(base, lim);
- if (phys_avail[idx] == lim) {
- phys_avail[idx] = base;
- return (0);
- }
- if (idx > 0 && phys_avail[idx - 1] == base) {
- phys_avail[idx - 1] = lim;
- return (0);
- }
- return (ia64_physmem_insert(idx, base, lim));
-}
-
-int
-ia64_physmem_delete(vm_paddr_t base, vm_size_t len)
-{
- vm_paddr_t lim;
- u_int idx;
-
- lim = base + len;
- idx = ia64_physmem_find(base, lim);
- if (phys_avail[idx] >= lim || phys_avail[idx + 1] == 0)
- return (ENOENT);
- if (phys_avail[idx] < base && phys_avail[idx + 1] > lim) {
- len = phys_avail[idx + 1] - lim;
- phys_avail[idx + 1] = base;
- base = lim;
- lim = base + len;
- return (ia64_physmem_insert(idx + 2, base, lim));
- } else {
- if (phys_avail[idx] == base)
- phys_avail[idx] = lim;
- if (phys_avail[idx + 1] == lim)
- phys_avail[idx + 1] = base;
- if (phys_avail[idx] >= phys_avail[idx + 1])
- return (ia64_physmem_remove(idx));
- }
- return (0);
-}
-
-int
-ia64_physmem_fini(void)
-{
- vm_paddr_t base, lim, size;
- u_int idx;
-
- idx = 0;
- while (phys_avail[idx + 1] != 0) {
- base = round_page(phys_avail[idx]);
- lim = trunc_page(phys_avail[idx + 1]);
- if (base < lim) {
- phys_avail[idx] = base;
- phys_avail[idx + 1] = lim;
- size = lim - base;
- physmem += atop(size);
- paddr_max = lim;
- idx += 2;
- } else
- ia64_physmem_remove(idx);
- }
-
- /*
- * Round realmem to a multple of 128MB. Hopefully that compensates
- * for any loss of DRAM that isn't accounted for in the memory map.
- * I'm thinking legacy BIOS or VGA here. In any case, it's ok if
- * we got it wrong, because we don't actually use realmem. It's
- * just for show...
- */
- size = 1U << 27;
- realmem = (realmem + size - 1) & ~(size - 1);
- realmem = atop(realmem);
- return (0);
-}
-
-int
-ia64_physmem_init(void)
-{
-
- /* Nothing to do just yet. */
- return (0);
-}
-
-int
-ia64_physmem_track(vm_paddr_t base, vm_size_t len)
-{
-
- realmem += len;
- return (0);
-}
-
-void *
-ia64_physmem_alloc(vm_size_t len, vm_size_t align)
-{
- vm_paddr_t base, lim, pa;
- void *ptr;
- u_int idx;
-
- if (phys_avail_segs == 0)
- return (NULL);
-
- len = round_page(len);
-
- /*
- * Try and allocate with least effort.
- */
- idx = phys_avail_segs * 2;
- while (idx > 0) {
- idx -= 2;
- base = phys_avail[idx];
- lim = phys_avail[idx + 1];
-
- if (lim - base < len)
- continue;
-
- /* First try from the end. */
- pa = lim - len;
- if ((pa & (align - 1)) == 0) {
- if (pa == base)
- ia64_physmem_remove(idx);
- else
- phys_avail[idx + 1] = pa;
- goto gotit;
- }
-
- /* Try from the start next. */
- pa = base;
- if ((pa & (align - 1)) == 0) {
- if (pa + len == lim)
- ia64_physmem_remove(idx);
- else
- phys_avail[idx] += len;
- goto gotit;
- }
- }
-
- /*
- * Find a good segment and split it up.
- */
- idx = phys_avail_segs * 2;
- while (idx > 0) {
- idx -= 2;
- base = phys_avail[idx];
- lim = phys_avail[idx + 1];
-
- pa = (base + align - 1) & ~(align - 1);
- if (pa + len <= lim) {
- ia64_physmem_delete(pa, len);
- goto gotit;
- }
- }
-
- /* Out of luck. */
- return (NULL);
-
- gotit:
- ptr = (void *)IA64_PHYS_TO_RR7(pa);
- bzero(ptr, len);
- return (ptr);
-}
diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c
deleted file mode 100644
index 307ccfd..0000000
--- a/sys/ia64/ia64/pmap.c
+++ /dev/null
@@ -1,2923 +0,0 @@
-/*-
- * Copyright (c) 1991 Regents of the University of California.
- * All rights reserved.
- * Copyright (c) 1994 John S. Dyson
- * All rights reserved.
- * Copyright (c) 1994 David Greenman
- * All rights reserved.
- * Copyright (c) 1998,2000 Doug Rabson
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * the Systems Programming Group of the University of Utah Computer
- * Science Department and William Jolitz of UUNET Technologies Inc.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
- * from: i386 Id: pmap.c,v 1.193 1998/04/19 15:22:48 bde Exp
- * with some ideas from NetBSD's alpha pmap
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_pmap.h"
-
-#include <sys/param.h>
-#include <sys/efi.h>
-#include <sys/kernel.h>
-#include <sys/ktr.h>
-#include <sys/lock.h>
-#include <sys/mman.h>
-#include <sys/mutex.h>
-#include <sys/proc.h>
-#include <sys/rwlock.h>
-#include <sys/smp.h>
-#include <sys/sysctl.h>
-#include <sys/systm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/vm_page.h>
-#include <vm/vm_map.h>
-#include <vm/vm_object.h>
-#include <vm/vm_pageout.h>
-#include <vm/uma.h>
-
-#include <machine/bootinfo.h>
-#include <machine/md_var.h>
-#include <machine/pal.h>
-
-/*
- * Manages physical address maps.
- *
- * Since the information managed by this module is
- * also stored by the logical address mapping module,
- * this module may throw away valid virtual-to-physical
- * mappings at almost any time. However, invalidations
- * of virtual-to-physical mappings must be done as
- * requested.
- *
- * In order to cope with hardware architectures which
- * make virtual-to-physical map invalidates expensive,
- * this module may delay invalidate or reduced protection
- * operations until such time as they are actually
- * necessary. This module is given full information as
- * to which processors are currently using which maps,
- * and to when physical maps must be made correct.
- */
-
-/*
- * Following the Linux model, region IDs are allocated in groups of
- * eight so that a single region ID can be used for as many RRs as we
- * want by encoding the RR number into the low bits of the ID.
- *
- * We reserve region ID 0 for the kernel and allocate the remaining
- * IDs for user pmaps.
- *
- * Region 0-3: User virtually mapped
- * Region 4: PBVM and special mappings
- * Region 5: Kernel virtual memory
- * Region 6: Direct-mapped uncacheable
- * Region 7: Direct-mapped cacheable
- */
-
-/* XXX move to a header. */
-extern uint64_t ia64_gateway_page[];
-
-#if !defined(DIAGNOSTIC)
-#define PMAP_INLINE __inline
-#else
-#define PMAP_INLINE
-#endif
-
-#ifdef PV_STATS
-#define PV_STAT(x) do { x ; } while (0)
-#else
-#define PV_STAT(x) do { } while (0)
-#endif
-
-#define pmap_accessed(lpte) ((lpte)->pte & PTE_ACCESSED)
-#define pmap_dirty(lpte) ((lpte)->pte & PTE_DIRTY)
-#define pmap_exec(lpte) ((lpte)->pte & PTE_AR_RX)
-#define pmap_managed(lpte) ((lpte)->pte & PTE_MANAGED)
-#define pmap_ppn(lpte) ((lpte)->pte & PTE_PPN_MASK)
-#define pmap_present(lpte) ((lpte)->pte & PTE_PRESENT)
-#define pmap_prot(lpte) (((lpte)->pte & PTE_PROT_MASK) >> 56)
-#define pmap_wired(lpte) ((lpte)->pte & PTE_WIRED)
-
-#define pmap_clear_accessed(lpte) (lpte)->pte &= ~PTE_ACCESSED
-#define pmap_clear_dirty(lpte) (lpte)->pte &= ~PTE_DIRTY
-#define pmap_clear_present(lpte) (lpte)->pte &= ~PTE_PRESENT
-#define pmap_clear_wired(lpte) (lpte)->pte &= ~PTE_WIRED
-
-#define pmap_set_wired(lpte) (lpte)->pte |= PTE_WIRED
-
-/*
- * Individual PV entries are stored in per-pmap chunks. This saves
- * space by eliminating the need to record the pmap within every PV
- * entry.
- */
-#if PAGE_SIZE == 8192
-#define _NPCM 6
-#define _NPCPV 337
-#define _NPCS 2
-#elif PAGE_SIZE == 16384
-#define _NPCM 11
-#define _NPCPV 677
-#define _NPCS 1
-#endif
-struct pv_chunk {
- pmap_t pc_pmap;
- TAILQ_ENTRY(pv_chunk) pc_list;
- u_long pc_map[_NPCM]; /* bitmap; 1 = free */
- TAILQ_ENTRY(pv_chunk) pc_lru;
- u_long pc_spare[_NPCS];
- struct pv_entry pc_pventry[_NPCPV];
-};
-
-/*
- * The VHPT bucket head structure.
- */
-struct ia64_bucket {
- uint64_t chain;
- struct mtx mutex;
- u_int length;
-};
-
-/*
- * Statically allocated kernel pmap
- */
-struct pmap kernel_pmap_store;
-
-vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */
-vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */
-
-/*
- * Kernel virtual memory management.
- */
-static int nkpt;
-extern struct ia64_lpte ***ia64_kptdir;
-
-#define KPTE_DIR0_INDEX(va) \
- (((va) >> (3*PAGE_SHIFT-8)) & ((1<<(PAGE_SHIFT-3))-1))
-#define KPTE_DIR1_INDEX(va) \
- (((va) >> (2*PAGE_SHIFT-5)) & ((1<<(PAGE_SHIFT-3))-1))
-#define KPTE_PTE_INDEX(va) \
- (((va) >> PAGE_SHIFT) & ((1<<(PAGE_SHIFT-5))-1))
-#define NKPTEPG (PAGE_SIZE / sizeof(struct ia64_lpte))
-
-vm_offset_t kernel_vm_end;
-
-/* Defaults for ptc.e. */
-static uint64_t pmap_ptc_e_base = 0;
-static uint32_t pmap_ptc_e_count1 = 1;
-static uint32_t pmap_ptc_e_count2 = 1;
-static uint32_t pmap_ptc_e_stride1 = 0;
-static uint32_t pmap_ptc_e_stride2 = 0;
-
-struct mtx pmap_ptc_mutex;
-
-/*
- * Data for the RID allocator
- */
-static int pmap_ridcount;
-static int pmap_rididx;
-static int pmap_ridmapsz;
-static int pmap_ridmax;
-static uint64_t *pmap_ridmap;
-struct mtx pmap_ridmutex;
-
-static struct rwlock_padalign pvh_global_lock;
-
-/*
- * Data for the pv entry allocation mechanism
- */
-static TAILQ_HEAD(pch, pv_chunk) pv_chunks = TAILQ_HEAD_INITIALIZER(pv_chunks);
-static int pv_entry_count;
-
-/*
- * Data for allocating PTEs for user processes.
- */
-static uma_zone_t ptezone;
-
-/*
- * Virtual Hash Page Table (VHPT) data.
- */
-/* SYSCTL_DECL(_machdep); */
-static SYSCTL_NODE(_machdep, OID_AUTO, vhpt, CTLFLAG_RD, 0, "");
-
-struct ia64_bucket *pmap_vhpt_bucket;
-
-int pmap_vhpt_nbuckets;
-SYSCTL_INT(_machdep_vhpt, OID_AUTO, nbuckets, CTLFLAG_RD,
- &pmap_vhpt_nbuckets, 0, "");
-
-int pmap_vhpt_log2size;
-SYSCTL_INT(_machdep_vhpt, OID_AUTO, log2size, CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
- &pmap_vhpt_log2size, 0, "");
-
-static int pmap_vhpt_inserts;
-SYSCTL_INT(_machdep_vhpt, OID_AUTO, inserts, CTLFLAG_RD,
- &pmap_vhpt_inserts, 0, "");
-
-static int pmap_vhpt_population(SYSCTL_HANDLER_ARGS);
-SYSCTL_PROC(_machdep_vhpt, OID_AUTO, population, CTLTYPE_INT | CTLFLAG_RD,
- NULL, 0, pmap_vhpt_population, "I", "");
-
-static struct ia64_lpte *pmap_find_vhpt(vm_offset_t va);
-
-static void free_pv_chunk(struct pv_chunk *pc);
-static void free_pv_entry(pmap_t pmap, pv_entry_t pv);
-static pv_entry_t get_pv_entry(pmap_t pmap, boolean_t try);
-static vm_page_t pmap_pv_reclaim(pmap_t locked_pmap);
-
-static void pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va,
- vm_page_t m, vm_prot_t prot);
-static void pmap_free_pte(struct ia64_lpte *pte, vm_offset_t va);
-static int pmap_remove_pte(pmap_t pmap, struct ia64_lpte *pte,
- vm_offset_t va, pv_entry_t pv, int freepte);
-static int pmap_remove_vhpt(vm_offset_t va);
-static boolean_t pmap_try_insert_pv_entry(pmap_t pmap, vm_offset_t va,
- vm_page_t m);
-
-static void
-pmap_initialize_vhpt(vm_offset_t vhpt)
-{
- struct ia64_lpte *pte;
- u_int i;
-
- pte = (struct ia64_lpte *)vhpt;
- for (i = 0; i < pmap_vhpt_nbuckets; i++) {
- pte[i].pte = 0;
- pte[i].itir = 0;
- pte[i].tag = 1UL << 63; /* Invalid tag */
- pte[i].chain = (uintptr_t)(pmap_vhpt_bucket + i);
- }
-}
-
-#ifdef SMP
-vm_offset_t
-pmap_alloc_vhpt(void)
-{
- vm_offset_t vhpt;
- vm_page_t m;
- vm_size_t size;
-
- size = 1UL << pmap_vhpt_log2size;
- m = vm_page_alloc_contig(NULL, 0, VM_ALLOC_SYSTEM | VM_ALLOC_NOOBJ |
- VM_ALLOC_WIRED, atop(size), 0UL, ~0UL, size, 0UL,
- VM_MEMATTR_DEFAULT);
- if (m != NULL) {
- vhpt = IA64_PHYS_TO_RR7(VM_PAGE_TO_PHYS(m));
- pmap_initialize_vhpt(vhpt);
- return (vhpt);
- }
- return (0);
-}
-#endif
-
-/*
- * Bootstrap the system enough to run with virtual memory.
- */
-void
-pmap_bootstrap()
-{
- struct ia64_pal_result res;
- vm_offset_t base;
- size_t size;
- int i, ridbits;
-
- /*
- * Query the PAL Code to find the loop parameters for the
- * ptc.e instruction.
- */
- res = ia64_call_pal_static(PAL_PTCE_INFO, 0, 0, 0);
- if (res.pal_status != 0)
- panic("Can't configure ptc.e parameters");
- pmap_ptc_e_base = res.pal_result[0];
- pmap_ptc_e_count1 = res.pal_result[1] >> 32;
- pmap_ptc_e_count2 = res.pal_result[1];
- pmap_ptc_e_stride1 = res.pal_result[2] >> 32;
- pmap_ptc_e_stride2 = res.pal_result[2];
- if (bootverbose)
- printf("ptc.e base=0x%lx, count1=%u, count2=%u, "
- "stride1=0x%x, stride2=0x%x\n",
- pmap_ptc_e_base,
- pmap_ptc_e_count1,
- pmap_ptc_e_count2,
- pmap_ptc_e_stride1,
- pmap_ptc_e_stride2);
-
- mtx_init(&pmap_ptc_mutex, "PTC.G mutex", NULL, MTX_SPIN);
-
- /*
- * Setup RIDs. RIDs 0..7 are reserved for the kernel.
- *
- * We currently need at least 19 bits in the RID because PID_MAX
- * can only be encoded in 17 bits and we need RIDs for 4 regions
- * per process. With PID_MAX equalling 99999 this means that we
- * need to be able to encode 399996 (=4*PID_MAX).
- * The Itanium processor only has 18 bits and the architected
- * minimum is exactly that. So, we cannot use a PID based scheme
- * in those cases. Enter pmap_ridmap...
- * We should avoid the map when running on a processor that has
- * implemented enough bits. This means that we should pass the
- * process/thread ID to pmap. This we currently don't do, so we
- * use the map anyway. However, we don't want to allocate a map
- * that is large enough to cover the range dictated by the number
- * of bits in the RID, because that may result in a RID map of
- * 2MB in size for a 24-bit RID. A 64KB map is enough.
- * The bottomline: we create a 32KB map when the processor only
- * implements 18 bits (or when we can't figure it out). Otherwise
- * we create a 64KB map.
- */
- res = ia64_call_pal_static(PAL_VM_SUMMARY, 0, 0, 0);
- if (res.pal_status != 0) {
- if (bootverbose)
- printf("Can't read VM Summary - assuming 18 Region ID bits\n");
- ridbits = 18; /* guaranteed minimum */
- } else {
- ridbits = (res.pal_result[1] >> 8) & 0xff;
- if (bootverbose)
- printf("Processor supports %d Region ID bits\n",
- ridbits);
- }
- if (ridbits > 19)
- ridbits = 19;
-
- pmap_ridmax = (1 << ridbits);
- pmap_ridmapsz = pmap_ridmax / 64;
- pmap_ridmap = ia64_physmem_alloc(pmap_ridmax / 8, PAGE_SIZE);
- pmap_ridmap[0] |= 0xff;
- pmap_rididx = 0;
- pmap_ridcount = 8;
- mtx_init(&pmap_ridmutex, "RID allocator lock", NULL, MTX_DEF);
-
- /*
- * Allocate some memory for initial kernel 'page tables'.
- */
- ia64_kptdir = ia64_physmem_alloc(PAGE_SIZE, PAGE_SIZE);
- nkpt = 0;
- kernel_vm_end = VM_INIT_KERNEL_ADDRESS;
-
- /*
- * Determine a valid (mappable) VHPT size.
- */
- TUNABLE_INT_FETCH("machdep.vhpt.log2size", &pmap_vhpt_log2size);
- if (pmap_vhpt_log2size == 0)
- pmap_vhpt_log2size = 20;
- else if (pmap_vhpt_log2size < 16)
- pmap_vhpt_log2size = 16;
- else if (pmap_vhpt_log2size > 28)
- pmap_vhpt_log2size = 28;
- if (pmap_vhpt_log2size & 1)
- pmap_vhpt_log2size--;
-
- size = 1UL << pmap_vhpt_log2size;
- base = (uintptr_t)ia64_physmem_alloc(size, size);
- if (base == 0)
- panic("Unable to allocate VHPT");
-
- PCPU_SET(md.vhpt, base);
- if (bootverbose)
- printf("VHPT: address=%#lx, size=%#lx\n", base, size);
-
- pmap_vhpt_nbuckets = size / sizeof(struct ia64_lpte);
- pmap_vhpt_bucket = ia64_physmem_alloc(pmap_vhpt_nbuckets *
- sizeof(struct ia64_bucket), PAGE_SIZE);
- for (i = 0; i < pmap_vhpt_nbuckets; i++) {
- /* Stolen memory is zeroed. */
- mtx_init(&pmap_vhpt_bucket[i].mutex, "VHPT bucket lock", NULL,
- MTX_NOWITNESS | MTX_SPIN);
- }
-
- pmap_initialize_vhpt(base);
- map_vhpt(base);
- ia64_set_pta(base + (1 << 8) + (pmap_vhpt_log2size << 2) + 1);
- ia64_srlz_i();
-
- virtual_avail = VM_INIT_KERNEL_ADDRESS;
- virtual_end = VM_MAX_KERNEL_ADDRESS;
-
- /*
- * Initialize the kernel pmap (which is statically allocated).
- */
- PMAP_LOCK_INIT(kernel_pmap);
- for (i = 0; i < IA64_VM_MINKERN_REGION; i++)
- kernel_pmap->pm_rid[i] = 0;
- TAILQ_INIT(&kernel_pmap->pm_pvchunk);
- PCPU_SET(md.current_pmap, kernel_pmap);
-
- /*
- * Initialize the global pv list lock.
- */
- rw_init(&pvh_global_lock, "pmap pv global");
-
- /* Region 5 is mapped via the VHPT. */
- ia64_set_rr(IA64_RR_BASE(5), (5 << 8) | (PAGE_SHIFT << 2) | 1);
-
- /*
- * Clear out any random TLB entries left over from booting.
- */
- pmap_invalidate_all();
-
- map_gateway_page();
-}
-
-static int
-pmap_vhpt_population(SYSCTL_HANDLER_ARGS)
-{
- int count, error, i;
-
- count = 0;
- for (i = 0; i < pmap_vhpt_nbuckets; i++)
- count += pmap_vhpt_bucket[i].length;
-
- error = SYSCTL_OUT(req, &count, sizeof(count));
- return (error);
-}
-
-vm_offset_t
-pmap_page_to_va(vm_page_t m)
-{
- vm_paddr_t pa;
- vm_offset_t va;
-
- pa = VM_PAGE_TO_PHYS(m);
- va = (m->md.memattr == VM_MEMATTR_UNCACHEABLE) ? IA64_PHYS_TO_RR6(pa) :
- IA64_PHYS_TO_RR7(pa);
- return (va);
-}
-
-/*
- * Initialize a vm_page's machine-dependent fields.
- */
-void
-pmap_page_init(vm_page_t m)
-{
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- TAILQ_INIT(&m->md.pv_list);
- m->md.memattr = VM_MEMATTR_DEFAULT;
-}
-
-/*
- * Initialize the pmap module.
- * Called by vm_init, to initialize any structures that the pmap
- * system needs to map virtual memory.
- */
-void
-pmap_init(void)
-{
-
- CTR1(KTR_PMAP, "%s()", __func__);
-
- ptezone = uma_zcreate("PT ENTRY", sizeof (struct ia64_lpte),
- NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM|UMA_ZONE_NOFREE);
-}
-
-
-/***************************************************
- * Manipulate TLBs for a pmap
- ***************************************************/
-
-static void
-pmap_invalidate_page(vm_offset_t va)
-{
- struct ia64_lpte *pte;
- struct pcpu *pc;
- uint64_t tag;
- u_int vhpt_ofs;
-
- critical_enter();
-
- vhpt_ofs = ia64_thash(va) - PCPU_GET(md.vhpt);
- tag = ia64_ttag(va);
- STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) {
- pte = (struct ia64_lpte *)(pc->pc_md.vhpt + vhpt_ofs);
- atomic_cmpset_64(&pte->tag, tag, 1UL << 63);
- }
-
- mtx_lock_spin(&pmap_ptc_mutex);
-
- ia64_ptc_ga(va, PAGE_SHIFT << 2);
- ia64_mf();
- ia64_srlz_i();
-
- mtx_unlock_spin(&pmap_ptc_mutex);
-
- ia64_invala();
-
- critical_exit();
-}
-
-void
-pmap_invalidate_all(void)
-{
- uint64_t addr;
- int i, j;
-
- addr = pmap_ptc_e_base;
- for (i = 0; i < pmap_ptc_e_count1; i++) {
- for (j = 0; j < pmap_ptc_e_count2; j++) {
- ia64_ptc_e(addr);
- addr += pmap_ptc_e_stride2;
- }
- addr += pmap_ptc_e_stride1;
- }
- ia64_srlz_i();
-}
-
-static uint32_t
-pmap_allocate_rid(void)
-{
- uint64_t bit, bits;
- int rid;
-
- mtx_lock(&pmap_ridmutex);
- if (pmap_ridcount == pmap_ridmax)
- panic("pmap_allocate_rid: All Region IDs used");
-
- /* Find an index with a free bit. */
- while ((bits = pmap_ridmap[pmap_rididx]) == ~0UL) {
- pmap_rididx++;
- if (pmap_rididx == pmap_ridmapsz)
- pmap_rididx = 0;
- }
- rid = pmap_rididx * 64;
-
- /* Find a free bit. */
- bit = 1UL;
- while (bits & bit) {
- rid++;
- bit <<= 1;
- }
-
- pmap_ridmap[pmap_rididx] |= bit;
- pmap_ridcount++;
- mtx_unlock(&pmap_ridmutex);
-
- return rid;
-}
-
-static void
-pmap_free_rid(uint32_t rid)
-{
- uint64_t bit;
- int idx;
-
- idx = rid / 64;
- bit = ~(1UL << (rid & 63));
-
- mtx_lock(&pmap_ridmutex);
- pmap_ridmap[idx] &= bit;
- pmap_ridcount--;
- mtx_unlock(&pmap_ridmutex);
-}
-
-/***************************************************
- * Page table page management routines.....
- ***************************************************/
-
-static void
-pmap_pinit_common(pmap_t pmap)
-{
- int i;
-
- for (i = 0; i < IA64_VM_MINKERN_REGION; i++)
- pmap->pm_rid[i] = pmap_allocate_rid();
- TAILQ_INIT(&pmap->pm_pvchunk);
- bzero(&pmap->pm_stats, sizeof pmap->pm_stats);
-}
-
-void
-pmap_pinit0(pmap_t pmap)
-{
-
- CTR2(KTR_PMAP, "%s(pm=%p)", __func__, pmap);
-
- PMAP_LOCK_INIT(pmap);
- pmap_pinit_common(pmap);
-}
-
-/*
- * Initialize a preallocated and zeroed pmap structure,
- * such as one in a vmspace structure.
- */
-int
-pmap_pinit(pmap_t pmap)
-{
-
- CTR2(KTR_PMAP, "%s(pm=%p)", __func__, pmap);
-
- pmap_pinit_common(pmap);
- return (1);
-}
-
-/***************************************************
- * Pmap allocation/deallocation routines.
- ***************************************************/
-
-/*
- * Release any resources held by the given physical map.
- * Called when a pmap initialized by pmap_pinit is being released.
- * Should only be called if the map contains no valid mappings.
- */
-void
-pmap_release(pmap_t pmap)
-{
- int i;
-
- CTR2(KTR_PMAP, "%s(pm=%p)", __func__, pmap);
-
- for (i = 0; i < IA64_VM_MINKERN_REGION; i++)
- if (pmap->pm_rid[i])
- pmap_free_rid(pmap->pm_rid[i]);
-}
-
-/*
- * grow the number of kernel page table entries, if needed
- */
-void
-pmap_growkernel(vm_offset_t addr)
-{
- struct ia64_lpte **dir1;
- struct ia64_lpte *leaf;
- vm_page_t nkpg;
-
- CTR2(KTR_PMAP, "%s(va=%#lx)", __func__, addr);
-
- while (kernel_vm_end <= addr) {
- if (nkpt == PAGE_SIZE/8 + PAGE_SIZE*PAGE_SIZE/64)
- panic("%s: out of kernel address space", __func__);
-
- dir1 = ia64_kptdir[KPTE_DIR0_INDEX(kernel_vm_end)];
- if (dir1 == NULL) {
- nkpg = vm_page_alloc(NULL, nkpt++,
- VM_ALLOC_NOOBJ|VM_ALLOC_INTERRUPT|VM_ALLOC_WIRED);
- if (!nkpg)
- panic("%s: cannot add dir. page", __func__);
-
- dir1 = (struct ia64_lpte **)pmap_page_to_va(nkpg);
- bzero(dir1, PAGE_SIZE);
- ia64_kptdir[KPTE_DIR0_INDEX(kernel_vm_end)] = dir1;
- }
-
- nkpg = vm_page_alloc(NULL, nkpt++,
- VM_ALLOC_NOOBJ|VM_ALLOC_INTERRUPT|VM_ALLOC_WIRED);
- if (!nkpg)
- panic("%s: cannot add PTE page", __func__);
-
- leaf = (struct ia64_lpte *)pmap_page_to_va(nkpg);
- bzero(leaf, PAGE_SIZE);
- dir1[KPTE_DIR1_INDEX(kernel_vm_end)] = leaf;
-
- kernel_vm_end += PAGE_SIZE * NKPTEPG;
- }
-}
-
-/***************************************************
- * page management routines.
- ***************************************************/
-
-CTASSERT(sizeof(struct pv_chunk) == PAGE_SIZE);
-
-static __inline struct pv_chunk *
-pv_to_chunk(pv_entry_t pv)
-{
-
- return ((struct pv_chunk *)((uintptr_t)pv & ~(uintptr_t)PAGE_MASK));
-}
-
-#define PV_PMAP(pv) (pv_to_chunk(pv)->pc_pmap)
-
-#define PC_FREE_FULL 0xfffffffffffffffful
-#define PC_FREE_PARTIAL \
- ((1UL << (_NPCPV - sizeof(u_long) * 8 * (_NPCM - 1))) - 1)
-
-#if PAGE_SIZE == 8192
-static const u_long pc_freemask[_NPCM] = {
- PC_FREE_FULL, PC_FREE_FULL, PC_FREE_FULL,
- PC_FREE_FULL, PC_FREE_FULL, PC_FREE_PARTIAL
-};
-#elif PAGE_SIZE == 16384
-static const u_long pc_freemask[_NPCM] = {
- PC_FREE_FULL, PC_FREE_FULL, PC_FREE_FULL,
- PC_FREE_FULL, PC_FREE_FULL, PC_FREE_FULL,
- PC_FREE_FULL, PC_FREE_FULL, PC_FREE_FULL,
- PC_FREE_FULL, PC_FREE_PARTIAL
-};
-#endif
-
-static SYSCTL_NODE(_vm, OID_AUTO, pmap, CTLFLAG_RD, 0, "VM/pmap parameters");
-
-SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_count, CTLFLAG_RD, &pv_entry_count, 0,
- "Current number of pv entries");
-
-#ifdef PV_STATS
-static int pc_chunk_count, pc_chunk_allocs, pc_chunk_frees, pc_chunk_tryfail;
-
-SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_count, CTLFLAG_RD, &pc_chunk_count, 0,
- "Current number of pv entry chunks");
-SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_allocs, CTLFLAG_RD, &pc_chunk_allocs, 0,
- "Current number of pv entry chunks allocated");
-SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_frees, CTLFLAG_RD, &pc_chunk_frees, 0,
- "Current number of pv entry chunks frees");
-SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_tryfail, CTLFLAG_RD, &pc_chunk_tryfail, 0,
- "Number of times tried to get a chunk page but failed.");
-
-static long pv_entry_frees, pv_entry_allocs;
-static int pv_entry_spare;
-
-SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_frees, CTLFLAG_RD, &pv_entry_frees, 0,
- "Current number of pv entry frees");
-SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_allocs, CTLFLAG_RD, &pv_entry_allocs, 0,
- "Current number of pv entry allocs");
-SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_spare, CTLFLAG_RD, &pv_entry_spare, 0,
- "Current number of spare pv entries");
-#endif
-
-/*
- * We are in a serious low memory condition. Resort to
- * drastic measures to free some pages so we can allocate
- * another pv entry chunk.
- */
-static vm_page_t
-pmap_pv_reclaim(pmap_t locked_pmap)
-{
- struct pch newtail;
- struct pv_chunk *pc;
- struct ia64_lpte *pte;
- pmap_t pmap;
- pv_entry_t pv;
- vm_offset_t va;
- vm_page_t m, m_pc;
- u_long inuse;
- int bit, field, freed, idx;
-
- PMAP_LOCK_ASSERT(locked_pmap, MA_OWNED);
- pmap = NULL;
- m_pc = NULL;
- TAILQ_INIT(&newtail);
- while ((pc = TAILQ_FIRST(&pv_chunks)) != NULL) {
- TAILQ_REMOVE(&pv_chunks, pc, pc_lru);
- if (pmap != pc->pc_pmap) {
- if (pmap != NULL) {
- if (pmap != locked_pmap) {
- pmap_switch(locked_pmap);
- PMAP_UNLOCK(pmap);
- }
- }
- pmap = pc->pc_pmap;
- /* Avoid deadlock and lock recursion. */
- if (pmap > locked_pmap)
- PMAP_LOCK(pmap);
- else if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap)) {
- pmap = NULL;
- TAILQ_INSERT_TAIL(&newtail, pc, pc_lru);
- continue;
- }
- pmap_switch(pmap);
- }
-
- /*
- * Destroy every non-wired, 8 KB page mapping in the chunk.
- */
- freed = 0;
- for (field = 0; field < _NPCM; field++) {
- for (inuse = ~pc->pc_map[field] & pc_freemask[field];
- inuse != 0; inuse &= ~(1UL << bit)) {
- bit = ffsl(inuse) - 1;
- idx = field * sizeof(inuse) * NBBY + bit;
- pv = &pc->pc_pventry[idx];
- va = pv->pv_va;
- pte = pmap_find_vhpt(va);
- KASSERT(pte != NULL, ("pte"));
- if (pmap_wired(pte))
- continue;
- pmap_remove_vhpt(va);
- pmap_invalidate_page(va);
- m = PHYS_TO_VM_PAGE(pmap_ppn(pte));
- if (pmap_accessed(pte))
- vm_page_aflag_set(m, PGA_REFERENCED);
- if (pmap_dirty(pte))
- vm_page_dirty(m);
- pmap_free_pte(pte, va);
- TAILQ_REMOVE(&m->md.pv_list, pv, pv_list);
- if (TAILQ_EMPTY(&m->md.pv_list))
- vm_page_aflag_clear(m, PGA_WRITEABLE);
- pc->pc_map[field] |= 1UL << bit;
- freed++;
- }
- }
- if (freed == 0) {
- TAILQ_INSERT_TAIL(&newtail, pc, pc_lru);
- continue;
- }
- /* Every freed mapping is for a 8 KB page. */
- pmap->pm_stats.resident_count -= freed;
- PV_STAT(pv_entry_frees += freed);
- PV_STAT(pv_entry_spare += freed);
- pv_entry_count -= freed;
- TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
- for (field = 0; field < _NPCM; field++)
- if (pc->pc_map[field] != pc_freemask[field]) {
- TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc,
- pc_list);
- TAILQ_INSERT_TAIL(&newtail, pc, pc_lru);
-
- /*
- * One freed pv entry in locked_pmap is
- * sufficient.
- */
- if (pmap == locked_pmap)
- goto out;
- break;
- }
- if (field == _NPCM) {
- PV_STAT(pv_entry_spare -= _NPCPV);
- PV_STAT(pc_chunk_count--);
- PV_STAT(pc_chunk_frees++);
- /* Entire chunk is free; return it. */
- m_pc = PHYS_TO_VM_PAGE(IA64_RR_MASK((vm_offset_t)pc));
- break;
- }
- }
-out:
- TAILQ_CONCAT(&pv_chunks, &newtail, pc_lru);
- if (pmap != NULL) {
- if (pmap != locked_pmap) {
- pmap_switch(locked_pmap);
- PMAP_UNLOCK(pmap);
- }
- }
- return (m_pc);
-}
-
-/*
- * free the pv_entry back to the free list
- */
-static void
-free_pv_entry(pmap_t pmap, pv_entry_t pv)
-{
- struct pv_chunk *pc;
- int bit, field, idx;
-
- rw_assert(&pvh_global_lock, RA_WLOCKED);
- PMAP_LOCK_ASSERT(pmap, MA_OWNED);
- PV_STAT(pv_entry_frees++);
- PV_STAT(pv_entry_spare++);
- pv_entry_count--;
- pc = pv_to_chunk(pv);
- idx = pv - &pc->pc_pventry[0];
- field = idx / (sizeof(u_long) * NBBY);
- bit = idx % (sizeof(u_long) * NBBY);
- pc->pc_map[field] |= 1ul << bit;
- for (idx = 0; idx < _NPCM; idx++)
- if (pc->pc_map[idx] != pc_freemask[idx]) {
- /*
- * 98% of the time, pc is already at the head of the
- * list. If it isn't already, move it to the head.
- */
- if (__predict_false(TAILQ_FIRST(&pmap->pm_pvchunk) !=
- pc)) {
- TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
- TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc,
- pc_list);
- }
- return;
- }
- TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
- free_pv_chunk(pc);
-}
-
-static void
-free_pv_chunk(struct pv_chunk *pc)
-{
- vm_page_t m;
-
- TAILQ_REMOVE(&pv_chunks, pc, pc_lru);
- PV_STAT(pv_entry_spare -= _NPCPV);
- PV_STAT(pc_chunk_count--);
- PV_STAT(pc_chunk_frees++);
- /* entire chunk is free, return it */
- m = PHYS_TO_VM_PAGE(IA64_RR_MASK((vm_offset_t)pc));
- vm_page_unwire(m, PQ_INACTIVE);
- vm_page_free(m);
-}
-
-/*
- * get a new pv_entry, allocating a block from the system
- * when needed.
- */
-static pv_entry_t
-get_pv_entry(pmap_t pmap, boolean_t try)
-{
- struct pv_chunk *pc;
- pv_entry_t pv;
- vm_page_t m;
- int bit, field, idx;
-
- rw_assert(&pvh_global_lock, RA_WLOCKED);
- PMAP_LOCK_ASSERT(pmap, MA_OWNED);
- PV_STAT(pv_entry_allocs++);
- pv_entry_count++;
-retry:
- pc = TAILQ_FIRST(&pmap->pm_pvchunk);
- if (pc != NULL) {
- for (field = 0; field < _NPCM; field++) {
- if (pc->pc_map[field]) {
- bit = ffsl(pc->pc_map[field]) - 1;
- break;
- }
- }
- if (field < _NPCM) {
- idx = field * sizeof(pc->pc_map[field]) * NBBY + bit;
- pv = &pc->pc_pventry[idx];
- pc->pc_map[field] &= ~(1ul << bit);
- /* If this was the last item, move it to tail */
- for (field = 0; field < _NPCM; field++)
- if (pc->pc_map[field] != 0) {
- PV_STAT(pv_entry_spare--);
- return (pv); /* not full, return */
- }
- TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
- TAILQ_INSERT_TAIL(&pmap->pm_pvchunk, pc, pc_list);
- PV_STAT(pv_entry_spare--);
- return (pv);
- }
- }
- /* No free items, allocate another chunk */
- m = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ |
- VM_ALLOC_WIRED);
- if (m == NULL) {
- if (try) {
- pv_entry_count--;
- PV_STAT(pc_chunk_tryfail++);
- return (NULL);
- }
- m = pmap_pv_reclaim(pmap);
- if (m == NULL)
- goto retry;
- }
- PV_STAT(pc_chunk_count++);
- PV_STAT(pc_chunk_allocs++);
- pc = (struct pv_chunk *)IA64_PHYS_TO_RR7(VM_PAGE_TO_PHYS(m));
- pc->pc_pmap = pmap;
- pc->pc_map[0] = pc_freemask[0] & ~1ul; /* preallocated bit 0 */
- for (field = 1; field < _NPCM; field++)
- pc->pc_map[field] = pc_freemask[field];
- TAILQ_INSERT_TAIL(&pv_chunks, pc, pc_lru);
- pv = &pc->pc_pventry[0];
- TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list);
- PV_STAT(pv_entry_spare += _NPCPV - 1);
- return (pv);
-}
-
-/*
- * Conditionally create a pv entry.
- */
-static boolean_t
-pmap_try_insert_pv_entry(pmap_t pmap, vm_offset_t va, vm_page_t m)
-{
- pv_entry_t pv;
-
- PMAP_LOCK_ASSERT(pmap, MA_OWNED);
- rw_assert(&pvh_global_lock, RA_WLOCKED);
- if ((pv = get_pv_entry(pmap, TRUE)) != NULL) {
- pv->pv_va = va;
- TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list);
- return (TRUE);
- } else
- return (FALSE);
-}
-
-/*
- * Add an ia64_lpte to the VHPT.
- */
-static void
-pmap_enter_vhpt(struct ia64_lpte *pte, vm_offset_t va)
-{
- struct ia64_bucket *bckt;
- struct ia64_lpte *vhpte;
- uint64_t pte_pa;
-
- /* Can fault, so get it out of the way. */
- pte_pa = ia64_tpa((vm_offset_t)pte);
-
- vhpte = (struct ia64_lpte *)ia64_thash(va);
- bckt = (struct ia64_bucket *)vhpte->chain;
-
- mtx_lock_spin(&bckt->mutex);
- pte->chain = bckt->chain;
- ia64_mf();
- bckt->chain = pte_pa;
-
- pmap_vhpt_inserts++;
- bckt->length++;
- mtx_unlock_spin(&bckt->mutex);
-}
-
-/*
- * Remove the ia64_lpte matching va from the VHPT. Return zero if it
- * worked or an appropriate error code otherwise.
- */
-static int
-pmap_remove_vhpt(vm_offset_t va)
-{
- struct ia64_bucket *bckt;
- struct ia64_lpte *pte;
- struct ia64_lpte *lpte;
- struct ia64_lpte *vhpte;
- uint64_t chain, tag;
-
- tag = ia64_ttag(va);
- vhpte = (struct ia64_lpte *)ia64_thash(va);
- bckt = (struct ia64_bucket *)vhpte->chain;
-
- lpte = NULL;
- mtx_lock_spin(&bckt->mutex);
- chain = bckt->chain;
- pte = (struct ia64_lpte *)IA64_PHYS_TO_RR7(chain);
- while (chain != 0 && pte->tag != tag) {
- lpte = pte;
- chain = pte->chain;
- pte = (struct ia64_lpte *)IA64_PHYS_TO_RR7(chain);
- }
- if (chain == 0) {
- mtx_unlock_spin(&bckt->mutex);
- return (ENOENT);
- }
-
- /* Snip this pv_entry out of the collision chain. */
- if (lpte == NULL)
- bckt->chain = pte->chain;
- else
- lpte->chain = pte->chain;
- ia64_mf();
-
- bckt->length--;
- mtx_unlock_spin(&bckt->mutex);
- return (0);
-}
-
-/*
- * Find the ia64_lpte for the given va, if any.
- */
-static struct ia64_lpte *
-pmap_find_vhpt(vm_offset_t va)
-{
- struct ia64_bucket *bckt;
- struct ia64_lpte *pte;
- uint64_t chain, tag;
-
- tag = ia64_ttag(va);
- pte = (struct ia64_lpte *)ia64_thash(va);
- bckt = (struct ia64_bucket *)pte->chain;
-
- mtx_lock_spin(&bckt->mutex);
- chain = bckt->chain;
- pte = (struct ia64_lpte *)IA64_PHYS_TO_RR7(chain);
- while (chain != 0 && pte->tag != tag) {
- chain = pte->chain;
- pte = (struct ia64_lpte *)IA64_PHYS_TO_RR7(chain);
- }
- mtx_unlock_spin(&bckt->mutex);
- return ((chain != 0) ? pte : NULL);
-}
-
-/*
- * Remove an entry from the list of managed mappings.
- */
-static int
-pmap_remove_entry(pmap_t pmap, vm_page_t m, vm_offset_t va, pv_entry_t pv)
-{
-
- rw_assert(&pvh_global_lock, RA_WLOCKED);
- if (!pv) {
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- if (pmap == PV_PMAP(pv) && va == pv->pv_va)
- break;
- }
- }
-
- if (pv) {
- TAILQ_REMOVE(&m->md.pv_list, pv, pv_list);
- if (TAILQ_FIRST(&m->md.pv_list) == NULL)
- vm_page_aflag_clear(m, PGA_WRITEABLE);
-
- free_pv_entry(pmap, pv);
- return 0;
- } else {
- return ENOENT;
- }
-}
-
-/*
- * Create a pv entry for page at pa for
- * (pmap, va).
- */
-static void
-pmap_insert_entry(pmap_t pmap, vm_offset_t va, vm_page_t m)
-{
- pv_entry_t pv;
-
- rw_assert(&pvh_global_lock, RA_WLOCKED);
- pv = get_pv_entry(pmap, FALSE);
- pv->pv_va = va;
- TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list);
-}
-
-/*
- * Routine: pmap_extract
- * Function:
- * Extract the physical page address associated
- * with the given map/virtual_address pair.
- */
-vm_paddr_t
-pmap_extract(pmap_t pmap, vm_offset_t va)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap;
- vm_paddr_t pa;
-
- CTR3(KTR_PMAP, "%s(pm=%p, va=%#lx)", __func__, pmap, va);
-
- pa = 0;
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(va);
- if (pte != NULL && pmap_present(pte))
- pa = pmap_ppn(pte);
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- return (pa);
-}
-
-/*
- * Routine: pmap_extract_and_hold
- * Function:
- * Atomically extract and hold the physical page
- * with the given pmap and virtual address pair
- * if that mapping permits the given protection.
- */
-vm_page_t
-pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap;
- vm_page_t m;
- vm_paddr_t pa;
-
- CTR4(KTR_PMAP, "%s(pm=%p, va=%#lx, prot=%#x)", __func__, pmap, va,
- prot);
-
- pa = 0;
- m = NULL;
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
-retry:
- pte = pmap_find_vhpt(va);
- if (pte != NULL && pmap_present(pte) &&
- (pmap_prot(pte) & prot) == prot) {
- m = PHYS_TO_VM_PAGE(pmap_ppn(pte));
- if (vm_page_pa_tryrelock(pmap, pmap_ppn(pte), &pa))
- goto retry;
- vm_page_hold(m);
- }
- PA_UNLOCK_COND(pa);
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- return (m);
-}
-
-/***************************************************
- * Low level mapping routines.....
- ***************************************************/
-
-/*
- * Find the kernel lpte for mapping the given virtual address, which
- * must be in the part of region 5 which we can cover with our kernel
- * 'page tables'.
- */
-static struct ia64_lpte *
-pmap_find_kpte(vm_offset_t va)
-{
- struct ia64_lpte **dir1;
- struct ia64_lpte *leaf;
-
- KASSERT((va >> 61) == 5,
- ("kernel mapping 0x%lx not in region 5", va));
- KASSERT(va < kernel_vm_end,
- ("kernel mapping 0x%lx out of range", va));
-
- dir1 = ia64_kptdir[KPTE_DIR0_INDEX(va)];
- leaf = dir1[KPTE_DIR1_INDEX(va)];
- return (&leaf[KPTE_PTE_INDEX(va)]);
-}
-
-/*
- * Find a pte suitable for mapping a user-space address. If one exists
- * in the VHPT, that one will be returned, otherwise a new pte is
- * allocated.
- */
-static struct ia64_lpte *
-pmap_find_pte(vm_offset_t va)
-{
- struct ia64_lpte *pte;
-
- if (va >= VM_MAXUSER_ADDRESS)
- return pmap_find_kpte(va);
-
- pte = pmap_find_vhpt(va);
- if (pte == NULL) {
- pte = uma_zalloc(ptezone, M_NOWAIT | M_ZERO);
- pte->tag = 1UL << 63;
- }
- return (pte);
-}
-
-/*
- * Free a pte which is now unused. This simply returns it to the zone
- * allocator if it is a user mapping. For kernel mappings, clear the
- * valid bit to make it clear that the mapping is not currently used.
- */
-static void
-pmap_free_pte(struct ia64_lpte *pte, vm_offset_t va)
-{
- if (va < VM_MAXUSER_ADDRESS)
- uma_zfree(ptezone, pte);
- else
- pmap_clear_present(pte);
-}
-
-static PMAP_INLINE void
-pmap_pte_prot(pmap_t pm, struct ia64_lpte *pte, vm_prot_t prot)
-{
- static long prot2ar[4] = {
- PTE_AR_R, /* VM_PROT_NONE */
- PTE_AR_RW, /* VM_PROT_WRITE */
- PTE_AR_RX|PTE_ED, /* VM_PROT_EXECUTE */
- PTE_AR_RWX|PTE_ED /* VM_PROT_WRITE|VM_PROT_EXECUTE */
- };
-
- pte->pte &= ~(PTE_PROT_MASK | PTE_PL_MASK | PTE_AR_MASK | PTE_ED);
- pte->pte |= (uint64_t)(prot & VM_PROT_ALL) << 56;
- pte->pte |= (prot == VM_PROT_NONE || pm == kernel_pmap)
- ? PTE_PL_KERN : PTE_PL_USER;
- pte->pte |= prot2ar[(prot & VM_PROT_ALL) >> 1];
-}
-
-static PMAP_INLINE void
-pmap_pte_attr(struct ia64_lpte *pte, vm_memattr_t ma)
-{
-
- pte->pte &= ~PTE_MA_MASK;
- pte->pte |= (ma & PTE_MA_MASK);
-}
-
-/*
- * Set a pte to contain a valid mapping and enter it in the VHPT. If
- * the pte was orginally valid, then its assumed to already be in the
- * VHPT.
- * This functions does not set the protection bits. It's expected
- * that those have been set correctly prior to calling this function.
- */
-static void
-pmap_set_pte(struct ia64_lpte *pte, vm_offset_t va, vm_offset_t pa,
- boolean_t wired, boolean_t managed)
-{
-
- pte->pte &= PTE_PROT_MASK | PTE_MA_MASK | PTE_PL_MASK |
- PTE_AR_MASK | PTE_ED;
- pte->pte |= PTE_PRESENT;
- pte->pte |= (managed) ? PTE_MANAGED : (PTE_DIRTY | PTE_ACCESSED);
- pte->pte |= (wired) ? PTE_WIRED : 0;
- pte->pte |= pa & PTE_PPN_MASK;
-
- pte->itir = PAGE_SHIFT << 2;
-
- ia64_mf();
-
- pte->tag = ia64_ttag(va);
-}
-
-/*
- * Remove the (possibly managed) mapping represented by pte from the
- * given pmap.
- */
-static int
-pmap_remove_pte(pmap_t pmap, struct ia64_lpte *pte, vm_offset_t va,
- pv_entry_t pv, int freepte)
-{
- int error;
- vm_page_t m;
-
- /*
- * First remove from the VHPT.
- */
- error = pmap_remove_vhpt(va);
- KASSERT(error == 0, ("%s: pmap_remove_vhpt returned %d",
- __func__, error));
-
- pmap_invalidate_page(va);
-
- if (pmap_wired(pte))
- pmap->pm_stats.wired_count -= 1;
-
- pmap->pm_stats.resident_count -= 1;
- if (pmap_managed(pte)) {
- m = PHYS_TO_VM_PAGE(pmap_ppn(pte));
- if (pmap_dirty(pte))
- vm_page_dirty(m);
- if (pmap_accessed(pte))
- vm_page_aflag_set(m, PGA_REFERENCED);
-
- error = pmap_remove_entry(pmap, m, va, pv);
- }
- if (freepte)
- pmap_free_pte(pte, va);
-
- return (error);
-}
-
-/*
- * Extract the physical page address associated with a kernel
- * virtual address.
- */
-vm_paddr_t
-pmap_kextract(vm_offset_t va)
-{
- struct ia64_lpte *pte;
- uint64_t *pbvm_pgtbl;
- vm_paddr_t pa;
- u_int idx;
-
- CTR2(KTR_PMAP, "%s(va=%#lx)", __func__, va);
-
- KASSERT(va >= VM_MAXUSER_ADDRESS, ("Must be kernel VA"));
-
- /* Regions 6 and 7 are direct mapped. */
- if (va >= IA64_RR_BASE(6)) {
- pa = IA64_RR_MASK(va);
- goto out;
- }
-
- /* Region 5 is our KVA. Bail out if the VA is beyond our limits. */
- if (va >= kernel_vm_end)
- goto err_out;
- if (va >= VM_INIT_KERNEL_ADDRESS) {
- pte = pmap_find_kpte(va);
- pa = pmap_present(pte) ? pmap_ppn(pte) | (va & PAGE_MASK) : 0;
- goto out;
- }
-
- /* The PBVM page table. */
- if (va >= IA64_PBVM_PGTBL + bootinfo->bi_pbvm_pgtblsz)
- goto err_out;
- if (va >= IA64_PBVM_PGTBL) {
- pa = (va - IA64_PBVM_PGTBL) + bootinfo->bi_pbvm_pgtbl;
- goto out;
- }
-
- /* The PBVM itself. */
- if (va >= IA64_PBVM_BASE) {
- pbvm_pgtbl = (void *)IA64_PBVM_PGTBL;
- idx = (va - IA64_PBVM_BASE) >> IA64_PBVM_PAGE_SHIFT;
- if (idx >= (bootinfo->bi_pbvm_pgtblsz >> 3))
- goto err_out;
- if ((pbvm_pgtbl[idx] & PTE_PRESENT) == 0)
- goto err_out;
- pa = (pbvm_pgtbl[idx] & PTE_PPN_MASK) +
- (va & IA64_PBVM_PAGE_MASK);
- goto out;
- }
-
- err_out:
- printf("XXX: %s: va=%#lx is invalid\n", __func__, va);
- pa = 0;
- /* FALLTHROUGH */
-
- out:
- return (pa);
-}
-
-/*
- * Add a list of wired pages to the kva this routine is only used for
- * temporary kernel mappings that do not need to have page modification
- * or references recorded. Note that old mappings are simply written
- * over. The page is effectively wired, but it's customary to not have
- * the PTE reflect that, nor update statistics.
- */
-void
-pmap_qenter(vm_offset_t va, vm_page_t *m, int count)
-{
- struct ia64_lpte *pte;
- int i;
-
- CTR4(KTR_PMAP, "%s(va=%#lx, m_p=%p, cnt=%d)", __func__, va, m, count);
-
- for (i = 0; i < count; i++) {
- pte = pmap_find_kpte(va);
- if (pmap_present(pte))
- pmap_invalidate_page(va);
- else
- pmap_enter_vhpt(pte, va);
- pmap_pte_prot(kernel_pmap, pte, VM_PROT_ALL);
- pmap_pte_attr(pte, m[i]->md.memattr);
- pmap_set_pte(pte, va, VM_PAGE_TO_PHYS(m[i]), FALSE, FALSE);
- va += PAGE_SIZE;
- }
-}
-
-/*
- * this routine jerks page mappings from the
- * kernel -- it is meant only for temporary mappings.
- */
-void
-pmap_qremove(vm_offset_t va, int count)
-{
- struct ia64_lpte *pte;
- int i;
-
- CTR3(KTR_PMAP, "%s(va=%#lx, cnt=%d)", __func__, va, count);
-
- for (i = 0; i < count; i++) {
- pte = pmap_find_kpte(va);
- if (pmap_present(pte)) {
- pmap_remove_vhpt(va);
- pmap_invalidate_page(va);
- pmap_clear_present(pte);
- }
- va += PAGE_SIZE;
- }
-}
-
-/*
- * Add a wired page to the kva. As for pmap_qenter(), it's customary
- * to not have the PTE reflect that, nor update statistics.
- */
-void
-pmap_kenter(vm_offset_t va, vm_paddr_t pa)
-{
- struct ia64_lpte *pte;
-
- CTR3(KTR_PMAP, "%s(va=%#lx, pa=%#lx)", __func__, va, pa);
-
- pte = pmap_find_kpte(va);
- if (pmap_present(pte))
- pmap_invalidate_page(va);
- else
- pmap_enter_vhpt(pte, va);
- pmap_pte_prot(kernel_pmap, pte, VM_PROT_ALL);
- pmap_pte_attr(pte, VM_MEMATTR_DEFAULT);
- pmap_set_pte(pte, va, pa, FALSE, FALSE);
-}
-
-/*
- * Remove a page from the kva
- */
-void
-pmap_kremove(vm_offset_t va)
-{
- struct ia64_lpte *pte;
-
- CTR2(KTR_PMAP, "%s(va=%#lx)", __func__, va);
-
- pte = pmap_find_kpte(va);
- if (pmap_present(pte)) {
- pmap_remove_vhpt(va);
- pmap_invalidate_page(va);
- pmap_clear_present(pte);
- }
-}
-
-/*
- * Used to map a range of physical addresses into kernel
- * virtual address space.
- *
- * The value passed in '*virt' is a suggested virtual address for
- * the mapping. Architectures which can support a direct-mapped
- * physical to virtual region can return the appropriate address
- * within that region, leaving '*virt' unchanged. Other
- * architectures should map the pages starting at '*virt' and
- * update '*virt' with the first usable address after the mapped
- * region.
- */
-vm_offset_t
-pmap_map(vm_offset_t *virt, vm_offset_t start, vm_offset_t end, int prot)
-{
-
- CTR5(KTR_PMAP, "%s(va_p=%p, sva=%#lx, eva=%#lx, prot=%#x)", __func__,
- virt, start, end, prot);
-
- return IA64_PHYS_TO_RR7(start);
-}
-
-/*
- * Remove the given range of addresses from the specified map.
- *
- * It is assumed that the start and end are properly
- * rounded to the page size.
- *
- * Sparsely used ranges are inefficiently removed. The VHPT is
- * probed for every page within the range. XXX
- */
-void
-pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
-{
- pmap_t oldpmap;
- vm_offset_t va;
- struct ia64_lpte *pte;
-
- CTR4(KTR_PMAP, "%s(pm=%p, sva=%#lx, eva=%#lx)", __func__, pmap, sva,
- eva);
-
- /*
- * Perform an unsynchronized read. This is, however, safe.
- */
- if (pmap->pm_stats.resident_count == 0)
- return;
-
- rw_wlock(&pvh_global_lock);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- for (va = sva; va < eva; va += PAGE_SIZE) {
- pte = pmap_find_vhpt(va);
- if (pte != NULL)
- pmap_remove_pte(pmap, pte, va, 0, 1);
- }
- rw_wunlock(&pvh_global_lock);
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
-}
-
-/*
- * Routine: pmap_remove_all
- * Function:
- * Removes this physical page from
- * all physical maps in which it resides.
- * Reflects back modify bits to the pager.
- *
- * Notes:
- * Original versions of this routine were very
- * inefficient because they iteratively called
- * pmap_remove (slow...)
- */
-void
-pmap_remove_all(vm_page_t m)
-{
- pmap_t oldpmap;
- pv_entry_t pv;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_remove_all: page %p is not managed", m));
- rw_wlock(&pvh_global_lock);
- while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
- struct ia64_lpte *pte;
- pmap_t pmap = PV_PMAP(pv);
- vm_offset_t va = pv->pv_va;
-
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(va);
- KASSERT(pte != NULL, ("pte"));
- if (pmap_ppn(pte) != VM_PAGE_TO_PHYS(m))
- panic("pmap_remove_all: pv_table for %lx is inconsistent", VM_PAGE_TO_PHYS(m));
- pmap_remove_pte(pmap, pte, va, pv, 1);
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- }
- vm_page_aflag_clear(m, PGA_WRITEABLE);
- rw_wunlock(&pvh_global_lock);
-}
-
-/*
- * Set the physical protection on the
- * specified range of this map as requested.
- */
-void
-pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot)
-{
- pmap_t oldpmap;
- struct ia64_lpte *pte;
-
- CTR5(KTR_PMAP, "%s(pm=%p, sva=%#lx, eva=%#lx, prot=%#x)", __func__,
- pmap, sva, eva, prot);
-
- if ((prot & VM_PROT_READ) == VM_PROT_NONE) {
- pmap_remove(pmap, sva, eva);
- return;
- }
-
- if ((prot & (VM_PROT_WRITE|VM_PROT_EXECUTE)) ==
- (VM_PROT_WRITE|VM_PROT_EXECUTE))
- return;
-
- if ((sva & PAGE_MASK) || (eva & PAGE_MASK))
- panic("pmap_protect: unaligned addresses");
-
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- for ( ; sva < eva; sva += PAGE_SIZE) {
- /* If page is invalid, skip this page */
- pte = pmap_find_vhpt(sva);
- if (pte == NULL)
- continue;
-
- /* If there's no change, skip it too */
- if (pmap_prot(pte) == prot)
- continue;
-
- if ((prot & VM_PROT_WRITE) == 0 &&
- pmap_managed(pte) && pmap_dirty(pte)) {
- vm_paddr_t pa = pmap_ppn(pte);
- vm_page_t m = PHYS_TO_VM_PAGE(pa);
-
- vm_page_dirty(m);
- pmap_clear_dirty(pte);
- }
-
- if (prot & VM_PROT_EXECUTE)
- ia64_sync_icache(sva, PAGE_SIZE);
-
- pmap_pte_prot(pmap, pte, prot);
- pmap_invalidate_page(sva);
- }
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
-}
-
-/*
- * Insert the given physical page (p) at
- * the specified virtual address (v) in the
- * target physical map with the protection requested.
- *
- * If specified, the page will be wired down, meaning
- * that the related pte can not be reclaimed.
- *
- * NB: This is the only routine which MAY NOT lazy-evaluate
- * or lose information. That is, this routine must actually
- * insert this page into the given map NOW.
- */
-void
-pmap_enter(pmap_t pmap, vm_offset_t va, vm_prot_t access, vm_page_t m,
- vm_prot_t prot, boolean_t wired)
-{
- pmap_t oldpmap;
- vm_offset_t pa;
- vm_offset_t opa;
- struct ia64_lpte origpte;
- struct ia64_lpte *pte;
- boolean_t icache_inval, managed;
-
- CTR6(KTR_PMAP, "pmap_enter(pm=%p, va=%#lx, acc=%#x, m=%p, prot=%#x, "
- "wired=%u)", pmap, va, access, m, prot, wired);
-
- rw_wlock(&pvh_global_lock);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
-
- va &= ~PAGE_MASK;
- KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig"));
- KASSERT((m->oflags & VPO_UNMANAGED) != 0 || vm_page_xbusied(m),
- ("pmap_enter: page %p is not busy", m));
-
- /*
- * Find (or create) a pte for the given mapping.
- */
- while ((pte = pmap_find_pte(va)) == NULL) {
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- rw_wunlock(&pvh_global_lock);
- VM_WAIT;
- rw_wlock(&pvh_global_lock);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- }
- origpte = *pte;
- if (!pmap_present(pte)) {
- opa = ~0UL;
- pmap_enter_vhpt(pte, va);
- } else
- opa = pmap_ppn(pte);
- managed = FALSE;
- pa = VM_PAGE_TO_PHYS(m);
-
- icache_inval = (prot & VM_PROT_EXECUTE) ? TRUE : FALSE;
-
- /*
- * Mapping has not changed, must be protection or wiring change.
- */
- if (opa == pa) {
- /*
- * Wiring change, just update stats. We don't worry about
- * wiring PT pages as they remain resident as long as there
- * are valid mappings in them. Hence, if a user page is wired,
- * the PT page will be also.
- */
- if (wired && !pmap_wired(&origpte))
- pmap->pm_stats.wired_count++;
- else if (!wired && pmap_wired(&origpte))
- pmap->pm_stats.wired_count--;
-
- managed = (pmap_managed(&origpte)) ? TRUE : FALSE;
-
- /*
- * We might be turning off write access to the page,
- * so we go ahead and sense modify status. Otherwise,
- * we can avoid I-cache invalidation if the page
- * already allowed execution.
- */
- if (managed && pmap_dirty(&origpte))
- vm_page_dirty(m);
- else if (pmap_exec(&origpte))
- icache_inval = FALSE;
-
- pmap_invalidate_page(va);
- goto validate;
- }
-
- /*
- * Mapping has changed, invalidate old range and fall
- * through to handle validating new mapping.
- */
- if (opa != ~0UL) {
- pmap_remove_pte(pmap, pte, va, 0, 0);
- pmap_enter_vhpt(pte, va);
- }
-
- /*
- * Enter on the PV list if part of our managed memory.
- */
- if ((m->oflags & VPO_UNMANAGED) == 0) {
- KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva,
- ("pmap_enter: managed mapping within the clean submap"));
- pmap_insert_entry(pmap, va, m);
- managed = TRUE;
- }
-
- /*
- * Increment counters
- */
- pmap->pm_stats.resident_count++;
- if (wired)
- pmap->pm_stats.wired_count++;
-
-validate:
-
- /*
- * Now validate mapping with desired protection/wiring. This
- * adds the pte to the VHPT if necessary.
- */
- pmap_pte_prot(pmap, pte, prot);
- pmap_pte_attr(pte, m->md.memattr);
- pmap_set_pte(pte, va, pa, wired, managed);
-
- /* Invalidate the I-cache when needed. */
- if (icache_inval)
- ia64_sync_icache(va, PAGE_SIZE);
-
- if ((prot & VM_PROT_WRITE) != 0 && managed)
- vm_page_aflag_set(m, PGA_WRITEABLE);
- rw_wunlock(&pvh_global_lock);
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
-}
-
-/*
- * Maps a sequence of resident pages belonging to the same object.
- * The sequence begins with the given page m_start. This page is
- * mapped at the given virtual address start. Each subsequent page is
- * mapped at a virtual address that is offset from start by the same
- * amount as the page is offset from m_start within the object. The
- * last page in the sequence is the page with the largest offset from
- * m_start that can be mapped at a virtual address less than the given
- * virtual address end. Not every virtual page between start and end
- * is mapped; only those for which a resident page exists with the
- * corresponding offset from m_start are mapped.
- */
-void
-pmap_enter_object(pmap_t pmap, vm_offset_t start, vm_offset_t end,
- vm_page_t m_start, vm_prot_t prot)
-{
- pmap_t oldpmap;
- vm_page_t m;
- vm_pindex_t diff, psize;
-
- CTR6(KTR_PMAP, "%s(pm=%p, sva=%#lx, eva=%#lx, m=%p, prot=%#x)",
- __func__, pmap, start, end, m_start, prot);
-
- VM_OBJECT_ASSERT_LOCKED(m_start->object);
-
- psize = atop(end - start);
- m = m_start;
- rw_wlock(&pvh_global_lock);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) {
- pmap_enter_quick_locked(pmap, start + ptoa(diff), m, prot);
- m = TAILQ_NEXT(m, listq);
- }
- rw_wunlock(&pvh_global_lock);
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
-}
-
-/*
- * this code makes some *MAJOR* assumptions:
- * 1. Current pmap & pmap exists.
- * 2. Not wired.
- * 3. Read access.
- * 4. No page table pages.
- * but is *MUCH* faster than pmap_enter...
- */
-void
-pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot)
-{
- pmap_t oldpmap;
-
- CTR5(KTR_PMAP, "%s(pm=%p, va=%#lx, m=%p, prot=%#x)", __func__, pmap,
- va, m, prot);
-
- rw_wlock(&pvh_global_lock);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pmap_enter_quick_locked(pmap, va, m, prot);
- rw_wunlock(&pvh_global_lock);
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
-}
-
-static void
-pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m,
- vm_prot_t prot)
-{
- struct ia64_lpte *pte;
- boolean_t managed;
-
- KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva ||
- (m->oflags & VPO_UNMANAGED) != 0,
- ("pmap_enter_quick_locked: managed mapping within the clean submap"));
- rw_assert(&pvh_global_lock, RA_WLOCKED);
- PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-
- if ((pte = pmap_find_pte(va)) == NULL)
- return;
-
- if (!pmap_present(pte)) {
- /* Enter on the PV list if the page is managed. */
- if ((m->oflags & VPO_UNMANAGED) == 0) {
- if (!pmap_try_insert_pv_entry(pmap, va, m)) {
- pmap_free_pte(pte, va);
- return;
- }
- managed = TRUE;
- } else
- managed = FALSE;
-
- /* Increment counters. */
- pmap->pm_stats.resident_count++;
-
- /* Initialise with R/O protection and enter into VHPT. */
- pmap_enter_vhpt(pte, va);
- pmap_pte_prot(pmap, pte,
- prot & (VM_PROT_READ | VM_PROT_EXECUTE));
- pmap_pte_attr(pte, m->md.memattr);
- pmap_set_pte(pte, va, VM_PAGE_TO_PHYS(m), FALSE, managed);
-
- if (prot & VM_PROT_EXECUTE)
- ia64_sync_icache(va, PAGE_SIZE);
- }
-}
-
-/*
- * pmap_object_init_pt preloads the ptes for a given object
- * into the specified pmap. This eliminates the blast of soft
- * faults on process startup and immediately after an mmap.
- */
-void
-pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, vm_object_t object,
- vm_pindex_t pindex, vm_size_t size)
-{
-
- CTR6(KTR_PMAP, "%s(pm=%p, va=%#lx, obj=%p, idx=%lu, sz=%#lx)",
- __func__, pmap, addr, object, pindex, size);
-
- VM_OBJECT_ASSERT_WLOCKED(object);
- KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
- ("pmap_object_init_pt: non-device object"));
-}
-
-/*
- * Routine: pmap_change_wiring
- * Function: Change the wiring attribute for a map/virtual-address
- * pair.
- * In/out conditions:
- * The mapping must already exist in the pmap.
- */
-void
-pmap_change_wiring(pmap_t pmap, vm_offset_t va, boolean_t wired)
-{
- pmap_t oldpmap;
- struct ia64_lpte *pte;
-
- CTR4(KTR_PMAP, "%s(pm=%p, va=%#lx, wired=%u)", __func__, pmap, va,
- wired);
-
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
-
- pte = pmap_find_vhpt(va);
- KASSERT(pte != NULL, ("pte"));
- if (wired && !pmap_wired(pte)) {
- pmap->pm_stats.wired_count++;
- pmap_set_wired(pte);
- } else if (!wired && pmap_wired(pte)) {
- pmap->pm_stats.wired_count--;
- pmap_clear_wired(pte);
- }
-
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
-}
-
-/*
- * Clear the wired attribute from the mappings for the specified range of
- * addresses in the given pmap. Every valid mapping within that range
- * must have the wired attribute set. In contrast, invalid mappings
- * cannot have the wired attribute set, so they are ignored.
- *
- * The wired attribute of the page table entry is not a hardware feature,
- * so there is no need to invalidate any TLB entries.
- */
-void
-pmap_unwire(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
-{
- pmap_t oldpmap;
- struct ia64_lpte *pte;
-
- CTR4(KTR_PMAP, "%s(%p, %#x, %#x)", __func__, pmap, sva, eva);
-
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- for (; sva < eva; sva += PAGE_SIZE) {
- pte = pmap_find_vhpt(sva);
- if (pte == NULL)
- continue;
- if (!pmap_wired(pte))
- panic("pmap_unwire: pte %p isn't wired", pte);
- pmap->pm_stats.wired_count--;
- pmap_clear_wired(pte);
- }
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
-}
-
-/*
- * Copy the range specified by src_addr/len
- * from the source map to the range dst_addr/len
- * in the destination map.
- *
- * This routine is only advisory and need not do anything.
- */
-void
-pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_va, vm_size_t len,
- vm_offset_t src_va)
-{
-
- CTR6(KTR_PMAP, "%s(dpm=%p, spm=%p, dva=%#lx, sz=%#lx, sva=%#lx)",
- __func__, dst_pmap, src_pmap, dst_va, len, src_va);
-}
-
-/*
- * pmap_zero_page zeros the specified hardware page by
- * mapping it into virtual memory and using bzero to clear
- * its contents.
- */
-void
-pmap_zero_page(vm_page_t m)
-{
- void *p;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- p = (void *)pmap_page_to_va(m);
- bzero(p, PAGE_SIZE);
-}
-
-/*
- * pmap_zero_page_area zeros the specified hardware page by
- * mapping it into virtual memory and using bzero to clear
- * its contents.
- *
- * off and size must reside within a single page.
- */
-void
-pmap_zero_page_area(vm_page_t m, int off, int size)
-{
- char *p;
-
- CTR4(KTR_PMAP, "%s(m=%p, ofs=%d, len=%d)", __func__, m, off, size);
-
- p = (void *)pmap_page_to_va(m);
- bzero(p + off, size);
-}
-
-/*
- * pmap_zero_page_idle zeros the specified hardware page by
- * mapping it into virtual memory and using bzero to clear
- * its contents. This is for the vm_idlezero process.
- */
-void
-pmap_zero_page_idle(vm_page_t m)
-{
- void *p;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- p = (void *)pmap_page_to_va(m);
- bzero(p, PAGE_SIZE);
-}
-
-/*
- * pmap_copy_page copies the specified (machine independent)
- * page by mapping the page into virtual memory and using
- * bcopy to copy the page, one machine dependent page at a
- * time.
- */
-void
-pmap_copy_page(vm_page_t msrc, vm_page_t mdst)
-{
- void *dst, *src;
-
- CTR3(KTR_PMAP, "%s(sm=%p, dm=%p)", __func__, msrc, mdst);
-
- src = (void *)pmap_page_to_va(msrc);
- dst = (void *)pmap_page_to_va(mdst);
- bcopy(src, dst, PAGE_SIZE);
-}
-
-void
-pmap_copy_pages(vm_page_t ma[], vm_offset_t a_offset, vm_page_t mb[],
- vm_offset_t b_offset, int xfersize)
-{
- void *a_cp, *b_cp;
- vm_offset_t a_pg_offset, b_pg_offset;
- int cnt;
-
- CTR6(KTR_PMAP, "%s(m0=%p, va0=%#lx, m1=%p, va1=%#lx, sz=%#x)",
- __func__, ma, a_offset, mb, b_offset, xfersize);
-
- while (xfersize > 0) {
- a_pg_offset = a_offset & PAGE_MASK;
- cnt = min(xfersize, PAGE_SIZE - a_pg_offset);
- a_cp = (char *)pmap_page_to_va(ma[a_offset >> PAGE_SHIFT]) +
- a_pg_offset;
- b_pg_offset = b_offset & PAGE_MASK;
- cnt = min(cnt, PAGE_SIZE - b_pg_offset);
- b_cp = (char *)pmap_page_to_va(mb[b_offset >> PAGE_SHIFT]) +
- b_pg_offset;
- bcopy(a_cp, b_cp, cnt);
- a_offset += cnt;
- b_offset += cnt;
- xfersize -= cnt;
- }
-}
-
-/*
- * Returns true if the pmap's pv is one of the first
- * 16 pvs linked to from this page. This count may
- * be changed upwards or downwards in the future; it
- * is only necessary that true be returned for a small
- * subset of pmaps for proper page aging.
- */
-boolean_t
-pmap_page_exists_quick(pmap_t pmap, vm_page_t m)
-{
- pv_entry_t pv;
- int loops = 0;
- boolean_t rv;
-
- CTR3(KTR_PMAP, "%s(pm=%p, m=%p)", __func__, pmap, m);
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_page_exists_quick: page %p is not managed", m));
- rv = FALSE;
- rw_wlock(&pvh_global_lock);
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- if (PV_PMAP(pv) == pmap) {
- rv = TRUE;
- break;
- }
- loops++;
- if (loops >= 16)
- break;
- }
- rw_wunlock(&pvh_global_lock);
- return (rv);
-}
-
-/*
- * pmap_page_wired_mappings:
- *
- * Return the number of managed mappings to the given physical page
- * that are wired.
- */
-int
-pmap_page_wired_mappings(vm_page_t m)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap, pmap;
- pv_entry_t pv;
- int count;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- count = 0;
- if ((m->oflags & VPO_UNMANAGED) != 0)
- return (count);
- rw_wlock(&pvh_global_lock);
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(pv->pv_va);
- KASSERT(pte != NULL, ("pte"));
- if (pmap_wired(pte))
- count++;
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- }
- rw_wunlock(&pvh_global_lock);
- return (count);
-}
-
-/*
- * Remove all pages from specified address space
- * this aids process exit speeds. Also, this code
- * is special cased for current process only, but
- * can have the more generic (and slightly slower)
- * mode enabled. This is much faster than pmap_remove
- * in the case of running down an entire address space.
- */
-void
-pmap_remove_pages(pmap_t pmap)
-{
- struct pv_chunk *pc, *npc;
- struct ia64_lpte *pte;
- pmap_t oldpmap;
- pv_entry_t pv;
- vm_offset_t va;
- vm_page_t m;
- u_long inuse, bitmask;
- int allfree, bit, field, idx;
-
- CTR2(KTR_PMAP, "%s(pm=%p)", __func__, pmap);
-
- rw_wlock(&pvh_global_lock);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- TAILQ_FOREACH_SAFE(pc, &pmap->pm_pvchunk, pc_list, npc) {
- allfree = 1;
- for (field = 0; field < _NPCM; field++) {
- inuse = ~pc->pc_map[field] & pc_freemask[field];
- while (inuse != 0) {
- bit = ffsl(inuse) - 1;
- bitmask = 1UL << bit;
- idx = field * sizeof(inuse) * NBBY + bit;
- pv = &pc->pc_pventry[idx];
- inuse &= ~bitmask;
- va = pv->pv_va;
- pte = pmap_find_vhpt(va);
- KASSERT(pte != NULL, ("pte"));
- if (pmap_wired(pte)) {
- allfree = 0;
- continue;
- }
- pmap_remove_vhpt(va);
- pmap_invalidate_page(va);
- m = PHYS_TO_VM_PAGE(pmap_ppn(pte));
- if (pmap_dirty(pte))
- vm_page_dirty(m);
- pmap_free_pte(pte, va);
- /* Mark free */
- PV_STAT(pv_entry_frees++);
- PV_STAT(pv_entry_spare++);
- pv_entry_count--;
- pc->pc_map[field] |= bitmask;
- pmap->pm_stats.resident_count--;
- TAILQ_REMOVE(&m->md.pv_list, pv, pv_list);
- if (TAILQ_EMPTY(&m->md.pv_list))
- vm_page_aflag_clear(m, PGA_WRITEABLE);
- }
- }
- if (allfree) {
- TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
- free_pv_chunk(pc);
- }
- }
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- rw_wunlock(&pvh_global_lock);
-}
-
-/*
- * pmap_ts_referenced:
- *
- * Return a count of reference bits for a page, clearing those bits.
- * It is not necessary for every reference bit to be cleared, but it
- * is necessary that 0 only be returned when there are truly no
- * reference bits set.
- *
- * XXX: The exact number of bits to check and clear is a matter that
- * should be tested and standardized at some point in the future for
- * optimal aging of shared pages.
- */
-int
-pmap_ts_referenced(vm_page_t m)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap, pmap;
- pv_entry_t pv;
- int count = 0;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_ts_referenced: page %p is not managed", m));
- rw_wlock(&pvh_global_lock);
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(pv->pv_va);
- KASSERT(pte != NULL, ("pte"));
- if (pmap_accessed(pte)) {
- count++;
- pmap_clear_accessed(pte);
- pmap_invalidate_page(pv->pv_va);
- }
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- }
- rw_wunlock(&pvh_global_lock);
- return (count);
-}
-
-/*
- * pmap_is_modified:
- *
- * Return whether or not the specified physical page was modified
- * in any physical maps.
- */
-boolean_t
-pmap_is_modified(vm_page_t m)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap, pmap;
- pv_entry_t pv;
- boolean_t rv;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_is_modified: page %p is not managed", m));
- rv = FALSE;
-
- /*
- * If the page is not exclusive busied, then PGA_WRITEABLE cannot be
- * concurrently set while the object is locked. Thus, if PGA_WRITEABLE
- * is clear, no PTEs can be dirty.
- */
- VM_OBJECT_ASSERT_WLOCKED(m->object);
- if (!vm_page_xbusied(m) && (m->aflags & PGA_WRITEABLE) == 0)
- return (rv);
- rw_wlock(&pvh_global_lock);
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(pv->pv_va);
- pmap_switch(oldpmap);
- KASSERT(pte != NULL, ("pte"));
- rv = pmap_dirty(pte) ? TRUE : FALSE;
- PMAP_UNLOCK(pmap);
- if (rv)
- break;
- }
- rw_wunlock(&pvh_global_lock);
- return (rv);
-}
-
-/*
- * pmap_is_prefaultable:
- *
- * Return whether or not the specified virtual address is elgible
- * for prefault.
- */
-boolean_t
-pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
-{
- struct ia64_lpte *pte;
-
- CTR3(KTR_PMAP, "%s(pm=%p, va=%#lx)", __func__, pmap, addr);
-
- pte = pmap_find_vhpt(addr);
- if (pte != NULL && pmap_present(pte))
- return (FALSE);
- return (TRUE);
-}
-
-/*
- * pmap_is_referenced:
- *
- * Return whether or not the specified physical page was referenced
- * in any physical maps.
- */
-boolean_t
-pmap_is_referenced(vm_page_t m)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap, pmap;
- pv_entry_t pv;
- boolean_t rv;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_is_referenced: page %p is not managed", m));
- rv = FALSE;
- rw_wlock(&pvh_global_lock);
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(pv->pv_va);
- pmap_switch(oldpmap);
- KASSERT(pte != NULL, ("pte"));
- rv = pmap_accessed(pte) ? TRUE : FALSE;
- PMAP_UNLOCK(pmap);
- if (rv)
- break;
- }
- rw_wunlock(&pvh_global_lock);
- return (rv);
-}
-
-/*
- * Apply the given advice to the specified range of addresses within the
- * given pmap. Depending on the advice, clear the referenced and/or
- * modified flags in each mapping and set the mapped page's dirty field.
- */
-void
-pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap;
- vm_page_t m;
-
- CTR5(KTR_PMAP, "%s(pm=%p, sva=%#lx, eva=%#lx, adv=%d)", __func__,
- pmap, sva, eva, advice);
-
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- for (; sva < eva; sva += PAGE_SIZE) {
- /* If page is invalid, skip this page. */
- pte = pmap_find_vhpt(sva);
- if (pte == NULL)
- continue;
-
- /* If it isn't managed, skip it too. */
- if (!pmap_managed(pte))
- continue;
-
- /* Clear its modified and referenced bits. */
- if (pmap_dirty(pte)) {
- if (advice == MADV_DONTNEED) {
- /*
- * Future calls to pmap_is_modified() can be
- * avoided by making the page dirty now.
- */
- m = PHYS_TO_VM_PAGE(pmap_ppn(pte));
- vm_page_dirty(m);
- }
- pmap_clear_dirty(pte);
- } else if (!pmap_accessed(pte))
- continue;
- pmap_clear_accessed(pte);
- pmap_invalidate_page(sva);
- }
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
-}
-
-/*
- * Clear the modify bits on the specified physical page.
- */
-void
-pmap_clear_modify(vm_page_t m)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap, pmap;
- pv_entry_t pv;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_clear_modify: page %p is not managed", m));
- VM_OBJECT_ASSERT_WLOCKED(m->object);
- KASSERT(!vm_page_xbusied(m),
- ("pmap_clear_modify: page %p is exclusive busied", m));
-
- /*
- * If the page is not PGA_WRITEABLE, then no PTEs can be modified.
- * If the object containing the page is locked and the page is not
- * exclusive busied, then PGA_WRITEABLE cannot be concurrently set.
- */
- if ((m->aflags & PGA_WRITEABLE) == 0)
- return;
- rw_wlock(&pvh_global_lock);
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(pv->pv_va);
- KASSERT(pte != NULL, ("pte"));
- if (pmap_dirty(pte)) {
- pmap_clear_dirty(pte);
- pmap_invalidate_page(pv->pv_va);
- }
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- }
- rw_wunlock(&pvh_global_lock);
-}
-
-/*
- * Clear the write and modified bits in each of the given page's mappings.
- */
-void
-pmap_remove_write(vm_page_t m)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap, pmap;
- pv_entry_t pv;
- vm_prot_t prot;
-
- CTR2(KTR_PMAP, "%s(m=%p)", __func__, m);
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_remove_write: page %p is not managed", m));
-
- /*
- * If the page is not exclusive busied, then PGA_WRITEABLE cannot be
- * set by another thread while the object is locked. Thus,
- * if PGA_WRITEABLE is clear, no page table entries need updating.
- */
- VM_OBJECT_ASSERT_WLOCKED(m->object);
- if (!vm_page_xbusied(m) && (m->aflags & PGA_WRITEABLE) == 0)
- return;
- rw_wlock(&pvh_global_lock);
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(pv->pv_va);
- KASSERT(pte != NULL, ("pte"));
- prot = pmap_prot(pte);
- if ((prot & VM_PROT_WRITE) != 0) {
- if (pmap_dirty(pte)) {
- vm_page_dirty(m);
- pmap_clear_dirty(pte);
- }
- prot &= ~VM_PROT_WRITE;
- pmap_pte_prot(pmap, pte, prot);
- pmap_pte_attr(pte, m->md.memattr);
- pmap_invalidate_page(pv->pv_va);
- }
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- }
- vm_page_aflag_clear(m, PGA_WRITEABLE);
- rw_wunlock(&pvh_global_lock);
-}
-
-vm_offset_t
-pmap_mapdev_priv(vm_paddr_t pa, vm_size_t sz, vm_memattr_t attr)
-{
- static vm_offset_t last_va = 0;
- static vm_paddr_t last_pa = ~0UL;
- static vm_size_t last_sz = 0;
- struct efi_md *md;
-
- if (pa == last_pa && sz == last_sz)
- return (last_va);
-
- md = efi_md_find(pa);
- if (md == NULL) {
- printf("%s: [%#lx..%#lx] not covered by memory descriptor\n",
- __func__, pa, pa + sz - 1);
- return (IA64_PHYS_TO_RR6(pa));
- }
-
- if (md->md_type == EFI_MD_TYPE_FREE) {
- printf("%s: [%#lx..%#lx] is in DRAM\n", __func__, pa,
- pa + sz - 1);
- return (0);
- }
-
- last_va = (md->md_attr & EFI_MD_ATTR_WB) ? IA64_PHYS_TO_RR7(pa) :
- IA64_PHYS_TO_RR6(pa);
- last_pa = pa;
- last_sz = sz;
- return (last_va);
-}
-
-/*
- * Map a set of physical memory pages into the kernel virtual
- * address space. Return a pointer to where it is mapped. This
- * routine is intended to be used for mapping device memory,
- * NOT real memory.
- */
-void *
-pmap_mapdev_attr(vm_paddr_t pa, vm_size_t sz, vm_memattr_t attr)
-{
- vm_offset_t va;
-
- CTR4(KTR_PMAP, "%s(pa=%#lx, sz=%#lx, attr=%#x)", __func__, pa, sz,
- attr);
-
- va = pmap_mapdev_priv(pa, sz, attr);
- return ((void *)(uintptr_t)va);
-}
-
-/*
- * 'Unmap' a range mapped by pmap_mapdev_attr().
- */
-void
-pmap_unmapdev(vm_offset_t va, vm_size_t size)
-{
-
- CTR3(KTR_PMAP, "%s(va=%#lx, sz=%#lx)", __func__, va, size);
-}
-
-/*
- * Sets the memory attribute for the specified page.
- */
-static void
-pmap_page_set_memattr_1(void *arg)
-{
- struct ia64_pal_result res;
- register_t is;
- uintptr_t pp = (uintptr_t)arg;
-
- is = intr_disable();
- res = ia64_call_pal_static(pp, 0, 0, 0);
- intr_restore(is);
-}
-
-void
-pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma)
-{
- struct ia64_lpte *pte;
- pmap_t oldpmap, pmap;
- pv_entry_t pv;
- void *va;
-
- CTR3(KTR_PMAP, "%s(m=%p, attr=%#x)", __func__, m, ma);
-
- rw_wlock(&pvh_global_lock);
- m->md.memattr = ma;
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(pv->pv_va);
- KASSERT(pte != NULL, ("pte"));
- pmap_pte_attr(pte, ma);
- pmap_invalidate_page(pv->pv_va);
- pmap_switch(oldpmap);
- PMAP_UNLOCK(pmap);
- }
- rw_wunlock(&pvh_global_lock);
-
- if (ma == VM_MEMATTR_UNCACHEABLE) {
-#ifdef SMP
- smp_rendezvous(NULL, pmap_page_set_memattr_1, NULL,
- (void *)PAL_PREFETCH_VISIBILITY);
-#else
- pmap_page_set_memattr_1((void *)PAL_PREFETCH_VISIBILITY);
-#endif
- va = (void *)pmap_page_to_va(m);
- critical_enter();
- cpu_flush_dcache(va, PAGE_SIZE);
- critical_exit();
-#ifdef SMP
- smp_rendezvous(NULL, pmap_page_set_memattr_1, NULL,
- (void *)PAL_MC_DRAIN);
-#else
- pmap_page_set_memattr_1((void *)PAL_MC_DRAIN);
-#endif
- }
-}
-
-/*
- * perform the pmap work for mincore
- */
-int
-pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa)
-{
- pmap_t oldpmap;
- struct ia64_lpte *pte, tpte;
- vm_paddr_t pa;
- int val;
-
- CTR4(KTR_PMAP, "%s(pm=%p, va=%#lx, pa_p=%p)", __func__, pmap, addr,
- locked_pa);
-
- PMAP_LOCK(pmap);
-retry:
- oldpmap = pmap_switch(pmap);
- pte = pmap_find_vhpt(addr);
- if (pte != NULL) {
- tpte = *pte;
- pte = &tpte;
- }
- pmap_switch(oldpmap);
- if (pte == NULL || !pmap_present(pte)) {
- val = 0;
- goto out;
- }
- val = MINCORE_INCORE;
- if (pmap_dirty(pte))
- val |= MINCORE_MODIFIED | MINCORE_MODIFIED_OTHER;
- if (pmap_accessed(pte))
- val |= MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER;
- if ((val & (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER)) !=
- (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER) &&
- pmap_managed(pte)) {
- pa = pmap_ppn(pte);
- /* Ensure that "PHYS_TO_VM_PAGE(pa)->object" doesn't change. */
- if (vm_page_pa_tryrelock(pmap, pa, locked_pa))
- goto retry;
- } else
-out:
- PA_UNLOCK_COND(*locked_pa);
- PMAP_UNLOCK(pmap);
- return (val);
-}
-
-/*
- *
- */
-void
-pmap_activate(struct thread *td)
-{
-
- CTR2(KTR_PMAP, "%s(td=%p)", __func__, td);
-
- pmap_switch(vmspace_pmap(td->td_proc->p_vmspace));
-}
-
-pmap_t
-pmap_switch(pmap_t pm)
-{
- pmap_t prevpm;
- int i;
-
- critical_enter();
- prevpm = PCPU_GET(md.current_pmap);
- if (prevpm == pm)
- goto out;
- if (pm == NULL) {
- for (i = 0; i < IA64_VM_MINKERN_REGION; i++) {
- ia64_set_rr(IA64_RR_BASE(i),
- (i << 8)|(PAGE_SHIFT << 2)|1);
- }
- } else {
- for (i = 0; i < IA64_VM_MINKERN_REGION; i++) {
- ia64_set_rr(IA64_RR_BASE(i),
- (pm->pm_rid[i] << 8)|(PAGE_SHIFT << 2)|1);
- }
- }
- PCPU_SET(md.current_pmap, pm);
- ia64_srlz_d();
-
-out:
- critical_exit();
- return (prevpm);
-}
-
-/*
- *
- */
-void
-pmap_sync_icache(pmap_t pm, vm_offset_t va, vm_size_t sz)
-{
- pmap_t oldpm;
- struct ia64_lpte *pte;
- vm_offset_t lim;
- vm_size_t len;
-
- CTR4(KTR_PMAP, "%s(pm=%p, va=%#lx, sz=%#lx)", __func__, pm, va, sz);
-
- sz += va & 31;
- va &= ~31;
- sz = (sz + 31) & ~31;
-
- PMAP_LOCK(pm);
- oldpm = pmap_switch(pm);
- while (sz > 0) {
- lim = round_page(va);
- len = MIN(lim - va, sz);
- pte = pmap_find_vhpt(va);
- if (pte != NULL && pmap_present(pte))
- ia64_sync_icache(va, len);
- va += len;
- sz -= len;
- }
- pmap_switch(oldpm);
- PMAP_UNLOCK(pm);
-}
-
-/*
- * Increase the starting virtual address of the given mapping if a
- * different alignment might result in more superpage mappings.
- */
-void
-pmap_align_superpage(vm_object_t object, vm_ooffset_t offset,
- vm_offset_t *addr, vm_size_t size)
-{
-
- CTR5(KTR_PMAP, "%s(obj=%p, ofs=%#lx, va_p=%p, sz=%#lx)", __func__,
- object, offset, addr, size);
-}
-
-#include "opt_ddb.h"
-
-#ifdef DDB
-
-#include <ddb/ddb.h>
-
-static const char* psnames[] = {
- "1B", "2B", "4B", "8B",
- "16B", "32B", "64B", "128B",
- "256B", "512B", "1K", "2K",
- "4K", "8K", "16K", "32K",
- "64K", "128K", "256K", "512K",
- "1M", "2M", "4M", "8M",
- "16M", "32M", "64M", "128M",
- "256M", "512M", "1G", "2G"
-};
-
-static void
-print_trs(int type)
-{
- struct ia64_pal_result res;
- int i, maxtr;
- struct {
- pt_entry_t pte;
- uint64_t itir;
- uint64_t ifa;
- struct ia64_rr rr;
- } buf;
- static const char *manames[] = {
- "WB", "bad", "bad", "bad",
- "UC", "UCE", "WC", "NaT",
- };
-
- res = ia64_call_pal_static(PAL_VM_SUMMARY, 0, 0, 0);
- if (res.pal_status != 0) {
- db_printf("Can't get VM summary\n");
- return;
- }
-
- if (type == 0)
- maxtr = (res.pal_result[0] >> 40) & 0xff;
- else
- maxtr = (res.pal_result[0] >> 32) & 0xff;
-
- db_printf("V RID Virtual Page Physical Page PgSz ED AR PL D A MA P KEY\n");
- for (i = 0; i <= maxtr; i++) {
- bzero(&buf, sizeof(buf));
- res = ia64_pal_physical(PAL_VM_TR_READ, i, type,
- ia64_tpa((uint64_t)&buf));
- if (!(res.pal_result[0] & 1))
- buf.pte &= ~PTE_AR_MASK;
- if (!(res.pal_result[0] & 2))
- buf.pte &= ~PTE_PL_MASK;
- if (!(res.pal_result[0] & 4))
- pmap_clear_dirty(&buf);
- if (!(res.pal_result[0] & 8))
- buf.pte &= ~PTE_MA_MASK;
- db_printf("%d %06x %013lx %013lx %4s %d %d %d %d %d %-3s "
- "%d %06x\n", (int)buf.ifa & 1, buf.rr.rr_rid,
- buf.ifa >> 12, (buf.pte & PTE_PPN_MASK) >> 12,
- psnames[(buf.itir & ITIR_PS_MASK) >> 2],
- (buf.pte & PTE_ED) ? 1 : 0,
- (int)(buf.pte & PTE_AR_MASK) >> 9,
- (int)(buf.pte & PTE_PL_MASK) >> 7,
- (pmap_dirty(&buf)) ? 1 : 0,
- (pmap_accessed(&buf)) ? 1 : 0,
- manames[(buf.pte & PTE_MA_MASK) >> 2],
- (pmap_present(&buf)) ? 1 : 0,
- (int)((buf.itir & ITIR_KEY_MASK) >> 8));
- }
-}
-
-DB_COMMAND(itr, db_itr)
-{
- print_trs(0);
-}
-
-DB_COMMAND(dtr, db_dtr)
-{
- print_trs(1);
-}
-
-DB_COMMAND(rr, db_rr)
-{
- int i;
- uint64_t t;
- struct ia64_rr rr;
-
- printf("RR RID PgSz VE\n");
- for (i = 0; i < 8; i++) {
- __asm __volatile ("mov %0=rr[%1]"
- : "=r"(t)
- : "r"(IA64_RR_BASE(i)));
- *(uint64_t *) &rr = t;
- printf("%d %06x %4s %d\n",
- i, rr.rr_rid, psnames[rr.rr_ps], rr.rr_ve);
- }
-}
-
-DB_COMMAND(thash, db_thash)
-{
- if (!have_addr)
- return;
-
- db_printf("%p\n", (void *) ia64_thash(addr));
-}
-
-DB_COMMAND(ttag, db_ttag)
-{
- if (!have_addr)
- return;
-
- db_printf("0x%lx\n", ia64_ttag(addr));
-}
-
-DB_COMMAND(kpte, db_kpte)
-{
- struct ia64_lpte *pte;
-
- if (!have_addr) {
- db_printf("usage: kpte <kva>\n");
- return;
- }
- if (addr < VM_INIT_KERNEL_ADDRESS) {
- db_printf("kpte: error: invalid <kva>\n");
- return;
- }
- pte = pmap_find_kpte(addr);
- db_printf("kpte at %p:\n", pte);
- db_printf(" pte =%016lx\n", pte->pte);
- db_printf(" itir =%016lx\n", pte->itir);
- db_printf(" tag =%016lx\n", pte->tag);
- db_printf(" chain=%016lx\n", pte->chain);
-}
-
-#endif
diff --git a/sys/ia64/ia64/ptrace_machdep.c b/sys/ia64/ia64/ptrace_machdep.c
deleted file mode 100644
index c7c5104..0000000
--- a/sys/ia64/ia64/ptrace_machdep.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/proc.h>
-#include <sys/ptrace.h>
-#include <machine/frame.h>
-
-int
-cpu_ptrace(struct thread *td, int req, void *addr, int data)
-{
- struct trapframe *tf;
- uint64_t *kstack;
- int error;
-
- error = EINVAL;
- tf = td->td_frame;
-
- switch (req) {
- case PT_GETKSTACK:
- if (data >= 0 && data < (tf->tf_special.ndirty >> 3)) {
- kstack = (uint64_t*)(td->td_kstack +
- (tf->tf_special.bspstore & 0x1ffUL));
- error = copyout(kstack + data, addr, 8);
- }
- break;
- case PT_SETKSTACK:
- if (data >= 0 && data < (tf->tf_special.ndirty >> 3)) {
- kstack = (uint64_t*)(td->td_kstack +
- (tf->tf_special.bspstore & 0x1ffUL));
- error = copyin(addr, kstack + data, 8);
- }
- break;
- }
-
- return (error);
-}
diff --git a/sys/ia64/ia64/sal.c b/sys/ia64/ia64/sal.c
deleted file mode 100644
index b0fe070..0000000
--- a/sys/ia64/ia64/sal.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/bus.h>
-#include <sys/efi.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <vm/vm.h>
-#include <vm/vm_kern.h>
-#include <machine/intr.h>
-#include <machine/md_var.h>
-#include <machine/sal.h>
-#include <machine/smp.h>
-
-int ia64_ipi_wakeup;
-
-static struct ia64_fdesc sal_fdesc;
-static sal_entry_t fake_sal;
-
-extern u_int64_t ia64_pal_entry;
-sal_entry_t *ia64_sal_entry = fake_sal;
-
-static struct uuid sal_table = EFI_TABLE_SAL;
-static struct sal_system_table *sal_systbl;
-
-static struct ia64_sal_result
-fake_sal(u_int64_t a1, u_int64_t a2, u_int64_t a3, u_int64_t a4,
- u_int64_t a5, u_int64_t a6, u_int64_t a7, u_int64_t a8)
-{
- struct ia64_sal_result res;
- res.sal_status = -3;
- res.sal_result[0] = 0;
- res.sal_result[1] = 0;
- res.sal_result[2] = 0;
- return res;
-}
-
-void
-ia64_sal_init(void)
-{
- static int sizes[6] = {
- 48, 32, 16, 32, 16, 16
- };
- u_int8_t *p;
- int error, i;
-
- sal_systbl = efi_get_table(&sal_table);
- if (sal_systbl == NULL)
- return;
-
- if (bcmp(sal_systbl->sal_signature, SAL_SIGNATURE, 4)) {
- printf("Bad signature for SAL System Table\n");
- return;
- }
-
- p = (u_int8_t *) (sal_systbl + 1);
- for (i = 0; i < sal_systbl->sal_entry_count; i++) {
- switch (*p) {
- case 0: {
- struct sal_entrypoint_descriptor *dp;
-
- dp = (struct sal_entrypoint_descriptor*)p;
- ia64_pal_entry = IA64_PHYS_TO_RR7(dp->sale_pal_proc);
- if (bootverbose)
- printf("PAL Proc at 0x%lx\n", ia64_pal_entry);
- sal_fdesc.func = IA64_PHYS_TO_RR7(dp->sale_sal_proc);
- sal_fdesc.gp = IA64_PHYS_TO_RR7(dp->sale_sal_gp);
- if (bootverbose)
- printf("SAL Proc at 0x%lx, GP at 0x%lx\n",
- sal_fdesc.func, sal_fdesc.gp);
- ia64_sal_entry = (sal_entry_t *) &sal_fdesc;
- break;
- }
- case 5: {
- struct sal_ap_wakeup_descriptor *dp;
-
- dp = (struct sal_ap_wakeup_descriptor*)p;
- if (dp->sale_mechanism != 0) {
- printf("SAL: unsupported AP wake-up mechanism "
- "(%d)\n", dp->sale_mechanism);
- break;
- }
-
- /* Reserve the XIV so that we won't use it. */
- error = ia64_xiv_reserve(dp->sale_vector,
- IA64_XIV_PLAT, NULL);
- if (error) {
- printf("SAL: invalid AP wake-up XIV (%#lx)\n",
- dp->sale_vector);
- break;
- }
-
- ia64_ipi_wakeup = dp->sale_vector;
- if (bootverbose)
- printf("SAL: AP wake-up XIV: %#x\n",
- ia64_ipi_wakeup);
- break;
- }
- }
- p += sizes[*p];
- }
-}
diff --git a/sys/ia64/ia64/sapic.c b/sys/ia64/ia64/sapic.c
deleted file mode 100644
index 58c3426..0000000
--- a/sys/ia64/ia64/sapic.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include "opt_ddb.h"
-
-#include <sys/param.h>
-#include <sys/malloc.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/bus.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/pcpu.h>
-#include <sys/sysctl.h>
-
-#include <machine/intr.h>
-#include <machine/pal.h>
-
-#include <vm/vm.h>
-#include <vm/pmap.h>
-
-/*
- * Offsets from the SAPIC base in memory. Most registers are accessed
- * by indexing using the SAPIC_IO_SELECT register.
- */
-#define SAPIC_IO_SELECT 0x00
-#define SAPIC_IO_WINDOW 0x10
-#define SAPIC_APIC_EOI 0x40
-
-/*
- * Indexed registers.
- */
-#define SAPIC_ID 0x00
-#define SAPIC_VERSION 0x01
-#define SAPIC_ARBITRATION_ID 0x02
-#define SAPIC_RTE_BASE 0x10
-
-/* Interrupt polarity. */
-#define SAPIC_POLARITY_HIGH 0
-#define SAPIC_POLARITY_LOW 1
-
-/* Interrupt trigger. */
-#define SAPIC_TRIGGER_EDGE 0
-#define SAPIC_TRIGGER_LEVEL 1
-
-/* Interrupt delivery mode. */
-#define SAPIC_DELMODE_FIXED 0
-#define SAPIC_DELMODE_LOWPRI 1
-#define SAPIC_DELMODE_PMI 2
-#define SAPIC_DELMODE_NMI 4
-#define SAPIC_DELMODE_INIT 5
-#define SAPIC_DELMODE_EXTINT 7
-
-struct sapic {
- struct mtx sa_mtx;
- uint64_t sa_registers; /* virtual address of sapic */
- u_int sa_id; /* I/O SAPIC Id */
- u_int sa_base; /* ACPI vector base */
- u_int sa_limit; /* last ACPI vector handled here */
-};
-
-struct sapic_rte {
- uint64_t rte_vector :8;
- uint64_t rte_delivery_mode :3;
- uint64_t rte_destination_mode :1;
- uint64_t rte_delivery_status :1;
- uint64_t rte_polarity :1;
- uint64_t rte_rirr :1;
- uint64_t rte_trigger_mode :1;
- uint64_t rte_mask :1;
- uint64_t rte_flushen :1;
- uint64_t rte_reserved :30;
- uint64_t rte_destination_eid :8;
- uint64_t rte_destination_id :8;
-};
-
-static MALLOC_DEFINE(M_SAPIC, "sapic", "I/O SAPIC devices");
-
-struct sapic *ia64_sapics[16]; /* XXX make this resizable */
-int ia64_sapic_count;
-
-static int sysctl_machdep_apic(SYSCTL_HANDLER_ARGS);
-
-SYSCTL_OID(_machdep, OID_AUTO, apic, CTLTYPE_STRING|CTLFLAG_RD,
- NULL, 0, sysctl_machdep_apic, "A", "(x)APIC redirection table entries");
-
-static __inline uint32_t
-sapic_read(struct sapic *sa, int which)
-{
- uint32_t value;
-
- ia64_st4((void *)(sa->sa_registers + SAPIC_IO_SELECT), which);
- ia64_mf_a();
- value = ia64_ld4((void *)(sa->sa_registers + SAPIC_IO_WINDOW));
- return (value);
-}
-
-static __inline void
-sapic_write(struct sapic *sa, int which, uint32_t value)
-{
-
- ia64_st4((void *)(sa->sa_registers + SAPIC_IO_SELECT), which);
- ia64_mf_a();
- ia64_st4((void *)(sa->sa_registers + SAPIC_IO_WINDOW), value);
- ia64_mf_a();
-}
-
-static __inline void
-sapic_read_rte(struct sapic *sa, int which, struct sapic_rte *rte)
-{
- uint32_t *p = (uint32_t *) rte;
-
- p[0] = sapic_read(sa, SAPIC_RTE_BASE + 2 * which);
- p[1] = sapic_read(sa, SAPIC_RTE_BASE + 2 * which + 1);
-}
-
-static __inline void
-sapic_write_rte(struct sapic *sa, int which, struct sapic_rte *rte)
-{
- uint32_t *p = (uint32_t *) rte;
-
- sapic_write(sa, SAPIC_RTE_BASE + 2 * which, p[0]);
- sapic_write(sa, SAPIC_RTE_BASE + 2 * which + 1, p[1]);
-}
-
-struct sapic *
-sapic_lookup(u_int irq, u_int *vecp)
-{
- struct sapic_rte rte;
- struct sapic *sa;
- int i;
-
- for (i = 0; i < ia64_sapic_count; i++) {
- sa = ia64_sapics[i];
- if (irq >= sa->sa_base && irq <= sa->sa_limit) {
- if (vecp != NULL) {
- mtx_lock_spin(&sa->sa_mtx);
- sapic_read_rte(sa, irq - sa->sa_base, &rte);
- mtx_unlock_spin(&sa->sa_mtx);
- *vecp = rte.rte_vector;
- }
- return (sa);
- }
- }
-
- return (NULL);
-}
-
-
-int
-sapic_bind_intr(u_int irq, struct pcpu *pc)
-{
- struct sapic_rte rte;
- struct sapic *sa;
-
- sa = sapic_lookup(irq, NULL);
- if (sa == NULL)
- return (EINVAL);
-
- mtx_lock_spin(&sa->sa_mtx);
- sapic_read_rte(sa, irq - sa->sa_base, &rte);
- rte.rte_destination_id = (pc->pc_md.lid >> 24) & 255;
- rte.rte_destination_eid = (pc->pc_md.lid >> 16) & 255;
- rte.rte_delivery_mode = SAPIC_DELMODE_FIXED;
- sapic_write_rte(sa, irq - sa->sa_base, &rte);
- mtx_unlock_spin(&sa->sa_mtx);
- return (0);
-}
-
-int
-sapic_config_intr(u_int irq, enum intr_trigger trig, enum intr_polarity pol)
-{
- struct sapic_rte rte;
- struct sapic *sa;
-
- sa = sapic_lookup(irq, NULL);
- if (sa == NULL)
- return (EINVAL);
-
- mtx_lock_spin(&sa->sa_mtx);
- sapic_read_rte(sa, irq - sa->sa_base, &rte);
- if (trig != INTR_TRIGGER_CONFORM)
- rte.rte_trigger_mode = (trig == INTR_TRIGGER_EDGE) ?
- SAPIC_TRIGGER_EDGE : SAPIC_TRIGGER_LEVEL;
- else
- rte.rte_trigger_mode = (irq < 16) ? SAPIC_TRIGGER_EDGE :
- SAPIC_TRIGGER_LEVEL;
- if (pol != INTR_POLARITY_CONFORM)
- rte.rte_polarity = (pol == INTR_POLARITY_HIGH) ?
- SAPIC_POLARITY_HIGH : SAPIC_POLARITY_LOW;
- else
- rte.rte_polarity = (irq < 16) ? SAPIC_POLARITY_HIGH :
- SAPIC_POLARITY_LOW;
- sapic_write_rte(sa, irq - sa->sa_base, &rte);
- mtx_unlock_spin(&sa->sa_mtx);
- return (0);
-}
-
-struct sapic *
-sapic_create(u_int id, u_int base, uint64_t address)
-{
- struct sapic_rte rte;
- struct sapic *sa;
- u_int i, max;
-
- sa = malloc(sizeof(struct sapic), M_SAPIC, M_ZERO | M_NOWAIT);
- if (sa == NULL)
- return (NULL);
-
- sa->sa_id = id;
- sa->sa_base = base;
- sa->sa_registers = (uintptr_t)pmap_mapdev(address, 1048576);
-
- mtx_init(&sa->sa_mtx, "I/O SAPIC lock", NULL, MTX_SPIN);
-
- max = (sapic_read(sa, SAPIC_VERSION) >> 16) & 0xff;
- sa->sa_limit = base + max;
-
- ia64_sapics[ia64_sapic_count++] = sa;
-
- /*
- * Initialize all RTEs with a default trigger mode and polarity.
- * This may be changed later by calling sapic_config_intr(). We
- * mask all interrupts by default.
- */
- bzero(&rte, sizeof(rte));
- rte.rte_mask = 1;
- for (i = base; i <= sa->sa_limit; i++) {
- rte.rte_trigger_mode = (i < 16) ? SAPIC_TRIGGER_EDGE :
- SAPIC_TRIGGER_LEVEL;
- rte.rte_polarity = (i < 16) ? SAPIC_POLARITY_HIGH :
- SAPIC_POLARITY_LOW;
- sapic_write_rte(sa, i - base, &rte);
- }
-
- return (sa);
-}
-
-int
-sapic_enable(struct sapic *sa, u_int irq, u_int vector)
-{
- struct sapic_rte rte;
- uint64_t lid = ia64_get_lid();
-
- mtx_lock_spin(&sa->sa_mtx);
- sapic_read_rte(sa, irq - sa->sa_base, &rte);
- rte.rte_destination_id = (lid >> 24) & 255;
- rte.rte_destination_eid = (lid >> 16) & 255;
- rte.rte_delivery_mode = SAPIC_DELMODE_FIXED;
- rte.rte_vector = vector;
- rte.rte_mask = 0;
- sapic_write_rte(sa, irq - sa->sa_base, &rte);
- mtx_unlock_spin(&sa->sa_mtx);
- return (0);
-}
-
-void
-sapic_eoi(struct sapic *sa, u_int vector)
-{
-
- ia64_st4((void *)(sa->sa_registers + SAPIC_APIC_EOI), vector);
- ia64_mf_a();
-}
-
-/* Expected to be called with interrupts disabled. */
-void
-sapic_mask(struct sapic *sa, u_int irq)
-{
- struct sapic_rte rte;
-
- mtx_lock_spin(&sa->sa_mtx);
- sapic_read_rte(sa, irq - sa->sa_base, &rte);
- rte.rte_mask = 1;
- sapic_write_rte(sa, irq - sa->sa_base, &rte);
- mtx_unlock_spin(&sa->sa_mtx);
-}
-
-/* Expected to be called with interrupts disabled. */
-void
-sapic_unmask(struct sapic *sa, u_int irq)
-{
- struct sapic_rte rte;
-
- mtx_lock_spin(&sa->sa_mtx);
- sapic_read_rte(sa, irq - sa->sa_base, &rte);
- rte.rte_mask = 0;
- sapic_write_rte(sa, irq - sa->sa_base, &rte);
- mtx_unlock_spin(&sa->sa_mtx);
-}
-
-static int
-sysctl_machdep_apic(SYSCTL_HANDLER_ARGS)
-{
- char buf[80];
- struct sapic_rte rte;
- struct sapic *sa;
- int apic, count, error, index, len;
-
- len = sprintf(buf, "\n APIC Idx: Id,EId : RTE\n");
- error = SYSCTL_OUT(req, buf, len);
- if (error)
- return (error);
-
- for (apic = 0; apic < ia64_sapic_count; apic++) {
- sa = ia64_sapics[apic];
- count = sa->sa_limit - sa->sa_base + 1;
- for (index = 0; index < count; index++) {
- mtx_lock_spin(&sa->sa_mtx);
- sapic_read_rte(sa, index, &rte);
- mtx_unlock_spin(&sa->sa_mtx);
- if (rte.rte_vector == 0)
- continue;
- len = sprintf(buf,
- " 0x%02x %3d: (%02x,%02x): %3d %d %d %s %s %s %s %s\n",
- sa->sa_id, index,
- rte.rte_destination_id, rte.rte_destination_eid,
- rte.rte_vector, rte.rte_delivery_mode,
- rte.rte_destination_mode,
- rte.rte_delivery_status ? "DS" : " ",
- rte.rte_polarity ? "low-active " : "high-active",
- rte.rte_rirr ? "RIRR" : " ",
- rte.rte_trigger_mode ? "level" : "edge ",
- rte.rte_flushen ? "F" : " ");
- error = SYSCTL_OUT(req, buf, len);
- if (error)
- return (error);
- }
- }
-
- return (0);
-}
-
-#ifdef DDB
-
-#include <ddb/ddb.h>
-
-void
-sapic_print(struct sapic *sa, u_int irq)
-{
- struct sapic_rte rte;
-
- db_printf("sapic=%u, irq=%u: ", sa->sa_id, irq);
- sapic_read_rte(sa, irq - sa->sa_base, &rte);
- db_printf("%3d %x->%x:%x %d %s %s %s %s %s %s\n", rte.rte_vector,
- rte.rte_delivery_mode,
- rte.rte_destination_id, rte.rte_destination_eid,
- rte.rte_destination_mode,
- rte.rte_delivery_status ? "DS" : " ",
- rte.rte_polarity ? "low-active " : "high-active",
- rte.rte_rirr ? "RIRR" : " ",
- rte.rte_trigger_mode ? "level" : "edge ",
- rte.rte_flushen ? "F" : " ",
- rte.rte_mask ? "(masked)" : "");
-}
-
-#endif
diff --git a/sys/ia64/ia64/setjmp.S b/sys/ia64/ia64/setjmp.S
deleted file mode 100644
index 82d0219..0000000
--- a/sys/ia64/ia64/setjmp.S
+++ /dev/null
@@ -1,349 +0,0 @@
-// $FreeBSD$
-
-//-
-// Copyright (c) 1999, 2000
-// Intel Corporation.
-// All rights reserved.
-//
-// 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 Intel Corporation and
-// its contributors.
-//
-// 4. Neither the name of Intel Corporation or its contributors may be
-// used to endorse or promote products derived from this software
-// without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION 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 INTEL CORPORATION 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.
-//
-//
-
-//
-// Module Name:
-//
-// setjmp.s
-//
-// Abstract:
-//
-// Contains an implementation of setjmp and longjmp for the
-// IA-64 architecture.
-
- .file "setjmp.s"
-
-#include <machine/asm.h>
-#include <machine/setjmp.h>
-
-// int setjmp(struct jmp_buffer *)
-//
-// Setup a non-local goto.
-//
-// Description:
-//
-// SetJump stores the current register set in the area pointed to
-// by "save". It returns zero. Subsequent calls to "LongJump" will
-// restore the registers and return non-zero to the same location.
-//
-// On entry, r32 contains the pointer to the jmp_buffer
-//
-
-ENTRY(setjmp, 1)
- //
- // Make sure buffer is aligned at 16byte boundary
- //
- add r10 = -0x10,r0 ;; // mask the lower 4 bits
- and r32 = r32, r10;;
- add r32 = 0x10, r32;; // move to next 16 byte boundary
-
- add r10 = J_PREDS, r32 // skip Unats & pfs save area
- add r11 = J_BSP, r32
- //
- // save immediate context
- //
- mov r2 = ar.bsp // save backing store pointer
- mov r3 = pr // save predicates
- flushrs
- ;;
- //
- // save user Unat register
- //
- mov r16 = ar.lc // save loop count register
- mov r14 = ar.unat // save user Unat register
-
- st8 [r10] = r3, J_LC-J_PREDS
- st8 [r11] = r2, J_R4-J_BSP
- ;;
- st8 [r10] = r16, J_R5-J_LC
- st8 [r32] = r14, J_NATS // Note: Unat at the
- // beginning of the save area
- mov r15 = ar.pfs
- ;;
- //
- // save preserved general registers & NaT's
- //
- st8.spill [r11] = r4, J_R6-J_R4
- ;;
- st8.spill [r10] = r5, J_R7-J_R5
- ;;
- st8.spill [r11] = r6, J_SP-J_R6
- ;;
- st8.spill [r10] = r7, J_F3-J_R7
- ;;
- st8.spill [r11] = sp, J_F2-J_SP
- ;;
- //
- // save spilled Unat and pfs registers
- //
- mov r2 = ar.unat // save Unat register after spill
- ;;
- st8 [r32] = r2, J_PFS-J_NATS // save unat for spilled regs
- ;;
- st8 [r32] = r15 // save pfs
- //
- // save floating registers
- //
- stf.spill [r11] = f2, J_F4-J_F2
- stf.spill [r10] = f3, J_F5-J_F3
- ;;
- stf.spill [r11] = f4, J_F16-J_F4
- stf.spill [r10] = f5, J_F17-J_F5
- ;;
- stf.spill [r11] = f16, J_F18-J_F16
- stf.spill [r10] = f17, J_F19-J_F17
- ;;
- stf.spill [r11] = f18, J_F20-J_F18
- stf.spill [r10] = f19, J_F21-J_F19
- ;;
- stf.spill [r11] = f20, J_F22-J_F20
- stf.spill [r10] = f21, J_F23-J_F21
- ;;
- stf.spill [r11] = f22, J_F24-J_F22
- stf.spill [r10] = f23, J_F25-J_F23
- ;;
- stf.spill [r11] = f24, J_F26-J_F24
- stf.spill [r10] = f25, J_F27-J_F25
- ;;
- stf.spill [r11] = f26, J_F28-J_F26
- stf.spill [r10] = f27, J_F29-J_F27
- ;;
- stf.spill [r11] = f28, J_F30-J_F28
- stf.spill [r10] = f29, J_F31-J_F29
- ;;
- stf.spill [r11] = f30, J_FPSR-J_F30
- stf.spill [r10] = f31, J_B0-J_F31 // size of f31 + fpsr
- //
- // save FPSR register & branch registers
- //
- mov r2 = ar.fpsr // save fpsr register
- mov r3 = b0
- ;;
- st8 [r11] = r2, J_B1-J_FPSR
- st8 [r10] = r3, J_B2-J_B0
- mov r2 = b1
- mov r3 = b2
- ;;
- st8 [r11] = r2, J_B3-J_B1
- st8 [r10] = r3, J_B4-J_B2
- mov r2 = b3
- mov r3 = b4
- ;;
- st8 [r11] = r2, J_B5-J_B3
- st8 [r10] = r3
- mov r2 = b5
- ;;
- st8 [r11] = r2
- ;;
- //
- // return
- //
- mov r8 = r0 // return 0 from setjmp
- mov ar.unat = r14 // restore unat
- br.ret.sptk b0
-
-END(setjmp)
-
-
-//
-// void longjmp(struct jmp_buffer *, int val)
-//
-// Perform a non-local goto.
-//
-// Description:
-//
-// LongJump initializes the register set to the values saved by a
-// previous 'SetJump' and jumps to the return location saved by that
-// 'SetJump'. This has the effect of unwinding the stack and returning
-// for a second time to the 'SetJump'.
-//
-
-ENTRY(longjmp, 2)
- //
- // Make sure buffer is aligned at 16byte boundary
- //
- add r10 = -0x10,r0 ;; // mask the lower 4 bits
- and r32 = r32, r10;;
- add r32 = 0x10, r32;; // move to next 16 byte boundary
-
- //
- // caching the return value as we do invala in the end
- //
- mov r8 = r33 // return value
-
- //
- // get immediate context
- //
- mov r14 = ar.rsc // get user RSC conf
- add r10 = J_PFS, r32 // get address of pfs
- add r11 = J_NATS, r32
- ;;
- ld8 r15 = [r10], J_BSP-J_PFS // get pfs
- ld8 r2 = [r11], J_LC-J_NATS // get unat for spilled regs
- ;;
- mov ar.unat = r2
- ;;
- ld8 r16 = [r10], J_PREDS-J_BSP // get backing store pointer
- mov ar.rsc = r0 // put RSE in enforced lazy
- mov ar.pfs = r15
- ;;
-
- //
- // while returning from longjmp the BSPSTORE and BSP needs to be
- // same and discard all the registers allocated after we did
- // setjmp. Also, we need to generate the RNAT register since we
- // did not flushed the RSE on setjmp.
- //
- mov r17 = ar.bspstore // get current BSPSTORE
- ;;
- cmp.ltu p6,p7 = r17, r16 // is it less than BSP of
-(p6) br.spnt.few .flush_rse
- mov r19 = ar.rnat // get current RNAT
- ;;
- loadrs // invalidate dirty regs
- br.sptk.many .restore_rnat // restore RNAT
-
-.flush_rse:
- flushrs
- ;;
- mov r19 = ar.rnat // get current RNAT
- mov r17 = r16 // current BSPSTORE
- ;;
-.restore_rnat:
- //
- // check if RNAT is saved between saved BSP and curr BSPSTORE
- //
- mov r18 = 0x3f
- ;;
- dep r18 = r18,r16,3,6 // get RNAT address
- ;;
- cmp.ltu p8,p9 = r18, r17 // RNAT saved on RSE
- ;;
-(p8) ld8 r19 = [r18] // get RNAT from RSE
- ;;
- mov ar.bspstore = r16 // set new BSPSTORE
- ;;
- mov ar.rnat = r19 // restore RNAT
- mov ar.rsc = r14 // restore RSC conf
-
-
- ld8 r3 = [r11], J_R4-J_LC // get lc register
- ld8 r2 = [r10], J_R5-J_PREDS // get predicates
- ;;
- mov pr = r2, -1
- mov ar.lc = r3
- //
- // restore preserved general registers & NaT's
- //
- ld8.fill r4 = [r11], J_R6-J_R4
- ;;
- ld8.fill r5 = [r10], J_R7-J_R5
- ld8.fill r6 = [r11], J_SP-J_R6
- ;;
- ld8.fill r7 = [r10], J_F2-J_R7
- ld8.fill sp = [r11], J_F3-J_SP
- ;;
- //
- // restore floating registers
- //
- ldf.fill f2 = [r10], J_F4-J_F2
- ldf.fill f3 = [r11], J_F5-J_F3
- ;;
- ldf.fill f4 = [r10], J_F16-J_F4
- ldf.fill f5 = [r11], J_F17-J_F5
- ;;
- ldf.fill f16 = [r10], J_F18-J_F16
- ldf.fill f17 = [r11], J_F19-J_F17
- ;;
- ldf.fill f18 = [r10], J_F20-J_F18
- ldf.fill f19 = [r11], J_F21-J_F19
- ;;
- ldf.fill f20 = [r10], J_F22-J_F20
- ldf.fill f21 = [r11], J_F23-J_F21
- ;;
- ldf.fill f22 = [r10], J_F24-J_F22
- ldf.fill f23 = [r11], J_F25-J_F23
- ;;
- ldf.fill f24 = [r10], J_F26-J_F24
- ldf.fill f25 = [r11], J_F27-J_F25
- ;;
- ldf.fill f26 = [r10], J_F28-J_F26
- ldf.fill f27 = [r11], J_F29-J_F27
- ;;
- ldf.fill f28 = [r10], J_F30-J_F28
- ldf.fill f29 = [r11], J_F31-J_F29
- ;;
- ldf.fill f30 = [r10], J_FPSR-J_F30
- ldf.fill f31 = [r11], J_B0-J_F31 ;;
-
- //
- // restore branch registers and fpsr
- //
- ld8 r16 = [r10], J_B1-J_FPSR // get fpsr
- ld8 r17 = [r11], J_B2-J_B0 // get return pointer
- ;;
- mov ar.fpsr = r16
- mov b0 = r17
- ld8 r2 = [r10], J_B3-J_B1
- ld8 r3 = [r11], J_B4-J_B2
- ;;
- mov b1 = r2
- mov b2 = r3
- ld8 r2 = [r10], J_B5-J_B3
- ld8 r3 = [r11]
- ;;
- mov b3 = r2
- mov b4 = r3
- ld8 r2 = [r10]
- ld8 r21 = [r32] // get user unat
- ;;
- mov b5 = r2
- mov ar.unat = r21
-
- //
- // invalidate ALAT
- //
- invala ;;
-
- br.ret.sptk b0
-
-END(longjmp)
diff --git a/sys/ia64/ia64/stack_machdep.c b/sys/ia64/ia64/stack_machdep.c
deleted file mode 100644
index 5e513ea..0000000
--- a/sys/ia64/ia64/stack_machdep.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * Copyright (c) 2005 Antoine Brodin
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/proc.h>
-#include <sys/stack.h>
-
-void
-stack_save_td(struct stack *st, struct thread *td)
-{
-
- if (TD_IS_SWAPPED(td))
- panic("stack_save_td: swapped");
- if (TD_IS_RUNNING(td))
- panic("stack_save_td: running");
-
- stack_zero(st);
-}
-
-void
-stack_save(struct stack *st)
-{
-
- stack_zero(st);
- /*
- * Nothing for now.
- * Is libuwx reentrant?
- * Can unw_create* sleep?
- */
-}
diff --git a/sys/ia64/ia64/support.S b/sys/ia64/ia64/support.S
deleted file mode 100644
index 46e5972..0000000
--- a/sys/ia64/ia64/support.S
+++ /dev/null
@@ -1,843 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-/*-
- * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-#include <machine/ia64_cpu.h>
-#include <assym.s>
-
- .text
-
-ENTRY(fusufault, 0)
-{ .mib
- st8.rel [r15]=r0 // Clear onfault.
- add ret0=-1,r0
- br.ret.sptk rp
- ;;
-}
-END(fusufault)
-
-/*
- * casuword(u_long *p, u_long old, u_long new)
- * Perform a compare-exchange in user space.
- */
-ENTRY(casuword, 3)
-{ .mlx
- ld8.acq r15=[r13] // r15 = curthread
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- add r15=TD_PCB,r15
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- ld8 r15=[r15] // r15 = PCB
- movl r14=fusufault
- ;;
-}
-{ .mmi
- mov ar.ccv=in1
- add r15=PCB_ONFAULT,r15
- nop 0
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- cmpxchg8.rel ret0=[in0],in2,ar.ccv
- nop 0
- ;;
-}
-{ .mib
- st8.rel [r15]=r0 // Clear onfault
- nop 0
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(casuword)
-
-/*
- * casuword32(uint32_t *p, uint32_t old, uint32_t new)
- * Perform a 32-bit compare-exchange in user space.
- */
-ENTRY(casuword32, 3)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- mov ar.ccv=in1
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- cmpxchg4.rel ret0=[in0],in2,ar.ccv
- nop 0
- ;;
-}
-{ .mib
- st8.rel [r15]=r0 // Clear onfault
- nop 0
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(casuword32)
-
-/*
- * subyte(void *addr, int byte)
- * suword16(void *addr, int word)
- * suword32(void *addr, int word)
- * suword64|suword(void *addr, long word)
- * Store in user space
- */
-
-ENTRY(subyte, 2)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- nop 0
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- st1.rel [in0]=in1
- nop 0
- ;;
-}
-{ .mib
- st8.rel [r15]=r0 // Clear onfault
- mov ret0=r0
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(subyte)
-
-ENTRY(suword16, 2)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- nop 0
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- st2.rel [in0]=in1
- nop 0
- ;;
-}
-{ .mib
- st8.rel [r15]=r0 // Clear onfault
- mov ret0=r0
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(suword16)
-
-ENTRY(suword32, 2)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- nop 0
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- st4.rel [in0]=in1
- nop 0
- ;;
-}
-{ .mib
- st8.rel [r15]=r0 // Clear onfault
- mov ret0=r0
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(suword32)
-
-ENTRY(suword64, 2)
-XENTRY(suword)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- nop 0
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- st8.rel [in0]=in1
- nop 0
- ;;
-}
-{ .mib
- st8.rel [r15]=r0 // Clear onfault
- mov ret0=r0
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(suword64)
-
-/*
- * fubyte(void *addr, int byte)
- * fuword16(void *addr, int word)
- * fuword32(void *addr, int word)
- * fuword64|fuword(void *addr, long word)
- * Fetch from user space
- */
-
-ENTRY(fubyte, 1)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- nop 0
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- mf
- nop 0
- ;;
-}
-{ .mmb
- ld1 ret0=[in0]
- st8.rel [r15]=r0 // Clear onfault
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(fubyte)
-
-ENTRY(fuword16, 2)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- nop 0
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- mf
- nop 0
- ;;
-}
-{ .mmb
- ld2 ret0=[in0]
- st8.rel [r15]=r0 // Clear onfault
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(fuword16)
-
-ENTRY(fuword32, 2)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- nop 0
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- mf
- nop 0
- ;;
-}
-{ .mmb
- ld4 ret0=[in0]
- st8.rel [r15]=r0 // Clear onfault
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(fuword32)
-
-ENTRY(fuword64, 2)
-XENTRY(fuword)
-{ .mlx
- movl r14=VM_MAXUSER_ADDRESS
- ;;
-}
-{ .mib
- ld8.acq r15=[r13] // r15 = curthread
- cmp.geu p6,p0=in0,r14
-(p6) br.dpnt.few 1f
- ;;
-}
-{ .mlx
- add r15=TD_PCB,r15
- movl r14=fusufault
- ;;
-}
-{ .mmi
- ld8 r15=[r15] // r15 = PCB
- ;;
- nop 0
- add r15=PCB_ONFAULT,r15
- ;;
-}
-{ .mmi
- st8 [r15]=r14 // Set onfault
- ;;
- mf
- nop 0
- ;;
-}
-{ .mmb
- ld8 ret0=[in0]
- st8.rel [r15]=r0 // Clear onfault
- br.ret.sptk rp
- ;;
-}
-1:
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(fuword64)
-
-/*
- * fuswintr(void *addr)
- * suswintr(void *addr)
- */
-
-ENTRY(fuswintr, 1)
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(fuswintr)
-
-ENTRY(suswintr, 0)
-{ .mib
- add ret0=-1,r0
- nop 0
- br.ret.sptk rp
- ;;
-}
-END(suswintr)
-
-/**************************************************************************/
-
-/*
- * Copy a null-terminated string within the kernel's address space.
- * If lenp is not NULL, store the number of chars copied in *lenp
- *
- * int copystr(char *from, char *to, size_t len, size_t *lenp);
- */
-ENTRY(copystr, 4)
- mov r14=in2 // r14 = i = len
- cmp.eq p6,p0=r0,in2
-(p6) br.cond.spnt.few 2f // if (len == 0), bail out
-
-1: ld1 r15=[in0],1 // read one byte
- ;;
- st1 [in1]=r15,1 // write that byte
- add in2=-1,in2 // len--
- ;;
- cmp.eq p6,p0=r0,r15
- cmp.ne p7,p0=r0,in2
- ;;
-(p6) br.cond.spnt.few 2f // if (*from == 0), bail out
-(p7) br.cond.sptk.few 1b // if (len != 0) copy more
-
-2: cmp.eq p6,p0=r0,in3
-(p6) br.cond.dpnt.few 3f // if (lenp != NULL)
- sub r14=r14,in2 // *lenp = (i - len)
- ;;
- st8 [in3]=r14
-
-3: cmp.eq p6,p0=r0,r15
-(p6) br.cond.spnt.few 4f // *from == '\0'; leave quietly
-
- mov ret0=ENAMETOOLONG // *from != '\0'; error.
- br.ret.sptk.few rp
-
-4: mov ret0=0 // return 0.
- br.ret.sptk.few rp
-END(copystr)
-
-ENTRY(copyinstr, 4)
- .prologue
- .regstk 4, 3, 4, 0
- .save ar.pfs,loc0
- alloc loc0=ar.pfs,4,3,4,0
- .save rp,loc1
- mov loc1=rp
- .body
-
- movl loc2=VM_MAXUSER_ADDRESS // make sure that src addr
- ;;
- cmp.geu p6,p0=in0,loc2 // is in user space.
- ;;
-(p6) br.cond.spnt.few copyerr // if it's not, error out.
- ld8.acq r15=[r13]
- movl r14=copyerr // set up fault handler.
- ;;
- add r15=TD_PCB,r15 // find pcb
- ;;
- ld8 r15=[r15]
- ;;
- add loc2=PCB_ONFAULT,r15
- ;;
- st8 [loc2]=r14
- ;;
- mov out0=in0
- mov out1=in1
- mov out2=in2
- mov out3=in3
- ;;
- br.call.sptk.few rp=copystr // do the copy.
- st8 [loc2]=r0 // kill the fault handler.
- mov ar.pfs=loc0 // restore ar.pfs
- mov rp=loc1 // restore ra.
- br.ret.sptk.few rp // ret0 left over from copystr
-END(copyinstr)
-
-/*
- * Not the fastest bcopy in the world.
- */
-ENTRY(bcopy, 3)
- mov ret0=r0 // return zero for copy{in,out}
- ;;
- cmp.le p6,p0=in2,r0 // bail if len <= 0
-(p6) br.ret.spnt.few rp
-
- sub r14=in1,in0 ;; // check for overlap
- cmp.ltu p6,p0=r14,in2 // dst-src < len
-(p6) br.cond.spnt.few 5f
-
- extr.u r14=in0,0,3 // src & 7
- extr.u r15=in1,0,3 ;; // dst & 7
- cmp.eq p6,p0=r14,r15 // different alignment?
-(p6) br.cond.spnt.few 2f // branch if same alignment
-
-1: ld1 r14=[in0],1 ;; // copy bytewise
- st1 [in1]=r14,1
- add in2=-1,in2 ;; // len--
- cmp.ne p6,p0=r0,in2
-(p6) br.cond.dptk.few 1b // loop
- br.ret.sptk.few rp // done
-
-2: cmp.eq p6,p0=r14,r0 // aligned?
-(p6) br.cond.sptk.few 4f
-
-3: ld1 r14=[in0],1 ;; // copy bytewise
- st1 [in1]=r14,1
- extr.u r15=in0,0,3 // src & 7
- add in2=-1,in2 ;; // len--
- cmp.eq p6,p0=r0,in2 // done?
- cmp.eq p7,p0=r0,r15 ;; // aligned now?
-(p6) br.ret.spnt.few rp // return if done
-(p7) br.cond.spnt.few 4f // go to main copy
- br.cond.sptk.few 3b // more bytes to copy
-
- // At this point, in2 is non-zero
-
-4: mov r14=8 ;;
- cmp.ltu p6,p0=in2,r14 ;; // len < 8?
-(p6) br.cond.spnt.few 1b // byte copy the end
- ld8 r15=[in0],8 ;; // copy word
- st8 [in1]=r15,8
- add in2=-8,in2 ;; // len -= 8
- cmp.ne p6,p0=r0,in2 // done?
-(p6) br.cond.spnt.few 4b // again
-
- br.ret.sptk.few rp // return
-
- // Don't bother optimising overlap case
-
-5: add in0=in0,in2
- add in1=in1,in2 ;;
- add in0=-1,in0
- add in1=-1,in1 ;;
-
-6: ld1 r14=[in0],-1 ;;
- st1 [in1]=r14,-1
- add in2=-1,in2 ;;
- cmp.ne p6,p0=r0,in2
-(p6) br.cond.spnt.few 6b
-
- br.ret.sptk.few rp
-END(bcopy)
-
-ENTRY(memcpy,3)
- mov r14=in0 ;;
- mov in0=in1 ;;
- mov in1=r14
- br.cond.sptk.few bcopy
-END(memcpy)
-
-ENTRY(copyin, 3)
- .prologue
- .regstk 3, 3, 3, 0
- .save ar.pfs,loc0
- alloc loc0=ar.pfs,3,3,3,0
- .save rp,loc1
- mov loc1=rp
- .body
-
- movl loc2=VM_MAXUSER_ADDRESS // make sure that src addr
- ;;
- cmp.geu p6,p0=in0,loc2 // is in user space.
- ;;
-(p6) br.cond.spnt.few copyerr // if it's not, error out.
- ld8.acq r15=[r13]
- movl r14=copyerr // set up fault handler.
- ;;
- add r15=TD_PCB,r15 // find pcb
- ;;
- ld8 r15=[r15]
- ;;
- add loc2=PCB_ONFAULT,r15
- ;;
- st8 [loc2]=r14
- ;;
- mov out0=in0
- mov out1=in1
- mov out2=in2
- ;;
- br.call.sptk.few rp=bcopy // do the copy.
- st8 [loc2]=r0 // kill the fault handler.
- mov ar.pfs=loc0 // restore ar.pfs
- mov rp=loc1 // restore ra.
- br.ret.sptk.few rp // ret0 left over from bcopy
-END(copyin)
-
-ENTRY(copyout, 3)
- .prologue
- .regstk 3, 3, 3, 0
- .save ar.pfs,loc0
- alloc loc0=ar.pfs,3,3,3,0
- .save rp,loc1
- mov loc1=rp
- .body
-
- movl loc2=VM_MAXUSER_ADDRESS // make sure that dest addr
- ;;
- cmp.geu p6,p0=in1,loc2 // is in user space.
- ;;
-(p6) br.cond.spnt.few copyerr // if it's not, error out.
- ld8.acq r15=[r13]
- movl r14=copyerr // set up fault handler.
- ;;
- add r15=TD_PCB,r15 // find pcb
- ;;
- ld8 r15=[r15]
- ;;
- add loc2=PCB_ONFAULT,r15
- ;;
- st8 [loc2]=r14
- ;;
- mov out0=in0
- mov out1=in1
- mov out2=in2
- ;;
- br.call.sptk.few rp=bcopy // do the copy.
- st8 [loc2]=r0 // kill the fault handler.
- mov ar.pfs=loc0 // restore ar.pfs
- mov rp=loc1 // restore ra.
- br.ret.sptk.few rp // ret0 left over from bcopy
-END(copyout)
-
-ENTRY(copyerr, 0)
- ld8.acq r14=[r13] ;;
- add r14=TD_PCB,r14 ;; // curthread->td_addr
- ld8 r14=[r14] ;;
- add r14=PCB_ONFAULT,r14 ;; // &curthread->td_pcb->pcb_onfault
- st8 [r14]=r0 // reset fault handler
-
- mov ret0=EFAULT // return EFAULT
- br.ret.sptk.few rp
-END(copyerr)
-
-#if defined(GPROF)
-/*
- * Important registers:
- * r8 structure return address
- * rp our return address
- * in0 caller's ar.pfs
- * in1 caller's gp
- * in2 caller's rp
- * in3 GOT entry
- * ar.pfs our pfs
- */
-ENTRY_NOPROFILE(_mcount, 4)
- alloc loc0 = ar.pfs, 4, 3, 2, 0
- mov loc1 = r8
- mov loc2 = rp
- ;;
- mov out0 = in2
- mov out1 = rp
- br.call.sptk rp = __mcount
- ;;
-1:
- mov gp = in1
- mov r14 = ip
- mov b7 = loc2
- ;;
- add r14 = 2f - 1b, r14
- mov ar.pfs = loc0
- mov rp = in2
- ;;
- mov b7 = r14
- mov b6 = loc2
- mov r8 = loc1
- mov r14 = in0
- br.ret.sptk b7
- ;;
-2:
- mov ar.pfs = r14
- br.sptk b6
- ;;
-END(_mcount)
-#endif
diff --git a/sys/ia64/ia64/sys_machdep.c b/sys/ia64/ia64/sys_machdep.c
deleted file mode 100644
index 764df2e..0000000
--- a/sys/ia64/ia64/sys_machdep.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * 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. Neither the name of the University 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 REGENTS 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 REGENTS 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/sysproto.h>
-#include <sys/sysent.h>
-
-#include <machine/bus.h>
-#include <machine/cpu.h>
-#include <machine/sysarch.h>
-
-#ifndef _SYS_SYSPROTO_H_
-struct sysarch_args {
- int op;
- char *parms;
-};
-#endif
-
-int
-sysarch(struct thread *td, struct sysarch_args *uap)
-{
- int error;
-
- switch(uap->op) {
- default:
- error = EINVAL;
- break;
- }
- return (error);
-}
diff --git a/sys/ia64/ia64/syscall.S b/sys/ia64/ia64/syscall.S
deleted file mode 100644
index 84a03da..0000000
--- a/sys/ia64/ia64/syscall.S
+++ /dev/null
@@ -1,569 +0,0 @@
-/*-
- * Copyright (c) 2002, 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/syscall.h>
-#include <machine/asm.h>
-#include <assym.s>
-
-/*
- * A process performs a syscall by performing an indirect call to the
- * address stored in ar.k5. The contents of ar.pfs and rp should be
- * saved prior to the syscall in r9 and r10 respectively. The kernel
- * will restore these values on return. The value of gp is preserved
- * across the call. This allows for small enough syscall stubs without
- * getting too weird.
- * The address in ar.k5 is the start of the EPC gateway page and also
- * the syscall entry point. The syscall code in the gateway page is
- * primarily responsible for increasing the privilege level, but will
- * also make sure we have a reliable psr.
- *
- * A process defines:
- * r8 - syscall number
- * r9 - copy of ar.pfs
- * r10 - copy of rp
- * in0-in7 - syscall arguments
- *
- * A syscall returns:
- * r8+r9 - syscall return value(s)
- * r10 - syscall error flag
- * ar.pfs - restored from r9
- * rp - restored from r10
- * gp - preserved
- *
- * The EPC syscall code defines:
- * r11 - copy of psr.l
- * r14 - Kernel memory stack
- * r15 - Kernel register stack
- *
- * Also in the gateway page are the signal trampolines. As such, stacks
- * don't have to be made executable per se. Since debuggers have a need
- * to know about trampolines, we probably need to define a table of
- * vectors or something along those lines so that debuggers can get the
- * information they need and we have the freedom to move code around.
- */
-
- .section .text.gateway, "ax"
- .align PAGE_SIZE
- .global ia64_gateway_page
-ia64_gateway_page:
-{ .mmb
- mov r14=ar.k7 // Memory stack
- mov r15=ar.k6 // Register stack
- epc
- ;;
-}
-{ .mlx
- mov r11=psr
- movl r31=epc_syscall
- ;;
-}
-{ .mib
- rum psr.be
- mov b7=r31
- br b7
- ;;
-}
-gw_ret:
-{ .mmi
- mov ar.rnat=r22
- ;;
- mov ar.rsc=r24
- mov ar.pfs=r20
-}
-{ .mib
- mov ar.fpsr=r25
- mov b0=r18
- br.sptk b6
- ;;
-}
-gw_ret_ia32:
-{ .mmi
- flushrs
- nop 0
- nop 0
- ;;
-}
-{ .mib
- nop 0
- nop 0
- br.ia.sptk b6
- ;;
-}
-
-
-ENTRY_NOPROFILE(break_sigtramp, 0)
-{ .mib
- mov ar.rsc=0
- cmp.ne p15,p0=0,gp
- cover
- ;;
-}
-{ .mmi
- flushrs
-(p15) invala
- add r16=16+UC_MCONTEXT+MC_SPECIAL,sp
- ;;
-}
-{ .mmi
- mov r17=ar.bsp
- mov r18=ar.rnat
- add r14=40,r16
- ;;
-}
-{ .mmi
- st8 [r14]=r17,64 // bspstore
-(p15) mov ar.bspstore=gp
- add r15=48,r16
- ;;
-}
-{ .mmi
- st8 [r15]=r18 // rnat
- st8 [r14]=r0 // ndirty
- nop 0
- ;;
-}
-{ .mmi
- alloc r14=ar.pfs, 0, 0, 3, 0
- mov ar.rsc=15
- mov out0=r8
- ;;
-}
-{ .mmi
- ld8 r16=[r10],8 // function address
- ;;
- ld8 gp=[r10] // function's gp value
- mov b7=r16
- ;;
-}
-{ .mib
- mov out1=r9
- add out2=16,sp
- br.call.sptk rp=b7
- ;;
-}
-{ .mmi
- mov r15=SYS_sigreturn
- add out0=16,sp
- break 0x100000
- ;;
-}
-{ .mmi
- mov r15=SYS_exit
- mov out0=ret0
- break 0x100000
- ;;
-}
-END(break_sigtramp)
-
-ENTRY_NOPROFILE(epc_sigtramp, 0)
-{ .mmi
- ld8 r16=[r10],8 // function address
- mov ar.rsc=0
- cmp.ne p15,p0=0,gp
- ;;
-}
-{ .mmi
-(p15) invala
-(p15) mov ar.bspstore=gp
- mov b7=r16
- ;;
-}
-{ .mmi
- alloc r14=ar.pfs, 0, 0, 3, 0
- mov ar.rsc=15
- nop 0
- ;;
-}
-{ .mii
- ld8 gp=[r10] // function's gp value
- mov out0=r8
- mov out1=r9
-}
-{ .mib
- add out2=16,sp
- nop 0
- br.call.sptk rp=b7
- ;;
-}
- add out0=16,sp
- CALLSYS_NOERROR(sigreturn)
- mov out0=ret0
- CALLSYS_NOERROR(exit)
-END(epc_sigtramp)
-
- .align PAGE_SIZE
-
- .text
-
-ENTRY_NOPROFILE(epc_syscall, 8)
- .prologue
- .unwabi @svr4, 'E'
- .save rp, r0
- .body
-{ .mmi
- mov r16=ar.rsc
- mov ar.rsc=0
- nop 0
- ;;
-}
-{ .mmi
- mov r18=ar.bspstore
- ;;
- mov r19=ar.rnat
- dep r15=r18,r15,0,9
- ;;
-}
-{ .mmi
- mov r21=ar.unat
- add r30=-SIZEOF_TRAPFRAME,r14
- mov r20=sp
- ;;
-}
-{ .mii
- mov r17=r13
- dep r30=0,r30,0,10
- ;;
- add sp=-16,r30
- ;;
-}
-{ .mmi
- mov ar.bspstore=r15
- ;;
- mov ar.rnat=r19
- add r31=8,r30
- ;;
-}
-{ .mmi
- mov r13=ar.k4
- mov r22=ar.fpsr
- sub r29=r14,r30
-}
-{ .mmi
- mov r23=ar.bsp
- mov ar.rsc=3
- add r28=FRAME_SYSCALL,r0
- ;;
-}
-{ .mmi
- st8 [r30]=r29,16 // tf_length
- st8 [r31]=r28,16 // tf_flags
- mov r24=rp
- ;;
-}
-{ .mmi
- st8 [r30]=r20,16 // sp
- st8 [r31]=r21,16 // unat
- mov r25=pr
- ;;
-}
-{ .mmi
- st8 [r30]=r10,16 // rp (syscall caller)
- st8 [r31]=r25,16 // pr
- mov r26=ar.pfs
- ;;
-}
-{ .mmi
- st8 [r30]=r9,16 // pfs (syscall caller)
- st8 [r31]=r18,16 // bspstore
- sub r27=r23,r15
- ;;
-}
-{ .mmi
- st8 [r30]=r19,16 // rnat
- st8 [r31]=r0,16 // __spare
- nop 0
- ;;
-}
-{ .mmi
- st8 [r30]=r17,16 // tp
- st8 [r31]=r16,16 // rsc
- dep r11=-1,r11,32,2 // Set psr.cpl=3
- ;;
-}
-{ .mmi
- st8 [r30]=r22,16 // fpsr
- st8 [r31]=r11,16 // psr
- nop 0
- ;;
-}
-{ .mmi
- st8 [r30]=r1,16 // gp
- st8 [r31]=r27,16 // ndirty
- nop 0
- ;;
-}
-{ .mmi
- st8 [r30]=r26,16 // pfs (syscall stub)
- st8 [r31]=r24,16 // rp (syscall stub)
- nop 0
- ;;
-}
-{ .mmi
- st8 [r30]=r0,80 // ifa
- st8 [r31]=r0,80 // isr
- nop 0
- ;;
-}
-{ .mmi
- alloc r14=ar.pfs,0,0,8,0
- st8 [r30]=r8,16 // syscall number (=r15)
- nop 0
- ;;
-}
-{ .mmi
- .mem.offset 0,0
- st8.spill [r31]=r32,16 // arg0 (=r16)
- .mem.offset 8,0
- st8.spill [r30]=r33,16 // arg1 (=r17)
- nop 0
- ;;
-}
-{ .mmi
- .mem.offset 16,0
- st8.spill [r31]=r34,16 // arg2 (=r18)
- .mem.offset 24,0
- st8.spill [r30]=r35,16 // arg3 (=r19)
- nop 0
- ;;
-}
-{ .mmi
- .mem.offset 32,0
- st8.spill [r31]=r36,16 // arg4 (=r20)
- .mem.offset 40,0
- st8.spill [r30]=r37,16 // arg5 (=r21)
- nop 0
- ;;
-}
-{ .mmi
- .mem.offset 48,0
- st8.spill [r31]=r38 // arg6 (=r22)
- .mem.offset 56,0
- st8.spill [r30]=r39 // arg7 (=r23)
- nop 0
- ;;
-}
-{ .mlx
- ssm psr.dfh|psr.ac
- movl gp=__gp
- ;;
-}
-1:
-{ .mib
- srlz.d
- add out0=16,sp
- br.call.sptk rp=syscall
- ;;
-}
- .global epc_syscall_return
-epc_syscall_return:
-{ .mib
- add out0=16,sp
- nop 0
- br.call.sptk rp=do_ast
- ;;
-}
-{ .mib
- cmp4.eq p15,p0=ERESTART,r8
- add r14=24,sp
-(p15) br.spnt 1b // restart syscall
- ;;
-}
-{ .mmi
- ld8 r14=[r14] // tf_flags
- nop 0
- nop 0
- ;;
-}
-{ .mib
- nop 0
- tbit.z p15,p0=r14,0
-(p15) br.spnt exception_restore
- ;;
-}
-{ .mmi
- alloc r31=ar.pfs,0,0,0,0
- add r14=32,sp
- add r15=16,sp
- ;;
-}
-{ .mmi
- ld8 r31=[r15],24 // tf_length
- ld8 r16=[r14],16 // sp
- add sp=16,sp
- ;;
-}
-{ .mmi
- ld8 r17=[r15],16 // unat (before)
- ld8 r18=[r14],16 // rp (syscall caller)
- add r31=r31,sp
- ;;
-}
-{ .mmi
- ld8 r19=[r15],16 // pr
- ld8 r20=[r14],16 // pfs (syscall caller)
- nop 0
- ;;
-}
-{ .mmi
- ld8 r21=[r15],24 // bspstore
- ld8 r22=[r14],24 // rnat
- mov pr=r19,0x1fffe
- ;;
-}
-{ .mmi
- ld8 r23=[r15],16 // tp
- ld8 r24=[r14],16 // rsc
- nop 0
- ;;
-}
-{ .mmi
- ld8 r25=[r15],16 // fpsr
- ld8 r26=[r14],16 // psr
- nop 0
- ;;
-}
-{ .mmi
- ld8 gp=[r15],16 // gp
- ld8 r27=[r14],16 // ndirty
- tbit.z p14,p15=r26,34 // p14=ia64, p15=ia32
- ;;
-}
-{ .mmi
- ld8 r28=[r15],56 // pfs (syscall stub)
- ld8 r29=[r14],56 // rp (syscall stub)
- shl r27=r27,16
- ;;
-}
-{ .mmi
- ld8 r8=[r15],16 // r8
- mov ar.rsc=r27
- mov b6=r29
- ;;
-}
-{ .mmb
- ld8 r9=[r14],40 // r9
- ld8 r10=[r15],40 // r10
-(p15) br.spnt epc_syscall_setup_ia32
- ;;
-}
-{ .mmi
- loadrs
- mov ar.k7=r31
- mov sp=r16
- ;;
-}
-{ .mmi
- mov r30=ar.bspstore
- mov r14=ar.k5
- mov ar.pfs=r28
- ;;
-}
-{ .mmi
- mov ar.bspstore=r21
- add r14=gw_ret-ia64_gateway_page,r14
- dep r30=0,r30,0,13 // 8KB aligned.
- ;;
-}
-{ .mii
- mov ar.k6=r30
- mov r13=r23
- nop 0
-}
-{ .mmi
- mov psr.l=r26
- mov ar.unat=r17
- nop 0
- ;;
-}
-{ .mib
- srlz.d
- mov b7=r14
- br.ret.sptk b7
- ;;
-}
-epc_syscall_setup_ia32:
-{ .mmi
- loadrs
- mov ar.k7=r31
- mov sp=r16
- ;;
-}
-{ .mmi
- mov r30=ar.bspstore
- ;;
- mov ar.unat=r17
- dep r30=0,r30,0,13 // 8KB aligned
- ;;
-}
-{ .mmi
- mov ar.k6=r30
- mov ar.bspstore=r21
- mov r11=r0
- ;;
-}
-{ .mmi
- ld8 r16=[r14],64
- ld8 r17=[r15],80
- mov r13=r0
- ;;
-}
-
- ld8 r24=[r14],32
- ld8 r27=[r15],16
- ;;
- ld8 r28=[r14],16
- ld8 r29=[r15],16
- ;;
- ld8 r30=[r14],40
- ld8 r31=[r15],40
- ;;
-
-{ .mmi
- ld8 r2=[r14]
- ld8 r3=[r15]
- mov r14=r0
- ;;
-}
-{ .mmi
- mov ar.csd=r2
- mov ar.ssd=r3
- mov r15=r0
- ;;
-}
-
- mov r2=ar.k5
- mov psr.l=r26
- ;;
- srlz.d
- add r2=gw_ret_ia32-ia64_gateway_page,r2
- ;;
- mov ar.rsc=0
- mov b7=r2
- br.ret.sptk b7
- ;;
-END(epc_syscall)
diff --git a/sys/ia64/ia64/trap.c b/sys/ia64/ia64/trap.c
deleted file mode 100644
index 987b144d..0000000
--- a/sys/ia64/ia64/trap.c
+++ /dev/null
@@ -1,962 +0,0 @@
-/*-
- * Copyright (c) 2005 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_ddb.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kdb.h>
-#include <sys/ktr.h>
-#include <sys/sysproto.h>
-#include <sys/kernel.h>
-#include <sys/proc.h>
-#include <sys/efi.h>
-#include <sys/exec.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/sched.h>
-#include <sys/smp.h>
-#include <sys/vmmeter.h>
-#include <sys/sysent.h>
-#include <sys/signalvar.h>
-#include <sys/syscall.h>
-#include <sys/pioctl.h>
-#include <sys/ptrace.h>
-#include <sys/sysctl.h>
-#include <vm/vm.h>
-#include <vm/vm_kern.h>
-#include <vm/vm_page.h>
-#include <vm/vm_map.h>
-#include <vm/vm_extern.h>
-#include <vm/vm_param.h>
-#include <sys/ptrace.h>
-#include <machine/cpu.h>
-#include <machine/md_var.h>
-#include <machine/reg.h>
-#include <machine/pal.h>
-#include <machine/fpu.h>
-#include <machine/pcb.h>
-#ifdef SMP
-#include <machine/smp.h>
-#endif
-
-#include <security/audit/audit.h>
-
-#include <ia64/disasm/disasm.h>
-
-static int print_usertrap = 0;
-SYSCTL_INT(_machdep, OID_AUTO, print_usertrap,
- CTLFLAG_RW, &print_usertrap, 0, "");
-
-static void break_syscall(struct trapframe *tf);
-
-/*
- * EFI-Provided FPSWA interface (Floating Point SoftWare Assist)
- */
-extern struct fpswa_iface *fpswa_iface;
-
-static const char *ia64_vector_names[] = {
- "VHPT Translation", /* 0 */
- "Instruction TLB", /* 1 */
- "Data TLB", /* 2 */
- "Alternate Instruction TLB", /* 3 */
- "Alternate Data TLB", /* 4 */
- "Data Nested TLB", /* 5 */
- "Instruction Key Miss", /* 6 */
- "Data Key Miss", /* 7 */
- "Dirty-Bit", /* 8 */
- "Instruction Access-Bit", /* 9 */
- "Data Access-Bit", /* 10 */
- "Break Instruction", /* 11 */
- "External Interrupt", /* 12 */
- "Reserved 13", /* 13 */
- "Reserved 14", /* 14 */
- "Reserved 15", /* 15 */
- "Reserved 16", /* 16 */
- "Reserved 17", /* 17 */
- "Reserved 18", /* 18 */
- "Reserved 19", /* 19 */
- "Page Not Present", /* 20 */
- "Key Permission", /* 21 */
- "Instruction Access Rights", /* 22 */
- "Data Access Rights", /* 23 */
- "General Exception", /* 24 */
- "Disabled FP-Register", /* 25 */
- "NaT Consumption", /* 26 */
- "Speculation", /* 27 */
- "Reserved 28", /* 28 */
- "Debug", /* 29 */
- "Unaligned Reference", /* 30 */
- "Unsupported Data Reference", /* 31 */
- "Floating-point Fault", /* 32 */
- "Floating-point Trap", /* 33 */
- "Lower-Privilege Transfer Trap", /* 34 */
- "Taken Branch Trap", /* 35 */
- "Single Step Trap", /* 36 */
- "Reserved 37", /* 37 */
- "Reserved 38", /* 38 */
- "Reserved 39", /* 39 */
- "Reserved 40", /* 40 */
- "Reserved 41", /* 41 */
- "Reserved 42", /* 42 */
- "Reserved 43", /* 43 */
- "Reserved 44", /* 44 */
- "IA-32 Exception", /* 45 */
- "IA-32 Intercept", /* 46 */
- "IA-32 Interrupt", /* 47 */
- "Reserved 48", /* 48 */
- "Reserved 49", /* 49 */
- "Reserved 50", /* 50 */
- "Reserved 51", /* 51 */
- "Reserved 52", /* 52 */
- "Reserved 53", /* 53 */
- "Reserved 54", /* 54 */
- "Reserved 55", /* 55 */
- "Reserved 56", /* 56 */
- "Reserved 57", /* 57 */
- "Reserved 58", /* 58 */
- "Reserved 59", /* 59 */
- "Reserved 60", /* 60 */
- "Reserved 61", /* 61 */
- "Reserved 62", /* 62 */
- "Reserved 63", /* 63 */
- "Reserved 64", /* 64 */
- "Reserved 65", /* 65 */
- "Reserved 66", /* 66 */
- "Reserved 67", /* 67 */
-};
-
-struct bitname {
- uint64_t mask;
- const char* name;
-};
-
-static void
-printbits(uint64_t mask, struct bitname *bn, int count)
-{
- int i, first = 1;
- uint64_t bit;
-
- for (i = 0; i < count; i++) {
- /*
- * Handle fields wider than one bit.
- */
- bit = bn[i].mask & ~(bn[i].mask - 1);
- if (bn[i].mask > bit) {
- if (first)
- first = 0;
- else
- printf(",");
- printf("%s=%ld", bn[i].name,
- (mask & bn[i].mask) / bit);
- } else if (mask & bit) {
- if (first)
- first = 0;
- else
- printf(",");
- printf("%s", bn[i].name);
- }
- }
-}
-
-struct bitname psr_bits[] = {
- {IA64_PSR_BE, "be"},
- {IA64_PSR_UP, "up"},
- {IA64_PSR_AC, "ac"},
- {IA64_PSR_MFL, "mfl"},
- {IA64_PSR_MFH, "mfh"},
- {IA64_PSR_IC, "ic"},
- {IA64_PSR_I, "i"},
- {IA64_PSR_PK, "pk"},
- {IA64_PSR_DT, "dt"},
- {IA64_PSR_DFL, "dfl"},
- {IA64_PSR_DFH, "dfh"},
- {IA64_PSR_SP, "sp"},
- {IA64_PSR_PP, "pp"},
- {IA64_PSR_DI, "di"},
- {IA64_PSR_SI, "si"},
- {IA64_PSR_DB, "db"},
- {IA64_PSR_LP, "lp"},
- {IA64_PSR_TB, "tb"},
- {IA64_PSR_RT, "rt"},
- {IA64_PSR_CPL, "cpl"},
- {IA64_PSR_IS, "is"},
- {IA64_PSR_MC, "mc"},
- {IA64_PSR_IT, "it"},
- {IA64_PSR_ID, "id"},
- {IA64_PSR_DA, "da"},
- {IA64_PSR_DD, "dd"},
- {IA64_PSR_SS, "ss"},
- {IA64_PSR_RI, "ri"},
- {IA64_PSR_ED, "ed"},
- {IA64_PSR_BN, "bn"},
- {IA64_PSR_IA, "ia"},
-};
-
-static void
-printpsr(uint64_t psr)
-{
- printbits(psr, psr_bits, sizeof(psr_bits)/sizeof(psr_bits[0]));
-}
-
-struct bitname isr_bits[] = {
- {IA64_ISR_CODE, "code"},
- {IA64_ISR_VECTOR, "vector"},
- {IA64_ISR_X, "x"},
- {IA64_ISR_W, "w"},
- {IA64_ISR_R, "r"},
- {IA64_ISR_NA, "na"},
- {IA64_ISR_SP, "sp"},
- {IA64_ISR_RS, "rs"},
- {IA64_ISR_IR, "ir"},
- {IA64_ISR_NI, "ni"},
- {IA64_ISR_SO, "so"},
- {IA64_ISR_EI, "ei"},
- {IA64_ISR_ED, "ed"},
-};
-
-static void printisr(uint64_t isr)
-{
- printbits(isr, isr_bits, sizeof(isr_bits)/sizeof(isr_bits[0]));
-}
-
-static void
-printtrap(int vector, struct trapframe *tf, int isfatal, int user)
-{
- printf("\n");
- printf("%s %s trap (cpu %d):\n", isfatal? "fatal" : "handled",
- user ? "user" : "kernel", PCPU_GET(cpuid));
- printf("\n");
- printf(" trap vector = 0x%x (%s)\n",
- vector, ia64_vector_names[vector]);
- printf(" cr.iip = 0x%lx\n", tf->tf_special.iip);
- printf(" cr.ipsr = 0x%lx (", tf->tf_special.psr);
- printpsr(tf->tf_special.psr);
- printf(")\n");
- printf(" cr.isr = 0x%lx (", tf->tf_special.isr);
- printisr(tf->tf_special.isr);
- printf(")\n");
- printf(" cr.ifa = 0x%lx\n", tf->tf_special.ifa);
- if (tf->tf_special.psr & IA64_PSR_IS) {
- printf(" ar.cflg = 0x%lx\n", ia64_get_cflg());
- printf(" ar.csd = 0x%lx\n", ia64_get_csd());
- printf(" ar.ssd = 0x%lx\n", ia64_get_ssd());
- }
- printf(" curthread = %p\n", curthread);
- if (curthread != NULL)
- printf(" pid = %d, comm = %s\n",
- curthread->td_proc->p_pid, curthread->td_name);
- printf("\n");
-}
-
-/*
- * We got a trap caused by a break instruction and the immediate was 0.
- * This indicates that we may have a break.b with some non-zero immediate.
- * The break.b doesn't cause the immediate to be put in cr.iim. Hence,
- * we need to disassemble the bundle and return the immediate found there.
- * This may be a 0 value anyway. Return 0 for any error condition. This
- * will result in a SIGILL, which is pretty much the best thing to do.
- */
-static uint64_t
-trap_decode_break(struct trapframe *tf)
-{
- struct asm_bundle bundle;
- struct asm_inst *inst;
- int slot;
-
- if (!asm_decode(tf->tf_special.iip, &bundle))
- return (0);
-
- slot = ((tf->tf_special.psr & IA64_PSR_RI) == IA64_PSR_RI_0) ? 0 :
- ((tf->tf_special.psr & IA64_PSR_RI) == IA64_PSR_RI_1) ? 1 : 2;
- inst = bundle.b_inst + slot;
-
- /*
- * Sanity checking: It must be a break instruction and the operand
- * that has the break value must be an immediate.
- */
- if (inst->i_op != ASM_OP_BREAK ||
- inst->i_oper[1].o_type != ASM_OPER_IMM)
- return (0);
-
- return (inst->i_oper[1].o_value);
-}
-
-void
-trap_panic(int vector, struct trapframe *tf)
-{
-
- printtrap(vector, tf, 1, TRAPF_USERMODE(tf));
-#ifdef KDB
- kdb_trap(vector, 0, tf);
-#endif
- panic("trap");
-}
-
-/*
- *
- */
-int
-do_ast(struct trapframe *tf)
-{
-
- ia64_disable_intr();
- while (curthread->td_flags & (TDF_ASTPENDING|TDF_NEEDRESCHED)) {
- ia64_enable_intr();
- ast(tf);
- ia64_disable_intr();
- }
- /*
- * Keep interrupts disabled. We return r10 as a favor to the EPC
- * syscall code so that it can quicky determine if the syscall
- * needs to be restarted or not.
- */
- return (tf->tf_scratch.gr10);
-}
-
-/*
- * Trap is called from exception.s to handle most types of processor traps.
- */
-/*ARGSUSED*/
-void
-trap(int vector, struct trapframe *tf)
-{
- struct proc *p;
- struct thread *td;
- uint64_t ucode;
- int error, sig, user;
- ksiginfo_t ksi;
-
- user = TRAPF_USERMODE(tf) ? 1 : 0;
- if (user)
- ia64_set_fpsr(IA64_FPSR_DEFAULT);
-
-#ifdef XTRACE
- ia64_xtrace_save();
-#endif
-
- PCPU_INC(cnt.v_trap);
-
- td = curthread;
- p = td->td_proc;
- ucode = 0;
-
- if (user) {
- td->td_pticks = 0;
- td->td_frame = tf;
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
- } else {
- KASSERT(cold || td->td_ucred != NULL,
- ("kernel trap doesn't have ucred"));
-#ifdef KDB
- if (kdb_active)
- kdb_reenter();
-#endif
- }
-
- sig = 0;
- switch (vector) {
- case IA64_VEC_VHPT:
- /*
- * This one is tricky. We should hardwire the VHPT, but
- * don't at this time. I think we're mostly lucky that
- * the VHPT is mapped.
- */
- trap_panic(vector, tf);
- break;
-
- case IA64_VEC_ITLB:
- case IA64_VEC_DTLB:
- case IA64_VEC_EXT_INTR:
- /* We never call trap() with these vectors. */
- trap_panic(vector, tf);
- break;
-
- case IA64_VEC_ALT_ITLB:
- case IA64_VEC_ALT_DTLB:
- /*
- * These should never happen, because regions 0-4 use the
- * VHPT. If we get one of these it means we didn't program
- * the region registers correctly.
- */
- trap_panic(vector, tf);
- break;
-
- case IA64_VEC_NESTED_DTLB:
- /*
- * When the nested TLB handler encounters an unexpected
- * condition, it'll switch to the backup stack and transfer
- * here. All we need to do is panic.
- */
- trap_panic(vector, tf);
- break;
-
- case IA64_VEC_IKEY_MISS:
- case IA64_VEC_DKEY_MISS:
- case IA64_VEC_KEY_PERMISSION:
- /*
- * We don't use protection keys, so we should never get
- * these faults.
- */
- trap_panic(vector, tf);
- break;
-
- case IA64_VEC_DIRTY_BIT:
- case IA64_VEC_INST_ACCESS:
- case IA64_VEC_DATA_ACCESS:
- /*
- * We get here if we read or write to a page of which the
- * PTE does not have the access bit or dirty bit set and
- * we can not find the PTE in our datastructures. This
- * either means we have a stale PTE in the TLB, or we lost
- * the PTE in our datastructures.
- */
- trap_panic(vector, tf);
- break;
-
- case IA64_VEC_BREAK:
- if (user) {
- ucode = (int)tf->tf_special.ifa & 0x1FFFFF;
- if (ucode == 0) {
- /*
- * A break.b doesn't cause the immediate to be
- * stored in cr.iim (and saved in the TF in
- * tf_special.ifa). We need to decode the
- * instruction to find out what the immediate
- * was. Note that if the break instruction
- * didn't happen to be a break.b, but any
- * other break with an immediate of 0, we
- * will do unnecessary work to get the value
- * we already had. Not an issue, because a
- * break 0 is invalid.
- */
- ucode = trap_decode_break(tf);
- }
- if (ucode < 0x80000) {
- /* Software interrupts. */
- switch (ucode) {
- case 0: /* Unknown error. */
- sig = SIGILL;
- break;
- case 1: /* Integer divide by zero. */
- sig = SIGFPE;
- ucode = FPE_INTDIV;
- break;
- case 2: /* Integer overflow. */
- sig = SIGFPE;
- ucode = FPE_INTOVF;
- break;
- case 3: /* Range check/bounds check. */
- sig = SIGFPE;
- ucode = FPE_FLTSUB;
- break;
- case 6: /* Decimal overflow. */
- case 7: /* Decimal divide by zero. */
- case 8: /* Packed decimal error. */
- case 9: /* Invalid ASCII digit. */
- case 10: /* Invalid decimal digit. */
- sig = SIGFPE;
- ucode = FPE_FLTINV;
- break;
- case 4: /* Null pointer dereference. */
- case 5: /* Misaligned data. */
- case 11: /* Paragraph stack overflow. */
- sig = SIGSEGV;
- break;
- default:
- sig = SIGILL;
- break;
- }
- } else if (ucode < 0x100000) {
- /* Debugger breakpoint. */
- tf->tf_special.psr &= ~IA64_PSR_SS;
- sig = SIGTRAP;
- } else if (ucode == 0x100000) {
- break_syscall(tf);
- return; /* do_ast() already called. */
- } else if (ucode == 0x180000) {
- mcontext_t mc;
-
- error = copyin((void*)tf->tf_scratch.gr8,
- &mc, sizeof(mc));
- if (!error) {
- set_mcontext(td, &mc);
- return; /* Don't call do_ast()!!! */
- }
- sig = SIGSEGV;
- ucode = tf->tf_scratch.gr8;
- } else
- sig = SIGILL;
- } else {
-#ifdef KDB
- if (kdb_trap(vector, 0, tf))
- return;
- panic("trap");
-#else
- trap_panic(vector, tf);
-#endif
- }
- break;
-
- case IA64_VEC_PAGE_NOT_PRESENT:
- case IA64_VEC_INST_ACCESS_RIGHTS:
- case IA64_VEC_DATA_ACCESS_RIGHTS: {
- vm_offset_t va;
- struct vmspace *vm;
- vm_map_t map;
- vm_prot_t ftype;
- int rv;
-
- rv = 0;
- va = trunc_page(tf->tf_special.ifa);
-
- if (va >= VM_MAXUSER_ADDRESS) {
- /*
- * Don't allow user-mode faults for kernel virtual
- * addresses, including the gateway page.
- */
- if (user)
- goto no_fault_in;
- map = kernel_map;
- } else {
- vm = (p != NULL) ? p->p_vmspace : NULL;
- if (vm == NULL)
- goto no_fault_in;
- map = &vm->vm_map;
- }
-
- if (tf->tf_special.isr & IA64_ISR_X)
- ftype = VM_PROT_EXECUTE;
- else if (tf->tf_special.isr & IA64_ISR_W)
- ftype = VM_PROT_WRITE;
- else
- ftype = VM_PROT_READ;
-
- if (map != kernel_map) {
- /*
- * Keep swapout from messing with us during this
- * critical time.
- */
- PROC_LOCK(p);
- ++p->p_lock;
- PROC_UNLOCK(p);
-
- /* Fault in the user page: */
- rv = vm_fault(map, va, ftype, VM_FAULT_NORMAL);
-
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- } else {
- /*
- * Don't have to worry about process locking or
- * stacks in the kernel.
- */
- rv = vm_fault(map, va, ftype, VM_FAULT_NORMAL);
- }
-
- if (rv == KERN_SUCCESS)
- goto out;
-
- no_fault_in:
- if (!user) {
- /* Check for copyin/copyout fault. */
- if (td != NULL && td->td_pcb->pcb_onfault != 0) {
- tf->tf_special.iip =
- td->td_pcb->pcb_onfault;
- tf->tf_special.psr &= ~IA64_PSR_RI;
- td->td_pcb->pcb_onfault = 0;
- goto out;
- }
- trap_panic(vector, tf);
- }
- ucode = va;
- sig = (rv == KERN_PROTECTION_FAILURE) ? SIGBUS : SIGSEGV;
- break;
- }
-
- case IA64_VEC_GENERAL_EXCEPTION: {
- int code;
-
- if (!user)
- trap_panic(vector, tf);
-
- code = tf->tf_special.isr & (IA64_ISR_CODE & 0xf0ull);
- switch (code) {
- case 0x0: /* Illegal Operation Fault. */
- sig = ia64_emulate(tf, td);
- break;
- default:
- sig = SIGILL;
- break;
- }
- if (sig == 0)
- goto out;
- ucode = vector;
- break;
- }
-
- case IA64_VEC_SPECULATION:
- /*
- * The branching behaviour of the chk instruction is not
- * implemented by the processor. All we need to do is
- * compute the target address of the branch and make sure
- * that control is transfered to that address.
- * We should do this in the IVT table and not by entring
- * the kernel...
- */
- tf->tf_special.iip += tf->tf_special.ifa << 4;
- tf->tf_special.psr &= ~IA64_PSR_RI;
- goto out;
-
- case IA64_VEC_NAT_CONSUMPTION:
- case IA64_VEC_UNSUPP_DATA_REFERENCE:
- if (user) {
- ucode = vector;
- sig = SIGILL;
- } else
- trap_panic(vector, tf);
- break;
-
- case IA64_VEC_DISABLED_FP: {
- if (user)
- ia64_highfp_enable(td, tf);
- else
- trap_panic(vector, tf);
- goto out;
- }
-
- case IA64_VEC_DEBUG:
- case IA64_VEC_SINGLE_STEP_TRAP:
- tf->tf_special.psr &= ~IA64_PSR_SS;
- if (!user) {
-#ifdef KDB
- if (kdb_trap(vector, 0, tf))
- return;
- panic("trap");
-#else
- trap_panic(vector, tf);
-#endif
- }
- sig = SIGTRAP;
- break;
-
- case IA64_VEC_UNALIGNED_REFERENCE:
- /*
- * If user-land, do whatever fixups, printing, and
- * signalling is appropriate (based on system-wide
- * and per-process unaligned-access-handling flags).
- */
- if (user) {
- sig = unaligned_fixup(tf, td);
- if (sig == 0)
- goto out;
- ucode = tf->tf_special.ifa; /* VA */
- } else {
- /* Check for copyin/copyout fault. */
- if (td != NULL && td->td_pcb->pcb_onfault != 0) {
- tf->tf_special.iip =
- td->td_pcb->pcb_onfault;
- tf->tf_special.psr &= ~IA64_PSR_RI;
- td->td_pcb->pcb_onfault = 0;
- goto out;
- }
- trap_panic(vector, tf);
- }
- break;
-
- case IA64_VEC_FLOATING_POINT_FAULT:
- case IA64_VEC_FLOATING_POINT_TRAP: {
- struct fpswa_bundle bundle;
- struct fpswa_fpctx fpctx;
- struct fpswa_ret ret;
- char *ip;
- u_long fault;
-
- /* Always fatal in kernel. Should never happen. */
- if (!user)
- trap_panic(vector, tf);
-
- if (fpswa_iface == NULL) {
- sig = SIGFPE;
- ucode = 0;
- break;
- }
-
- ip = (char *)tf->tf_special.iip;
- if (vector == IA64_VEC_FLOATING_POINT_TRAP &&
- (tf->tf_special.psr & IA64_PSR_RI) == 0)
- ip -= 16;
- error = copyin(ip, &bundle, sizeof(bundle));
- if (error) {
- sig = SIGBUS; /* EFAULT, basically */
- ucode = 0; /* exception summary */
- break;
- }
-
- /* f6-f15 are saved in exception_save */
- fpctx.mask_low = 0xffc0; /* bits 6 - 15 */
- fpctx.mask_high = 0;
- fpctx.fp_low_preserved = NULL;
- fpctx.fp_low_volatile = &tf->tf_scratch_fp.fr6;
- fpctx.fp_high_preserved = NULL;
- fpctx.fp_high_volatile = NULL;
-
- fault = (vector == IA64_VEC_FLOATING_POINT_FAULT) ? 1 : 0;
-
- /*
- * We have the high FP registers disabled while in the
- * kernel. Enable them for the FPSWA handler only.
- */
- ia64_enable_highfp();
-
- /* The docs are unclear. Is Fpswa reentrant? */
- ret = fpswa_iface->if_fpswa(fault, &bundle,
- &tf->tf_special.psr, &tf->tf_special.fpsr,
- &tf->tf_special.isr, &tf->tf_special.pr,
- &tf->tf_special.cfm, &fpctx);
-
- ia64_disable_highfp();
-
- /*
- * Update ipsr and iip to next instruction. We only
- * have to do that for faults.
- */
- if (fault && (ret.status == 0 || (ret.status & 2))) {
- int ei;
-
- ei = (tf->tf_special.isr >> 41) & 0x03;
- if (ei == 0) { /* no template for this case */
- tf->tf_special.psr &= ~IA64_ISR_EI;
- tf->tf_special.psr |= IA64_ISR_EI_1;
- } else if (ei == 1) { /* MFI or MFB */
- tf->tf_special.psr &= ~IA64_ISR_EI;
- tf->tf_special.psr |= IA64_ISR_EI_2;
- } else if (ei == 2) { /* MMF */
- tf->tf_special.psr &= ~IA64_ISR_EI;
- tf->tf_special.iip += 0x10;
- }
- }
-
- if (ret.status == 0) {
- goto out;
- } else if (ret.status == -1) {
- printf("FATAL: FPSWA err1 %lx, err2 %lx, err3 %lx\n",
- ret.err1, ret.err2, ret.err3);
- panic("fpswa fatal error on fp fault");
- } else {
- sig = SIGFPE;
- ucode = 0; /* XXX exception summary */
- break;
- }
- }
-
- case IA64_VEC_LOWER_PRIVILEGE_TRANSFER:
- /*
- * The lower-privilege transfer trap is used by the EPC
- * syscall code to trigger re-entry into the kernel when the
- * process should be single stepped. The problem is that
- * there's no way to set single stepping directly without
- * using the rfi instruction. So instead we enable the
- * lower-privilege transfer trap and when we get here we
- * know that the process is about to enter userland (and
- * has already lowered its privilege).
- * However, there's another gotcha. When the process has
- * lowered it's privilege it's still running in the gateway
- * page. If we enable single stepping, we'll be stepping
- * the code in the gateway page. In and by itself this is
- * not a problem, but it's an address debuggers won't know
- * anything about. Hence, it can only cause confusion.
- * We know that we need to branch to get out of the gateway
- * page, so what we do here is enable the taken branch
- * trap and just let the process continue. When we branch
- * out of the gateway page we'll get back into the kernel
- * and then we enable single stepping.
- * Since this a rather round-about way of enabling single
- * stepping, don't make things even more complicated by
- * calling userret() and do_ast(). We do that later...
- */
- tf->tf_special.psr &= ~IA64_PSR_LP;
- tf->tf_special.psr |= IA64_PSR_TB;
- return;
-
- case IA64_VEC_TAKEN_BRANCH_TRAP:
- /*
- * Don't assume there aren't any branches other than the
- * branch that takes us out of the gateway page. Check the
- * iip and enable single stepping only when it's an user
- * address.
- */
- if (tf->tf_special.iip >= VM_MAXUSER_ADDRESS)
- return;
- tf->tf_special.psr &= ~IA64_PSR_TB;
- tf->tf_special.psr |= IA64_PSR_SS;
- return;
-
- case IA64_VEC_IA32_EXCEPTION:
- case IA64_VEC_IA32_INTERCEPT:
- case IA64_VEC_IA32_INTERRUPT:
- sig = SIGEMT;
- ucode = tf->tf_special.iip;
- break;
-
- default:
- /* Reserved vectors get here. Should never happen of course. */
- trap_panic(vector, tf);
- break;
- }
-
- KASSERT(sig != 0, ("foo"));
-
- if (print_usertrap)
- printtrap(vector, tf, 1, user);
-
- ksiginfo_init(&ksi);
- ksi.ksi_signo = sig;
- ksi.ksi_code = ucode;
- trapsignal(td, &ksi);
-
-out:
- if (user) {
- userret(td, tf);
- do_ast(tf);
- }
- return;
-}
-
-/*
- * Handle break instruction based system calls.
- */
-void
-break_syscall(struct trapframe *tf)
-{
- uint64_t *bsp, *tfp;
- uint64_t iip, psr;
- int error, nargs;
-
- /* Save address of break instruction. */
- iip = tf->tf_special.iip;
- psr = tf->tf_special.psr;
-
- /* Advance to the next instruction. */
- tf->tf_special.psr += IA64_PSR_RI_1;
- if ((tf->tf_special.psr & IA64_PSR_RI) > IA64_PSR_RI_2) {
- tf->tf_special.iip += 16;
- tf->tf_special.psr &= ~IA64_PSR_RI;
- }
-
- /*
- * Copy the arguments on the register stack into the trapframe
- * to avoid having interleaved NaT collections.
- */
- tfp = &tf->tf_scratch.gr16;
- nargs = tf->tf_special.cfm & 0x7f;
- bsp = (uint64_t*)(curthread->td_kstack + tf->tf_special.ndirty +
- (tf->tf_special.bspstore & 0x1ffUL));
- bsp -= (((uintptr_t)bsp & 0x1ff) < (nargs << 3)) ? (nargs + 1): nargs;
- while (nargs--) {
- *tfp++ = *bsp++;
- if (((uintptr_t)bsp & 0x1ff) == 0x1f8)
- bsp++;
- }
- error = syscall(tf);
- if (error == ERESTART) {
- tf->tf_special.iip = iip;
- tf->tf_special.psr = psr;
- }
-
- do_ast(tf);
-}
-
-int
-cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
-{
- struct proc *p;
- struct trapframe *tf;
-
- p = td->td_proc;
- tf = td->td_frame;
-
- sa->code = tf->tf_scratch.gr15;
- sa->args = &tf->tf_scratch.gr16;
-
- /*
- * syscall() and __syscall() are handled the same on
- * the ia64, as everything is 64-bit aligned, anyway.
- */
- if (sa->code == SYS_syscall || sa->code == SYS___syscall) {
- /*
- * Code is first argument, followed by actual args.
- */
- sa->code = sa->args[0];
- sa->args++;
- }
-
- if (p->p_sysent->sv_mask)
- sa->code &= p->p_sysent->sv_mask;
- if (sa->code >= p->p_sysent->sv_size)
- sa->callp = &p->p_sysent->sv_table[0];
- else
- sa->callp = &p->p_sysent->sv_table[sa->code];
- sa->narg = sa->callp->sy_narg;
-
- td->td_retval[0] = 0;
- td->td_retval[1] = 0;
-
- return (0);
-}
-
-#include "../../kern/subr_syscall.c"
-
-/*
- * Process a system call.
- *
- * See syscall.s for details as to how we get here. In order to support
- * the ERESTART case, we return the error to our caller. They deal with
- * the hairy details.
- */
-int
-syscall(struct trapframe *tf)
-{
- struct syscall_args sa;
- struct thread *td;
- int error;
-
- td = curthread;
- td->td_frame = tf;
-
- ia64_set_fpsr(IA64_FPSR_DEFAULT);
- tf->tf_scratch.gr10 = EJUSTRETURN;
-
- error = syscallenter(td, &sa);
- syscallret(td, error, &sa);
-
- return (error);
-}
diff --git a/sys/ia64/ia64/uio_machdep.c b/sys/ia64/ia64/uio_machdep.c
deleted file mode 100644
index 35a4d42..0000000
--- a/sys/ia64/ia64/uio_machdep.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*-
- * Copyright (c) 2004 Alan L. Cox <alc@cs.rice.edu>
- * Copyright (c) 1982, 1986, 1991, 1993
- * The Regents of the University of California. All rights reserved.
- * (c) UNIX System Laboratories, Inc.
- * All or some portions of this file are derived from material licensed
- * to the University of California by American Telephone and Telegraph
- * Co. or Unix System Laboratories, Inc. and are reproduced herein with
- * the permission of UNIX System Laboratories, Inc.
- *
- * 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. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)kern_subr.c 8.3 (Berkeley) 1/21/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/proc.h>
-#include <sys/systm.h>
-#include <sys/uio.h>
-
-#include <vm/vm.h>
-#include <vm/vm_page.h>
-
-#include <machine/vmparam.h>
-
-/*
- * Implement uiomove(9) from physical memory using the direct map to
- * avoid the creation and destruction of ephemeral mappings.
- */
-int
-uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
-{
- struct thread *td = curthread;
- struct iovec *iov;
- void *cp;
- vm_offset_t page_offset;
- size_t cnt;
- int error = 0;
- int save = 0;
-
- KASSERT(uio->uio_rw == UIO_READ || uio->uio_rw == UIO_WRITE,
- ("uiomove_fromphys: mode"));
- KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
- ("uiomove_fromphys proc"));
- save = td->td_pflags & TDP_DEADLKTREAT;
- td->td_pflags |= TDP_DEADLKTREAT;
- while (n > 0 && uio->uio_resid) {
- iov = uio->uio_iov;
- cnt = iov->iov_len;
- if (cnt == 0) {
- uio->uio_iov++;
- uio->uio_iovcnt--;
- continue;
- }
- if (cnt > n)
- cnt = n;
- page_offset = offset & PAGE_MASK;
- cnt = min(cnt, PAGE_SIZE - page_offset);
- cp = (char *)
- IA64_PHYS_TO_RR7(ma[offset >> PAGE_SHIFT]->phys_addr) +
- page_offset;
- switch (uio->uio_segflg) {
- case UIO_USERSPACE:
- maybe_yield();
- if (uio->uio_rw == UIO_READ)
- error = copyout(cp, iov->iov_base, cnt);
- else
- error = copyin(iov->iov_base, cp, cnt);
- if (error)
- goto out;
- break;
- case UIO_SYSSPACE:
- if (uio->uio_rw == UIO_READ)
- bcopy(cp, iov->iov_base, cnt);
- else
- bcopy(iov->iov_base, cp, cnt);
- break;
- case UIO_NOCOPY:
- break;
- }
- iov->iov_base = (char *)iov->iov_base + cnt;
- iov->iov_len -= cnt;
- uio->uio_resid -= cnt;
- uio->uio_offset += cnt;
- offset += cnt;
- n -= cnt;
- }
-out:
- if (save == 0)
- td->td_pflags &= ~TDP_DEADLKTREAT;
- return (error);
-}
diff --git a/sys/ia64/ia64/uma_machdep.c b/sys/ia64/ia64/uma_machdep.c
deleted file mode 100644
index 29a45ea..0000000
--- a/sys/ia64/ia64/uma_machdep.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*-
- * Copyright (c) 2003 The FreeBSD Project
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/mutex.h>
-#include <sys/systm.h>
-#include <vm/vm.h>
-#include <vm/vm_page.h>
-#include <vm/vm_pageout.h>
-#include <vm/uma.h>
-#include <vm/uma_int.h>
-#include <machine/vmparam.h>
-
-void *
-uma_small_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait)
-{
- void *va;
- vm_page_t m;
- int pflags;
-
- *flags = UMA_SLAB_PRIV;
- pflags = malloc2vm_flags(wait) | VM_ALLOC_WIRED;
-
- for (;;) {
- m = vm_page_alloc(NULL, 0, pflags | VM_ALLOC_NOOBJ);
- if (m == NULL) {
- if (wait & M_NOWAIT)
- return (NULL);
- VM_WAIT;
- } else
- break;
- }
-
- va = (void *)IA64_PHYS_TO_RR7(VM_PAGE_TO_PHYS(m));
- if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0)
- bzero(va, PAGE_SIZE);
- return (va);
-}
-
-void
-uma_small_free(void *mem, int size, u_int8_t flags)
-{
- vm_page_t m;
-
- m = PHYS_TO_VM_PAGE(IA64_RR_MASK((u_int64_t)mem));
- m->wire_count--;
- vm_page_free(m);
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
-}
diff --git a/sys/ia64/ia64/unaligned.c b/sys/ia64/ia64/unaligned.c
deleted file mode 100644
index d4478f2..0000000
--- a/sys/ia64/ia64/unaligned.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/proc.h>
-#include <sys/sysctl.h>
-#include <vm/vm.h>
-#include <vm/vm_extern.h>
-#include <machine/frame.h>
-#include <machine/md_var.h>
-#include <ia64/disasm/disasm.h>
-
-static int ia64_unaligned_print = 0;
-SYSCTL_INT(_debug, OID_AUTO, unaligned_print, CTLFLAG_RW,
- &ia64_unaligned_print, 0, "warn about unaligned accesses");
-
-static int ia64_unaligned_test = 0;
-SYSCTL_INT(_debug, OID_AUTO, unaligned_test, CTLFLAG_RW,
- &ia64_unaligned_test, 0, "test emulation when PSR.ac is set");
-
-static void *
-fpreg_ptr(mcontext_t *mc, int fr)
-{
- union _ia64_fpreg *p;
-
- if (fr <= 1 || fr >= 128)
- return (NULL);
- if (fr >= 32) {
- p = &mc->mc_high_fp.fr32;
- fr -= 32;
- } else if (fr >= 16) {
- p = &mc->mc_preserved_fp.fr16;
- fr -= 16;
- } else if (fr >= 6) {
- p = &mc->mc_scratch_fp.fr6;
- fr -= 6;
- } else {
- p = &mc->mc_preserved_fp.fr2;
- fr -= 2;
- }
- return ((void*)(p + fr));
-}
-
-static void *
-greg_ptr(mcontext_t *mc, int gr)
-{
- uint64_t *p;
- int nslots;
-
- if (gr <= 0 || gr >= 32 + (mc->mc_special.cfm & 0x7f))
- return (NULL);
- if (gr >= 32) {
- nslots = IA64_CFM_SOF(mc->mc_special.cfm) - gr + 32;
- p = (void *)ia64_bsp_adjust(mc->mc_special.bspstore, -nslots);
- gr = 0;
- } else if (gr >= 14) {
- p = &mc->mc_scratch.gr14;
- gr -= 14;
- } else if (gr == 13) {
- p = &mc->mc_special.tp;
- gr = 0;
- } else if (gr == 12) {
- p = &mc->mc_special.sp;
- gr = 0;
- } else if (gr >= 8) {
- p = &mc->mc_scratch.gr8;
- gr -= 8;
- } else if (gr >= 4) {
- p = &mc->mc_preserved.gr4;
- gr -= 4;
- } else if (gr >= 2) {
- p = &mc->mc_scratch.gr2;
- gr -= 2;
- } else {
- p = &mc->mc_special.gp;
- gr = 0;
- }
- return ((void*)(p + gr));
-}
-
-static uint64_t
-rdreg(uint64_t *addr)
-{
- if ((uintptr_t)addr < VM_MAXUSER_ADDRESS)
- return (fuword(addr));
- return (*addr);
-}
-
-static void
-wrreg(uint64_t *addr, uint64_t val)
-{
- if ((uintptr_t)addr < VM_MAXUSER_ADDRESS)
- suword(addr, val);
- else
- *addr = val;
-}
-
-static int
-fixup(struct asm_inst *i, mcontext_t *mc, uint64_t va)
-{
- union {
- double d;
- long double e;
- uint64_t i;
- float s;
- } buf;
- void *reg;
- uint64_t postinc;
-
- switch (i->i_op) {
- case ASM_OP_LD2:
- copyin((void*)va, (void*)&buf.i, 2);
- reg = greg_ptr(mc, (int)i->i_oper[1].o_value);
- if (reg == NULL)
- return (EINVAL);
- wrreg(reg, buf.i & 0xffffU);
- break;
- case ASM_OP_LD4:
- copyin((void*)va, (void*)&buf.i, 4);
- reg = greg_ptr(mc, (int)i->i_oper[1].o_value);
- if (reg == NULL)
- return (EINVAL);
- wrreg(reg, buf.i & 0xffffffffU);
- break;
- case ASM_OP_LD8:
- copyin((void*)va, (void*)&buf.i, 8);
- reg = greg_ptr(mc, (int)i->i_oper[1].o_value);
- if (reg == NULL)
- return (EINVAL);
- wrreg(reg, buf.i);
- break;
- case ASM_OP_LDFD:
- copyin((void*)va, (void*)&buf.d, sizeof(buf.d));
- reg = fpreg_ptr(mc, (int)i->i_oper[1].o_value);
- if (reg == NULL)
- return (EINVAL);
- __asm("ldfd f6=%1;; stf.spill %0=f6" : "=m"(*(double *)reg) :
- "m"(buf.d) : "f6");
- break;
- case ASM_OP_LDFE:
- copyin((void*)va, (void*)&buf.e, sizeof(buf.e));
- reg = fpreg_ptr(mc, (int)i->i_oper[1].o_value);
- if (reg == NULL)
- return (EINVAL);
- __asm("ldfe f6=%1;; stf.spill %0=f6" :
- "=m"(*(long double *)reg) : "m"(buf.e) : "f6");
- break;
- case ASM_OP_LDFS:
- copyin((void*)va, (void*)&buf.s, sizeof(buf.s));
- reg = fpreg_ptr(mc, (int)i->i_oper[1].o_value);
- if (reg == NULL)
- return (EINVAL);
- __asm("ldfs f6=%1;; stf.spill %0=f6" : "=m"(*(float *)reg) :
- "m"(buf.s) : "f6");
- break;
- case ASM_OP_ST2:
- reg = greg_ptr(mc, (int)i->i_oper[2].o_value);
- if (reg == NULL)
- return (EINVAL);
- buf.i = rdreg(reg);
- copyout((void*)&buf.i, (void*)va, 2);
- break;
- case ASM_OP_ST4:
- reg = greg_ptr(mc, (int)i->i_oper[2].o_value);
- if (reg == NULL)
- return (EINVAL);
- buf.i = rdreg(reg);
- copyout((void*)&buf.i, (void*)va, 4);
- break;
- case ASM_OP_ST8:
- reg = greg_ptr(mc, (int)i->i_oper[2].o_value);
- if (reg == NULL)
- return (EINVAL);
- buf.i = rdreg(reg);
- copyout((void*)&buf.i, (void*)va, 8);
- break;
- case ASM_OP_STFD:
- reg = fpreg_ptr(mc, (int)i->i_oper[2].o_value);
- if (reg == NULL)
- return (EINVAL);
- __asm("ldf.fill f6=%1;; stfd %0=f6" : "=m"(buf.d) :
- "m"(*(double *)reg) : "f6");
- copyout((void*)&buf.d, (void*)va, sizeof(buf.d));
- break;
- case ASM_OP_STFE:
- reg = fpreg_ptr(mc, (int)i->i_oper[2].o_value);
- if (reg == NULL)
- return (EINVAL);
- __asm("ldf.fill f6=%1;; stfe %0=f6" : "=m"(buf.e) :
- "m"(*(long double *)reg) : "f6");
- copyout((void*)&buf.e, (void*)va, sizeof(buf.e));
- break;
- case ASM_OP_STFS:
- reg = fpreg_ptr(mc, (int)i->i_oper[2].o_value);
- if (reg == NULL)
- return (EINVAL);
- __asm("ldf.fill f6=%1;; stfs %0=f6" : "=m"(buf.s) :
- "m"(*(float *)reg) : "f6");
- copyout((void*)&buf.s, (void*)va, sizeof(buf.s));
- break;
- default:
- return (ENOENT);
- }
-
- /* Handle post-increment. */
- if (i->i_oper[3].o_type == ASM_OPER_GREG) {
- reg = greg_ptr(mc, (int)i->i_oper[3].o_value);
- if (reg == NULL)
- return (EINVAL);
- postinc = rdreg(reg);
- } else
- postinc = (i->i_oper[3].o_type == ASM_OPER_IMM)
- ? i->i_oper[3].o_value : 0;
- if (postinc != 0) {
- if (i->i_oper[1].o_type == ASM_OPER_MEM)
- reg = greg_ptr(mc, (int)i->i_oper[1].o_value);
- else
- reg = greg_ptr(mc, (int)i->i_oper[2].o_value);
- if (reg == NULL)
- return (EINVAL);
- postinc += rdreg(reg);
- wrreg(reg, postinc);
- }
- return (0);
-}
-
-int
-unaligned_fixup(struct trapframe *tf, struct thread *td)
-{
- mcontext_t context;
- struct asm_bundle bundle;
- int error, slot;
-
- slot = ((tf->tf_special.psr & IA64_PSR_RI) == IA64_PSR_RI_0) ? 0 :
- ((tf->tf_special.psr & IA64_PSR_RI) == IA64_PSR_RI_1) ? 1 : 2;
-
- if (ia64_unaligned_print) {
- uprintf("pid %d (%s): unaligned access: va=0x%lx, pc=0x%lx\n",
- td->td_proc->p_pid, td->td_proc->p_comm,
- tf->tf_special.ifa, tf->tf_special.iip + slot);
- }
-
- /*
- * If PSR.ac is set, the process wants to be signalled about mis-
- * aligned loads and stores. Send it a SIGBUS. In order for us to
- * test the emulation of misaligned loads and stores, we have a
- * sysctl that tells us that we must emulate the load or store,
- * instead of sending the signal. We need the sysctl because if
- * PSR.ac is not set, the CPU may (and likely will) deal with the
- * misaligned load or store itself. As such, we won't get the
- * exception.
- */
- if ((tf->tf_special.psr & IA64_PSR_AC) && !ia64_unaligned_test)
- return (SIGBUS);
-
- if (!asm_decode(tf->tf_special.iip, &bundle))
- return (SIGILL);
-
- get_mcontext(td, &context, 0);
-
- error = fixup(bundle.b_inst + slot, &context, tf->tf_special.ifa);
- if (error == ENOENT) {
- printf("unhandled misaligned memory access:\n\t");
- asm_print_inst(&bundle, slot, tf->tf_special.iip);
- return (SIGILL);
- } else if (error != 0)
- return (SIGBUS);
-
- set_mcontext(td, &context);
-
- /* Advance to the next instruction. */
- if (slot == 2) {
- tf->tf_special.psr &= ~IA64_PSR_RI;
- tf->tf_special.iip += 16;
- } else
- tf->tf_special.psr += IA64_PSR_RI_1;
-
- return (0);
-}
diff --git a/sys/ia64/ia64/unwind.c b/sys/ia64/ia64/unwind.c
deleted file mode 100644
index 7b4c6d2..0000000
--- a/sys/ia64/ia64/unwind.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/*-
- * Copyright (c) 2003, 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/kdb.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/malloc.h>
-#include <sys/queue.h>
-
-#include <machine/frame.h>
-#include <machine/md_var.h>
-#include <machine/pcb.h>
-#include <machine/unwind.h>
-
-#include <uwx.h>
-
-static MALLOC_DEFINE(M_UNWIND, "Unwind", "Unwind information");
-
-struct unw_entry {
- uint64_t ue_start; /* procedure start */
- uint64_t ue_end; /* procedure end */
- uint64_t ue_info; /* offset to procedure descriptors */
-};
-
-struct unw_table {
- LIST_ENTRY(unw_table) ut_link;
- uint64_t ut_base;
- uint64_t ut_limit;
- struct unw_entry *ut_start;
- struct unw_entry *ut_end;
-};
-
-LIST_HEAD(unw_table_list, unw_table);
-
-static struct unw_table_list unw_tables;
-
-#ifdef KDB
-#define KDBHEAPSZ 8192
-
-struct mhdr {
- uint32_t sig;
-#define MSIG_FREE 0x65657246 /* "Free". */
-#define MSIG_USED 0x64657355 /* "Used". */
- uint32_t size;
- int32_t next;
- int32_t prev;
-};
-
-static struct mhdr *kdbheap;
-#endif /* KDB */
-
-static void *
-unw_alloc(size_t sz)
-{
-#ifdef KDB
- struct mhdr *hdr, *hfree;
-
- if (kdb_active) {
- sz = (sz + 15) >> 4;
- hdr = kdbheap;
- while (hdr->sig != MSIG_FREE || hdr->size < sz) {
- if (hdr->next == -1)
- return (NULL);
- hdr = kdbheap + hdr->next;
- }
- if (hdr->size > sz + 1) {
- hfree = hdr + sz + 1;
- hfree->sig = MSIG_FREE;
- hfree->size = hdr->size - sz - 1;
- hfree->prev = hdr - kdbheap;
- hfree->next = hdr->next;
- hdr->size = sz;
- hdr->next = hfree - kdbheap;
- if (hfree->next >= 0) {
- hfree = kdbheap + hfree->next;
- hfree->prev = hdr->next;
- }
- }
- hdr->sig = MSIG_USED;
- return (void*)(hdr + 1);
- }
-#endif
- return (malloc(sz, M_UNWIND, M_NOWAIT));
-}
-
-static void
-unw_free(void *p)
-{
-#ifdef KDB
- struct mhdr *hdr, *hfree;
-
- if (kdb_active) {
- hdr = (struct mhdr*)p - 1;
- if (hdr->sig != MSIG_USED)
- return;
- hdr->sig = MSIG_FREE;
- if (hdr->prev >= 0 && kdbheap[hdr->prev].sig == MSIG_FREE) {
- hfree = kdbheap + hdr->prev;
- hfree->size += hdr->size + 1;
- hfree->next = hdr->next;
- if (hdr->next >= 0) {
- hfree = kdbheap + hdr->next;
- hfree->prev = hdr->prev;
- }
- } else if (hdr->next >= 0 &&
- kdbheap[hdr->next].sig == MSIG_FREE) {
- hfree = kdbheap + hdr->next;
- hdr->size += hfree->size + 1;
- hdr->next = hfree->next;
- if (hdr->next >= 0) {
- hfree = kdbheap + hdr->next;
- hfree->prev = hdr - kdbheap;
- }
- }
- return;
- }
-#endif
- free(p, M_UNWIND);
-}
-
-static struct unw_table *
-unw_table_lookup(uint64_t ip)
-{
- struct unw_table *ut;
-
- LIST_FOREACH(ut, &unw_tables, ut_link) {
- if (ip >= ut->ut_base && ip < ut->ut_limit)
- return (ut);
- }
- return (NULL);
-}
-
-static uint64_t
-unw_copyin_from_frame(struct trapframe *tf, uint64_t from)
-{
- uint64_t val;
- int reg;
-
- if (from == UWX_REG_AR_PFS)
- val = tf->tf_special.pfs;
- else if (from == UWX_REG_PREDS)
- val = tf->tf_special.pr;
- else if (from == UWX_REG_AR_RNAT)
- val = tf->tf_special.rnat;
- else if (from == UWX_REG_AR_UNAT)
- val = tf->tf_special.unat;
- else if (from >= UWX_REG_GR(0) && from <= UWX_REG_GR(127)) {
- reg = from - UWX_REG_GR(0);
- if (reg == 1)
- val = tf->tf_special.gp;
- else if (reg == 12)
- val = tf->tf_special.sp;
- else if (reg == 13)
- val = tf->tf_special.tp;
- else if (reg >= 2 && reg <= 3)
- val = (&tf->tf_scratch.gr2)[reg - 2];
- else if (reg >= 8 && reg <= 11)
- val = (&tf->tf_scratch.gr8)[reg - 8];
- else if (reg >= 14 && reg <= 31)
- val = (&tf->tf_scratch.gr14)[reg - 14];
- else
- goto oops;
- } else if (from >= UWX_REG_BR(0) && from <= UWX_REG_BR(7)) {
- reg = from - UWX_REG_BR(0);
- if (reg == 0)
- val = tf->tf_special.rp;
- else if (reg >= 6 && reg <= 7)
- val = (&tf->tf_scratch.br6)[reg - 6];
- else
- goto oops;
- } else
- goto oops;
- return (val);
-
- oops:
- printf("UNW: %s(%p, %lx)\n", __func__, tf, from);
- return (0UL);
-}
-
-static uint64_t
-unw_copyin_from_pcb(struct pcb *pcb, uint64_t from)
-{
- uint64_t val;
- int reg;
-
- if (from == UWX_REG_AR_PFS)
- val = pcb->pcb_special.pfs;
- else if (from == UWX_REG_PREDS)
- val = pcb->pcb_special.pr;
- else if (from == UWX_REG_AR_RNAT)
- val = pcb->pcb_special.rnat;
- else if (from == UWX_REG_AR_UNAT)
- val = pcb->pcb_special.unat;
- else if (from >= UWX_REG_GR(0) && from <= UWX_REG_GR(127)) {
- reg = from - UWX_REG_GR(0);
- if (reg == 1)
- val = pcb->pcb_special.gp;
- else if (reg == 12)
- val = pcb->pcb_special.sp;
- else if (reg == 13)
- val = pcb->pcb_special.tp;
- else if (reg >= 4 && reg <= 7)
- val = (&pcb->pcb_preserved.gr4)[reg - 4];
- else
- goto oops;
- } else if (from >= UWX_REG_BR(0) && from <= UWX_REG_BR(7)) {
- reg = from - UWX_REG_BR(0);
- if (reg == 0)
- val = pcb->pcb_special.rp;
- else if (reg >= 1 && reg <= 5)
- val = (&pcb->pcb_preserved.br1)[reg - 1];
- else
- goto oops;
- } else
- goto oops;
- return (val);
-
- oops:
- printf("UNW: %s(%p, %lx)\n", __func__, pcb, from);
- return (0UL);
-}
-
-static int
-unw_cb_copyin(int req, char *to, uint64_t from, int len, intptr_t tok)
-{
- struct unw_regstate *rs = (void*)tok;
- uint64_t val;
-
- switch (req) {
- case UWX_COPYIN_UINFO:
- break;
- case UWX_COPYIN_MSTACK:
- *((uint64_t*)to) = *((uint64_t*)from);
- return (8);
- case UWX_COPYIN_RSTACK:
- *((uint64_t*)to) = *((uint64_t*)from);
- return (8);
- case UWX_COPYIN_REG:
- if (rs->frame != NULL)
- val = unw_copyin_from_frame(rs->frame, from);
- else if (rs->pcb != NULL)
- val = unw_copyin_from_pcb(rs->pcb, from);
- else
- goto oops;
- *((uint64_t*)to) = val;
- return (len);
- }
-
- oops:
- printf("UNW: %s(%d, %p, %lx, %d, %lx)\n", __func__, req, to, from,
- len, tok);
- return (0);
-}
-
-static int
-unw_cb_lookup(int req, uint64_t ip, intptr_t tok, uint64_t **vec)
-{
- struct unw_regstate *rs = (void*)tok;
- struct unw_table *ut;
-
- switch (req) {
- case UWX_LKUP_LOOKUP:
- ut = unw_table_lookup(ip);
- if (ut == NULL)
- return (UWX_LKUP_NOTFOUND);
- rs->keyval[0] = UWX_KEY_TBASE;
- rs->keyval[1] = ut->ut_base;
- rs->keyval[2] = UWX_KEY_USTART;
- rs->keyval[3] = (intptr_t)ut->ut_start;
- rs->keyval[4] = UWX_KEY_UEND;
- rs->keyval[5] = (intptr_t)ut->ut_end;
- rs->keyval[6] = 0;
- rs->keyval[7] = 0;
- *vec = rs->keyval;
- return (UWX_LKUP_UTABLE);
- case UWX_LKUP_FREE:
- return (0);
- }
-
- return (UWX_LKUP_ERR);
-}
-
-int
-unw_create_from_frame(struct unw_regstate *rs, struct trapframe *tf)
-{
- uint64_t bsp, ip;
- int uwxerr;
-
- rs->frame = tf;
- rs->pcb = NULL;
- rs->env = uwx_init();
- if (rs->env == NULL)
- return (ENOMEM);
-
- uwxerr = uwx_register_callbacks(rs->env, (intptr_t)rs,
- unw_cb_copyin, unw_cb_lookup);
- if (uwxerr)
- return (EINVAL); /* XXX */
-
- bsp = tf->tf_special.bspstore + tf->tf_special.ndirty;
- bsp = ia64_bsp_adjust(bsp, -IA64_CFM_SOF(tf->tf_special.cfm));
- ip = tf->tf_special.iip + ((tf->tf_special.psr >> 41) & 3);
-
- uwxerr = uwx_init_context(rs->env, ip, tf->tf_special.sp, bsp,
- tf->tf_special.cfm);
-
- return ((uwxerr) ? EINVAL : 0); /* XXX */
-}
-
-int
-unw_create_from_pcb(struct unw_regstate *rs, struct pcb *pcb)
-{
- uint64_t bsp, cfm, ip;
- int uwxerr;
-
- rs->frame = NULL;
- rs->pcb = pcb;
- rs->env = uwx_init();
- if (rs->env == NULL)
- return (ENOMEM);
-
- uwxerr = uwx_register_callbacks(rs->env, (intptr_t)rs,
- unw_cb_copyin, unw_cb_lookup);
- if (uwxerr)
- return (EINVAL); /* XXX */
-
- bsp = pcb->pcb_special.bspstore;
- if (pcb->pcb_special.__spare == ~0UL) {
- ip = pcb->pcb_special.iip + ((pcb->pcb_special.psr >> 41) & 3);
- cfm = pcb->pcb_special.cfm;
- bsp += pcb->pcb_special.ndirty;
- bsp = ia64_bsp_adjust(bsp, -IA64_CFM_SOF(cfm));
- } else {
- ip = pcb->pcb_special.rp;
- cfm = pcb->pcb_special.pfs;
- bsp = ia64_bsp_adjust(bsp, -IA64_CFM_SOL(cfm));
- }
- uwxerr = uwx_init_context(rs->env, ip, pcb->pcb_special.sp, bsp, cfm);
-
- return ((uwxerr) ? EINVAL : 0); /* XXX */
-}
-
-void
-unw_delete(struct unw_regstate *rs)
-{
-
- if (rs->env != NULL)
- uwx_free(rs->env);
-}
-
-int
-unw_step(struct unw_regstate *rs)
-{
- int err;
-
- switch (uwx_step(rs->env)) {
- case UWX_ABI_FRAME:
- err = ERESTART;
- break;
- case UWX_BOTTOM:
- err = EJUSTRETURN;
- break;
- case UWX_OK:
- err = 0;
- break;
- default:
- err = EINVAL; /* XXX */
- break;
- }
- return (err);
-}
-
-int
-unw_get_bsp(struct unw_regstate *s, uint64_t *r)
-{
- int uwxerr;
-
- uwxerr = uwx_get_reg(s->env, UWX_REG_BSP, r);
- return ((uwxerr) ? EINVAL : 0); /* XXX */
-}
-
-int
-unw_get_cfm(struct unw_regstate *s, uint64_t *r)
-{
- int uwxerr;
-
- uwxerr = uwx_get_reg(s->env, UWX_REG_CFM, r);
- return ((uwxerr) ? EINVAL : 0); /* XXX */
-}
-
-int
-unw_get_ip(struct unw_regstate *s, uint64_t *r)
-{
- int uwxerr;
-
- uwxerr = uwx_get_reg(s->env, UWX_REG_IP, r);
- return ((uwxerr) ? EINVAL : 0); /* XXX */
-}
-
-int
-unw_get_sp(struct unw_regstate *s, uint64_t *r)
-{
- int uwxerr;
-
- uwxerr = uwx_get_reg(s->env, UWX_REG_SP, r);
- return ((uwxerr) ? EINVAL : 0); /* XXX */
-}
-
-int
-unw_table_add(uint64_t base, uint64_t start, uint64_t end)
-{
- struct unw_table *ut;
-
- ut = malloc(sizeof(struct unw_table), M_UNWIND, M_WAITOK);
- ut->ut_base = base;
- ut->ut_start = (struct unw_entry*)start;
- ut->ut_end = (struct unw_entry*)end;
- ut->ut_limit = base + ut->ut_end[-1].ue_end;
- LIST_INSERT_HEAD(&unw_tables, ut, ut_link);
-
- if (bootverbose)
- printf("UNWIND: table added: base=%lx, start=%lx, end=%lx\n",
- base, start, end);
-
- return (0);
-}
-
-void
-unw_table_remove(uint64_t base)
-{
- struct unw_table *ut;
-
- ut = unw_table_lookup(base);
- if (ut != NULL) {
- LIST_REMOVE(ut, ut_link);
- free(ut, M_UNWIND);
- if (bootverbose)
- printf("UNWIND: table removed: base=%lx\n", base);
- }
-}
-
-static void
-unw_initialize(void *dummy __unused)
-{
-
- LIST_INIT(&unw_tables);
- uwx_register_alloc_cb(unw_alloc, unw_free);
-#ifdef KDB
- kdbheap = malloc(KDBHEAPSZ, M_UNWIND, M_WAITOK);
- kdbheap->sig = MSIG_FREE;
- kdbheap->size = (KDBHEAPSZ - sizeof(struct mhdr)) >> 4;
- kdbheap->next = -1;
- kdbheap->prev = -1;
-#endif
-}
-SYSINIT(unwind, SI_SUB_KMEM, SI_ORDER_ANY, unw_initialize, 0);
diff --git a/sys/ia64/ia64/vm_machdep.c b/sys/ia64/ia64/vm_machdep.c
deleted file mode 100644
index 186897b..0000000
--- a/sys/ia64/ia64/vm_machdep.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/*-
- * Copyright (c) 1982, 1986 The Regents of the University of California.
- * Copyright (c) 1989, 1990 William Jolitz
- * Copyright (c) 1994 John Dyson
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * the Systems Programming Group of the University of Utah Computer
- * Science Department, and William Jolitz.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91
- * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
- * $FreeBSD$
- */
-/*-
- * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/proc.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/bio.h>
-#include <sys/buf.h>
-#include <sys/sysent.h>
-#include <sys/vnode.h>
-#include <sys/vmmeter.h>
-#include <sys/kernel.h>
-#include <sys/mbuf.h>
-#include <sys/sysctl.h>
-#include <sys/unistd.h>
-
-#include <machine/cpu.h>
-#include <machine/fpu.h>
-#include <machine/md_var.h>
-#include <machine/pcb.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/vm_kern.h>
-#include <vm/vm_page.h>
-#include <vm/vm_map.h>
-#include <vm/vm_extern.h>
-
-void
-cpu_thread_exit(struct thread *td)
-{
-
- /* Throw away the high FP registers. */
- ia64_highfp_drop(td);
-}
-
-void
-cpu_thread_clean(struct thread *td)
-{
-}
-
-void
-cpu_thread_alloc(struct thread *td)
-{
- intptr_t sp;
-
- sp = td->td_kstack + td->td_kstack_pages * PAGE_SIZE;
- sp -= sizeof(struct pcb);
- td->td_pcb = (struct pcb *)sp;
- sp -= sizeof(struct trapframe);
- td->td_frame = (struct trapframe *)sp;
- td->td_frame->tf_length = sizeof(struct trapframe);
-}
-
-void
-cpu_thread_free(struct thread *td)
-{
-}
-
-void
-cpu_thread_swapin(struct thread *td)
-{
-}
-
-void
-cpu_thread_swapout(struct thread *td)
-{
-
- ia64_highfp_save(td);
-}
-
-void
-cpu_set_syscall_retval(struct thread *td, int error)
-{
- struct proc *p;
- struct trapframe *tf;
-
- if (error == EJUSTRETURN)
- return;
-
- tf = td->td_frame;
-
- /*
- * Save the "raw" error code in r10. We use this to handle
- * syscall restarts (see do_ast()).
- */
- tf->tf_scratch.gr10 = error;
- if (error == 0) {
- tf->tf_scratch.gr8 = td->td_retval[0];
- tf->tf_scratch.gr9 = td->td_retval[1];
- } else if (error != ERESTART) {
- p = td->td_proc;
- if (error < p->p_sysent->sv_errsize)
- error = p->p_sysent->sv_errtbl[error];
- /*
- * Translated error codes are returned in r8. User
- */
- tf->tf_scratch.gr8 = error;
- }
-}
-
-void
-cpu_set_upcall(struct thread *td, struct thread *td0)
-{
- struct pcb *pcb;
- struct trapframe *tf;
-
- ia64_highfp_save(td0);
-
- tf = td->td_frame;
- KASSERT(tf != NULL, ("foo"));
- bcopy(td0->td_frame, tf, sizeof(*tf));
- tf->tf_length = sizeof(struct trapframe);
- tf->tf_flags = FRAME_SYSCALL;
- tf->tf_special.ndirty = 0;
- tf->tf_special.bspstore &= ~0x1ffUL;
- tf->tf_scratch.gr8 = 0;
- tf->tf_scratch.gr9 = 1;
- tf->tf_scratch.gr10 = 0;
-
- pcb = td->td_pcb;
- KASSERT(pcb != NULL, ("foo"));
- bcopy(td0->td_pcb, pcb, sizeof(*pcb));
- pcb->pcb_special.bspstore = td->td_kstack;
- pcb->pcb_special.pfs = 0;
- pcb->pcb_current_pmap = vmspace_pmap(td0->td_proc->p_vmspace);
- pcb->pcb_special.sp = (uintptr_t)tf - 16;
- pcb->pcb_special.rp = FDESC_FUNC(fork_trampoline);
- cpu_set_fork_handler(td, (void (*)(void*))fork_return, td);
-
- /* Setup to release the spin count in fork_exit(). */
- td->td_md.md_spinlock_count = 1;
- td->td_md.md_saved_intr = 1;
-}
-
-void
-cpu_set_upcall_kse(struct thread *td, void (*entry)(void *), void *arg,
- stack_t *stack)
-{
- struct ia64_fdesc *fd;
- struct trapframe *tf;
- uint64_t ndirty, sp;
-
- tf = td->td_frame;
- ndirty = tf->tf_special.ndirty + (tf->tf_special.bspstore & 0x1ffUL);
-
- KASSERT((ndirty & ~PAGE_MASK) == 0,
- ("Whoa there! We have more than 8KB of dirty registers!"));
-
- fd = (struct ia64_fdesc *)entry;
- sp = (uint64_t)stack->ss_sp;
-
- bzero(&tf->tf_special, sizeof(tf->tf_special));
- tf->tf_special.iip = fuword(&fd->func);
- tf->tf_special.gp = fuword(&fd->gp);
- tf->tf_special.sp = (sp + stack->ss_size - 16) & ~15;
- tf->tf_special.rsc = 0xf;
- tf->tf_special.fpsr = IA64_FPSR_DEFAULT;
- tf->tf_special.psr = IA64_PSR_IC | IA64_PSR_I | IA64_PSR_IT |
- IA64_PSR_DT | IA64_PSR_RT | IA64_PSR_DFH | IA64_PSR_BN |
- IA64_PSR_CPL_USER;
-
- if (tf->tf_flags & FRAME_SYSCALL) {
- tf->tf_special.cfm = (3UL<<62) | (1UL<<7) | 1UL;
- tf->tf_special.bspstore = sp + 8;
- suword((caddr_t)sp, (uint64_t)arg);
- } else {
- tf->tf_special.cfm = (1UL<<63) | (1UL<<7) | 1UL;
- tf->tf_special.bspstore = sp;
- tf->tf_special.ndirty = 8;
- sp = td->td_kstack + ndirty - 8;
- if ((sp & 0x1ff) == 0x1f8) {
- *(uint64_t*)sp = 0;
- tf->tf_special.ndirty += 8;
- sp -= 8;
- }
- *(uint64_t*)sp = (uint64_t)arg;
- }
-}
-
-int
-cpu_set_user_tls(struct thread *td, void *tls_base)
-{
- td->td_frame->tf_special.tp = (unsigned long)tls_base;
- return (0);
-}
-
-/*
- * Finish a fork operation, with process p2 nearly set up.
- * Copy and update the pcb, set up the stack so that the child
- * ready to run and return to user mode.
- */
-void
-cpu_fork(struct thread *td1, struct proc *p2 __unused, struct thread *td2,
- int flags)
-{
- char *stackp;
- uint64_t ndirty;
-
- KASSERT(td1 == curthread || td1 == &thread0,
- ("cpu_fork: td1 not curthread and not thread0"));
-
- if ((flags & RFPROC) == 0)
- return;
-
- /*
- * Save the preserved registers and the high FP registers in the
- * PCB if we're the parent (ie td1 == curthread) so that we have
- * a valid PCB. This also causes a RSE flush. We don't have to
- * do that otherwise, because there wouldn't be anything important
- * to save.
- */
- if (td1 == curthread) {
- if (savectx(td1->td_pcb) != 0)
- panic("unexpected return from savectx()");
- ia64_highfp_save(td1);
- }
-
- /*
- * create the child's kernel stack and backing store. We basicly
- * create an image of the parent's stack and backing store and
- * adjust where necessary.
- */
- stackp = (char *)(td2->td_kstack + td2->td_kstack_pages * PAGE_SIZE);
-
- stackp -= sizeof(struct pcb);
- td2->td_pcb = (struct pcb *)stackp;
- bcopy(td1->td_pcb, td2->td_pcb, sizeof(struct pcb));
-
- stackp -= sizeof(struct trapframe);
- td2->td_frame = (struct trapframe *)stackp;
- bcopy(td1->td_frame, td2->td_frame, sizeof(struct trapframe));
- td2->td_frame->tf_length = sizeof(struct trapframe);
- ndirty = td2->td_frame->tf_special.ndirty +
- (td2->td_frame->tf_special.bspstore & 0x1ffUL);
- bcopy((void*)td1->td_kstack, (void*)td2->td_kstack, ndirty);
-
- /* Set-up the return values as expected by the fork() libc stub. */
- if (td2->td_frame->tf_special.psr & IA64_PSR_IS) {
- td2->td_frame->tf_scratch.gr8 = 0;
- td2->td_frame->tf_scratch.gr10 = 1;
- } else {
- td2->td_frame->tf_scratch.gr8 = 0;
- td2->td_frame->tf_scratch.gr9 = 1;
- td2->td_frame->tf_scratch.gr10 = 0;
- }
-
- td2->td_pcb->pcb_special.bspstore = td2->td_kstack + ndirty;
- td2->td_pcb->pcb_special.pfs = 0;
- td2->td_pcb->pcb_current_pmap = vmspace_pmap(td2->td_proc->p_vmspace);
-
- td2->td_pcb->pcb_special.sp = (uintptr_t)stackp - 16;
- td2->td_pcb->pcb_special.rp = FDESC_FUNC(fork_trampoline);
- cpu_set_fork_handler(td2, (void (*)(void*))fork_return, td2);
-
- /* Setup to release the spin count in fork_exit(). */
- td2->td_md.md_spinlock_count = 1;
- td2->td_md.md_saved_intr = 1;
-}
-
-/*
- * Intercept the return address from a freshly forked process that has NOT
- * been scheduled yet.
- *
- * This is needed to make kernel threads stay in kernel mode.
- */
-void
-cpu_set_fork_handler(td, func, arg)
- struct thread *td;
- void (*func)(void *);
- void *arg;
-{
- td->td_frame->tf_scratch.gr2 = (u_int64_t)func;
- td->td_frame->tf_scratch.gr3 = (u_int64_t)arg;
-}
-
-/*
- * cpu_exit is called as the last action during exit.
- * We drop the fp state (if we have it) and switch to a live one.
- */
-void
-cpu_exit(struct thread *td)
-{
-}
-
-/*
- * Software interrupt handler for queued VM system processing.
- */
-void
-swi_vm(void *dummy)
-{
-
- if (busdma_swi_pending != 0)
- busdma_swi();
-}
diff --git a/sys/ia64/ia64/xtrace.c b/sys/ia64/ia64/xtrace.c
deleted file mode 100644
index 486c091..0000000
--- a/sys/ia64/ia64/xtrace.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/*-
- * Copyright (c) 2014 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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 "opt_ddb.h"
-#include "opt_xtrace.h"
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/ktr.h>
-#include <sys/malloc.h>
-#include <sys/pcpu.h>
-#include <machine/md_var.h>
-#include <machine/pte.h>
-#include <vm/vm.h>
-#include <vm/vm_extern.h>
-#include <vm/vm_kern.h>
-
-#define XTRACE_LOG2SZ 14 /* 16KB trace buffers */
-
-struct ia64_xtrace_record {
- uint64_t ivt;
- uint64_t itc;
- uint64_t iip;
- uint64_t ifa;
- uint64_t isr;
- uint64_t ipsr;
- uint64_t itir;
- uint64_t iipa;
-
- uint64_t ifs;
- uint64_t iim;
- uint64_t iha;
- uint64_t unat;
- uint64_t rsc;
- uint64_t bsp;
- uint64_t tp;
- uint64_t sp;
-};
-
-extern uint32_t ia64_xtrace_enabled;
-extern uint64_t ia64_xtrace_mask;
-
-static uint64_t ia64_xtrace_base;
-
-static void
-ia64_xtrace_init_common(vm_paddr_t pa)
-{
- uint64_t psr;
- pt_entry_t pte;
-
- pte = PTE_PRESENT | PTE_MA_WB | PTE_ACCESSED | PTE_DIRTY |
- PTE_PL_KERN | PTE_AR_RW;
- pte |= pa & PTE_PPN_MASK;
-
- __asm __volatile("ptr.d %0,%1" :: "r"(ia64_xtrace_base),
- "r"(XTRACE_LOG2SZ << 2));
-
- __asm __volatile("mov %0=psr" : "=r"(psr));
- __asm __volatile("rsm psr.ic|psr.i");
- ia64_srlz_i();
-
- ia64_set_ifa(ia64_xtrace_base);
- ia64_set_itir(XTRACE_LOG2SZ << 2);
- ia64_srlz_d();
- __asm __volatile("itr.d dtr[%0]=%1" :: "r"(6), "r"(pte));
-
- __asm __volatile("mov psr.l=%0" :: "r" (psr));
- ia64_srlz_i();
-
- PCPU_SET(md.xtrace_tail, ia64_xtrace_base);
- ia64_set_k3(ia64_xtrace_base);
-}
-
-void *
-ia64_xtrace_alloc(void)
-{
- uintptr_t buf;
- size_t sz;
-
- sz = 1UL << XTRACE_LOG2SZ;
- buf = kmem_alloc_contig(kernel_arena, sz, M_WAITOK | M_ZERO,
- 0UL, ~0UL, sz, 0, VM_MEMATTR_DEFAULT);
- return ((void *)buf);
-}
-
-void
-ia64_xtrace_init_ap(void *buf)
-{
- vm_paddr_t pa;
-
- if (buf == NULL) {
- ia64_set_k3(0);
- return;
- }
- PCPU_SET(md.xtrace_buffer, buf);
- pa = ia64_tpa((uintptr_t)buf);
- ia64_xtrace_init_common(pa);
-}
-
-void
-ia64_xtrace_init_bsp(void)
-{
- void *buf;
- vm_paddr_t pa;
- size_t sz;
-
- sz = 1UL << XTRACE_LOG2SZ;
- ia64_xtrace_base = VM_MIN_KERNEL_ADDRESS + (sz << 1);
- ia64_xtrace_mask = ~sz;
-
- buf = ia64_physmem_alloc(sz, sz);
- if (buf == NULL) {
- ia64_set_k3(0);
- return;
- }
- PCPU_SET(md.xtrace_buffer, buf);
- pa = IA64_RR_MASK((uintptr_t)buf);
- ia64_xtrace_init_common(pa);
-}
-
-static void
-ia64_xtrace_init(void *dummy __unused)
-{
-
- TUNABLE_INT_FETCH("machdep.xtrace.enabled", &ia64_xtrace_enabled);
-}
-SYSINIT(xtrace, SI_SUB_CPU, SI_ORDER_ANY, ia64_xtrace_init, NULL);
-
-void
-ia64_xtrace_save(void)
-{
- struct ia64_xtrace_record *rec;
- uint64_t head, tail;
-
- critical_enter();
- head = ia64_get_k3();
- tail = PCPU_GET(md.xtrace_tail);
- if (head == 0 || tail == 0) {
- critical_exit();
- return;
- }
- while (head != tail) {
- rec = (void *)(uintptr_t)tail;
- CTR6(KTR_TRAP, "XTRACE: itc=%lu, ticks=%d: "
- "IVT=%#lx, IIP=%#lx, IFA=%#lx, ISR=%#lx",
- rec->itc, ticks,
- rec->ivt, rec->iip, rec->ifa, rec->isr);
- tail += sizeof(*rec);
- tail &= ia64_xtrace_mask;
- }
- PCPU_SET(md.xtrace_tail, tail);
- critical_exit();
-}
-
-void
-ia64_xtrace_stop(void)
-{
- ia64_xtrace_enabled = 0;
-}
-
-#if 0
-#ifdef DDB
-
-#include <ddb/ddb.h>
-
-DB_SHOW_COMMAND(xtrace, db_xtrace)
-{
- struct ia64_xtrace_record *p, *r;
-
- p = (ia64_xtptr == 0) ? ia64_xtptr1 : ia64_xtptr;
- if (p == 0) {
- db_printf("Exception trace buffer not allocated\n");
- return;
- }
-
- r = (p->ivt == 0) ? ia64_xtbase : p;
- if (r->ivt == 0) {
- db_printf("No exception trace records written\n");
- return;
- }
-
- db_printf("IVT\t\t ITC\t\t IIP\t\t IFA\n");
- do {
- db_printf("%016lx %016lx %016lx %016lx\n",
- r->ivt, r->itc, r->iip, r->ifa);
- r++;
- if (r == ia64_xtlim)
- r = ia64_xtbase;
- } while (r != p);
-}
-
-#endif /* DDB */
-#endif
diff --git a/sys/ia64/include/_align.h b/sys/ia64/include/_align.h
deleted file mode 100644
index 26df35b..0000000
--- a/sys/ia64/include/_align.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: param.h,v 1.20 1997/09/19 13:52:53 leo Exp */
-
-/*-
- * Copyright (c) 1988 University of Utah.
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * the Systems Programming Group of the University of Utah Computer
- * Science Department and Ralph Campbell.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from: Utah $Hdr: machparam.h 1.11 89/08/14$
- *
- * @(#)param.h 8.1 (Berkeley) 6/10/93
- */
-
-#ifndef _IA64_INCLUDE__ALIGN_H_
-#define _IA64_INCLUDE__ALIGN_H_
-
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value for all
- * data types (int, long, ...). The result is u_long and must be cast to
- * any desired pointer type.
- */
-#define _ALIGNBYTES 15
-#define _ALIGN(p) (((u_long)(p) + _ALIGNBYTES) &~ _ALIGNBYTES)
-
-#endif /* !_IA64_INCLUDE__ALIGN_H_ */
diff --git a/sys/ia64/include/_bus.h b/sys/ia64/include/_bus.h
deleted file mode 100644
index 95d94b4..0000000
--- a/sys/ia64/include/_bus.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * Copyright (c) 2005 M. Warner Losh.
- * All rights reserved.
- *
- * 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,
- * without modification, immediately at the beginning of the file.
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef IA64_INCLUDE__BUS_H
-#define IA64_INCLUDE__BUS_H
-
-/*
- * Bus address and size types
- */
-typedef u_long bus_addr_t;
-typedef u_long bus_size_t;
-
-/*
- * Access methods for bus resources and address space.
- */
-typedef int bus_space_tag_t;
-typedef u_long bus_space_handle_t;
-
-#endif /* IA64_INCLUDE__BUS_H */
diff --git a/sys/ia64/include/_inttypes.h b/sys/ia64/include/_inttypes.h
deleted file mode 100644
index a7cbea5..0000000
--- a/sys/ia64/include/_inttypes.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/*-
- * Copyright (c) 2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Klaus Klein.
- *
- * 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.
- *
- * From: $NetBSD: int_fmtio.h,v 1.2 2001/04/26 16:25:21 kleink Exp $
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_INTTYPES_H_
-#define _MACHINE_INTTYPES_H_
-
-/*
- * Macros for format specifiers.
- */
-
-/* fprintf(3) macros for signed integers. */
-
-#define PRId8 "d" /* int8_t */
-#define PRId16 "d" /* int16_t */
-#define PRId32 "d" /* int32_t */
-#define PRId64 "ld" /* int64_t */
-#define PRIdLEAST8 "d" /* int_least8_t */
-#define PRIdLEAST16 "d" /* int_least16_t */
-#define PRIdLEAST32 "d" /* int_least32_t */
-#define PRIdLEAST64 "ld" /* int_least64_t */
-#define PRIdFAST8 "d" /* int_fast8_t */
-#define PRIdFAST16 "d" /* int_fast16_t */
-#define PRIdFAST32 "d" /* int_fast32_t */
-#define PRIdFAST64 "ld" /* int_fast64_t */
-#define PRIdMAX "jd" /* intmax_t */
-#define PRIdPTR "ld" /* intptr_t */
-
-#define PRIi8 "i" /* int8_t */
-#define PRIi16 "i" /* int16_t */
-#define PRIi32 "i" /* int32_t */
-#define PRIi64 "li" /* int64_t */
-#define PRIiLEAST8 "i" /* int_least8_t */
-#define PRIiLEAST16 "i" /* int_least16_t */
-#define PRIiLEAST32 "i" /* int_least32_t */
-#define PRIiLEAST64 "li" /* int_least64_t */
-#define PRIiFAST8 "i" /* int_fast8_t */
-#define PRIiFAST16 "i" /* int_fast16_t */
-#define PRIiFAST32 "i" /* int_fast32_t */
-#define PRIiFAST64 "li" /* int_fast64_t */
-#define PRIiMAX "ji" /* intmax_t */
-#define PRIiPTR "li" /* intptr_t */
-
-/* fprintf(3) macros for unsigned integers. */
-
-#define PRIo8 "o" /* uint8_t */
-#define PRIo16 "o" /* uint16_t */
-#define PRIo32 "o" /* uint32_t */
-#define PRIo64 "lo" /* uint64_t */
-#define PRIoLEAST8 "o" /* uint_least8_t */
-#define PRIoLEAST16 "o" /* uint_least16_t */
-#define PRIoLEAST32 "o" /* uint_least32_t */
-#define PRIoLEAST64 "lo" /* uint_least64_t */
-#define PRIoFAST8 "o" /* uint_fast8_t */
-#define PRIoFAST16 "o" /* uint_fast16_t */
-#define PRIoFAST32 "o" /* uint_fast32_t */
-#define PRIoFAST64 "lo" /* uint_fast64_t */
-#define PRIoMAX "jo" /* uintmax_t */
-#define PRIoPTR "lo" /* uintptr_t */
-
-#define PRIu8 "u" /* uint8_t */
-#define PRIu16 "u" /* uint16_t */
-#define PRIu32 "u" /* uint32_t */
-#define PRIu64 "lu" /* uint64_t */
-#define PRIuLEAST8 "u" /* uint_least8_t */
-#define PRIuLEAST16 "u" /* uint_least16_t */
-#define PRIuLEAST32 "u" /* uint_least32_t */
-#define PRIuLEAST64 "lu" /* uint_least64_t */
-#define PRIuFAST8 "u" /* uint_fast8_t */
-#define PRIuFAST16 "u" /* uint_fast16_t */
-#define PRIuFAST32 "u" /* uint_fast32_t */
-#define PRIuFAST64 "lu" /* uint_fast64_t */
-#define PRIuMAX "ju" /* uintmax_t */
-#define PRIuPTR "lu" /* uintptr_t */
-
-#define PRIx8 "x" /* uint8_t */
-#define PRIx16 "x" /* uint16_t */
-#define PRIx32 "x" /* uint32_t */
-#define PRIx64 "lx" /* uint64_t */
-#define PRIxLEAST8 "x" /* uint_least8_t */
-#define PRIxLEAST16 "x" /* uint_least16_t */
-#define PRIxLEAST32 "x" /* uint_least32_t */
-#define PRIxLEAST64 "lx" /* uint_least64_t */
-#define PRIxFAST8 "x" /* uint_fast8_t */
-#define PRIxFAST16 "x" /* uint_fast16_t */
-#define PRIxFAST32 "x" /* uint_fast32_t */
-#define PRIxFAST64 "lx" /* uint_fast64_t */
-#define PRIxMAX "jx" /* uintmax_t */
-#define PRIxPTR "lx" /* uintptr_t */
-
-#define PRIX8 "X" /* uint8_t */
-#define PRIX16 "X" /* uint16_t */
-#define PRIX32 "X" /* uint32_t */
-#define PRIX64 "lX" /* uint64_t */
-#define PRIXLEAST8 "X" /* uint_least8_t */
-#define PRIXLEAST16 "X" /* uint_least16_t */
-#define PRIXLEAST32 "X" /* uint_least32_t */
-#define PRIXLEAST64 "lX" /* uint_least64_t */
-#define PRIXFAST8 "X" /* uint_fast8_t */
-#define PRIXFAST16 "X" /* uint_fast16_t */
-#define PRIXFAST32 "X" /* uint_fast32_t */
-#define PRIXFAST64 "lX" /* uint_fast64_t */
-#define PRIXMAX "jX" /* uintmax_t */
-#define PRIXPTR "lX" /* uintptr_t */
-
-/* fscanf(3) macros for signed integers. */
-
-#define SCNd8 "hhd" /* int8_t */
-#define SCNd16 "hd" /* int16_t */
-#define SCNd32 "d" /* int32_t */
-#define SCNd64 "ld" /* int64_t */
-#define SCNdLEAST8 "hhd" /* int_least8_t */
-#define SCNdLEAST16 "hd" /* int_least16_t */
-#define SCNdLEAST32 "d" /* int_least32_t */
-#define SCNdLEAST64 "ld" /* int_least64_t */
-#define SCNdFAST8 "d" /* int_fast8_t */
-#define SCNdFAST16 "d" /* int_fast16_t */
-#define SCNdFAST32 "d" /* int_fast32_t */
-#define SCNdFAST64 "ld" /* int_fast64_t */
-#define SCNdMAX "jd" /* intmax_t */
-#define SCNdPTR "ld" /* intptr_t */
-
-#define SCNi8 "hhi" /* int8_t */
-#define SCNi16 "hi" /* int16_t */
-#define SCNi32 "i" /* int32_t */
-#define SCNi64 "li" /* int64_t */
-#define SCNiLEAST8 "hhi" /* int_least8_t */
-#define SCNiLEAST16 "hi" /* int_least16_t */
-#define SCNiLEAST32 "i" /* int_least32_t */
-#define SCNiLEAST64 "li" /* int_least64_t */
-#define SCNiFAST8 "i" /* int_fast8_t */
-#define SCNiFAST16 "i" /* int_fast16_t */
-#define SCNiFAST32 "i" /* int_fast32_t */
-#define SCNiFAST64 "li" /* int_fast64_t */
-#define SCNiMAX "ji" /* intmax_t */
-#define SCNiPTR "li" /* intptr_t */
-
-/* fscanf(3) macros for unsigned integers. */
-
-#define SCNo8 "hho" /* uint8_t */
-#define SCNo16 "ho" /* uint16_t */
-#define SCNo32 "o" /* uint32_t */
-#define SCNo64 "lo" /* uint64_t */
-#define SCNoLEAST8 "hho" /* uint_least8_t */
-#define SCNoLEAST16 "ho" /* uint_least16_t */
-#define SCNoLEAST32 "o" /* uint_least32_t */
-#define SCNoLEAST64 "lo" /* uint_least64_t */
-#define SCNoFAST8 "o" /* uint_fast8_t */
-#define SCNoFAST16 "o" /* uint_fast16_t */
-#define SCNoFAST32 "o" /* uint_fast32_t */
-#define SCNoFAST64 "lo" /* uint_fast64_t */
-#define SCNoMAX "jo" /* uintmax_t */
-#define SCNoPTR "lo" /* uintptr_t */
-
-#define SCNu8 "hhu" /* uint8_t */
-#define SCNu16 "hu" /* uint16_t */
-#define SCNu32 "u" /* uint32_t */
-#define SCNu64 "lu" /* uint64_t */
-#define SCNuLEAST8 "hhu" /* uint_least8_t */
-#define SCNuLEAST16 "hu" /* uint_least16_t */
-#define SCNuLEAST32 "u" /* uint_least32_t */
-#define SCNuLEAST64 "lu" /* uint_least64_t */
-#define SCNuFAST8 "u" /* uint_fast8_t */
-#define SCNuFAST16 "u" /* uint_fast16_t */
-#define SCNuFAST32 "u" /* uint_fast32_t */
-#define SCNuFAST64 "lu" /* uint_fast64_t */
-#define SCNuMAX "ju" /* uintmax_t */
-#define SCNuPTR "lu" /* uintptr_t */
-
-#define SCNx8 "hhx" /* uint8_t */
-#define SCNx16 "hx" /* uint16_t */
-#define SCNx32 "x" /* uint32_t */
-#define SCNx64 "lx" /* uint64_t */
-#define SCNxLEAST8 "hhx" /* uint_least8_t */
-#define SCNxLEAST16 "hx" /* uint_least16_t */
-#define SCNxLEAST32 "x" /* uint_least32_t */
-#define SCNxLEAST64 "lx" /* uint_least64_t */
-#define SCNxFAST8 "x" /* uint_fast8_t */
-#define SCNxFAST16 "x" /* uint_fast16_t */
-#define SCNxFAST32 "x" /* uint_fast32_t */
-#define SCNxFAST64 "lx" /* uint_fast64_t */
-#define SCNxMAX "jx" /* uintmax_t */
-#define SCNxPTR "lx" /* uintptr_t */
-
-#endif /* !_MACHINE_INTTYPES_H_ */
diff --git a/sys/ia64/include/_limits.h b/sys/ia64/include/_limits.h
deleted file mode 100644
index 938412f..0000000
--- a/sys/ia64/include/_limits.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: limits.h,v 1.3 1997/04/06 08:47:31 cgd Exp */
-
-/*-
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)limits.h 8.3 (Berkeley) 1/4/94
- */
-
-#ifndef _MACHINE__LIMITS_H_
-#define _MACHINE__LIMITS_H_
-
-/*
- * According to ANSI (section 2.2.4.2), the values below must be usable by
- * #if preprocessing directives. Additionally, the expression must have the
- * same type as would an expression that is an object of the corresponding
- * type converted according to the integral promotions. The subtraction for
- * INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an
- * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
- */
-
-#define __CHAR_BIT 8 /* number of bits in a char */
-
-#define __SCHAR_MAX 0x7f /* max value for a signed char */
-#define __SCHAR_MIN (-0x7f-1) /* min value for a signed char */
-
-#define __UCHAR_MAX 0xff /* max value for an unsigned char */
-
-#define __USHRT_MAX 0xffff /* max value for an unsigned short */
-#define __SHRT_MAX 0x7fff /* max value for a short */
-#define __SHRT_MIN (-0x7fff-1) /* min value for a short */
-
-#define __UINT_MAX 0xffffffff /* max value for an unsigned int */
-#define __INT_MAX 0x7fffffff /* max value for an int */
-#define __INT_MIN (-0x7fffffff-1) /* min value for an int */
-
-#define __ULONG_MAX 0xffffffffffffffff /* max for an unsigned long */
-#define __LONG_MAX 0x7fffffffffffffff /* max for a long */
-#define __LONG_MIN (-0x7fffffffffffffff-1) /* min for a long */
-
-/* Long longs have the same size but not the same type as longs. */
- /* max for an unsigned long long */
-#define __ULLONG_MAX 0xffffffffffffffffULL
-#define __LLONG_MAX 0x7fffffffffffffffLL /* max for a long long */
-#define __LLONG_MIN (-0x7fffffffffffffffLL-1) /* min for a long long */
-
-#define __SSIZE_MAX __LONG_MAX /* max value for a ssize_t */
-
-#define __SIZE_T_MAX __ULONG_MAX /* max value for a size_t */
-
-#define __OFF_MAX __LONG_MAX /* max value for an off_t */
-#define __OFF_MIN __LONG_MIN /* min value for an off_t */
-
-/* Quads and longs are the same. Ensure they stay in sync. */
-#define __UQUAD_MAX (__ULONG_MAX) /* max value for a uquad_t */
-#define __QUAD_MAX (__LONG_MAX) /* max value for a quad_t */
-#define __QUAD_MIN (__LONG_MIN) /* min value for a quad_t */
-
-#define __LONG_BIT 64
-#define __WORD_BIT 32
-
-/* Minimum signal stack size. */
-#define __MINSIGSTKSZ (3072 * 4)
-
-#endif /* !_MACHINE__LIMITS_H_ */
diff --git a/sys/ia64/include/_regset.h b/sys/ia64/include/_regset.h
deleted file mode 100644
index 1abe2ab..0000000
--- a/sys/ia64/include/_regset.h
+++ /dev/null
@@ -1,275 +0,0 @@
-/*-
- * Copyright (c) 2002, 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_REGSET_H_
-#define _MACHINE_REGSET_H_
-
-/*
- * Create register sets, based on the runtime specification. This allows
- * us to better reuse code and to copy sets around more efficiently.
- * Contexts are defined in terms of these sets. These include trapframe,
- * sigframe, pcb, mcontext, reg and fpreg. Other candidates are unwind
- * and coredump related contexts.
- *
- * Notes:
- * o Constant registers (r0, f0 and f1) are not accounted for,
- * o The stacked registers (r32-r127) are not accounted for,
- * o Predicates are not split across sets.
- */
-
-/* A single FP register. */
-union _ia64_fpreg {
- unsigned char fpr_bits[16];
- long double fpr_flt;
-};
-
-/*
- * Special registers.
- */
-struct _special {
- unsigned long sp;
- unsigned long unat; /* NaT before spilling */
- unsigned long rp;
- unsigned long pr;
- unsigned long pfs;
- unsigned long bspstore;
- unsigned long rnat;
- unsigned long __spare;
- /* Userland context and syscalls */
- unsigned long tp;
- unsigned long rsc;
- unsigned long fpsr;
- unsigned long psr;
- /* ASYNC: Interrupt specific */
- unsigned long gp;
- unsigned long ndirty;
- unsigned long cfm;
- unsigned long iip;
- unsigned long ifa;
- unsigned long isr;
-};
-
-struct _high_fp {
- union _ia64_fpreg fr32;
- union _ia64_fpreg fr33;
- union _ia64_fpreg fr34;
- union _ia64_fpreg fr35;
- union _ia64_fpreg fr36;
- union _ia64_fpreg fr37;
- union _ia64_fpreg fr38;
- union _ia64_fpreg fr39;
- union _ia64_fpreg fr40;
- union _ia64_fpreg fr41;
- union _ia64_fpreg fr42;
- union _ia64_fpreg fr43;
- union _ia64_fpreg fr44;
- union _ia64_fpreg fr45;
- union _ia64_fpreg fr46;
- union _ia64_fpreg fr47;
- union _ia64_fpreg fr48;
- union _ia64_fpreg fr49;
- union _ia64_fpreg fr50;
- union _ia64_fpreg fr51;
- union _ia64_fpreg fr52;
- union _ia64_fpreg fr53;
- union _ia64_fpreg fr54;
- union _ia64_fpreg fr55;
- union _ia64_fpreg fr56;
- union _ia64_fpreg fr57;
- union _ia64_fpreg fr58;
- union _ia64_fpreg fr59;
- union _ia64_fpreg fr60;
- union _ia64_fpreg fr61;
- union _ia64_fpreg fr62;
- union _ia64_fpreg fr63;
- union _ia64_fpreg fr64;
- union _ia64_fpreg fr65;
- union _ia64_fpreg fr66;
- union _ia64_fpreg fr67;
- union _ia64_fpreg fr68;
- union _ia64_fpreg fr69;
- union _ia64_fpreg fr70;
- union _ia64_fpreg fr71;
- union _ia64_fpreg fr72;
- union _ia64_fpreg fr73;
- union _ia64_fpreg fr74;
- union _ia64_fpreg fr75;
- union _ia64_fpreg fr76;
- union _ia64_fpreg fr77;
- union _ia64_fpreg fr78;
- union _ia64_fpreg fr79;
- union _ia64_fpreg fr80;
- union _ia64_fpreg fr81;
- union _ia64_fpreg fr82;
- union _ia64_fpreg fr83;
- union _ia64_fpreg fr84;
- union _ia64_fpreg fr85;
- union _ia64_fpreg fr86;
- union _ia64_fpreg fr87;
- union _ia64_fpreg fr88;
- union _ia64_fpreg fr89;
- union _ia64_fpreg fr90;
- union _ia64_fpreg fr91;
- union _ia64_fpreg fr92;
- union _ia64_fpreg fr93;
- union _ia64_fpreg fr94;
- union _ia64_fpreg fr95;
- union _ia64_fpreg fr96;
- union _ia64_fpreg fr97;
- union _ia64_fpreg fr98;
- union _ia64_fpreg fr99;
- union _ia64_fpreg fr100;
- union _ia64_fpreg fr101;
- union _ia64_fpreg fr102;
- union _ia64_fpreg fr103;
- union _ia64_fpreg fr104;
- union _ia64_fpreg fr105;
- union _ia64_fpreg fr106;
- union _ia64_fpreg fr107;
- union _ia64_fpreg fr108;
- union _ia64_fpreg fr109;
- union _ia64_fpreg fr110;
- union _ia64_fpreg fr111;
- union _ia64_fpreg fr112;
- union _ia64_fpreg fr113;
- union _ia64_fpreg fr114;
- union _ia64_fpreg fr115;
- union _ia64_fpreg fr116;
- union _ia64_fpreg fr117;
- union _ia64_fpreg fr118;
- union _ia64_fpreg fr119;
- union _ia64_fpreg fr120;
- union _ia64_fpreg fr121;
- union _ia64_fpreg fr122;
- union _ia64_fpreg fr123;
- union _ia64_fpreg fr124;
- union _ia64_fpreg fr125;
- union _ia64_fpreg fr126;
- union _ia64_fpreg fr127;
-};
-
-/*
- * Preserved registers.
- */
-struct _callee_saved {
- unsigned long unat; /* NaT after spilling. */
- unsigned long gr4;
- unsigned long gr5;
- unsigned long gr6;
- unsigned long gr7;
- unsigned long br1;
- unsigned long br2;
- unsigned long br3;
- unsigned long br4;
- unsigned long br5;
- unsigned long lc;
- unsigned long __spare;
-};
-
-struct _callee_saved_fp {
- union _ia64_fpreg fr2;
- union _ia64_fpreg fr3;
- union _ia64_fpreg fr4;
- union _ia64_fpreg fr5;
- union _ia64_fpreg fr16;
- union _ia64_fpreg fr17;
- union _ia64_fpreg fr18;
- union _ia64_fpreg fr19;
- union _ia64_fpreg fr20;
- union _ia64_fpreg fr21;
- union _ia64_fpreg fr22;
- union _ia64_fpreg fr23;
- union _ia64_fpreg fr24;
- union _ia64_fpreg fr25;
- union _ia64_fpreg fr26;
- union _ia64_fpreg fr27;
- union _ia64_fpreg fr28;
- union _ia64_fpreg fr29;
- union _ia64_fpreg fr30;
- union _ia64_fpreg fr31;
-};
-
-/*
- * Scratch registers.
- */
-struct _caller_saved {
- unsigned long unat; /* NaT after spilling. */
- unsigned long gr2;
- unsigned long gr3;
- unsigned long gr8;
- unsigned long gr9;
- unsigned long gr10;
- unsigned long gr11;
- unsigned long gr14;
- unsigned long gr15;
- unsigned long gr16;
- unsigned long gr17;
- unsigned long gr18;
- unsigned long gr19;
- unsigned long gr20;
- unsigned long gr21;
- unsigned long gr22;
- unsigned long gr23;
- unsigned long gr24;
- unsigned long gr25;
- unsigned long gr26;
- unsigned long gr27;
- unsigned long gr28;
- unsigned long gr29;
- unsigned long gr30;
- unsigned long gr31;
- unsigned long br6;
- unsigned long br7;
- unsigned long ccv;
- unsigned long csd;
- unsigned long ssd;
-};
-
-struct _caller_saved_fp {
- union _ia64_fpreg fr6;
- union _ia64_fpreg fr7;
- union _ia64_fpreg fr8;
- union _ia64_fpreg fr9;
- union _ia64_fpreg fr10;
- union _ia64_fpreg fr11;
- union _ia64_fpreg fr12;
- union _ia64_fpreg fr13;
- union _ia64_fpreg fr14;
- union _ia64_fpreg fr15;
-};
-
-#ifdef _KERNEL
-void restore_callee_saved(const struct _callee_saved *);
-void restore_callee_saved_fp(const struct _callee_saved_fp *);
-void restore_high_fp(const struct _high_fp *);
-void save_callee_saved(struct _callee_saved *);
-void save_callee_saved_fp(struct _callee_saved_fp *);
-void save_high_fp(struct _high_fp *);
-#endif
-
-#endif /* _MACHINE_REGSET_H_ */
diff --git a/sys/ia64/include/_stdint.h b/sys/ia64/include/_stdint.h
deleted file mode 100644
index cb3b1a2..0000000
--- a/sys/ia64/include/_stdint.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*-
- * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org>
- * Copyright (c) 2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Klaus Klein.
- *
- * 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE__STDINT_H_
-#define _MACHINE__STDINT_H_
-
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)
-
-#define INT8_C(c) (c)
-#define INT16_C(c) (c)
-#define INT32_C(c) (c)
-#define INT64_C(c) (c ## L)
-
-#define UINT8_C(c) (c)
-#define UINT16_C(c) (c)
-#define UINT32_C(c) (c ## U)
-#define UINT64_C(c) (c ## UL)
-
-#define INTMAX_C(c) INT64_C(c)
-#define UINTMAX_C(c) UINT64_C(c)
-
-#endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */
-
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.1 Limits of exact-width integer types
- */
-/* Minimum values of exact-width signed integer types. */
-#define INT8_MIN (-0x7f-1)
-#define INT16_MIN (-0x7fff-1)
-#define INT32_MIN (-0x7fffffff-1)
-#define INT64_MIN (-0x7fffffffffffffffL-1)
-
-/* Maximum values of exact-width signed integer types. */
-#define INT8_MAX 0x7f
-#define INT16_MAX 0x7fff
-#define INT32_MAX 0x7fffffff
-#define INT64_MAX 0x7fffffffffffffffL
-
-/* Maximum values of exact-width unsigned integer types. */
-#define UINT8_MAX 0xff
-#define UINT16_MAX 0xffff
-#define UINT32_MAX 0xffffffffU
-#define UINT64_MAX 0xffffffffffffffffUL
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.2 Limits of minimum-width integer types
- */
-/* Minimum values of minimum-width signed integer types. */
-#define INT_LEAST8_MIN INT8_MIN
-#define INT_LEAST16_MIN INT16_MIN
-#define INT_LEAST32_MIN INT32_MIN
-#define INT_LEAST64_MIN INT64_MIN
-
-/* Maximum values of minimum-width signed integer types. */
-#define INT_LEAST8_MAX INT8_MAX
-#define INT_LEAST16_MAX INT16_MAX
-#define INT_LEAST32_MAX INT32_MAX
-#define INT_LEAST64_MAX INT64_MAX
-
-/* Maximum values of minimum-width unsigned integer types. */
-#define UINT_LEAST8_MAX UINT8_MAX
-#define UINT_LEAST16_MAX UINT16_MAX
-#define UINT_LEAST32_MAX UINT32_MAX
-#define UINT_LEAST64_MAX UINT64_MAX
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.3 Limits of fastest minimum-width integer types
- */
-/* Minimum values of fastest minimum-width signed integer types. */
-#define INT_FAST8_MIN INT32_MIN
-#define INT_FAST16_MIN INT32_MIN
-#define INT_FAST32_MIN INT32_MIN
-#define INT_FAST64_MIN INT64_MIN
-
-/* Maximum values of fastest minimum-width signed integer types. */
-#define INT_FAST8_MAX INT32_MAX
-#define INT_FAST16_MAX INT32_MAX
-#define INT_FAST32_MAX INT32_MAX
-#define INT_FAST64_MAX INT64_MAX
-
-/* Maximum values of fastest minimum-width unsigned integer types. */
-#define UINT_FAST8_MAX UINT32_MAX
-#define UINT_FAST16_MAX UINT32_MAX
-#define UINT_FAST32_MAX UINT32_MAX
-#define UINT_FAST64_MAX UINT64_MAX
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.4 Limits of integer types capable of holding object pointers
- */
-#define INTPTR_MIN INT64_MIN
-#define INTPTR_MAX INT64_MAX
-#define UINTPTR_MAX UINT64_MAX
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.5 Limits of greatest-width integer types
- */
-#define INTMAX_MIN INT64_MIN
-#define INTMAX_MAX INT64_MAX
-#define UINTMAX_MAX UINT64_MAX
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.3 Limits of other integer types
- */
-/* Limits of ptrdiff_t. */
-#define PTRDIFF_MIN INT64_MIN
-#define PTRDIFF_MAX INT64_MAX
-
-/* Limits of sig_atomic_t. */
-#define SIG_ATOMIC_MIN INT32_MIN
-#define SIG_ATOMIC_MAX INT32_MAX
-
-/* Limit of size_t. */
-#define SIZE_MAX UINT64_MAX
-
-/* Limits of wint_t. */
-#define WINT_MIN INT32_MIN
-#define WINT_MAX INT32_MAX
-
-#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */
-
-#endif /* !_MACHINE__STDINT_H_ */
diff --git a/sys/ia64/include/_types.h b/sys/ia64/include/_types.h
deleted file mode 100644
index 572b969..0000000
--- a/sys/ia64/include/_types.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*-
- * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * From: @(#)ansi.h 8.2 (Berkeley) 1/4/94
- * From: @(#)types.h 8.3 (Berkeley) 1/5/94
- * $FreeBSD$
- */
-
-#ifndef _MACHINE__TYPES_H_
-#define _MACHINE__TYPES_H_
-
-#ifndef _SYS_CDEFS_H_
-#error this file needs sys/cdefs.h as a prerequisite
-#endif
-
-/*
- * Basic types upon which most other types are built.
- */
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef short __int16_t;
-typedef unsigned short __uint16_t;
-typedef int __int32_t;
-typedef unsigned int __uint32_t;
-typedef long __int64_t;
-typedef unsigned long __uint64_t;
-
-/*
- * Standard type definitions.
- */
-typedef __int32_t __clock_t; /* clock()... */
-typedef __int64_t __critical_t;
-typedef double __double_t;
-typedef float __float_t;
-typedef __int64_t __intfptr_t;
-typedef __int64_t __intmax_t;
-typedef __int64_t __intptr_t;
-typedef __int32_t __int_fast8_t;
-typedef __int32_t __int_fast16_t;
-typedef __int32_t __int_fast32_t;
-typedef __int64_t __int_fast64_t;
-typedef __int8_t __int_least8_t;
-typedef __int16_t __int_least16_t;
-typedef __int32_t __int_least32_t;
-typedef __int64_t __int_least64_t;
-typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */
-typedef __int64_t __register_t;
-typedef __int64_t __segsz_t; /* segment size (in pages) */
-typedef __uint64_t __size_t; /* sizeof() */
-typedef __int64_t __ssize_t; /* byte count or error */
-typedef __int64_t __time_t; /* time()... */
-typedef __uint64_t __uintfptr_t;
-typedef __uint64_t __uintmax_t;
-typedef __uint64_t __uintptr_t;
-typedef __uint32_t __uint_fast8_t;
-typedef __uint32_t __uint_fast16_t;
-typedef __uint32_t __uint_fast32_t;
-typedef __uint64_t __uint_fast64_t;
-typedef __uint8_t __uint_least8_t;
-typedef __uint16_t __uint_least16_t;
-typedef __uint32_t __uint_least32_t;
-typedef __uint64_t __uint_least64_t;
-typedef __uint64_t __u_register_t;
-typedef __uint64_t __vm_offset_t;
-typedef __int64_t __vm_ooffset_t;
-typedef __uint64_t __vm_paddr_t;
-typedef __uint64_t __vm_pindex_t;
-typedef __uint64_t __vm_size_t;
-typedef int ___wchar_t;
-
-#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
-#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
-
-/*
- * Unusual type definitions.
- */
-#ifdef __GNUCLIKE_BUILTIN_VARARGS
-typedef __builtin_va_list __va_list; /* internally known to gcc */
-#if defined(__GNUC_VA_LIST_COMPATIBILITY) && !defined(__GNUC_VA_LIST) \
- && !defined(__NO_GNUC_VA_LIST)
-#define __GNUC_VA_LIST
-typedef __va_list __gnuc_va_list; /* compat. with GNU headers */
-#endif
-#else
-#ifdef lint
-typedef char * __va_list; /* non-functional */
-#else
-#error Must add va_list support for this non-GCC compiler.
-#endif /* lint */
-#endif /* __GNUCLIKE_BUILTIN_VARARGS */
-
-#endif /* !_MACHINE__TYPES_H_ */
diff --git a/sys/ia64/include/acpica_machdep.h b/sys/ia64/include/acpica_machdep.h
deleted file mode 100644
index 2f861e8..0000000
--- a/sys/ia64/include/acpica_machdep.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*-
- * Copyright (c) 2002 Mitsuru IWASAKI
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-/******************************************************************************
- *
- * Name: acpica_machdep.h - arch-specific defines, etc.
- * $Revision$
- *
- *****************************************************************************/
-
-#ifndef __ACPICA_MACHDEP_H__
-#define __ACPICA_MACHDEP_H__
-
-#ifdef _KERNEL
-
-/*
- * Calling conventions:
- *
- * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads)
- * ACPI_EXTERNAL_XFACE - External ACPI interfaces
- * ACPI_INTERNAL_XFACE - Internal ACPI interfaces
- * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces
- */
-#define ACPI_SYSTEM_XFACE
-#define ACPI_EXTERNAL_XFACE
-#define ACPI_INTERNAL_XFACE
-#define ACPI_INTERNAL_VAR_XFACE
-
-/* Asm macros */
-
-#define ACPI_ASM_MACROS
-#define BREAKPOINT3
-#define ACPI_DISABLE_IRQS() ia64_disable_intr()
-#define ACPI_ENABLE_IRQS() ia64_enable_intr()
-
-#define ACPI_FLUSH_CPU_CACHE() /* XXX ia64_fc()? */
-
-/* Section 5.2.10.1: global lock acquire/release functions */
-int acpi_acquire_global_lock(volatile uint32_t *);
-int acpi_release_global_lock(volatile uint32_t *);
-#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) do { \
- (Acq) = acpi_acquire_global_lock(&((GLptr)->GlobalLock)); \
-} while (0)
-#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) do { \
- (Acq) = acpi_release_global_lock(&((GLptr)->GlobalLock)); \
-} while (0)
-
-void acpi_cpu_c1(void);
-
-#endif /* _KERNEL */
-
-#endif /* __ACPICA_MACHDEP_H__ */
diff --git a/sys/ia64/include/asm.h b/sys/ia64/include/asm.h
deleted file mode 100644
index 4b4236d..0000000
--- a/sys/ia64/include/asm.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: asm.h,v 1.18 1997/11/03 04:22:06 ross Exp */
-
-/*-
- * Copyright (c) 1991,1990,1989,1994,1995,1996 Carnegie Mellon University
- * All Rights Reserved.
- *
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie Mellon
- * the rights to redistribute these changes.
- */
-
-/*
- * Assembly coding style
- *
- * This file contains macros and register defines to
- * aid in writing more readable assembly code.
- * Some rules to make assembly code understandable by
- * a debugger are also noted.
- */
-
-/*
- * Macro to make a local label name.
- */
-#define LLABEL(name,num) L ## name ## num
-
-/*
- * MCOUNT
- */
-#if defined(PROF) || (defined(_KERNEL) && defined(GPROF))
-#define MCOUNT \
- alloc out0 = ar.pfs, 8, 0, 4, 0; \
- mov out1 = r1; \
- mov out2 = b0;; \
- mov out3 = r0; \
- br.call.sptk b0 = _mcount;;
-#else
-#define MCOUNT /* nothing */
-#endif
-
-/*
- * ENTRY
- * Declare a global leaf function.
- * A leaf function does not call other functions.
- */
-#define ENTRY(_name_, _n_args_) \
- .global _name_; \
- .align 32; \
- .proc _name_; \
-_name_:; \
- .regstk _n_args_, 0, 0, 0; \
- MCOUNT
-
-#define ENTRY_NOPROFILE(_name_, _n_args_) \
- .global _name_; \
- .align 32; \
- .proc _name_; \
-_name_:; \
- .regstk _n_args_, 0, 0, 0
-
-/*
- * STATIC_ENTRY
- * Declare a local leaf function.
- */
-#define STATIC_ENTRY(_name_, _n_args_) \
- .align 32; \
- .proc _name_; \
-_name_:; \
- .regstk _n_args_, 0, 0, 0 \
- MCOUNT
-/*
- * XENTRY
- * Global alias for a leaf function, or alternate entry point
- */
-#define XENTRY(_name_) \
- .globl _name_; \
-_name_:
-
-/*
- * STATIC_XENTRY
- * Local alias for a leaf function, or alternate entry point
- */
-#define STATIC_XENTRY(_name_) \
-_name_:
-
-
-/*
- * END
- * Function delimiter
- */
-#define END(_name_) \
- .endp _name_
-
-
-/*
- * EXPORT
- * Export a symbol
- */
-#define EXPORT(_name_) \
- .global _name_; \
-_name_:
-
-
-/*
- * IMPORT
- * Make an external name visible, typecheck the size
- */
-#define IMPORT(_name_, _size_) \
- /* .extern _name_,_size_ */
-
-
-/*
- * ABS
- * Define an absolute symbol
- */
-#define ABS(_name_, _value_) \
- .globl _name_; \
-_name_ = _value_
-
-
-/*
- * BSS
- * Allocate un-initialized space for a global symbol
- */
-#define BSS(_name_,_numbytes_) \
- .comm _name_,_numbytes_
-
-
-/*
- * MSG
- * Allocate space for a message (a read-only ascii string)
- */
-#define ASCIZ .asciz
-#define MSG(msg,reg,label) \
- addl reg,@ltoff(label),gp;; \
- ld8 reg=[reg];; \
- .data; \
-label: ASCIZ msg; \
- .text;
-
-
-/*
- * System call glue.
- */
-#define SYSCALLNUM(name) SYS_ ## name
-
-#define CALLSYS_NOERROR(name) \
- .prologue ; \
- .unwabi @svr4, 'S' ; \
- .save rp, r0 ; \
- .body ; \
-{ .mmi ; \
- alloc r9 = ar.pfs, 0, 0, 8, 0 ; \
- mov r31 = ar.k5 ; \
- mov r10 = b0 ;; } \
-{ .mib ; \
- mov r8 = SYSCALLNUM(name) ; \
- mov b7 = r31 ; \
- br.call.sptk b0 = b7 ;; }
-
-
-/*
- * WEAK_ALIAS: create a weak alias (ELF only).
- */
-#define WEAK_ALIAS(alias,sym) \
- .weak alias; \
- alias = sym
-
-/*
- * ID tag macros
- */
-#if !defined(lint) && !defined(STRIP_FBSDID)
-#define __FBSDID(s) .ident s
-#else
-#define __FBSDID(s) /* nothing */
-#endif /* not lint and not STRIP_FBSDID */
diff --git a/sys/ia64/include/atomic.h b/sys/ia64/include/atomic.h
deleted file mode 100644
index e8ac7a7..0000000
--- a/sys/ia64/include/atomic.h
+++ /dev/null
@@ -1,417 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_ATOMIC_H_
-#define _MACHINE_ATOMIC_H_
-
-#define mb() __asm __volatile("mf")
-#define wmb() mb()
-#define rmb() mb()
-
-/*
- * Various simple arithmetic on memory which is atomic in the presence
- * of interrupts and SMP safe.
- */
-
-/*
- * Everything is built out of cmpxchg.
- */
-#define IA64_CMPXCHG(sz, sem, p, cmpval, newval, ret) \
- __asm __volatile ( \
- "mov ar.ccv=%2;;\n\t" \
- "cmpxchg" #sz "." #sem " %0=%4,%3,ar.ccv\n\t" \
- : "=r" (ret), "=m" (*p) \
- : "r" ((uint64_t)cmpval), "r" (newval), "m" (*p) \
- : "memory")
-
-/*
- * Some common forms of cmpxch.
- */
-static __inline uint32_t
-ia64_cmpxchg_acq_32(volatile uint32_t* p, uint32_t cmpval, uint32_t newval)
-{
- uint32_t ret;
- IA64_CMPXCHG(4, acq, p, cmpval, newval, ret);
- return (ret);
-}
-
-static __inline uint32_t
-ia64_cmpxchg_rel_32(volatile uint32_t* p, uint32_t cmpval, uint32_t newval)
-{
- uint32_t ret;
- IA64_CMPXCHG(4, rel, p, cmpval, newval, ret);
- return (ret);
-}
-
-static __inline uint64_t
-ia64_cmpxchg_acq_64(volatile uint64_t* p, uint64_t cmpval, uint64_t newval)
-{
- uint64_t ret;
- IA64_CMPXCHG(8, acq, p, cmpval, newval, ret);
- return (ret);
-}
-
-static __inline uint64_t
-ia64_cmpxchg_rel_64(volatile uint64_t* p, uint64_t cmpval, uint64_t newval)
-{
- uint64_t ret;
- IA64_CMPXCHG(8, rel, p, cmpval, newval, ret);
- return (ret);
-}
-
-#define ATOMIC_STORE_LOAD(type, width, size) \
- static __inline uint##width##_t \
- ia64_ld_acq_##width(volatile uint##width##_t* p) \
- { \
- uint##width##_t v; \
- __asm __volatile ("ld" size ".acq %0=%1" : "=r" (v) \
- : "m" (*p) : "memory"); \
- return (v); \
- } \
- \
- static __inline uint##width##_t \
- atomic_load_acq_##width(volatile uint##width##_t* p) \
- { \
- uint##width##_t v; \
- __asm __volatile ("ld" size ".acq %0=%1" : "=r" (v) \
- : "m" (*p) : "memory"); \
- return (v); \
- } \
- \
- static __inline uint##width##_t \
- atomic_load_acq_##type(volatile uint##width##_t* p) \
- { \
- uint##width##_t v; \
- __asm __volatile ("ld" size ".acq %0=%1" : "=r" (v) \
- : "m" (*p) : "memory"); \
- return (v); \
- } \
- \
- static __inline void \
- ia64_st_rel_##width(volatile uint##width##_t* p, uint##width##_t v) \
- { \
- __asm __volatile ("st" size ".rel %0=%1" : "=m" (*p) \
- : "r" (v) : "memory"); \
- } \
- \
- static __inline void \
- atomic_store_rel_##width(volatile uint##width##_t* p, \
- uint##width##_t v) \
- { \
- __asm __volatile ("st" size ".rel %0=%1" : "=m" (*p) \
- : "r" (v) : "memory"); \
- } \
- \
- static __inline void \
- atomic_store_rel_##type(volatile uint##width##_t* p, \
- uint##width##_t v) \
- { \
- __asm __volatile ("st" size ".rel %0=%1" : "=m" (*p) \
- : "r" (v) : "memory"); \
- }
-
-ATOMIC_STORE_LOAD(char, 8, "1")
-ATOMIC_STORE_LOAD(short, 16, "2")
-ATOMIC_STORE_LOAD(int, 32, "4")
-ATOMIC_STORE_LOAD(long, 64, "8")
-
-#undef ATOMIC_STORE_LOAD
-
-#define atomic_load_acq_ptr(p) \
- ((void *)atomic_load_acq_64((volatile uint64_t *)p))
-
-#define atomic_store_rel_ptr(p, v) \
- atomic_store_rel_64((volatile uint64_t *)p, (uint64_t)v)
-
-#define IA64_ATOMIC(sz, type, name, width, op) \
- static __inline type \
- atomic_##name##_acq_##width(volatile type *p, type v) \
- { \
- type old, ret; \
- do { \
- old = *p; \
- IA64_CMPXCHG(sz, acq, p, old, old op v, ret); \
- } while (ret != old); \
- return (old); \
- } \
- \
- static __inline type \
- atomic_##name##_rel_##width(volatile type *p, type v) \
- { \
- type old, ret; \
- do { \
- old = *p; \
- IA64_CMPXCHG(sz, rel, p, old, old op v, ret); \
- } while (ret != old); \
- return (old); \
- }
-
-IA64_ATOMIC(1, uint8_t, set, 8, |)
-IA64_ATOMIC(2, uint16_t, set, 16, |)
-IA64_ATOMIC(4, uint32_t, set, 32, |)
-IA64_ATOMIC(8, uint64_t, set, 64, |)
-
-IA64_ATOMIC(1, uint8_t, clear, 8, &~)
-IA64_ATOMIC(2, uint16_t, clear, 16, &~)
-IA64_ATOMIC(4, uint32_t, clear, 32, &~)
-IA64_ATOMIC(8, uint64_t, clear, 64, &~)
-
-IA64_ATOMIC(1, uint8_t, add, 8, +)
-IA64_ATOMIC(2, uint16_t, add, 16, +)
-IA64_ATOMIC(4, uint32_t, add, 32, +)
-IA64_ATOMIC(8, uint64_t, add, 64, +)
-
-IA64_ATOMIC(1, uint8_t, subtract, 8, -)
-IA64_ATOMIC(2, uint16_t, subtract, 16, -)
-IA64_ATOMIC(4, uint32_t, subtract, 32, -)
-IA64_ATOMIC(8, uint64_t, subtract, 64, -)
-
-#undef IA64_ATOMIC
-
-#define atomic_set_8 atomic_set_acq_8
-#define atomic_clear_8 atomic_clear_acq_8
-#define atomic_add_8 atomic_add_acq_8
-#define atomic_subtract_8 atomic_subtract_acq_8
-
-#define atomic_set_16 atomic_set_acq_16
-#define atomic_clear_16 atomic_clear_acq_16
-#define atomic_add_16 atomic_add_acq_16
-#define atomic_subtract_16 atomic_subtract_acq_16
-
-#define atomic_set_32 atomic_set_acq_32
-#define atomic_clear_32 atomic_clear_acq_32
-#define atomic_add_32 atomic_add_acq_32
-#define atomic_subtract_32 atomic_subtract_acq_32
-
-#define atomic_set_64 atomic_set_acq_64
-#define atomic_clear_64 atomic_clear_acq_64
-#define atomic_add_64 atomic_add_acq_64
-#define atomic_subtract_64 atomic_subtract_acq_64
-
-#define atomic_set_char atomic_set_8
-#define atomic_clear_char atomic_clear_8
-#define atomic_add_char atomic_add_8
-#define atomic_subtract_char atomic_subtract_8
-#define atomic_set_acq_char atomic_set_acq_8
-#define atomic_clear_acq_char atomic_clear_acq_8
-#define atomic_add_acq_char atomic_add_acq_8
-#define atomic_subtract_acq_char atomic_subtract_acq_8
-#define atomic_set_rel_char atomic_set_rel_8
-#define atomic_clear_rel_char atomic_clear_rel_8
-#define atomic_add_rel_char atomic_add_rel_8
-#define atomic_subtract_rel_char atomic_subtract_rel_8
-
-#define atomic_set_short atomic_set_16
-#define atomic_clear_short atomic_clear_16
-#define atomic_add_short atomic_add_16
-#define atomic_subtract_short atomic_subtract_16
-#define atomic_set_acq_short atomic_set_acq_16
-#define atomic_clear_acq_short atomic_clear_acq_16
-#define atomic_add_acq_short atomic_add_acq_16
-#define atomic_subtract_acq_short atomic_subtract_acq_16
-#define atomic_set_rel_short atomic_set_rel_16
-#define atomic_clear_rel_short atomic_clear_rel_16
-#define atomic_add_rel_short atomic_add_rel_16
-#define atomic_subtract_rel_short atomic_subtract_rel_16
-
-#define atomic_set_int atomic_set_32
-#define atomic_clear_int atomic_clear_32
-#define atomic_add_int atomic_add_32
-#define atomic_subtract_int atomic_subtract_32
-#define atomic_set_acq_int atomic_set_acq_32
-#define atomic_clear_acq_int atomic_clear_acq_32
-#define atomic_add_acq_int atomic_add_acq_32
-#define atomic_subtract_acq_int atomic_subtract_acq_32
-#define atomic_set_rel_int atomic_set_rel_32
-#define atomic_clear_rel_int atomic_clear_rel_32
-#define atomic_add_rel_int atomic_add_rel_32
-#define atomic_subtract_rel_int atomic_subtract_rel_32
-
-#define atomic_set_long atomic_set_64
-#define atomic_clear_long atomic_clear_64
-#define atomic_add_long atomic_add_64
-#define atomic_subtract_long atomic_subtract_64
-#define atomic_set_acq_long atomic_set_acq_64
-#define atomic_clear_acq_long atomic_clear_acq_64
-#define atomic_add_acq_long atomic_add_acq_64
-#define atomic_subtract_acq_long atomic_subtract_acq_64
-#define atomic_set_rel_long atomic_set_rel_64
-#define atomic_clear_rel_long atomic_clear_rel_64
-#define atomic_add_rel_long atomic_add_rel_64
-#define atomic_subtract_rel_long atomic_subtract_rel_64
-
-/* XXX Needs casting. */
-#define atomic_set_ptr atomic_set_64
-#define atomic_clear_ptr atomic_clear_64
-#define atomic_add_ptr atomic_add_64
-#define atomic_subtract_ptr atomic_subtract_64
-#define atomic_set_acq_ptr atomic_set_acq_64
-#define atomic_clear_acq_ptr atomic_clear_acq_64
-#define atomic_add_acq_ptr atomic_add_acq_64
-#define atomic_subtract_acq_ptr atomic_subtract_acq_64
-#define atomic_set_rel_ptr atomic_set_rel_64
-#define atomic_clear_rel_ptr atomic_clear_rel_64
-#define atomic_add_rel_ptr atomic_add_rel_64
-#define atomic_subtract_rel_ptr atomic_subtract_rel_64
-
-#undef IA64_CMPXCHG
-
-/*
- * Atomically compare the value stored at *p with cmpval and if the
- * two values are equal, update the value of *p with newval. Returns
- * zero if the compare failed, nonzero otherwise.
- */
-static __inline int
-atomic_cmpset_acq_32(volatile uint32_t* p, uint32_t cmpval, uint32_t newval)
-{
- return (ia64_cmpxchg_acq_32(p, cmpval, newval) == cmpval);
-}
-
-static __inline int
-atomic_cmpset_rel_32(volatile uint32_t* p, uint32_t cmpval, uint32_t newval)
-{
- return (ia64_cmpxchg_rel_32(p, cmpval, newval) == cmpval);
-}
-
-/*
- * Atomically compare the value stored at *p with cmpval and if the
- * two values are equal, update the value of *p with newval. Returns
- * zero if the compare failed, nonzero otherwise.
- */
-static __inline int
-atomic_cmpset_acq_64(volatile uint64_t* p, uint64_t cmpval, uint64_t newval)
-{
- return (ia64_cmpxchg_acq_64(p, cmpval, newval) == cmpval);
-}
-
-static __inline int
-atomic_cmpset_rel_64(volatile uint64_t* p, uint64_t cmpval, uint64_t newval)
-{
- return (ia64_cmpxchg_rel_64(p, cmpval, newval) == cmpval);
-}
-
-#define atomic_cmpset_32 atomic_cmpset_acq_32
-#define atomic_cmpset_64 atomic_cmpset_acq_64
-#define atomic_cmpset_int atomic_cmpset_32
-#define atomic_cmpset_long atomic_cmpset_64
-#define atomic_cmpset_acq_int atomic_cmpset_acq_32
-#define atomic_cmpset_rel_int atomic_cmpset_rel_32
-#define atomic_cmpset_acq_long atomic_cmpset_acq_64
-#define atomic_cmpset_rel_long atomic_cmpset_rel_64
-
-#define atomic_cmpset_acq_ptr(p, o, n) \
- (atomic_cmpset_acq_64((volatile uint64_t *)p, (uint64_t)o, (uint64_t)n))
-
-#define atomic_cmpset_ptr atomic_cmpset_acq_ptr
-
-#define atomic_cmpset_rel_ptr(p, o, n) \
- (atomic_cmpset_rel_64((volatile uint64_t *)p, (uint64_t)o, (uint64_t)n))
-
-static __inline uint32_t
-atomic_readandclear_32(volatile uint32_t* p)
-{
- uint32_t val;
- do {
- val = *p;
- } while (!atomic_cmpset_32(p, val, 0));
- return (val);
-}
-
-static __inline uint64_t
-atomic_readandclear_64(volatile uint64_t* p)
-{
- uint64_t val;
- do {
- val = *p;
- } while (!atomic_cmpset_64(p, val, 0));
- return (val);
-}
-
-#define atomic_readandclear_int atomic_readandclear_32
-#define atomic_readandclear_long atomic_readandclear_64
-#define atomic_readandclear_ptr atomic_readandclear_64
-
-/*
- * Atomically add the value of v to the integer pointed to by p and return
- * the previous value of *p.
- *
- * XXX: Should we use the fetchadd instruction here?
- */
-static __inline uint32_t
-atomic_fetchadd_32(volatile uint32_t *p, uint32_t v)
-{
- uint32_t value;
-
- do {
- value = *p;
- } while (!atomic_cmpset_32(p, value, value + v));
- return (value);
-}
-
-#define atomic_fetchadd_int atomic_fetchadd_32
-
-static __inline u_long
-atomic_fetchadd_long(volatile u_long *p, u_long v)
-{
- u_long value;
-
- do {
- value = *p;
- } while (!atomic_cmpset_64(p, value, value + v));
- return (value);
-}
-
-/*
- * <type> atomic_swap_<type>(volatile <type> *p, <type> v);
- */
-
-static __inline uint32_t
-atomic_swap_32(volatile uint32_t *p, uint32_t v)
-{
- uint32_t r;
-
- __asm __volatile ("xchg4 %0 = %3, %2;;" : "=r"(r), "=m"(*p) :
- "r"(v), "m"(*p) : "memory");
- return (r);
-}
-
-static __inline uint64_t
-atomic_swap_64(volatile uint64_t *p, uint64_t v)
-{
- uint64_t r;
-
- __asm __volatile ("xchg8 %0 = %3, %2;;" : "=r"(r), "=m"(*p) :
- "r"(v), "m"(*p) : "memory");
- return (r);
-}
-
-#define atomic_swap_int atomic_swap_32
-#define atomic_swap_long atomic_swap_64
-#define atomic_swap_ptr atomic_swap_64
-
-#endif /* ! _MACHINE_ATOMIC_H_ */
diff --git a/sys/ia64/include/bootinfo.h b/sys/ia64/include/bootinfo.h
deleted file mode 100644
index ed3accd..0000000
--- a/sys/ia64/include/bootinfo.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* $FreeBSD$ */
-/*-
- * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-struct bootinfo {
- uint64_t bi_magic; /* BOOTINFO_MAGIC */
-#define BOOTINFO_MAGIC 0xdeadbeeffeedface
- uint64_t bi_version; /* version 1 */
- uint64_t bi_spare[3]; /* was: name of booted kernel */
- uint32_t bi_itr_used; /* Number of ITR and DTR ... */
- uint32_t bi_dtr_used; /* ... entries used. */
- uint32_t bi_text_mapped; /* Size of text mapped. */
- uint32_t bi_data_mapped; /* Size of data mapped. */
- uint64_t bi_pbvm_pgtbl; /* PA of PBVM page table. */
- uint64_t bi_hcdp; /* DIG64 HCDP table */
- uint64_t bi_fpswa; /* FPSWA interface */
- uint64_t bi_boothowto; /* value for boothowto */
- uint64_t bi_systab; /* pa of EFI system table */
- uint64_t bi_memmap; /* pa of EFI memory map */
- uint64_t bi_memmap_size; /* size of EFI memory map */
- uint64_t bi_memdesc_size; /* sizeof EFI memory desc */
- uint32_t bi_memdesc_version; /* EFI memory desc version */
- uint32_t bi_pbvm_pgtblsz; /* PBVM page table size. */
- uint64_t bi_symtab; /* start of kernel sym table */
- uint64_t bi_esymtab; /* end of kernel sym table */
- uint64_t bi_kernend; /* end of kernel space */
- uint64_t bi_envp; /* environment */
- uint64_t bi_modulep; /* preloaded modules */
-};
-
-extern struct bootinfo *bootinfo;
diff --git a/sys/ia64/include/bus.h b/sys/ia64/include/bus.h
deleted file mode 100644
index 966a75d3..0000000
--- a/sys/ia64/include/bus.h
+++ /dev/null
@@ -1,820 +0,0 @@
-/*-
- * Copyright (c) 2009 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- */
-
-/* $NetBSD: bus.h,v 1.12 1997/10/01 08:25:15 fvdl Exp $ */
-
-/*-
- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
- * NASA Ames Research Center.
- *
- * 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.
- */
-
-/*-
- * Copyright (c) 1996 Charles M. Hannum. All rights reserved.
- * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
- *
- * 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 Christopher G. Demetriou
- * for the NetBSD Project.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-/* $FreeBSD$ */
-
-#ifndef _MACHINE_BUS_H_
-#define _MACHINE_BUS_H_
-
-#include <machine/_bus.h>
-#include <machine/cpufunc.h>
-
-/*
- * I/O port reads with ia32 semantics.
- */
-#define inb bus_space_read_io_1
-#define inw bus_space_read_io_2
-#define inl bus_space_read_io_4
-
-#define outb bus_space_write_io_1
-#define outw bus_space_write_io_2
-#define outl bus_space_write_io_4
-
-/*
- * Values for the ia64 bus space tag, not to be used directly by MI code.
- */
-#define IA64_BUS_SPACE_IO 0 /* space is i/o space */
-#define IA64_BUS_SPACE_MEM 1 /* space is mem space */
-
-#define BUS_SPACE_BARRIER_READ 0x01 /* force read barrier */
-#define BUS_SPACE_BARRIER_WRITE 0x02 /* force write barrier */
-
-#define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFF
-#define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF
-#define BUS_SPACE_MAXSIZE 0xFFFFFFFFFFFFFFFF
-#define BUS_SPACE_MAXADDR_24BIT 0xFFFFFF
-#define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF
-#define BUS_SPACE_MAXADDR 0xFFFFFFFFFFFFFFFF
-
-#define BUS_SPACE_UNRESTRICTED (~0)
-
-
-/*
- * Map and unmap a region of device bus space into CPU virtual address space.
- */
-int
-bus_space_map(bus_space_tag_t, bus_addr_t, bus_size_t, int,
- bus_space_handle_t *);
-
-void
-bus_space_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t size);
-
-/*
- * Get a new handle for a subregion of an already-mapped area of bus space.
- */
-static __inline int
-bus_space_subregion(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, bus_size_t size __unused, bus_space_handle_t *nbshp)
-{
- *nbshp = bsh + ofs;
- return (0);
-}
-
-
-/*
- * Allocate a region of memory that is accessible to devices in bus space.
- */
-int
-bus_space_alloc(bus_space_tag_t bst, bus_addr_t rstart, bus_addr_t rend,
- bus_size_t size, bus_size_t align, bus_size_t boundary, int flags,
- bus_addr_t *addrp, bus_space_handle_t *bshp);
-
-
-/*
- * Free a region of bus space accessible memory.
- */
-void
-bus_space_free(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t size);
-
-
-/*
- * Bus read/write barrier method.
- */
-static __inline void
-bus_space_barrier(bus_space_tag_t bst __unused, bus_space_handle_t bsh __unused,
- bus_size_t ofs __unused, bus_size_t size __unused, int flags __unused)
-{
- ia64_mf_a();
- ia64_mf();
-}
-
-
-/*
- * Read 1 unit of data from bus space described by the tag, handle and ofs
- * tuple. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes. The
- * data is returned.
- */
-uint8_t bus_space_read_io_1(u_long);
-uint16_t bus_space_read_io_2(u_long);
-uint32_t bus_space_read_io_4(u_long);
-uint64_t bus_space_read_io_8(u_long);
-
-static __inline uint8_t
-bus_space_read_1(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t ofs)
-{
- uint8_t val;
-
- val = (__predict_false(bst == IA64_BUS_SPACE_IO))
- ? bus_space_read_io_1(bsh + ofs)
- : ia64_ld1((void *)(bsh + ofs));
- return (val);
-}
-
-static __inline uint16_t
-bus_space_read_2(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t ofs)
-{
- uint16_t val;
-
- val = (__predict_false(bst == IA64_BUS_SPACE_IO))
- ? bus_space_read_io_2(bsh + ofs)
- : ia64_ld2((void *)(bsh + ofs));
- return (val);
-}
-
-static __inline uint32_t
-bus_space_read_4(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t ofs)
-{
- uint32_t val;
-
- val = (__predict_false(bst == IA64_BUS_SPACE_IO))
- ? bus_space_read_io_4(bsh + ofs)
- : ia64_ld4((void *)(bsh + ofs));
- return (val);
-}
-
-static __inline uint64_t
-bus_space_read_8(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t ofs)
-{
- uint64_t val;
-
- val = (__predict_false(bst == IA64_BUS_SPACE_IO))
- ? bus_space_read_io_8(bsh + ofs)
- : ia64_ld8((void *)(bsh + ofs));
- return (val);
-}
-
-
-/*
- * Write 1 unit of data to bus space described by the tag, handle and ofs
- * tuple. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes. The
- * data is passed by value.
- */
-void bus_space_write_io_1(u_long, uint8_t);
-void bus_space_write_io_2(u_long, uint16_t);
-void bus_space_write_io_4(u_long, uint32_t);
-void bus_space_write_io_8(u_long, uint64_t);
-
-static __inline void
-bus_space_write_1(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t ofs,
- uint8_t val)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_io_1(bsh + ofs, val);
- else
- ia64_st1((void *)(bsh + ofs), val);
-}
-
-static __inline void
-bus_space_write_2(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t ofs,
- uint16_t val)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_io_2(bsh + ofs, val);
- else
- ia64_st2((void *)(bsh + ofs), val);
-}
-
-static __inline void
-bus_space_write_4(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t ofs,
- uint32_t val)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_io_4(bsh + ofs, val);
- else
- ia64_st4((void *)(bsh + ofs), val);
-}
-
-static __inline void
-bus_space_write_8(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t ofs,
- uint64_t val)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_io_8(bsh + ofs, val);
- else
- ia64_st8((void *)(bsh + ofs), val);
-}
-
-
-/*
- * Read count units of data from bus space described by the tag, handle and
- * ofs tuple. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes. The
- * data is returned in the buffer passed by reference.
- */
-void bus_space_read_multi_io_1(u_long, uint8_t *, size_t);
-void bus_space_read_multi_io_2(u_long, uint16_t *, size_t);
-void bus_space_read_multi_io_4(u_long, uint32_t *, size_t);
-void bus_space_read_multi_io_8(u_long, uint64_t *, size_t);
-
-static __inline void
-bus_space_read_multi_1(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint8_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_read_multi_io_1(bsh + ofs, bufp, count);
- else {
- while (count-- > 0)
- *bufp++ = ia64_ld1((void *)(bsh + ofs));
- }
-}
-
-static __inline void
-bus_space_read_multi_2(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint16_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_read_multi_io_2(bsh + ofs, bufp, count);
- else {
- while (count-- > 0)
- *bufp++ = ia64_ld2((void *)(bsh + ofs));
- }
-}
-
-static __inline void
-bus_space_read_multi_4(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint32_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_read_multi_io_4(bsh + ofs, bufp, count);
- else {
- while (count-- > 0)
- *bufp++ = ia64_ld4((void *)(bsh + ofs));
- }
-}
-
-static __inline void
-bus_space_read_multi_8(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint64_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_read_multi_io_8(bsh + ofs, bufp, count);
- else {
- while (count-- > 0)
- *bufp++ = ia64_ld8((void *)(bsh + ofs));
- }
-}
-
-
-/*
- * Write count units of data to bus space described by the tag, handle and
- * ofs tuple. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes. The
- * data is read from the buffer passed by reference.
- */
-void bus_space_write_multi_io_1(u_long, const uint8_t *, size_t);
-void bus_space_write_multi_io_2(u_long, const uint16_t *, size_t);
-void bus_space_write_multi_io_4(u_long, const uint32_t *, size_t);
-void bus_space_write_multi_io_8(u_long, const uint64_t *, size_t);
-
-static __inline void
-bus_space_write_multi_1(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, const uint8_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_multi_io_1(bsh + ofs, bufp, count);
- else {
- while (count-- > 0)
- ia64_st1((void *)(bsh + ofs), *bufp++);
- }
-}
-
-static __inline void
-bus_space_write_multi_2(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, const uint16_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_multi_io_2(bsh + ofs, bufp, count);
- else {
- while (count-- > 0)
- ia64_st2((void *)(bsh + ofs), *bufp++);
- }
-}
-
-static __inline void
-bus_space_write_multi_4(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, const uint32_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_multi_io_4(bsh + ofs, bufp, count);
- else {
- while (count-- > 0)
- ia64_st4((void *)(bsh + ofs), *bufp++);
- }
-}
-
-static __inline void
-bus_space_write_multi_8(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, const uint64_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_multi_io_8(bsh + ofs, bufp, count);
- else {
- while (count-- > 0)
- ia64_st8((void *)(bsh + ofs), *bufp++);
- }
-}
-
-
-/*
- * Read count units of data from bus space described by the tag, handle and
- * ofs tuple. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes. The
- * data is written to the buffer passed by reference and read from successive
- * bus space addresses. Access is unordered.
- */
-void bus_space_read_region_io_1(u_long, uint8_t *, size_t);
-void bus_space_read_region_io_2(u_long, uint16_t *, size_t);
-void bus_space_read_region_io_4(u_long, uint32_t *, size_t);
-void bus_space_read_region_io_8(u_long, uint64_t *, size_t);
-
-static __inline void
-bus_space_read_region_1(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint8_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_read_region_io_1(bsh + ofs, bufp, count);
- else {
- uint8_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- *bufp++ = ia64_ld1(bsp++);
- }
-}
-
-static __inline void
-bus_space_read_region_2(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint16_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_read_region_io_2(bsh + ofs, bufp, count);
- else {
- uint16_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- *bufp++ = ia64_ld2(bsp++);
- }
-}
-
-static __inline void
-bus_space_read_region_4(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint32_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_read_region_io_4(bsh + ofs, bufp, count);
- else {
- uint32_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- *bufp++ = ia64_ld4(bsp++);
- }
-}
-
-static __inline void
-bus_space_read_region_8(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint64_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_read_region_io_8(bsh + ofs, bufp, count);
- else {
- uint64_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- *bufp++ = ia64_ld8(bsp++);
- }
-}
-
-
-/*
- * Write count units of data from bus space described by the tag, handle and
- * ofs tuple. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes. The
- * data is read from the buffer passed by reference and written to successive
- * bus space addresses. Access is unordered.
- */
-void bus_space_write_region_io_1(u_long, const uint8_t *, size_t);
-void bus_space_write_region_io_2(u_long, const uint16_t *, size_t);
-void bus_space_write_region_io_4(u_long, const uint32_t *, size_t);
-void bus_space_write_region_io_8(u_long, const uint64_t *, size_t);
-
-static __inline void
-bus_space_write_region_1(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, const uint8_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_region_io_1(bsh + ofs, bufp, count);
- else {
- uint8_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- ia64_st1(bsp++, *bufp++);
- }
-}
-
-static __inline void
-bus_space_write_region_2(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, const uint16_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_region_io_2(bsh + ofs, bufp, count);
- else {
- uint16_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- ia64_st2(bsp++, *bufp++);
- }
-}
-
-static __inline void
-bus_space_write_region_4(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, const uint32_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_region_io_4(bsh + ofs, bufp, count);
- else {
- uint32_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- ia64_st4(bsp++, *bufp++);
- }
-}
-
-static __inline void
-bus_space_write_region_8(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, const uint64_t *bufp, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_write_region_io_8(bsh + ofs, bufp, count);
- else {
- uint64_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- ia64_st8(bsp++, *bufp++);
- }
-}
-
-
-/*
- * Write count units of data from bus space described by the tag, handle and
- * ofs tuple. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes. The
- * data is passed by value. Writes are unordered.
- */
-static __inline void
-bus_space_set_multi_1(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint8_t val, size_t count)
-{
-
- while (count-- > 0)
- bus_space_write_1(bst, bsh, ofs, val);
-}
-
-static __inline void
-bus_space_set_multi_2(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint16_t val, size_t count)
-{
-
- while (count-- > 0)
- bus_space_write_2(bst, bsh, ofs, val);
-}
-
-static __inline void
-bus_space_set_multi_4(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint32_t val, size_t count)
-{
-
- while (count-- > 0)
- bus_space_write_4(bst, bsh, ofs, val);
-}
-
-static __inline void
-bus_space_set_multi_8(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint64_t val, size_t count)
-{
-
- while (count-- > 0)
- bus_space_write_8(bst, bsh, ofs, val);
-}
-
-
-/*
- * Write count units of data from bus space described by the tag, handle and
- * ofs tuple. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes. The
- * data is passed by value and written to successive bus space addresses.
- * Writes are unordered.
- */
-void bus_space_set_region_io_1(u_long, uint8_t, size_t);
-void bus_space_set_region_io_2(u_long, uint16_t, size_t);
-void bus_space_set_region_io_4(u_long, uint32_t, size_t);
-void bus_space_set_region_io_8(u_long, uint64_t, size_t);
-
-static __inline void
-bus_space_set_region_1(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint8_t val, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_set_region_io_1(bsh + ofs, val, count);
- else {
- uint8_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- ia64_st1(bsp++, val);
- }
-}
-
-static __inline void
-bus_space_set_region_2(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint16_t val, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_set_region_io_2(bsh + ofs, val, count);
- else {
- uint16_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- ia64_st2(bsp++, val);
- }
-}
-
-static __inline void
-bus_space_set_region_4(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint32_t val, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_set_region_io_4(bsh + ofs, val, count);
- else {
- uint32_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- ia64_st4(bsp++, val);
- }
-}
-
-static __inline void
-bus_space_set_region_8(bus_space_tag_t bst, bus_space_handle_t bsh,
- bus_size_t ofs, uint64_t val, size_t count)
-{
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO))
- bus_space_set_region_io_4(bsh + ofs, val, count);
- else {
- uint64_t *bsp = (void *)(bsh + ofs);
- while (count-- > 0)
- ia64_st8(bsp++, val);
- }
-}
-
-
-/*
- * Copy count units of data from bus space described by the tag and the first
- * handle and ofs pair to bus space described by the tag and the second handle
- * and ofs pair. A unit of data can be 1 byte, 2 bytes, 4 bytes or 8 bytes.
- * The data is read from successive bus space addresses and also written to
- * successive bus space addresses. Both reads and writes are unordered.
- */
-void bus_space_copy_region_io_1(u_long, u_long, size_t);
-void bus_space_copy_region_io_2(u_long, u_long, size_t);
-void bus_space_copy_region_io_4(u_long, u_long, size_t);
-void bus_space_copy_region_io_8(u_long, u_long, size_t);
-
-static __inline void
-bus_space_copy_region_1(bus_space_tag_t bst, bus_space_handle_t sbsh,
- bus_size_t sofs, bus_space_handle_t dbsh, bus_size_t dofs, size_t count)
-{
- uint8_t *dst, *src;
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO)) {
- bus_space_copy_region_io_1(sbsh + sofs, dbsh + dofs, count);
- return;
- }
-
- src = (void *)(sbsh + sofs);
- dst = (void *)(dbsh + dofs);
- if (src < dst) {
- src += count - 1;
- dst += count - 1;
- while (count-- > 0)
- ia64_st1(dst--, ia64_ld1(src--));
- } else {
- while (count-- > 0)
- ia64_st1(dst++, ia64_ld1(src++));
- }
-}
-
-static __inline void
-bus_space_copy_region_2(bus_space_tag_t bst, bus_space_handle_t sbsh,
- bus_size_t sofs, bus_space_handle_t dbsh, bus_size_t dofs, size_t count)
-{
- uint16_t *dst, *src;
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO)) {
- bus_space_copy_region_io_2(sbsh + sofs, dbsh + dofs, count);
- return;
- }
-
- src = (void *)(sbsh + sofs);
- dst = (void *)(dbsh + dofs);
- if (src < dst) {
- src += count - 1;
- dst += count - 1;
- while (count-- > 0)
- ia64_st2(dst--, ia64_ld2(src--));
- } else {
- while (count-- > 0)
- ia64_st2(dst++, ia64_ld2(src++));
- }
-}
-
-static __inline void
-bus_space_copy_region_4(bus_space_tag_t bst, bus_space_handle_t sbsh,
- bus_size_t sofs, bus_space_handle_t dbsh, bus_size_t dofs, size_t count)
-{
- uint32_t *dst, *src;
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO)) {
- bus_space_copy_region_io_4(sbsh + sofs, dbsh + dofs, count);
- return;
- }
-
- src = (void *)(sbsh + sofs);
- dst = (void *)(dbsh + dofs);
- if (src < dst) {
- src += count - 1;
- dst += count - 1;
- while (count-- > 0)
- ia64_st4(dst--, ia64_ld4(src--));
- } else {
- while (count-- > 0)
- ia64_st4(dst++, ia64_ld4(src++));
- }
-}
-
-static __inline void
-bus_space_copy_region_8(bus_space_tag_t bst, bus_space_handle_t sbsh,
- bus_size_t sofs, bus_space_handle_t dbsh, bus_size_t dofs, size_t count)
-{
- uint64_t *dst, *src;
-
- if (__predict_false(bst == IA64_BUS_SPACE_IO)) {
- bus_space_copy_region_io_8(sbsh + sofs, dbsh + dofs, count);
- return;
- }
-
- src = (void *)(sbsh + sofs);
- dst = (void *)(dbsh + dofs);
- if (src < dst) {
- src += count - 1;
- dst += count - 1;
- while (count-- > 0)
- ia64_st8(dst--, ia64_ld8(src--));
- } else {
- while (count-- > 0)
- ia64_st8(dst++, ia64_ld8(src++));
- }
-}
-
-
-/*
- * Stream accesses are the same as normal accesses on ia64; there are no
- * supported bus systems with an endianess different from the host one.
- */
-
-#define bus_space_read_stream_1 bus_space_read_1
-#define bus_space_read_stream_2 bus_space_read_2
-#define bus_space_read_stream_4 bus_space_read_4
-#define bus_space_read_stream_8 bus_space_read_8
-
-#define bus_space_write_stream_1 bus_space_write_1
-#define bus_space_write_stream_2 bus_space_write_2
-#define bus_space_write_stream_4 bus_space_write_4
-#define bus_space_write_stream_8 bus_space_write_8
-
-#define bus_space_read_multi_stream_1 bus_space_read_multi_1
-#define bus_space_read_multi_stream_2 bus_space_read_multi_2
-#define bus_space_read_multi_stream_4 bus_space_read_multi_4
-#define bus_space_read_multi_stream_8 bus_space_read_multi_8
-
-#define bus_space_write_multi_stream_1 bus_space_write_multi_1
-#define bus_space_write_multi_stream_2 bus_space_write_multi_2
-#define bus_space_write_multi_stream_4 bus_space_write_multi_4
-#define bus_space_write_multi_stream_8 bus_space_write_multi_8
-
-#define bus_space_read_region_stream_1 bus_space_read_region_1
-#define bus_space_read_region_stream_2 bus_space_read_region_2
-#define bus_space_read_region_stream_4 bus_space_read_region_4
-#define bus_space_read_region_stream_8 bus_space_read_region_8
-
-#define bus_space_write_region_stream_1 bus_space_write_region_1
-#define bus_space_write_region_stream_2 bus_space_write_region_2
-#define bus_space_write_region_stream_4 bus_space_write_region_4
-#define bus_space_write_region_stream_8 bus_space_write_region_8
-
-#define bus_space_set_multi_stream_1 bus_space_set_multi_1
-#define bus_space_set_multi_stream_2 bus_space_set_multi_2
-#define bus_space_set_multi_stream_4 bus_space_set_multi_4
-#define bus_space_set_multi_stream_8 bus_space_set_multi_8
-
-#define bus_space_set_region_stream_1 bus_space_set_region_1
-#define bus_space_set_region_stream_2 bus_space_set_region_2
-#define bus_space_set_region_stream_4 bus_space_set_region_4
-#define bus_space_set_region_stream_8 bus_space_set_region_8
-
-#define bus_space_copy_region_stream_1 bus_space_copy_region_1
-#define bus_space_copy_region_stream_2 bus_space_copy_region_2
-#define bus_space_copy_region_stream_4 bus_space_copy_region_4
-#define bus_space_copy_region_stream_8 bus_space_copy_region_8
-
-#include <machine/bus_dma.h>
-
-#endif /* _MACHINE_BUS_H_ */
diff --git a/sys/ia64/include/bus_dma.h b/sys/ia64/include/bus_dma.h
deleted file mode 100644
index 0a80f2f..0000000
--- a/sys/ia64/include/bus_dma.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * Copyright (c) 2005 Scott Long
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- */
-/* $FreeBSD$ */
-
-#ifndef _IA64_BUS_DMA_H_
-#define _IA64_BUS_DMA_H_
-
-#include <sys/bus_dma.h>
-
-#endif /* _IA64_BUS_DMA_H_ */
diff --git a/sys/ia64/include/clock.h b/sys/ia64/include/clock.h
deleted file mode 100644
index 6b87a89..0000000
--- a/sys/ia64/include/clock.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/*-
- * Kernel interface to machine-dependent clock driver.
- * Garrett Wollman, September 1994.
- * This file is in the public domain.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_CLOCK_H_
-#define _MACHINE_CLOCK_H_
-
-#endif /* !_MACHINE_CLOCK_H_ */
diff --git a/sys/ia64/include/counter.h b/sys/ia64/include/counter.h
deleted file mode 100644
index a3fe871..0000000
--- a/sys/ia64/include/counter.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * Copyright (c) 2012 Konstantin Belousov <kib@FreeBSD.org>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef __MACHINE_COUNTER_H__
-#define __MACHINE_COUNTER_H__
-
-#include <sys/pcpu.h>
-#ifdef INVARIANTS
-#include <sys/proc.h>
-#endif
-
-#define counter_enter() critical_enter()
-#define counter_exit() critical_exit()
-
-#ifdef IN_SUBR_COUNTER_C
-static inline uint64_t
-counter_u64_read_one(uint64_t *p, int cpu)
-{
-
- return (*(uint64_t *)((char *)p + sizeof(struct pcpu) * cpu));
-}
-
-static inline uint64_t
-counter_u64_fetch_inline(uint64_t *p)
-{
- uint64_t r;
- int i;
-
- r = 0;
- for (i = 0; i < mp_ncpus; i++)
- r += counter_u64_read_one((uint64_t *)p, i);
-
- return (r);
-}
-
-/* XXXKIB might interrupt increment */
-static void
-counter_u64_zero_one_cpu(void *arg)
-{
-
- *((uint64_t *)((char *)arg + sizeof(struct pcpu) *
- PCPU_GET(cpuid))) = 0;
-}
-
-static inline void
-counter_u64_zero_inline(counter_u64_t c)
-{
-
- smp_rendezvous(smp_no_rendevous_barrier, counter_u64_zero_one_cpu,
- smp_no_rendevous_barrier, c);
-}
-#endif
-
-#define counter_u64_add_protected(c, inc) do { \
- CRITICAL_ASSERT(curthread); \
- *(uint64_t *)zpcpu_get(c) += (inc); \
-} while (0)
-
-static inline void
-counter_u64_add(counter_u64_t c, int64_t inc)
-{
-
- counter_enter();
- counter_u64_add_protected(c, inc);
- counter_exit();
-}
-
-#endif /* ! __MACHINE_COUNTER_H__ */
diff --git a/sys/ia64/include/cpu.h b/sys/ia64/include/cpu.h
deleted file mode 100644
index 9d7a936..0000000
--- a/sys/ia64/include/cpu.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: cpu.h,v 1.18 1997/09/23 23:17:49 mjacob Exp */
-
-/*-
- * Copyright (c) 1988 University of Utah.
- * Copyright (c) 1982, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * the Systems Programming Group of the University of Utah Computer
- * Science Department.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from: Utah $Hdr: cpu.h 1.16 91/03/25$
- *
- * @(#)cpu.h 8.4 (Berkeley) 1/5/94
- */
-
-#ifndef _MACHINE_CPU_H_
-#define _MACHINE_CPU_H_
-
-#include <machine/frame.h>
-
-#define TRAPF_PC(tf) ((tf)->tf_special.iip)
-#define TRAPF_CPL(tf) ((tf)->tf_special.psr & IA64_PSR_CPL)
-#define TRAPF_USERMODE(tf) (TRAPF_CPL(tf) != IA64_PSR_CPL_KERN)
-
-#ifdef _KERNEL
-
-#ifdef GPROF
-extern char btext[];
-extern char etext[];
-#endif
-
-/*
- * Return contents of in-cpu fast counter as a sort of "bogo-time"
- * for non-critical timing.
- */
-#define get_cyclecount ia64_get_itc
-
-/* Used by signaling code. */
-#define cpu_getstack(td) ((td)->td_frame->tf_special.sp)
-#define cpu_spinwait() /* nothing */
-
-void cpu_halt(void);
-void cpu_reset(void);
-void fork_trampoline(void); /* MAGIC */
-void swi_vm(void *);
-
-#endif /* _KERNEL */
-
-#endif /* _MACHINE_CPU_H_ */
diff --git a/sys/ia64/include/cpufunc.h b/sys/ia64/include/cpufunc.h
deleted file mode 100644
index 925d4ba..0000000
--- a/sys/ia64/include/cpufunc.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_CPUFUNC_H_
-#define _MACHINE_CPUFUNC_H_
-
-#ifdef _KERNEL
-
-#include <sys/types.h>
-#include <machine/ia64_cpu.h>
-#include <machine/vmparam.h>
-
-#ifndef _SYS_CDEFS_H_
-#error this file needs sys/cdefs.h as a prerequisite
-#endif
-
-struct thread;
-
-#define IA64_FIXED_BREAK 0x84B5D
-
-#ifdef __GNUCLIKE_ASM
-
-static __inline void
-breakpoint(void)
-{
- __asm __volatile("break.m %0" :: "i"(IA64_FIXED_BREAK));
-}
-
-#define HAVE_INLINE_FFS
-#define ffs(x) __builtin_ffs(x)
-
-
-static __inline void
-ia64_disable_intr(void)
-{
- __asm __volatile ("rsm psr.i");
-}
-
-static __inline void
-ia64_enable_intr(void)
-{
- __asm __volatile ("ssm psr.i;; srlz.d");
-}
-
-static __inline register_t
-intr_disable(void)
-{
- register_t psr;
-
- __asm __volatile ("mov %0=psr;;" : "=r"(psr));
- ia64_disable_intr();
- return ((psr & IA64_PSR_I) ? 1 : 0);
-}
-
-static __inline void
-intr_restore(register_t ie)
-{
- if (ie)
- ia64_enable_intr();
-}
-
-#endif /* __GNUCLIKE_ASM */
-
-#endif /* _KERNEL */
-
-#endif /* !_MACHINE_CPUFUNC_H_ */
diff --git a/sys/ia64/include/db_machdep.h b/sys/ia64/include/db_machdep.h
deleted file mode 100644
index cbf01a7..0000000
--- a/sys/ia64/include/db_machdep.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*-
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_DB_MACHDEP_H_
-#define _MACHINE_DB_MACHDEP_H_
-
-#include <machine/ia64_cpu.h>
-
-/* We define some of our own commands. */
-#define DB_MACHINE_COMMANDS
-
-/* We use Elf64 symbols in DDB. */
-#define DB_ELFSIZE 64
-
-/* Pretty arbitrary. */
-#define DB_SMALL_VALUE_MAX 0x7fffffff
-#define DB_SMALL_VALUE_MIN (-0x400001)
-
-typedef vm_offset_t db_addr_t; /* address - unsigned */
-typedef long db_expr_t; /* expression - signed */
-
-#define PC_REGS() ((kdb_thrctx->pcb_special.__spare == 0) ? \
- kdb_thrctx->pcb_special.rp : \
- kdb_thrctx->pcb_special.iip + ((kdb_thrctx->pcb_special.psr>>41) & 3))
-
-#define BKPT_WRITE(addr, storage) db_bkpt_write(addr, storage)
-#define BKPT_CLEAR(addr, storage) db_bkpt_clear(addr, storage)
-#define BKPT_SKIP db_bkpt_skip()
-#define BKPT_INST_TYPE uint64_t
-
-void db_bkpt_write(db_addr_t, BKPT_INST_TYPE *storage);
-void db_bkpt_clear(db_addr_t, uint64_t *storage);
-void db_bkpt_skip(void);
-
-#define db_clear_single_step kdb_cpu_clear_singlestep
-#define db_set_single_step kdb_cpu_set_singlestep
-
-#define IS_BREAKPOINT_TRAP(type, code) (type == IA64_VEC_BREAK)
-#define IS_WATCHPOINT_TRAP(type, code) 0
-
-#define inst_trap_return(ins) (ins & 0)
-#define inst_return(ins) (ins & 0)
-#define inst_call(ins) (ins & 0)
-#define inst_branch(ins) (ins & 0)
-#define inst_load(ins) (ins & 0)
-#define inst_store(ins) (ins & 0)
-#define inst_unconditional_flow_transfer(ins) (ins & 0)
-
-#define branch_taken(ins, pc, regs) pc
-
-/* Function call support. */
-#define DB_MAXARGS 8 /* Only support arguments in registers. */
-#define DB_CALL db_fncall_ia64
-
-#endif /* _MACHINE_DB_MACHDEP_H_ */
diff --git a/sys/ia64/include/dig64.h b/sys/ia64/include/dig64.h
deleted file mode 100644
index e8362ad..0000000
--- a/sys/ia64/include/dig64.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*-
- * Copyright (c) 2002 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_DIG64_H_
-#define _MACHINE_DIG64_H_
-
-struct dig64_gas {
- uint8_t addr_space;
- uint8_t bit_width;
- uint8_t bit_offset;
- uint8_t _reserved_;
- /*
- * XXX using a 64-bit type for the address would cause padding and
- * using __packed would cause unaligned accesses...
- */
- uint32_t addr_low;
- uint32_t addr_high;
-};
-
-struct dig64_hcdp_entry {
- uint8_t type;
-#define DIG64_HCDP_CONSOLE 0
-#define DIG64_HCDP_DBGPORT 1
- uint8_t databits;
- uint8_t parity;
- uint8_t stopbits;
- uint8_t pci_segment;
- uint8_t pci_bus;
- uint8_t pci_device:5;
- uint8_t _reserved1_:3;
- uint8_t pci_function:3;
- uint8_t _reserved2_:3;
- uint8_t interrupt:1;
- uint8_t pci_flag:1;
- /*
- * XXX using a 64-bit type for the baudrate would cause padding and
- * using __packed would cause unaligned accesses...
- */
- uint32_t baud_low;
- uint32_t baud_high;
- struct dig64_gas address;
- uint16_t pci_devid;
- uint16_t pci_vendor;
- uint32_t irq;
- uint32_t pclock;
- uint8_t pci_interface;
- uint8_t _reserved3_[7];
-};
-
-struct dig64_hcdp_table {
- char signature[4];
-#define HCDP_SIGNATURE "HCDP"
- uint32_t length;
- uint8_t revision;
- uint8_t checksum;
- char oem_id[6];
- char oem_tbl_id[8];
- uint32_t oem_rev;
- char creator_id[4];
- uint32_t creator_rev;
- uint32_t entries;
- struct dig64_hcdp_entry entry[1];
-};
-
-#endif
diff --git a/sys/ia64/include/elf.h b/sys/ia64/include/elf.h
deleted file mode 100644
index 34135ac..0000000
--- a/sys/ia64/include/elf.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/*-
- * Copyright (c) 1996-1997 John D. Polstra.
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_ELF_H_
-#define _MACHINE_ELF_H_ 1
-
-/*
- * ELF definitions for the IA-64 architecture.
- */
-
-#ifndef __ELF_WORD_SIZE
-#define __ELF_WORD_SIZE 64
-#endif
-
-#include <sys/elf64.h> /* Definitions common to all 64 bit architectures. */
-#include <sys/elf32.h> /* Definitions common to all 32 bit architectures. */
-
-#include <sys/elf_generic.h>
-
-#define ELF_ARCH EM_IA_64
-#define ELF_ARCH32 EM_386
-
-#define ELF_MACHINE_OK(x) ((x) == EM_IA_64)
-
-/*
- * Auxiliary vector entries for passing information to the interpreter.
- *
- * The i386 supplement to the SVR4 ABI specification names this "auxv_t",
- * but POSIX lays claim to all symbols ending with "_t".
- */
-
-typedef struct { /* Auxiliary vector entry on initial stack */
- int a_type; /* Entry type. */
- union {
- int a_val; /* Integer value. */
- } a_un;
-} Elf32_Auxinfo;
-
-typedef struct { /* Auxiliary vector entry on initial stack */
- int a_type; /* Entry type. */
- union {
- long a_val; /* Integer value. */
- void *a_ptr; /* Address. */
- void (*a_fcn)(void); /* Function pointer (not used). */
- } a_un;
-} Elf64_Auxinfo;
-
-__ElfType(Auxinfo);
-
-/* Values for a_type. */
-#define AT_NULL 0 /* Terminates the vector. */
-#define AT_IGNORE 1 /* Ignored entry. */
-#define AT_EXECFD 2 /* File descriptor of program to load. */
-#define AT_PHDR 3 /* Program header of program already loaded. */
-#define AT_PHENT 4 /* Size of each program header entry. */
-#define AT_PHNUM 5 /* Number of program header entries. */
-#define AT_PAGESZ 6 /* Page size in bytes. */
-#define AT_BASE 7 /* Interpreter's base address. */
-#define AT_FLAGS 8 /* Flags (unused for i386). */
-#define AT_ENTRY 9 /* Where interpreter should transfer control. */
-#define AT_NOTELF 10 /* Program is not ELF ?? */
-#define AT_UID 11 /* Real uid. */
-#define AT_EUID 12 /* Effective uid. */
-#define AT_GID 13 /* Real gid. */
-#define AT_EGID 14 /* Effective gid. */
-#define AT_EXECPATH 15 /* Path to the executable. */
-#define AT_CANARY 16 /* Canary for SSP */
-#define AT_CANARYLEN 17 /* Length of the canary. */
-#define AT_OSRELDATE 18 /* OSRELDATE. */
-#define AT_NCPUS 19 /* Number of CPUs. */
-#define AT_PAGESIZES 20 /* Pagesizes. */
-#define AT_PAGESIZESLEN 21 /* Number of pagesizes. */
-#define AT_TIMEKEEP 22 /* Pointer to timehands. */
-#define AT_STACKPROT 23 /* Initial stack protection. */
-
-#define AT_COUNT 24 /* Count of defined aux entry types. */
-
-/*
- * Values for e_flags.
- */
-#define EF_IA_64_MASKOS 0x00ff000f
-#define EF_IA_64_ABI64 0x00000010
-#define EF_IA_64_REDUCEDFP 0x00000020
-#define EF_IA_64_CONS_GP 0x00000040
-#define EF_IA_64_NOFUNCDESC_CONS_GP 0x00000080
-#define EF_IA_64_ABSOLUTE 0x00000100
-#define EF_IA_64_ARCH 0xff000000
-
-/*
- * Segment types.
- */
-#define PT_IA_64_ARCHEXT 0x70000000
-#define PT_IA_64_UNWIND 0x70000001
-
-/*
- * Segment attributes.
- */
-#define PF_IA_64_NORECOV 0x80000000
-
-/*
- * Section types.
- */
-#define SHT_IA_64_EXT 0x70000000
-#define SHT_IA_64_UNWIND 0x70000001
-#define SHT_IA_64_LOPSREG 0x78000000
-#define SHT_IA_64_HIPSREG 0x7fffffff
-
-/*
- * Section attribute flags.
- */
-#define SHF_IA_64_SHORT 0x10000000
-#define SHF_IA_64_NORECOV 0x20000000
-
-/* Define "machine" characteristics */
-#if __ELF_WORD_SIZE == 32
-#define ELF_TARG_CLASS ELFCLASS32
-#else
-#define ELF_TARG_CLASS ELFCLASS64
-#endif
-#define ELF_TARG_DATA ELFDATA2LSB
-#define ELF_TARG_MACH EM_IA_64
-#define ELF_TARG_VER 1
-
-/* Processor specific dynmamic section tags. */
-
-#define DT_IA_64_PLT_RESERVE 0x70000000
-
-#define ET_DYN_LOAD_ADDR 0x2500000000000000
-
-#endif /* !_MACHINE_ELF_H_ */
diff --git a/sys/ia64/include/endian.h b/sys/ia64/include/endian.h
deleted file mode 100644
index 5b3d978..0000000
--- a/sys/ia64/include/endian.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*-
- * Copyright (c) 1987, 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)endian.h 8.1 (Berkeley) 6/10/93
- * $NetBSD: endian.h,v 1.5 1997/10/09 15:42:19 bouyer Exp $
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_ENDIAN_H_
-#define _MACHINE_ENDIAN_H_
-
-#include <sys/cdefs.h>
-#include <sys/_types.h>
-
-/*
- * Define the order of 32-bit words in 64-bit words.
- */
-#define _QUAD_HIGHWORD 1
-#define _QUAD_LOWWORD 0
-
-/*
- * Definitions for byte order, according to byte significance from low
- * address to high.
- */
-#define _LITTLE_ENDIAN 1234 /* LSB first: i386, vax */
-#define _BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */
-#define _PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */
-
-#define _BYTE_ORDER _LITTLE_ENDIAN
-
-/*
- * Deprecated variants that don't have enough underscores to be useful in more
- * strict namespaces.
- */
-#if __BSD_VISIBLE
-#define LITTLE_ENDIAN _LITTLE_ENDIAN
-#define BIG_ENDIAN _BIG_ENDIAN
-#define PDP_ENDIAN _PDP_ENDIAN
-#define BYTE_ORDER _BYTE_ORDER
-#endif
-
-#if defined(__CC_SUPPORTS___INLINE) && defined(__GNUCLIKE_ASM)
-
-static __inline __uint64_t
-__bswap64(__uint64_t _x)
-{
- __uint64_t __r;
-
- __asm __volatile("mux1 %0=%1,@rev"
- : "=r" (__r) : "r"(_x));
- return __r;
-}
-
-static __inline __uint32_t
-__bswap32(__uint32_t _x)
-{
-
- return (__bswap64(_x) >> 32);
-}
-
-static __inline __uint16_t
-__bswap16(__uint16_t _x)
-{
-
- return (__bswap64(_x) >> 48);
-}
-
-#define __htonl(x) __bswap32(x)
-#define __htons(x) __bswap16(x)
-#define __ntohl(x) __bswap32(x)
-#define __ntohs(x) __bswap16(x)
-
-#else /* !(__CC_SUPPORTS___INLINE && __GNUCLIKE_ASM) */
-
-/*
- * No optimizations are available for this compiler. Fall back to
- * non-optimized functions by defining the constant usually used to prevent
- * redefinition.
- */
-#define _BYTEORDER_FUNC_DEFINED
-
-#endif /* __CC_SUPPORTS___INLINE && __GNUCLIKE_ASM */
-
-#endif /* !_MACHINE_ENDIAN_H_ */
diff --git a/sys/ia64/include/exec.h b/sys/ia64/include/exec.h
deleted file mode 100644
index 0386728..0000000
--- a/sys/ia64/include/exec.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>.
- * All rights reserved.
- *
- * 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. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL 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 REGENTS 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_EXEC_H_
-#define _MACHINE_EXEC_H_
-
-#define __LDPGSZ 4096
-
-#endif /* !_MACHINE_EXEC_H_ */
diff --git a/sys/ia64/include/float.h b/sys/ia64/include/float.h
deleted file mode 100644
index 171be6b..0000000
--- a/sys/ia64/include/float.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: float.h,v 1.6 1997/07/17 21:36:03 thorpej Exp */
-
-/*-
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#ifndef _MACHINE_FLOAT_H_
-#define _MACHINE_FLOAT_H_
-
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-extern int __flt_rounds(void);
-__END_DECLS
-
-#define FLT_RADIX 2 /* b */
-#define FLT_ROUNDS __flt_rounds()
-#if __ISO_C_VISIBLE >= 1999
-#define FLT_EVAL_METHOD 0 /* no promotions */
-#define DECIMAL_DIG 21 /* max precision in decimal digits */
-#endif
-
-#define FLT_MANT_DIG 24 /* p */
-#define FLT_EPSILON 1.19209290E-07F /* b**(1-p) */
-#define FLT_DIG 6 /* floor((p-1)*log10(b))+(b == 10) */
-#define FLT_MIN_EXP (-125) /* emin */
-#define FLT_MIN 1.17549435E-38F /* b**(emin-1) */
-#define FLT_MIN_10_EXP (-37) /* ceil(log10(b**(emin-1))) */
-#define FLT_MAX_EXP 128 /* emax */
-#define FLT_MAX 3.40282347E+38F /* (1-b**(-p))*b**emax */
-#define FLT_MAX_10_EXP 38 /* floor(log10((1-b**(-p))*b**emax)) */
-#if __ISO_C_VISIBLE >= 2011
-#define FLT_TRUE_MIN 1.40129846E-45F /* b**(emin-p) */
-#define FLT_DECIMAL_DIG 9 /* ceil(1+p*log10(b)) */
-#define FLT_HAS_SUBNORM 1
-#endif /* __ISO_C_VISIBLE >= 2011 */
-
-#define DBL_MANT_DIG 53
-#define DBL_EPSILON 2.2204460492503131E-16
-#define DBL_DIG 15
-#define DBL_MIN_EXP (-1021)
-#define DBL_MIN 2.2250738585072014E-308
-#define DBL_MIN_10_EXP (-307)
-#define DBL_MAX_EXP 1024
-#define DBL_MAX 1.7976931348623157E+308
-#define DBL_MAX_10_EXP 308
-#if __ISO_C_VISIBLE >= 2011
-#define DBL_TRUE_MIN 4.9406564584124654E-324
-#define DBL_DECIMAL_DIG 17
-#define DBL_HAS_SUBNORM 1
-#endif /* __ISO_C_VISIBLE >= 2011 */
-
-#define LDBL_MANT_DIG 64
-#define LDBL_EPSILON 1.0842021724855044340E-19L
-#define LDBL_DIG 18
-#define LDBL_MIN_EXP (-16381)
-#define LDBL_MIN 3.3621031431120935063E-4932L
-#define LDBL_MIN_10_EXP (-4931)
-#define LDBL_MAX_EXP 16384
-#define LDBL_MAX 1.1897314953572317650E+4932L
-#define LDBL_MAX_10_EXP 4932
-#if __ISO_C_VISIBLE >= 2011
-#define LDBL_TRUE_MIN 3.6451995318824746025E-4951L
-#define LDBL_DECIMAL_DIG 21
-#define LDBL_HAS_SUBNORM 1
-#endif /* __ISO_C_VISIBLE >= 2011 */
-
-#endif /* _MACHINE_FLOAT_H_ */
diff --git a/sys/ia64/include/floatingpoint.h b/sys/ia64/include/floatingpoint.h
deleted file mode 100644
index 22be759..0000000
--- a/sys/ia64/include/floatingpoint.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*-
- * Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>.
- * All rights reserved.
- *
- * 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. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL 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 REGENTS 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/ieeefp.h>
diff --git a/sys/ia64/include/fpu.h b/sys/ia64/include/fpu.h
deleted file mode 100644
index 7a068dd..0000000
--- a/sys/ia64/include/fpu.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_FPU_H_
-#define _MACHINE_FPU_H_
-
-/*
- * Floating point status register bits.
- */
-
-#define IA64_FPSR_TRAP_VD 0x0000000000000001L
-#define IA64_FPSR_TRAP_DD 0x0000000000000002L
-#define IA64_FPSR_TRAP_ZD 0x0000000000000004L
-#define IA64_FPSR_TRAP_OD 0x0000000000000008L
-#define IA64_FPSR_TRAP_UD 0x0000000000000010L
-#define IA64_FPSR_TRAP_ID 0x0000000000000020L
-#define IA64_FPSR_SF(i,v) ((v) << ((i)*13+6))
-
-#define IA64_SF_FTZ 0x0001L
-#define IA64_SF_WRE 0x0002L
-#define IA64_SF_PC 0x000cL
-#define IA64_SF_PC_0 0x0000L
-#define IA64_SF_PC_1 0x0004L
-#define IA64_SF_PC_2 0x0008L
-#define IA64_SF_PC_3 0x000cL
-#define IA64_SF_RC 0x0030L
-#define IA64_SF_RC_NEAREST 0x0000L
-#define IA64_SF_RC_NEGINF 0x0010L
-#define IA64_SF_RC_POSINF 0x0020L
-#define IA64_SF_RC_TRUNC 0x0030L
-#define IA64_SF_TD 0x0040L
-#define IA64_SF_V 0x0080L
-#define IA64_SF_D 0x0100L
-#define IA64_SF_Z 0x0200L
-#define IA64_SF_O 0x0400L
-#define IA64_SF_U 0x0800L
-#define IA64_SF_I 0x1000L
-
-#define IA64_SF_DEFAULT (IA64_SF_PC_3 | IA64_SF_RC_NEAREST)
-
-#define IA64_FPSR_DEFAULT (IA64_FPSR_TRAP_VD \
- | IA64_FPSR_TRAP_DD \
- | IA64_FPSR_TRAP_ZD \
- | IA64_FPSR_TRAP_OD \
- | IA64_FPSR_TRAP_UD \
- | IA64_FPSR_TRAP_ID \
- | IA64_FPSR_SF(0, IA64_SF_DEFAULT) \
- | IA64_FPSR_SF(1, (IA64_SF_DEFAULT \
- | IA64_SF_TD \
- | IA64_SF_WRE)) \
- | IA64_FPSR_SF(2, (IA64_SF_DEFAULT \
- | IA64_SF_TD)) \
- | IA64_FPSR_SF(3, (IA64_SF_DEFAULT \
- | IA64_SF_TD)))
-
-struct fpswa_ret {
- unsigned long status;
- unsigned long err1;
- unsigned long err2;
- unsigned long err3;
-};
-
-struct fpswa_bundle {
- long double bits; /* Force 16-byte alignment. */
-};
-
-struct fpswa_fpctx {
- unsigned long mask_low; /* f63 - f2 */
- unsigned long mask_high; /* f127 - f64 */
- union _ia64_fpreg *fp_low_preserved; /* f2 - f5 */
- union _ia64_fpreg *fp_low_volatile; /* f6 - f15 */
- union _ia64_fpreg *fp_high_preserved; /* f16 - f31 */
- union _ia64_fpreg *fp_high_volatile; /* f32 - f127 */
-};
-
-struct fpswa_iface {
- unsigned int if_rev;
- unsigned int __res;
- struct fpswa_ret (*if_fpswa)(unsigned long, struct fpswa_bundle *,
- unsigned long *, unsigned long *, unsigned long *, unsigned long *,
- unsigned long *, struct fpswa_fpctx *);
-};
-
-#endif /* ! _MACHINE_FPU_H_ */
diff --git a/sys/ia64/include/frame.h b/sys/ia64/include/frame.h
deleted file mode 100644
index 683d164..0000000
--- a/sys/ia64/include/frame.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_FRAME_H_
-#define _MACHINE_FRAME_H_
-
-#ifndef _MACHINE_REGSET_H_
-#include <machine/_regset.h>
-#endif
-
-/*
- * Software trap, exception, and syscall frame.
- */
-struct trapframe {
- uint64_t tf_length;
- uint64_t tf_flags;
-#define FRAME_SYSCALL 1 /* syscalls use a partial trapframe */
- struct _special tf_special;
- struct _caller_saved tf_scratch;
- struct _caller_saved_fp tf_scratch_fp;
-};
-
-#endif /* _MACHINE_FRAME_H_ */
diff --git a/sys/ia64/include/gdb_machdep.h b/sys/ia64/include/gdb_machdep.h
deleted file mode 100644
index bc6ec4c..0000000
--- a/sys/ia64/include/gdb_machdep.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_GDB_MACHDEP_H_
-#define _MACHINE_GDB_MACHDEP_H_
-
-#define GDB_NREGS 462
-#define GDB_REG_PC 331
-
-#define GDB_BUFSZ (GDB_NREGS*16+128*16)
-
-static __inline size_t
-gdb_cpu_regsz(int regnum)
-{
- return ((regnum >= 128 && regnum < 256) ? 16 : 8);
-}
-
-void *gdb_cpu_getreg(int, size_t *);
-void gdb_cpu_setreg(int, void *);
-int gdb_cpu_signal(int, int);
-int gdb_cpu_query(void);
-
-#endif /* !_MACHINE_GDB_MACHDEP_H_ */
diff --git a/sys/ia64/include/ia64_cpu.h b/sys/ia64/include/ia64_cpu.h
deleted file mode 100644
index 74e649b..0000000
--- a/sys/ia64/include/ia64_cpu.h
+++ /dev/null
@@ -1,532 +0,0 @@
-/*-
- * Copyright (c) 2007 Marcel Moolenaar
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_IA64_CPU_H_
-#define _MACHINE_IA64_CPU_H_
-
-/*
- * Local Interrupt ID.
- */
-#define IA64_LID_GET_SAPIC_ID(x) ((u_int)((x) >> 16) & 0xffff)
-#define IA64_LID_SET_SAPIC_ID(x) ((u_int)((x) & 0xffff) << 16)
-
-/*
- * Definition of DCR bits.
- */
-#define IA64_DCR_PP 0x0000000000000001
-#define IA64_DCR_BE 0x0000000000000002
-#define IA64_DCR_LC 0x0000000000000004
-#define IA64_DCR_DM 0x0000000000000100
-#define IA64_DCR_DP 0x0000000000000200
-#define IA64_DCR_DK 0x0000000000000400
-#define IA64_DCR_DX 0x0000000000000800
-#define IA64_DCR_DR 0x0000000000001000
-#define IA64_DCR_DA 0x0000000000002000
-#define IA64_DCR_DD 0x0000000000004000
-
-#define IA64_DCR_DEFAULT \
- (IA64_DCR_DM | IA64_DCR_DP | IA64_DCR_DK | IA64_DCR_DX | \
- IA64_DCR_DR | IA64_DCR_DA | IA64_DCR_DD)
-
-/*
- * Definition of PSR and IPSR bits.
- */
-#define IA64_PSR_BE 0x0000000000000002
-#define IA64_PSR_UP 0x0000000000000004
-#define IA64_PSR_AC 0x0000000000000008
-#define IA64_PSR_MFL 0x0000000000000010
-#define IA64_PSR_MFH 0x0000000000000020
-#define IA64_PSR_IC 0x0000000000002000
-#define IA64_PSR_I 0x0000000000004000
-#define IA64_PSR_PK 0x0000000000008000
-#define IA64_PSR_DT 0x0000000000020000
-#define IA64_PSR_DFL 0x0000000000040000
-#define IA64_PSR_DFH 0x0000000000080000
-#define IA64_PSR_SP 0x0000000000100000
-#define IA64_PSR_PP 0x0000000000200000
-#define IA64_PSR_DI 0x0000000000400000
-#define IA64_PSR_SI 0x0000000000800000
-#define IA64_PSR_DB 0x0000000001000000
-#define IA64_PSR_LP 0x0000000002000000
-#define IA64_PSR_TB 0x0000000004000000
-#define IA64_PSR_RT 0x0000000008000000
-#define IA64_PSR_CPL 0x0000000300000000
-#define IA64_PSR_CPL_KERN 0x0000000000000000
-#define IA64_PSR_CPL_1 0x0000000100000000
-#define IA64_PSR_CPL_2 0x0000000200000000
-#define IA64_PSR_CPL_USER 0x0000000300000000
-#define IA64_PSR_IS 0x0000000400000000
-#define IA64_PSR_MC 0x0000000800000000
-#define IA64_PSR_IT 0x0000001000000000
-#define IA64_PSR_ID 0x0000002000000000
-#define IA64_PSR_DA 0x0000004000000000
-#define IA64_PSR_DD 0x0000008000000000
-#define IA64_PSR_SS 0x0000010000000000
-#define IA64_PSR_RI 0x0000060000000000
-#define IA64_PSR_RI_0 0x0000000000000000
-#define IA64_PSR_RI_1 0x0000020000000000
-#define IA64_PSR_RI_2 0x0000040000000000
-#define IA64_PSR_ED 0x0000080000000000
-#define IA64_PSR_BN 0x0000100000000000
-#define IA64_PSR_IA 0x0000200000000000
-
-/*
- * Definition of ISR bits.
- */
-#define IA64_ISR_CODE 0x000000000000ffff
-#define IA64_ISR_VECTOR 0x0000000000ff0000
-#define IA64_ISR_X 0x0000000100000000
-#define IA64_ISR_W 0x0000000200000000
-#define IA64_ISR_R 0x0000000400000000
-#define IA64_ISR_NA 0x0000000800000000
-#define IA64_ISR_SP 0x0000001000000000
-#define IA64_ISR_RS 0x0000002000000000
-#define IA64_ISR_IR 0x0000004000000000
-#define IA64_ISR_NI 0x0000008000000000
-#define IA64_ISR_SO 0x0000010000000000
-#define IA64_ISR_EI 0x0000060000000000
-#define IA64_ISR_EI_0 0x0000000000000000
-#define IA64_ISR_EI_1 0x0000020000000000
-#define IA64_ISR_EI_2 0x0000040000000000
-#define IA64_ISR_ED 0x0000080000000000
-
-/*
- * Vector numbers for various ia64 interrupts.
- */
-#define IA64_VEC_VHPT 0
-#define IA64_VEC_ITLB 1
-#define IA64_VEC_DTLB 2
-#define IA64_VEC_ALT_ITLB 3
-#define IA64_VEC_ALT_DTLB 4
-#define IA64_VEC_NESTED_DTLB 5
-#define IA64_VEC_IKEY_MISS 6
-#define IA64_VEC_DKEY_MISS 7
-#define IA64_VEC_DIRTY_BIT 8
-#define IA64_VEC_INST_ACCESS 9
-#define IA64_VEC_DATA_ACCESS 10
-#define IA64_VEC_BREAK 11
-#define IA64_VEC_EXT_INTR 12
-#define IA64_VEC_PAGE_NOT_PRESENT 20
-#define IA64_VEC_KEY_PERMISSION 21
-#define IA64_VEC_INST_ACCESS_RIGHTS 22
-#define IA64_VEC_DATA_ACCESS_RIGHTS 23
-#define IA64_VEC_GENERAL_EXCEPTION 24
-#define IA64_VEC_DISABLED_FP 25
-#define IA64_VEC_NAT_CONSUMPTION 26
-#define IA64_VEC_SPECULATION 27
-#define IA64_VEC_DEBUG 29
-#define IA64_VEC_UNALIGNED_REFERENCE 30
-#define IA64_VEC_UNSUPP_DATA_REFERENCE 31
-#define IA64_VEC_FLOATING_POINT_FAULT 32
-#define IA64_VEC_FLOATING_POINT_TRAP 33
-#define IA64_VEC_LOWER_PRIVILEGE_TRANSFER 34
-#define IA64_VEC_TAKEN_BRANCH_TRAP 35
-#define IA64_VEC_SINGLE_STEP_TRAP 36
-#define IA64_VEC_IA32_EXCEPTION 45
-#define IA64_VEC_IA32_INTERCEPT 46
-#define IA64_VEC_IA32_INTERRUPT 47
-
-/*
- * IA-32 exceptions.
- */
-#define IA32_EXCEPTION_DIVIDE 0
-#define IA32_EXCEPTION_DEBUG 1
-#define IA32_EXCEPTION_BREAK 3
-#define IA32_EXCEPTION_OVERFLOW 4
-#define IA32_EXCEPTION_BOUND 5
-#define IA32_EXCEPTION_DNA 7
-#define IA32_EXCEPTION_NOT_PRESENT 11
-#define IA32_EXCEPTION_STACK_FAULT 12
-#define IA32_EXCEPTION_GPFAULT 13
-#define IA32_EXCEPTION_FPERROR 16
-#define IA32_EXCEPTION_ALIGNMENT_CHECK 17
-#define IA32_EXCEPTION_STREAMING_SIMD 19
-
-#define IA32_INTERCEPT_INSTRUCTION 0
-#define IA32_INTERCEPT_GATE 1
-#define IA32_INTERCEPT_SYSTEM_FLAG 2
-#define IA32_INTERCEPT_LOCK 4
-
-#ifndef LOCORE
-
-/*
- * Various special ia64 instructions.
- */
-
-/*
- * Memory Fence.
- */
-static __inline void
-ia64_mf(void)
-{
- __asm __volatile("mf");
-}
-
-static __inline void
-ia64_mf_a(void)
-{
- __asm __volatile("mf.a");
-}
-
-/*
- * Flush Cache.
- */
-static __inline void
-ia64_fc(uint64_t va)
-{
- __asm __volatile("fc %0" :: "r"(va));
-}
-
-static __inline void
-ia64_fc_i(uint64_t va)
-{
- __asm __volatile("fc.i %0" :: "r"(va));
-}
-
-/*
- * Sync instruction stream.
- */
-static __inline void
-ia64_sync_i(void)
-{
- __asm __volatile("sync.i");
-}
-
-/*
- * Calculate address in VHPT for va.
- */
-static __inline uint64_t
-ia64_thash(uint64_t va)
-{
- uint64_t result;
- __asm __volatile("thash %0=%1" : "=r" (result) : "r" (va));
- return result;
-}
-
-/*
- * Calculate VHPT tag for va.
- */
-static __inline uint64_t
-ia64_ttag(uint64_t va)
-{
- uint64_t result;
- __asm __volatile("ttag %0=%1" : "=r" (result) : "r" (va));
- return result;
-}
-
-/*
- * Convert virtual address to physical.
- */
-static __inline uint64_t
-ia64_tpa(uint64_t va)
-{
- uint64_t result;
- __asm __volatile("tpa %0=%1" : "=r" (result) : "r" (va));
- return result;
-}
-
-/*
- * Generate a ptc.e instruction.
- */
-static __inline void
-ia64_ptc_e(uint64_t v)
-{
- __asm __volatile("ptc.e %0;; srlz.i;;" :: "r"(v));
-}
-
-/*
- * Generate a ptc.g instruction.
- */
-static __inline void
-ia64_ptc_g(uint64_t va, uint64_t log2size)
-{
- __asm __volatile("ptc.g %0,%1;;" :: "r"(va), "r"(log2size));
-}
-
-/*
- * Generate a ptc.ga instruction.
- */
-static __inline void
-ia64_ptc_ga(uint64_t va, uint64_t log2size)
-{
- __asm __volatile("ptc.ga %0,%1;;" :: "r"(va), "r"(log2size));
-}
-
-/*
- * Generate a ptc.l instruction.
- */
-static __inline void
-ia64_ptc_l(uint64_t va, uint64_t log2size)
-{
- __asm __volatile("ptc.l %0,%1;; srlz.i;;" :: "r"(va), "r"(log2size));
-}
-
-/*
- * Invalidate the ALAT on the local processor.
- */
-static __inline void
-ia64_invala(void)
-{
- __asm __volatile("invala;;");
-}
-
-/*
- * Unordered memory load.
- */
-
-static __inline uint8_t
-ia64_ld1(uint8_t *p)
-{
- uint8_t v;
-
- __asm __volatile("ld1 %0=[%1];;" : "=r"(v) : "r"(p));
- return (v);
-}
-
-static __inline uint16_t
-ia64_ld2(uint16_t *p)
-{
- uint16_t v;
-
- __asm __volatile("ld2 %0=[%1];;" : "=r"(v) : "r"(p));
- return (v);
-}
-
-static __inline uint32_t
-ia64_ld4(uint32_t *p)
-{
- uint32_t v;
-
- __asm __volatile("ld4 %0=[%1];;" : "=r"(v) : "r"(p));
- return (v);
-}
-
-static __inline uint64_t
-ia64_ld8(uint64_t *p)
-{
- uint64_t v;
-
- __asm __volatile("ld8 %0=[%1];;" : "=r"(v) : "r"(p));
- return (v);
-}
-
-/*
- * Unordered memory store.
- */
-
-static __inline void
-ia64_st1(uint8_t *p, uint8_t v)
-{
- __asm __volatile("st1 [%0]=%1;;" :: "r"(p), "r"(v));
-}
-
-static __inline void
-ia64_st2(uint16_t *p, uint16_t v)
-{
- __asm __volatile("st2 [%0]=%1;;" :: "r"(p), "r"(v));
-}
-
-static __inline void
-ia64_st4(uint32_t *p, uint32_t v)
-{
- __asm __volatile("st4 [%0]=%1;;" :: "r"(p), "r"(v));
-}
-
-static __inline void
-ia64_st8(uint64_t *p, uint64_t v)
-{
- __asm __volatile("st8 [%0]=%1;;" :: "r"(p), "r"(v));
-}
-
-/*
- * Read the value of psr.
- */
-static __inline uint64_t
-ia64_get_psr(void)
-{
- uint64_t result;
- __asm __volatile("mov %0=psr;;" : "=r" (result));
- return result;
-}
-
-/*
- * Define accessors for application registers.
- */
-
-#define IA64_AR(name) \
- \
-static __inline uint64_t \
-ia64_get_##name(void) \
-{ \
- uint64_t result; \
- __asm __volatile("mov %0=ar." #name : "=r" (result)); \
- return result; \
-} \
- \
-static __inline void \
-ia64_set_##name(uint64_t v) \
-{ \
- __asm __volatile("mov ar." #name "=%0;;" :: "r" (v)); \
-}
-
-IA64_AR(k0)
-IA64_AR(k1)
-IA64_AR(k2)
-IA64_AR(k3)
-IA64_AR(k4)
-IA64_AR(k5)
-IA64_AR(k6)
-IA64_AR(k7)
-
-IA64_AR(rsc)
-IA64_AR(bsp)
-IA64_AR(bspstore)
-IA64_AR(rnat)
-
-IA64_AR(fcr)
-
-IA64_AR(eflag)
-IA64_AR(csd)
-IA64_AR(ssd)
-IA64_AR(cflg)
-IA64_AR(fsr)
-IA64_AR(fir)
-IA64_AR(fdr)
-
-IA64_AR(ccv)
-
-IA64_AR(unat)
-
-IA64_AR(fpsr)
-
-IA64_AR(itc)
-
-IA64_AR(pfs)
-IA64_AR(lc)
-IA64_AR(ec)
-
-/*
- * Define accessors for control registers.
- */
-
-#define IA64_CR(name) \
- \
-static __inline uint64_t \
-ia64_get_##name(void) \
-{ \
- uint64_t result; \
- __asm __volatile("mov %0=cr." #name : "=r" (result)); \
- return result; \
-} \
- \
-static __inline void \
-ia64_set_##name(uint64_t v) \
-{ \
- __asm __volatile("mov cr." #name "=%0;;" :: "r" (v)); \
-}
-
-IA64_CR(dcr)
-IA64_CR(itm)
-IA64_CR(iva)
-
-IA64_CR(pta)
-
-IA64_CR(ipsr)
-IA64_CR(isr)
-
-IA64_CR(iip)
-IA64_CR(ifa)
-IA64_CR(itir)
-IA64_CR(iipa)
-IA64_CR(ifs)
-IA64_CR(iim)
-IA64_CR(iha)
-
-IA64_CR(lid)
-IA64_CR(ivr)
-IA64_CR(tpr)
-IA64_CR(eoi)
-IA64_CR(irr0)
-IA64_CR(irr1)
-IA64_CR(irr2)
-IA64_CR(irr3)
-IA64_CR(itv)
-IA64_CR(pmv)
-IA64_CR(cmcv)
-
-IA64_CR(lrr0)
-IA64_CR(lrr1)
-
-/*
- * Write a region register.
- */
-static __inline void
-ia64_set_rr(uint64_t rrbase, uint64_t v)
-{
- __asm __volatile("mov rr[%0]=%1"
- :: "r"(rrbase), "r"(v) : "memory");
-}
-
-/*
- * Read a CPUID register.
- */
-static __inline uint64_t
-ia64_get_cpuid(int i)
-{
- uint64_t result;
- __asm __volatile("mov %0=cpuid[%1]"
- : "=r" (result) : "r"(i));
- return result;
-}
-
-static __inline void
-ia64_disable_highfp(void)
-{
- __asm __volatile("ssm psr.dfh;; srlz.d");
-}
-
-static __inline void
-ia64_enable_highfp(void)
-{
- __asm __volatile("rsm psr.dfh;; srlz.d");
-}
-
-/*
- * Avoid inline functions for the following so that they still work
- * correctly when inlining is not enabled (e.g. -O0). Function calls
- * need data serialization after setting psr, which results in a
- * hazard.
- */
-#define ia64_srlz_d() __asm __volatile("srlz.d")
-#define ia64_srlz_i() __asm __volatile("srlz.i;;")
-
-#endif /* !LOCORE */
-
-#endif /* _MACHINE_IA64_CPU_H_ */
-
diff --git a/sys/ia64/include/ieee.h b/sys/ia64/include/ieee.h
deleted file mode 100644
index 0b1f631..0000000
--- a/sys/ia64/include/ieee.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: ieee.h,v 1.2 1997/04/06 08:47:27 cgd Exp */
-
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)ieee.h 8.1 (Berkeley) 6/11/93
- *
- * from: Header: ieee.h,v 1.7 92/11/26 02:04:37 torek Exp
- */
-
-/*
- * ieee.h defines the machine-dependent layout of the machine's IEEE
- * floating point. It does *not* define (yet?) any of the rounding
- * mode bits, exceptions, and so forth.
- */
-
-/*
- * Define the number of bits in each fraction and exponent.
- *
- * k k+1
- * Note that 1.0 x 2 == 0.1 x 2 and that denorms are represented
- *
- * (-exp_bias+1)
- * as fractions that look like 0.fffff x 2 . This means that
- *
- * -126
- * the number 0.10000 x 2 , for instance, is the same as the normalized
- *
- * -127 -128
- * float 1.0 x 2 . Thus, to represent 2 , we need one leading zero
- *
- * -129
- * in the fraction; to represent 2 , we need two, and so on. This
- *
- * (-exp_bias-fracbits+1)
- * implies that the smallest denormalized number is 2
- *
- * for whichever format we are talking about: for single precision, for
- *
- * -126 -149
- * instance, we get .00000000000000000000001 x 2 , or 1.0 x 2 , and
- *
- * -149 == -127 - 23 + 1.
- */
-#define SNG_EXPBITS 8
-#define SNG_FRACBITS 23
-
-#define DBL_EXPBITS 11
-#define DBL_FRACBITS 52
-
-struct ieee_single {
- u_int sng_frac:23;
- u_int sng_exp:8;
- u_int sng_sign:1;
-};
-
-struct ieee_double {
- u_int dbl_fracl;
- u_int dbl_frach:20;
- u_int dbl_exp:11;
- u_int dbl_sign:1;
-};
-
-/*
- * Floats whose exponent is in [1..INFNAN) (of whatever type) are
- * `normal'. Floats whose exponent is INFNAN are either Inf or NaN.
- * Floats whose exponent is zero are either zero (iff all fraction
- * bits are zero) or subnormal values.
- *
- * A NaN is a `signalling NaN' if its QUIETNAN bit is clear in its
- * high fraction; if the bit is set, it is a `quiet NaN'.
- */
-#define SNG_EXP_INFNAN 255
-#define DBL_EXP_INFNAN 2047
-
-#if 0
-#define SNG_QUIETNAN (1 << 22)
-#define DBL_QUIETNAN (1 << 19)
-#endif
-
-/*
- * Exponent biases.
- */
-#define SNG_EXP_BIAS 127
-#define DBL_EXP_BIAS 1023
diff --git a/sys/ia64/include/ieeefp.h b/sys/ia64/include/ieeefp.h
deleted file mode 100644
index 7cde91b..0000000
--- a/sys/ia64/include/ieeefp.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_IEEEFP_H_
-#define _MACHINE_IEEEFP_H_
-
-/* Deprecated historical FPU control interface */
-
-#include <machine/fpu.h>
-
-typedef int fp_except_t;
-#define FP_X_INV IA64_FPSR_TRAP_VD /* invalid operation exception */
-#define FP_X_DZ IA64_FPSR_TRAP_ZD /* divide-by-zero exception */
-#define FP_X_OFL IA64_FPSR_TRAP_OD /* overflow exception */
-#define FP_X_UFL IA64_FPSR_TRAP_UD /* underflow exception */
-#define FP_X_IMP IA64_FPSR_TRAP_ID /* imprecise(inexact) exception */
-
-typedef enum {
- FP_RN = 0, /* round to nearest */
- FP_RM, /* round toward minus infinity */
- FP_RP, /* round toward plus infinity */
- FP_RZ /* round toward zero */
-} fp_rnd_t;
-
-__BEGIN_DECLS
-extern fp_rnd_t fpgetround(void);
-extern fp_rnd_t fpsetround(fp_rnd_t);
-extern fp_except_t fpgetmask(void);
-extern fp_except_t fpsetmask(fp_except_t);
-__END_DECLS
-
-#endif /* !_MACHINE_IEEEFP_H_ */
diff --git a/sys/ia64/include/in_cksum.h b/sys/ia64/include/in_cksum.h
deleted file mode 100644
index 4fe1b40..0000000
--- a/sys/ia64/include/in_cksum.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from tahoe: in_cksum.c 1.2 86/01/05
- * from: @(#)in_cksum.c 1.3 (Berkeley) 1/19/91
- * from: Id: in_cksum.c,v 1.8 1995/12/03 18:35:19 bde Exp
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_IN_CKSUM_H_
-#define _MACHINE_IN_CKSUM_H_ 1
-
-#include <sys/cdefs.h>
-
-#define in_cksum(m, len) in_cksum_skip(m, len, 0)
-
-#if defined(IPVERSION) && (IPVERSION == 4)
-/*
- * It it useful to have an Internet checksum routine which is inlineable
- * and optimized specifically for the task of computing IP header checksums
- * in the normal case (where there are no options and the header length is
- * therefore always exactly five 32-bit words.
- */
-#ifdef __CC_SUPPORTS___INLINE
-
-static __inline void
-in_cksum_update(struct ip *ip)
-{
- int __tmpsum;
- __tmpsum = (int)ntohs(ip->ip_sum) + 256;
- ip->ip_sum = htons(__tmpsum + (__tmpsum >> 16));
-}
-
-#else
-
-#define in_cksum_update(ip) \
- do { \
- int __tmpsum; \
- __tmpsum = (int)ntohs(ip->ip_sum) + 256; \
- ip->ip_sum = htons(__tmpsum + (__tmpsum >> 16)); \
- } while(0)
-
-#endif
-#endif
-
-#ifdef _KERNEL
-#if defined(IPVERSION) && (IPVERSION == 4)
-u_int in_cksum_hdr(const struct ip *ip);
-#endif
-u_short in_addword(u_short sum, u_short b);
-u_short in_pseudo(u_int sum, u_int b, u_int c);
-u_short in_cksum_skip(struct mbuf *m, int len, int skip);
-#endif
-
-#endif /* _MACHINE_IN_CKSUM_H_ */
diff --git a/sys/ia64/include/intr.h b/sys/ia64/include/intr.h
deleted file mode 100644
index 81603cf..0000000
--- a/sys/ia64/include/intr.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * Copyright (c) 2007-2010 Marcel Moolenaar
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_INTR_H_
-#define _MACHINE_INTR_H_
-
-#define IA64_NXIVS 256 /* External Interrupt Vectors */
-#define IA64_MIN_XIV 16
-
-#define IA64_MAX_HWPRIO 14
-
-struct pcpu;
-struct sapic;
-struct thread;
-struct trapframe;
-
-/*
- * Layout of the Processor Interrupt Block.
- */
-struct ia64_pib
-{
- uint64_t ib_ipi[65536][2]; /* 64K-way IPIs (1MB area). */
- uint8_t _rsvd1[0xe0000];
- uint8_t ib_inta; /* Generate INTA cycle. */
- uint8_t _rsvd2[7];
- uint8_t ib_xtp; /* External Task Priority. */
- uint8_t _rsvd3[7];
- uint8_t _rsvd4[0x1fff0];
-};
-
-enum ia64_xiv_use {
- IA64_XIV_FREE,
- IA64_XIV_ARCH, /* Architecturally defined. */
- IA64_XIV_PLAT, /* Platform defined. */
- IA64_XIV_IPI, /* Used for IPIs. */
- IA64_XIV_IRQ /* Used for external interrupts. */
-};
-
-typedef u_int (ia64_ihtype)(struct thread *, u_int, struct trapframe *);
-
-extern struct ia64_pib *ia64_pib;
-
-void ia64_bind_intr(void);
-void ia64_handle_intr(struct trapframe *);
-int ia64_setup_intr(const char *, int, driver_filter_t, driver_intr_t,
- void *, enum intr_type, void **);
-int ia64_teardown_intr(void *);
-
-void ia64_xiv_init(void);
-u_int ia64_xiv_alloc(u_int, enum ia64_xiv_use, ia64_ihtype);
-int ia64_xiv_free(u_int, enum ia64_xiv_use);
-int ia64_xiv_reserve(u_int, enum ia64_xiv_use, ia64_ihtype);
-
-int sapic_bind_intr(u_int, struct pcpu *);
-int sapic_config_intr(u_int, enum intr_trigger, enum intr_polarity);
-struct sapic *sapic_create(u_int, u_int, uint64_t);
-int sapic_enable(struct sapic *, u_int, u_int);
-void sapic_eoi(struct sapic *, u_int);
-struct sapic *sapic_lookup(u_int, u_int *);
-void sapic_mask(struct sapic *, u_int);
-void sapic_unmask(struct sapic *, u_int);
-
-#ifdef DDB
-void sapic_print(struct sapic *, u_int);
-#endif
-
-#endif /* !_MACHINE_INTR_H_ */
diff --git a/sys/ia64/include/intrcnt.h b/sys/ia64/include/intrcnt.h
deleted file mode 100644
index 5e165ea..0000000
--- a/sys/ia64/include/intrcnt.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: intrcnt.h,v 1.17 1998/11/19 01:48:04 ross Exp $ */
-
-/*-
- * Copyright (c) 1995, 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#define INTRCNT_CLOCK 0
-#define INTRCNT_COUNT 256
-
-/*
- * Maximum name length in intrnames table (including terminating '\0'.
- * Since vmstat(8) assumes a maximum length of 13 (including '\0'), we're
- * pretty much limited to that (unless we don't care about the alignment
- * of the columns :-)
- */
-#define INTRNAME_LEN 13
diff --git a/sys/ia64/include/iodev.h b/sys/ia64/include/iodev.h
deleted file mode 100644
index cf349d9..0000000
--- a/sys/ia64/include/iodev.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * Copyright (c) 2010 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_IODEV_H_
-#define _MACHINE_IODEV_H_
-
-#include <sys/uuid.h>
-
-#ifdef _KERNEL
-#include <machine/bus.h>
-#endif
-
-#define IODEV_EFIVAR_GETVAR 0
-#define IODEV_EFIVAR_NEXTNAME 1
-#define IODEV_EFIVAR_SETVAR 2
-
-struct iodev_efivar_req {
- u_int access;
- u_int result; /* errno value */
- size_t namesize;
- u_short *name; /* UCS-2 */
- struct uuid vendor;
- uint32_t attrib;
- size_t datasize;
- void *data;
-};
-
-#define IODEV_EFIVAR _IOWR('I', 1, struct iodev_efivar_req)
-
-#ifdef _KERNEL
-#define iodev_read_1 bus_space_read_io_1
-#define iodev_read_2 bus_space_read_io_2
-#define iodev_read_4 bus_space_read_io_4
-#define iodev_write_1 bus_space_write_io_1
-#define iodev_write_2 bus_space_write_io_2
-#define iodev_write_4 bus_space_write_io_4
-
-int iodev_open(struct thread *td);
-int iodev_close(struct thread *td);
-int iodev_ioctl(u_long, caddr_t data);
-
-#endif /* _KERNEL */
-#endif /* _MACHINE_IODEV_H_ */
diff --git a/sys/ia64/include/kdb.h b/sys/ia64/include/kdb.h
deleted file mode 100644
index 0304f51..0000000
--- a/sys/ia64/include/kdb.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_KDB_H_
-#define _MACHINE_KDB_H_
-
-#include <machine/cpufunc.h>
-#include <machine/frame.h>
-#include <machine/ia64_cpu.h>
-
-#define KDB_STOPPEDPCB(pc) (&(pc)->pc_md.pcb)
-
-void kdb_cpu_trap(int, int);
-
-static __inline void
-kdb_cpu_clear_singlestep(void)
-{
- kdb_frame->tf_special.psr &= ~IA64_PSR_SS;
-}
-
-static __inline void
-kdb_cpu_set_singlestep(void)
-{
- kdb_frame->tf_special.psr |= IA64_PSR_SS;
-}
-
-static __inline void
-kdb_cpu_sync_icache(unsigned char *addr, size_t size)
-{
- vm_offset_t cacheline;
-
- cacheline = (uintptr_t)addr & ~31;
- size += (uintptr_t)addr - cacheline;
- size = (size + 31) & ~31;
- while (size > 0) {
- __asm __volatile("fc %0;; sync.i;; srlz.i;;" :: "r"(cacheline));
- cacheline += 32;
- size -= 32;
- }
-}
-
-#endif /* _MACHINE_KDB_H_ */
diff --git a/sys/ia64/include/limits.h b/sys/ia64/include/limits.h
deleted file mode 100644
index 62772bc..0000000
--- a/sys/ia64/include/limits.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: limits.h,v 1.3 1997/04/06 08:47:31 cgd Exp */
-
-/*-
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)limits.h 8.3 (Berkeley) 1/4/94
- */
-
-#ifndef _MACHINE_LIMITS_H_
-#define _MACHINE_LIMITS_H_
-
-#include <sys/cdefs.h>
-
-#ifdef __CC_SUPPORTS_WARNING
-#warning "machine/limits.h is deprecated. Include sys/limits.h instead."
-#endif
-
-#include <sys/limits.h>
-
-#endif /* !_MACHINE_LIMITS_H_ */
diff --git a/sys/ia64/include/mca.h b/sys/ia64/include/mca.h
deleted file mode 100644
index 1f38c13..0000000
--- a/sys/ia64/include/mca.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/*-
- * Copyright (c) 2002-2010 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_MCA_H_
-#define _MACHINE_MCA_H_
-
-struct mca_record_header {
- uint64_t rh_seqnr; /* Record id. */
- uint8_t rh_major; /* BCD (=02). */
- uint8_t rh_minor; /* BCD (=00). */
- uint8_t rh_error; /* Error severity. */
-#define MCA_RH_ERROR_RECOVERABLE 0
-#define MCA_RH_ERROR_FATAL 1
-#define MCA_RH_ERROR_CORRECTED 2
- uint8_t rh_flags;
-#define MCA_RH_FLAGS_PLATFORM_ID 0x01 /* Platform_id present. */
-#define MCA_RH_FLAGS_TIME_STAMP 0x02 /* Timestamp invalid. */
- uint32_t rh_length; /* Size including header. */
- uint8_t rh_time[8];
-#define MCA_RH_TIME_SEC 0
-#define MCA_RH_TIME_MIN 1
-#define MCA_RH_TIME_HOUR 2
-#define MCA_RH_TIME_MDAY 4
-#define MCA_RH_TIME_MON 5
-#define MCA_RH_TIME_YEAR 6
-#define MCA_RH_TIME_CENT 7
- struct uuid rh_platform;
-};
-
-struct mca_section_header {
- struct uuid sh_uuid;
- uint8_t sh_major; /* BCD (=02). */
- uint8_t sh_minor; /* BCD (=00). */
- uint8_t sh_flags;
-#define MCA_SH_FLAGS_CORRECTED 0x01 /* Error has been corrected. */
-#define MCA_SH_FLAGS_PROPAGATE 0x02 /* Possible propagation. */
-#define MCA_SH_FLAGS_RESET 0x04 /* Reset device before use. */
-#define MCA_SH_FLAGS_VALID 0x80 /* Flags are valid. */
- uint8_t __reserved;
- uint32_t sh_length; /* Size including header. */
-};
-
-struct mca_cpu_record {
- uint64_t cpu_flags;
-#define MCA_CPU_FLAGS_ERRMAP (1ULL << 0)
-#define MCA_CPU_FLAGS_STATE (1ULL << 1)
-#define MCA_CPU_FLAGS_CR_LID (1ULL << 2)
-#define MCA_CPU_FLAGS_PSI_STRUCT (1ULL << 3)
-#define MCA_CPU_FLAGS_CACHE(x) (((x) >> 4) & 15)
-#define MCA_CPU_FLAGS_TLB(x) (((x) >> 8) & 15)
-#define MCA_CPU_FLAGS_BUS(x) (((x) >> 12) & 15)
-#define MCA_CPU_FLAGS_REG(x) (((x) >> 16) & 15)
-#define MCA_CPU_FLAGS_MS(x) (((x) >> 20) & 15)
-#define MCA_CPU_FLAGS_CPUID (1ULL << 24)
- uint64_t cpu_errmap;
- uint64_t cpu_state;
- uint64_t cpu_cr_lid;
- /* Nx cpu_mod (cache). */
- /* Nx cpu_mod (TLB). */
- /* Nx cpu_mod (bus). */
- /* Nx cpu_mod (reg). */
- /* Nx cpu_mod (MS). */
- /* cpu_cpuid. */
- /* cpu_psi. */
-};
-
-struct mca_cpu_cpuid {
- uint64_t cpuid[6];
-};
-
-struct mca_cpu_mod {
- uint64_t cpu_mod_flags;
-#define MCA_CPU_MOD_FLAGS_INFO (1ULL << 0)
-#define MCA_CPU_MOD_FLAGS_REQID (1ULL << 1)
-#define MCA_CPU_MOD_FLAGS_RSPID (1ULL << 2)
-#define MCA_CPU_MOD_FLAGS_TGTID (1ULL << 3)
-#define MCA_CPU_MOD_FLAGS_IP (1ULL << 4)
- uint64_t cpu_mod_info;
- uint64_t cpu_mod_reqid;
- uint64_t cpu_mod_rspid;
- uint64_t cpu_mod_tgtid;
- uint64_t cpu_mod_ip;
-};
-
-struct mca_cpu_psi {
- uint64_t cpu_psi_flags;
-#define MCA_CPU_PSI_FLAGS_STATE (1ULL << 0)
-#define MCA_CPU_PSI_FLAGS_BR (1ULL << 1)
-#define MCA_CPU_PSI_FLAGS_CR (1ULL << 2)
-#define MCA_CPU_PSI_FLAGS_AR (1ULL << 3)
-#define MCA_CPU_PSI_FLAGS_RR (1ULL << 4)
-#define MCA_CPU_PSI_FLAGS_FR (1ULL << 5)
- uint8_t cpu_psi_state[1024]; /* XXX variable? */
- uint64_t cpu_psi_br[8];
- uint64_t cpu_psi_cr[128]; /* XXX variable? */
- uint64_t cpu_psi_ar[128]; /* XXX variable? */
- uint64_t cpu_psi_rr[8];
- uint64_t cpu_psi_fr[256]; /* 16 bytes per register! */
-};
-
-struct mca_mem_record {
- uint64_t mem_flags;
-#define MCA_MEM_FLAGS_STATUS (1ULL << 0)
-#define MCA_MEM_FLAGS_ADDR (1ULL << 1)
-#define MCA_MEM_FLAGS_ADDRMASK (1ULL << 2)
-#define MCA_MEM_FLAGS_NODE (1ULL << 3)
-#define MCA_MEM_FLAGS_CARD (1ULL << 4)
-#define MCA_MEM_FLAGS_MODULE (1ULL << 5)
-#define MCA_MEM_FLAGS_BANK (1ULL << 6)
-#define MCA_MEM_FLAGS_DEVICE (1ULL << 7)
-#define MCA_MEM_FLAGS_ROW (1ULL << 8)
-#define MCA_MEM_FLAGS_COLUMN (1ULL << 9)
-#define MCA_MEM_FLAGS_BITPOS (1ULL << 10)
-#define MCA_MEM_FLAGS_REQID (1ULL << 11)
-#define MCA_MEM_FLAGS_RSPID (1ULL << 12)
-#define MCA_MEM_FLAGS_TGTID (1ULL << 13)
-#define MCA_MEM_FLAGS_BUSDATA (1ULL << 14)
-#define MCA_MEM_FLAGS_OEM_ID (1ULL << 15)
-#define MCA_MEM_FLAGS_OEM_DATA (1ULL << 16)
- uint64_t mem_status;
- uint64_t mem_addr;
- uint64_t mem_addrmask;
- uint16_t mem_node;
- uint16_t mem_card;
- uint16_t mem_module;
- uint16_t mem_bank;
- uint16_t mem_device;
- uint16_t mem_row;
- uint16_t mem_column;
- uint16_t mem_bitpos;
- uint64_t mem_reqid;
- uint64_t mem_rspid;
- uint64_t mem_tgtid;
- uint64_t mem_busdata;
- struct uuid mem_oem_id;
- uint16_t mem_oem_length; /* Size of OEM data. */
- /* N bytes of OEM platform data. */
-};
-
-struct mca_pcibus_record {
- uint64_t pcibus_flags;
-#define MCA_PCIBUS_FLAGS_STATUS (1ULL << 0)
-#define MCA_PCIBUS_FLAGS_ERROR (1ULL << 1)
-#define MCA_PCIBUS_FLAGS_BUS (1ULL << 2)
-#define MCA_PCIBUS_FLAGS_ADDR (1ULL << 3)
-#define MCA_PCIBUS_FLAGS_DATA (1ULL << 4)
-#define MCA_PCIBUS_FLAGS_CMD (1ULL << 5)
-#define MCA_PCIBUS_FLAGS_REQID (1ULL << 6)
-#define MCA_PCIBUS_FLAGS_RSPID (1ULL << 7)
-#define MCA_PCIBUS_FLAGS_TGTID (1ULL << 8)
-#define MCA_PCIBUS_FLAGS_OEM_ID (1ULL << 9)
-#define MCA_PCIBUS_FLAGS_OEM_DATA (1ULL << 10)
- uint64_t pcibus_status;
- uint16_t pcibus_error;
- uint16_t pcibus_bus;
- uint32_t __reserved;
- uint64_t pcibus_addr;
- uint64_t pcibus_data;
- uint64_t pcibus_cmd;
- uint64_t pcibus_reqid;
- uint64_t pcibus_rspid;
- uint64_t pcibus_tgtid;
- struct uuid pcibus_oem_id;
- uint16_t pcibus_oem_length; /* Size of OEM data. */
- /* N bytes of OEM platform data. */
-};
-
-struct mca_pcidev_record {
- uint64_t pcidev_flags;
-#define MCA_PCIDEV_FLAGS_STATUS (1ULL << 0)
-#define MCA_PCIDEV_FLAGS_INFO (1ULL << 1)
-#define MCA_PCIDEV_FLAGS_REG_MEM (1ULL << 2)
-#define MCA_PCIDEV_FLAGS_REG_IO (1ULL << 3)
-#define MCA_PCIDEV_FLAGS_REG_DATA (1ULL << 4)
-#define MCA_PCIDEV_FLAGS_OEM_DATA (1ULL << 5)
- uint64_t pcidev_status;
- struct {
- uint16_t info_vendor;
- uint16_t info_device;
- uint32_t info_ccfn; /* Class code & funct. nr. */
-#define MCA_PCIDEV_INFO_CLASS(x) ((x) & 0xffffff)
-#define MCA_PCIDEV_INFO_FUNCTION(x) (((x) >> 24) & 0xff)
- uint8_t info_slot;
- uint8_t info_bus;
- uint8_t info_segment;
- uint8_t __res0;
- uint32_t __res1;
- } pcidev_info;
- uint32_t pcidev_reg_mem;
- uint32_t pcidev_reg_io;
- /* Nx pcidev_reg. */
- /* M bytes of OEM platform data. */
-};
-
-struct mca_pcidev_reg {
- uint64_t pcidev_reg_addr;
- uint64_t pcidev_reg_data;
-};
-
-#define MCA_UUID_CPU \
- {0xe429faf1,0x3cb7,0x11d4,0xbc,0xa7,{0x00,0x80,0xc7,0x3c,0x88,0x81}}
-#define MCA_UUID_MEMORY \
- {0xe429faf2,0x3cb7,0x11d4,0xbc,0xa7,{0x00,0x80,0xc7,0x3c,0x88,0x81}}
-#define MCA_UUID_SEL \
- {0xe429faf3,0x3cb7,0x11d4,0xbc,0xa7,{0x00,0x80,0xc7,0x3c,0x88,0x81}}
-#define MCA_UUID_PCI_BUS \
- {0xe429faf4,0x3cb7,0x11d4,0xbc,0xa7,{0x00,0x80,0xc7,0x3c,0x88,0x81}}
-#define MCA_UUID_SMBIOS \
- {0xe429faf5,0x3cb7,0x11d4,0xbc,0xa7,{0x00,0x80,0xc7,0x3c,0x88,0x81}}
-#define MCA_UUID_PCI_DEV \
- {0xe429faf6,0x3cb7,0x11d4,0xbc,0xa7,{0x00,0x80,0xc7,0x3c,0x88,0x81}}
-#define MCA_UUID_GENERIC \
- {0xe429faf7,0x3cb7,0x11d4,0xbc,0xa7,{0x00,0x80,0xc7,0x3c,0x88,0x81}}
-
-#ifdef _KERNEL
-
-void ia64_mca_init(void);
-void ia64_mca_init_ap(void);
-void ia64_mca_save_state(int);
-
-#endif /* _KERNEL */
-
-#endif /* _MACHINE_MCA_H_ */
diff --git a/sys/ia64/include/md_var.h b/sys/ia64/include/md_var.h
deleted file mode 100644
index b69b1af..0000000
--- a/sys/ia64/include/md_var.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_MD_VAR_H_
-#define _MACHINE_MD_VAR_H_
-
-/*
- * Miscellaneous machine-dependent declarations.
- */
-
-struct ia64_fdesc {
- uint64_t func;
- uint64_t gp;
-};
-
-#define FDESC_FUNC(fn) (((struct ia64_fdesc *) fn)->func)
-#define FDESC_GP(fn) (((struct ia64_fdesc *) fn)->gp)
-
-/* Convenience macros to decompose CFM & ar.pfs. */
-#define IA64_CFM_SOF(x) ((x) & 0x7f)
-#define IA64_CFM_SOL(x) (((x) >> 7) & 0x7f)
-#define IA64_CFM_SOR(x) (((x) >> 14) & 0x0f)
-#define IA64_CFM_RRB_GR(x) (((x) >> 18) & 0x7f)
-#define IA64_CFM_RRB_FR(x) (((x) >> 25) & 0x7f)
-#define IA64_CFM_RRB_PR(x) (((x) >> 32) & 0x3f)
-
-/* Convenience function (inline) to adjust backingstore pointers. */
-static __inline uint64_t
-ia64_bsp_adjust(uint64_t bsp, int nslots)
-{
- int bias = ((unsigned int)bsp & 0x1f8) >> 3;
- nslots += (nslots + bias + 63*8) / 63 - 8;
- return bsp + (nslots << 3);
-}
-
-#ifdef _KERNEL
-
-struct _special;
-struct pcpu;
-struct thread;
-struct trapframe;
-
-/*
- * Return value from ia64_init. Describes stack to switch to.
- */
-struct ia64_init_return {
- uint64_t bspstore;
- uint64_t sp;
-};
-
-extern uint64_t ia64_lapic_addr;
-extern vm_paddr_t paddr_max;
-extern u_int busdma_swi_pending;
-
-void *acpi_find_table(const char *sig);
-void busdma_swi(void);
-int copyout_regstack(struct thread *, uint64_t *, uint64_t *);
-void cpu_mp_add(u_int, u_int, u_int);
-void cpu_pcpu_setup(struct pcpu *, u_int, u_int);
-int do_ast(struct trapframe *);
-void ia32_trap(int, struct trapframe *);
-int ia64_count_cpus(void);
-int ia64_emulate(struct trapframe *, struct thread *);
-int ia64_flush_dirty(struct thread *, struct _special *);
-uint64_t ia64_get_hcdp(void);
-int ia64_highfp_drop(struct thread *);
-int ia64_highfp_enable(struct thread *, struct trapframe *);
-int ia64_highfp_save(struct thread *);
-int ia64_highfp_save_ipi(void);
-struct ia64_init_return ia64_init(void);
-u_int ia64_itc_freq(void);
-int ia64_physmem_add(vm_paddr_t, vm_size_t);
-void *ia64_physmem_alloc(vm_size_t, vm_size_t);
-int ia64_physmem_delete(vm_paddr_t, vm_size_t);
-int ia64_physmem_fini(void);
-int ia64_physmem_init(void);
-int ia64_physmem_track(vm_paddr_t, vm_size_t);
-void ia64_probe_sapics(void);
-void ia64_sync_icache(vm_offset_t, vm_size_t);
-void *ia64_xtrace_alloc(void);
-void ia64_xtrace_init_ap(void *);
-void ia64_xtrace_init_bsp(void);
-void ia64_xtrace_save(void);
-void ia64_xtrace_stop(void);
-void interrupt(struct trapframe *);
-void map_gateway_page(void);
-void map_pal_code(void);
-void map_vhpt(uintptr_t);
-void os_boot_rendez(void);
-void os_mca(void);
-int syscall(struct trapframe *);
-void trap(int, struct trapframe *);
-void trap_panic(int, struct trapframe *);
-int unaligned_fixup(struct trapframe *, struct thread *);
-
-#endif /* _KERNEL */
-
-#endif /* !_MACHINE_MD_VAR_H_ */
diff --git a/sys/ia64/include/memdev.h b/sys/ia64/include/memdev.h
deleted file mode 100644
index 85fca07..0000000
--- a/sys/ia64/include/memdev.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*-
- * Copyright (c) 2004 Mark R V Murray
- * All rights reserved.
- *
- * 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
- * in this position and unchanged.
- * 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 AUTHORS ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_MEMDEV_H_
-#define _MACHINE_MEMDEV_H_
-
-#define CDEV_MINOR_MEM 0
-#define CDEV_MINOR_KMEM 1
-
-d_open_t memopen;
-d_read_t memrw;
-#define memioctl (d_ioctl_t *)NULL
-d_mmap_t memmmap;
-
-#endif /* _MACHINE_MEMDEV_H_ */
diff --git a/sys/ia64/include/pal.h b/sys/ia64/include/pal.h
deleted file mode 100644
index a8a5e90..0000000
--- a/sys/ia64/include/pal.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PAL_H_
-#define _MACHINE_PAL_H_
-
-/*
- * Architected static calling convention procedures.
- */
-#define PAL_CACHE_FLUSH 1
-#define PAL_CACHE_INFO 2
-#define PAL_CACHE_INIT 3
-#define PAL_CACHE_SUMMARY 4
-#define PAL_MEM_ATTRIB 5
-#define PAL_PTCE_INFO 6
-#define PAL_VM_INFO 7
-#define PAL_VM_SUMMARY 8
-#define PAL_BUS_GET_FEATURES 9
-#define PAL_BUS_SET_FEATURES 10
-#define PAL_DEBUG_INFO 11
-#define PAL_FIXED_ADDR 12
-#define PAL_FREQ_BASE 13
-#define PAL_FREQ_RATIOS 14
-#define PAL_PERF_MON_INFO 15
-#define PAL_PLATFORM_ADDR 16
-#define PAL_PROC_GET_FEATURE 17
-#define PAL_PROC_SET_FEATURE 18
-#define PAL_RSE_INFO 19
-#define PAL_VERSION 20
-#define PAL_MC_CLEAR_LOG 21
-#define PAL_MC_DRAIN 22
-#define PAL_MC_EXPECTED 23
-#define PAL_MC_DYNAMIC_STATE 24
-#define PAL_MC_ERROR_INFO 25
-#define PAL_MC_RESUME 26
-#define PAL_MC_REGISTER_MEM 27
-#define PAL_HALT 28
-#define PAL_HALT_LIGHT 29
-#define PAL_COPY_INFO 30
-#define PAL_CACHE_LINE_INIT 31
-#define PAL_PMI_ENTRYPOINT 32
-#define PAL_ENTER_IA_32_ENV 33
-#define PAL_VM_PAGE_SIZE 34
-#define PAL_TEST_INFO 37
-#define PAL_CACHE_PROT_INFO 38
-#define PAL_REGISTER_INFO 39
-#define PAL_PREFETCH_VISIBILITY 41
-#define PAL_LOGICAL_TO_PHYSICAL 42
-#define PAL_CACHE_SHARED_INFO 43
-#define PAL_PSTATE_INFO 44
-#define PAL_SHUTDOWN 45
-#define PAL_GET_HW_POLICY 48
-#define PAL_SET_HW_POLICY 49
-
-/*
- * Architected stacked calling convention procedures.
- */
-#define PAL_COPY_PAL 256
-#define PAL_HALT_INFO 257
-#define PAL_TEST_PROC 258
-#define PAL_CACHE_READ 259
-#define PAL_CACHE_WRITE 260
-#define PAL_VM_TR_READ 261
-#define PAL_GET_PSTATE 262
-#define PAL_SET_PSTATE 263
-#define PAL_VP_CREATE 265
-#define PAL_VP_ENV_INFO 266
-#define PAL_VP_EXIT_ENV 267
-#define PAL_VP_INIT_ENV 268
-#define PAL_VP_REGISTER 269
-#define PAL_VP_RESTORE 270
-#define PAL_VP_SAVE 271
-#define PAL_VP_TERMINATE 272
-#define PAL_BRAND_INFO 274
-#define PAL_MC_ERROR_INJECT 276
-#define PAL_MEMORY_BUFFER 277
-
-/*
- * Default physical address of the Processor Interrupt Block (PIB).
- * See also: IA-64 SDM, rev 1.1, volume 2, page 5-31.
- */
-#define PAL_PIB_DEFAULT_ADDR 0x00000000FEE00000L
-
-struct ia64_pal_result {
- int64_t pal_status;
- uint64_t pal_result[3];
-};
-
-struct ia64_pal_result ia64_pal_physical(u_long, u_long, u_long, u_long);
-
-struct ia64_pal_result ia64_call_pal_static(uint64_t proc, uint64_t arg1,
- uint64_t arg2, uint64_t arg3);
-
-struct ia64_pal_result ia64_call_pal_stacked(uint64_t proc, uint64_t arg1,
- uint64_t arg2, uint64_t arg3);
-
-#endif /* _MACHINE_PAL_H_ */
diff --git a/sys/ia64/include/param.h b/sys/ia64/include/param.h
deleted file mode 100644
index a260a75..0000000
--- a/sys/ia64/include/param.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: param.h,v 1.20 1997/09/19 13:52:53 leo Exp */
-
-/*-
- * Copyright (c) 1988 University of Utah.
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * the Systems Programming Group of the University of Utah Computer
- * Science Department and Ralph Campbell.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from: Utah $Hdr: machparam.h 1.11 89/08/14$
- *
- * @(#)param.h 8.1 (Berkeley) 6/10/93
- */
-
-#ifndef _IA64_INCLUDE_PARAM_H_
-#define _IA64_INCLUDE_PARAM_H_
-
-/*
- * Machine dependent constants for the IA64.
- */
-
-#include <machine/_align.h>
-
-#define __HAVE_ACPI
-#define __PCI_REROUTE_INTERRUPT
-
-#ifndef MACHINE
-#define MACHINE "ia64"
-#endif
-#ifndef MACHINE_ARCH
-#define MACHINE_ARCH "ia64"
-#endif
-#ifndef MACHINE_ARCH32
-#define MACHINE_ARCH32 "i386"
-#endif
-
-#if defined(SMP) || defined(KLD_MODULE)
-#ifndef MAXCPU
-#define MAXCPU 64
-#endif
-#else
-#define MAXCPU 1
-#endif
-
-#ifndef MAXMEMDOM
-#define MAXMEMDOM 1
-#endif
-
-#define ALIGNBYTES _ALIGNBYTES
-#define ALIGN(p) _ALIGN(p)
-/*
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- */
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
-
-/*
- * CACHE_LINE_SIZE is the compile-time maximum cache line size for an
- * architecture. It should be used with appropriate caution.
- */
-#define CACHE_LINE_SHIFT 7
-#define CACHE_LINE_SIZE (1 << CACHE_LINE_SHIFT)
-
-#ifndef LOG2_PAGE_SIZE
-#define LOG2_PAGE_SIZE 13 /* 8K pages by default. */
-#endif
-#define PAGE_SHIFT (LOG2_PAGE_SIZE)
-#define PAGE_SIZE (1<<(LOG2_PAGE_SIZE))
-#define PAGE_MASK (PAGE_SIZE-1)
-#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t)))
-
-#define MAXPAGESIZES 1 /* maximum number of supported page sizes */
-
-#ifndef KSTACK_PAGES
-#define KSTACK_PAGES 4 /* pages of kernel stack */
-#endif
-#define KSTACK_GUARD_PAGES 0 /* pages of kstack guard; 0 disables */
-
-/* The default size of identity mappings in region 6 & 7. */
-#ifndef LOG2_ID_PAGE_SIZE
-#define LOG2_ID_PAGE_SIZE 16
-#endif
-
-/*
- * Mach derived conversion macros
- */
-#define round_page(x) ((((unsigned long)(x)) + PAGE_MASK) & ~(PAGE_MASK))
-#define trunc_page(x) ((unsigned long)(x) & ~(PAGE_MASK))
-
-#define atop(x) ((unsigned long)(x) >> PAGE_SHIFT)
-#define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT)
-
-#define pgtok(x) ((x) * (PAGE_SIZE / 1024))
-
-#endif /* !_IA64_INCLUDE_PARAM_H_ */
diff --git a/sys/ia64/include/pc/display.h b/sys/ia64/include/pc/display.h
deleted file mode 100644
index fad568c..0000000
--- a/sys/ia64/include/pc/display.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * IBM PC display definitions
- *
- * $FreeBSD$
- * from: i386/include/pc display.h,v 1.4
- */
-
-/* Color attributes for foreground text */
-
-#define FG_BLACK 0
-#define FG_BLUE 1
-#define FG_GREEN 2
-#define FG_CYAN 3
-#define FG_RED 4
-#define FG_MAGENTA 5
-#define FG_BROWN 6
-#define FG_LIGHTGREY 7
-#define FG_DARKGREY 8
-#define FG_LIGHTBLUE 9
-#define FG_LIGHTGREEN 10
-#define FG_LIGHTCYAN 11
-#define FG_LIGHTRED 12
-#define FG_LIGHTMAGENTA 13
-#define FG_YELLOW 14
-#define FG_WHITE 15
-#define FG_BLINK 0x80
-
-/* Color attributes for text background */
-
-#define BG_BLACK 0x00
-#define BG_BLUE 0x10
-#define BG_GREEN 0x20
-#define BG_CYAN 0x30
-#define BG_RED 0x40
-#define BG_MAGENTA 0x50
-#define BG_BROWN 0x60
-#define BG_LIGHTGREY 0x70
-
-/* Monochrome attributes for foreground text */
-
-#define FG_UNDERLINE 0x01
-#define FG_INTENSE 0x08
-
-/* Monochrome attributes for text background */
-
-#define BG_INTENSE 0x10
diff --git a/sys/ia64/include/pcb.h b/sys/ia64/include/pcb.h
deleted file mode 100644
index dac7169..0000000
--- a/sys/ia64/include/pcb.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * Copyright (c) 2003,2004 Marcel Moolenaar
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PCB_H_
-#define _MACHINE_PCB_H_
-
-#ifndef _MACHINE_REGSET_H_
-#include <machine/_regset.h>
-#endif
-
-/*
- * PCB: process control block
- */
-struct pmap;
-struct pcb {
- struct _special pcb_special;
- struct _callee_saved pcb_preserved;
- struct _callee_saved_fp pcb_preserved_fp;
- struct _high_fp pcb_high_fp;
- struct pcpu *pcb_fpcpu;
- struct pmap *pcb_current_pmap;
-
- uint64_t pcb_onfault; /* for copy faults */
-
- /* IA32 specific registers. */
- uint64_t pcb_ia32_cflg;
- uint64_t pcb_ia32_eflag;
- uint64_t pcb_ia32_fcr;
- uint64_t pcb_ia32_fdr;
- uint64_t pcb_ia32_fir;
- uint64_t pcb_ia32_fsr;
-};
-
-#ifdef _KERNEL
-
-#define savectx(p) swapctx(p, NULL)
-
-struct trapframe;
-
-void makectx(struct trapframe *, struct pcb *);
-void restorectx(struct pcb *) __dead2;
-int swapctx(struct pcb *old, struct pcb *new) __returns_twice;
-
-void ia32_restorectx(struct pcb *);
-void ia32_savectx(struct pcb *) __returns_twice;
-
-#endif
-
-#endif /* _MACHINE_PCB_H_ */
diff --git a/sys/ia64/include/pci_cfgreg.h b/sys/ia64/include/pci_cfgreg.h
deleted file mode 100644
index a0bc6e1..0000000
--- a/sys/ia64/include/pci_cfgreg.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * Copyright (c) 2010 Marcel Moolenaar <marcel@FreeBSD.org>
- * Copyright (c) 1997, Stefan Esser <se@freebsd.org>
- * All rights reserved.
- *
- * 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 unmodified, 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PCI_CFGREG_H_
-#define _MACHINE_PCI_CFGREG_H_
-
-int pci_cfgregopen(void);
-uint32_t pci_cfgregread(int bus, int slot, int func, int reg, int len);
-void pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data,
- int bytes);
-
-#endif /* _MACHINE_PCI_CFGREG_H_ */
diff --git a/sys/ia64/include/pcpu.h b/sys/ia64/include/pcpu.h
deleted file mode 100644
index 4c3f5e8..0000000
--- a/sys/ia64/include/pcpu.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*-
- * Copyright (c) 1999 Luoqi Chen <luoqi@freebsd.org>
- * Copyright (c) Peter Wemm <peter@netplex.com.au>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PCPU_H_
-#define _MACHINE_PCPU_H_
-
-#include <sys/sysctl.h>
-#include <machine/pcb.h>
-
-struct pcpu_stats {
- u_long pcs_nasts; /* IPI_AST counter. */
- u_long pcs_nclks; /* Clock interrupt counter. */
- u_long pcs_nextints; /* ExtINT counter. */
- u_long pcs_nhardclocks; /* IPI_HARDCLOCK counter. */
- u_long pcs_nhighfps; /* IPI_HIGH_FP counter. */
- u_long pcs_nhwints; /* Hardware int. counter. */
- u_long pcs_npreempts; /* IPI_PREEMPT counter. */
- u_long pcs_nrdvs; /* IPI_RENDEZVOUS counter. */
- u_long pcs_nstops; /* IPI_STOP counter. */
- u_long pcs_nstrays; /* Stray interrupt counter. */
-};
-
-struct pcpu_md {
- struct pcb pcb; /* Used by IPI_STOP */
- struct pmap *current_pmap; /* active pmap */
- vm_offset_t vhpt; /* Address of VHPT */
- uint64_t lid; /* local CPU ID */
- uint64_t clock; /* Clock counter. */
- uint64_t clock_load; /* Clock reload value. */
- uint32_t clock_mode; /* Clock ET mode */
- uint32_t awake:1; /* CPU is awake? */
- struct pcpu_stats stats; /* Interrupt stats. */
- void *xtrace_buffer;
- uint64_t xtrace_tail;
-#ifdef _KERNEL
- struct sysctl_ctx_list sysctl_ctx;
- struct sysctl_oid *sysctl_tree;
-#endif
-};
-
-#define PCPU_MD_FIELDS \
- uint32_t pc_acpi_id; /* ACPI CPU id. */ \
- struct pcpu_md pc_md; /* MD fields. */ \
- char __pad[10*128]
-
-#ifdef _KERNEL
-
-struct pcpu;
-
-register struct pcpu * volatile pcpup __asm__("r13");
-
-static __inline __pure2 struct thread *
-__curthread(void)
-{
- struct thread *td;
-
- __asm("ld8.acq %0=[r13]" : "=r"(td));
- return (td);
-}
-#define curthread (__curthread())
-
-#define PCPU_GET(member) (pcpup->pc_ ## member)
-
-/*
- * XXX The implementation of this operation should be made atomic
- * with respect to preemption.
- */
-#define PCPU_ADD(member, value) (pcpup->pc_ ## member += (value))
-#define PCPU_INC(member) PCPU_ADD(member, 1)
-#define PCPU_PTR(member) (&pcpup->pc_ ## member)
-#define PCPU_SET(member,value) (pcpup->pc_ ## member = (value))
-
-#endif /* _KERNEL */
-
-#endif /* !_MACHINE_PCPU_H_ */
diff --git a/sys/ia64/include/pmap.h b/sys/ia64/include/pmap.h
deleted file mode 100644
index e9c8952..0000000
--- a/sys/ia64/include/pmap.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*-
- * Copyright (c) 1991 Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * the Systems Programming Group of the University of Utah Computer
- * Science Department and William Jolitz of UUNET Technologies Inc.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * Derived from hp300 version by Mike Hibler, this version by William
- * Jolitz uses a recursive map [a pde points to the page directory] to
- * map the page tables using the pagetables themselves. This is done to
- * reduce the impact on kernel virtual memory for lots of sparse address
- * space, and to reduce the cost of memory to each process.
- *
- * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
- * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91
- * from: i386 pmap.h,v 1.54 1997/11/20 19:30:35 bde Exp
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PMAP_H_
-#define _MACHINE_PMAP_H_
-
-#include <sys/queue.h>
-#include <sys/_lock.h>
-#include <sys/_mutex.h>
-#include <machine/atomic.h>
-#include <machine/pte.h>
-#include <machine/vmparam.h>
-
-#ifdef _KERNEL
-
-#define MAXKPT (PAGE_SIZE/sizeof(vm_offset_t))
-
-#define vtophys(va) pmap_kextract((vm_offset_t)(va))
-
-#endif /* _KERNEL */
-
-/*
- * Pmap stuff
- */
-struct pv_entry;
-struct pv_chunk;
-
-struct md_page {
- TAILQ_HEAD(,pv_entry) pv_list;
- vm_memattr_t memattr;
-};
-
-struct pmap {
- struct mtx pm_mtx;
- TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */
- uint32_t pm_rid[IA64_VM_MINKERN_REGION];
- struct pmap_statistics pm_stats; /* pmap statistics */
-};
-
-typedef struct pmap *pmap_t;
-
-#ifdef _KERNEL
-extern struct pmap kernel_pmap_store;
-#define kernel_pmap (&kernel_pmap_store)
-
-#define PMAP_LOCK(pmap) mtx_lock(&(pmap)->pm_mtx)
-#define PMAP_LOCK_ASSERT(pmap, type) \
- mtx_assert(&(pmap)->pm_mtx, (type))
-#define PMAP_LOCK_DESTROY(pmap) mtx_destroy(&(pmap)->pm_mtx)
-#define PMAP_LOCK_INIT(pmap) mtx_init(&(pmap)->pm_mtx, "pmap", \
- NULL, MTX_DEF)
-#define PMAP_LOCKED(pmap) mtx_owned(&(pmap)->pm_mtx)
-#define PMAP_MTX(pmap) (&(pmap)->pm_mtx)
-#define PMAP_TRYLOCK(pmap) mtx_trylock(&(pmap)->pm_mtx)
-#define PMAP_UNLOCK(pmap) mtx_unlock(&(pmap)->pm_mtx)
-#endif
-
-/*
- * For each vm_page_t, there is a list of all currently valid virtual
- * mappings of that page. An entry is a pv_entry_t, the list is pv_list.
- */
-typedef struct pv_entry {
- vm_offset_t pv_va; /* virtual address for mapping */
- TAILQ_ENTRY(pv_entry) pv_list;
-} *pv_entry_t;
-
-#ifdef _KERNEL
-
-extern vm_paddr_t phys_avail[];
-extern vm_offset_t virtual_avail;
-extern vm_offset_t virtual_end;
-
-extern uint64_t pmap_vhpt_base[];
-extern int pmap_vhpt_log2size;
-
-#define pmap_mapbios(pa,sz) pmap_mapdev_attr(pa,sz,VM_MEMATTR_UNCACHEABLE)
-#define pmap_mapdev(pa,sz) pmap_mapdev_attr(pa,sz,VM_MEMATTR_UNCACHEABLE)
-#define pmap_unmapbios(va,sz) pmap_unmapdev(va,sz)
-
-#define pmap_page_get_memattr(m) ((m)->md.memattr)
-#define pmap_page_is_mapped(m) (!TAILQ_EMPTY(&(m)->md.pv_list))
-#define pmap_page_is_write_mapped(m) (((m)->aflags & PGA_WRITEABLE) != 0)
-
-void pmap_kenter(vm_offset_t va, vm_paddr_t pa);
-vm_paddr_t pmap_kextract(vm_offset_t va);
-void pmap_kremove(vm_offset_t);
-void *pmap_mapdev_attr(vm_paddr_t, vm_size_t, vm_memattr_t);
-void pmap_page_set_memattr(vm_page_t, vm_memattr_t);
-void pmap_unmapdev(vm_offset_t, vm_size_t);
-
-/* Machine-architecture private */
-vm_offset_t pmap_alloc_vhpt(void);
-void pmap_bootstrap(void);
-void pmap_invalidate_all(void);
-vm_offset_t pmap_mapdev_priv(vm_paddr_t, vm_size_t, vm_memattr_t);
-vm_offset_t pmap_page_to_va(vm_page_t);
-vm_offset_t pmap_steal_memory(vm_size_t);
-struct pmap *pmap_switch(struct pmap *pmap);
-
-#endif /* _KERNEL */
-
-#endif /* !_MACHINE_PMAP_H_ */
diff --git a/sys/ia64/include/pmc_mdep.h b/sys/ia64/include/pmc_mdep.h
deleted file mode 100644
index 7ced0b9..0000000
--- a/sys/ia64/include/pmc_mdep.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*-
- * This file is in the public domain.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PMC_MDEP_H_
-#define _MACHINE_PMC_MDEP_H_
-
-union pmc_md_op_pmcallocate {
- uint64_t __pad[4];
-};
-
-/* Logging */
-#define PMCLOG_READADDR PMCLOG_READ64
-#define PMCLOG_EMITADDR PMCLOG_EMIT64
-
-#if _KERNEL
-union pmc_md_pmc {
-};
-
-#define PMC_TRAPFRAME_TO_PC(TF) (0) /* Stubs */
-#define PMC_TRAPFRAME_TO_FP(TF) (0)
-#define PMC_TRAPFRAME_TO_SP(TF) (0)
-
-#endif
-
-#endif /* !_MACHINE_PMC_MDEP_H_ */
diff --git a/sys/ia64/include/proc.h b/sys/ia64/include/proc.h
deleted file mode 100644
index b046872..0000000
--- a/sys/ia64/include/proc.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * Copyright (c) 2003 The FreeBSD Project
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PROC_H_
-#define _MACHINE_PROC_H_
-
-struct mdthread {
- int md_spinlock_count; /* (k) */
- int md_saved_intr; /* (k) */
-};
-
-struct mdproc {
- int __dummy; /* Avoid having an empty struct. */
-};
-
-#define KINFO_PROC_SIZE 1088
-#define KINFO_PROC32_SIZE 768
-
-#ifdef _KERNEL
-struct syscall_args {
- u_int code;
- int narg;
- struct sysent *callp;
- register_t *args;
- register_t args32[8];
-};
-#endif
-
-#endif /* !_MACHINE_PROC_H_ */
diff --git a/sys/ia64/include/profile.h b/sys/ia64/include/profile.h
deleted file mode 100644
index cdf1434..0000000
--- a/sys/ia64/include/profile.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*-
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PROFILE_H_
-#define _MACHINE_PROFILE_H_
-
-#define _MCOUNT_DECL void __mcount
-#define MCOUNT
-
-#define FUNCTION_ALIGNMENT 16
-
-typedef unsigned long fptrdiff_t;
-
-#ifdef _KERNEL
-/*
- * The following two macros do splhigh and splx respectively.
- */
-#define MCOUNT_ENTER(s) s = intr_disable()
-#define MCOUNT_EXIT(s) intr_restore(s)
-#define MCOUNT_DECL(s) register_t s;
-
-void bintr(void);
-void btrap(void);
-void eintr(void);
-void user(void);
-
-#define MCOUNT_FROMPC_USER(pc) \
- ((pc < (uintfptr_t)VM_MAXUSER_ADDRESS) ? ~0UL : pc)
-
-#define MCOUNT_FROMPC_INTR(pc) (~0UL)
-
-_MCOUNT_DECL(uintfptr_t, uintfptr_t);
-
-#else /* !_KERNEL */
-
-typedef unsigned long uintfptr_t;
-
-#endif
-
-#endif /* _MACHINE_PROFILE_H_ */
diff --git a/sys/ia64/include/pte.h b/sys/ia64/include/pte.h
deleted file mode 100644
index f57cb4d..0000000
--- a/sys/ia64/include/pte.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PTE_H_
-#define _MACHINE_PTE_H_
-
-#define PTE_PRESENT 0x0000000000000001
-#define PTE__RV1_ 0x0000000000000002
-#define PTE_MA_MASK 0x000000000000001C
-#define PTE_MA_WB 0x0000000000000000
-#define PTE_MA_UC 0x0000000000000010
-#define PTE_MA_UCE 0x0000000000000014
-#define PTE_MA_WC 0x0000000000000018
-#define PTE_MA_NATPAGE 0x000000000000001C
-#define PTE_ACCESSED 0x0000000000000020
-#define PTE_DIRTY 0x0000000000000040
-#define PTE_PL_MASK 0x0000000000000180
-#define PTE_PL_KERN 0x0000000000000000
-#define PTE_PL_USER 0x0000000000000180
-#define PTE_AR_MASK 0x0000000000000E00
-#define PTE_AR_R 0x0000000000000000
-#define PTE_AR_RX 0x0000000000000200
-#define PTE_AR_RW 0x0000000000000400
-#define PTE_AR_RWX 0x0000000000000600
-#define PTE_AR_R_RW 0x0000000000000800
-#define PTE_AR_RX_RWX 0x0000000000000A00
-#define PTE_AR_RWX_RW 0x0000000000000C00
-#define PTE_AR_X_RX 0x0000000000000E00
-#define PTE_PPN_MASK 0x0003FFFFFFFFF000
-#define PTE__RV2_ 0x000C000000000000
-#define PTE_ED 0x0010000000000000
-#define PTE_IG_MASK 0xFFE0000000000000
-#define PTE_WIRED 0x0020000000000000
-#define PTE_MANAGED 0x0040000000000000
-#define PTE_PROT_MASK 0x0700000000000000
-
-#define ITIR__RV1_ 0x0000000000000003
-#define ITIR_PS_MASK 0x00000000000000FC
-#define ITIR_KEY_MASK 0x00000000FFFFFF00
-#define ITIR__RV2_ 0xFFFFFFFF00000000
-
-#ifndef LOCORE
-
-typedef uint64_t pt_entry_t;
-
-static __inline pt_entry_t
-pte_atomic_clear(pt_entry_t *ptep, uint64_t val)
-{
- return (atomic_clear_64(ptep, val));
-}
-
-static __inline pt_entry_t
-pte_atomic_set(pt_entry_t *ptep, uint64_t val)
-{
- return (atomic_set_64(ptep, val));
-}
-
-/*
- * A long-format VHPT entry.
- */
-struct ia64_lpte {
- pt_entry_t pte;
- uint64_t itir;
- uint64_t tag; /* includes ti */
- uint64_t chain; /* pa of collision chain */
-};
-
-/*
- * Layout of rr[x].
- */
-struct ia64_rr {
- uint64_t rr_ve :1; /* bit 0 */
- uint64_t __rv1__ :1; /* bit 1 */
- uint64_t rr_ps :6; /* bits 2..7 */
- uint64_t rr_rid :24; /* bits 8..31 */
- uint64_t __rv2__ :32; /* bits 32..63 */
-};
-
-#endif /* !LOCORE */
-
-#endif /* !_MACHINE_PTE_H_ */
diff --git a/sys/ia64/include/ptrace.h b/sys/ia64/include/ptrace.h
deleted file mode 100644
index d73077d..0000000
--- a/sys/ia64/include/ptrace.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)ptrace.h 8.1 (Berkeley) 6/11/93
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_PTRACE_H_
-#define _MACHINE_PTRACE_H_
-
-#define __HAVE_PTRACE_MACHDEP
-
-/* Fetch/store dirty registers on the kernel stack. */
-#define PT_GETKSTACK (PT_FIRSTMACH + 0)
-#define PT_SETKSTACK (PT_FIRSTMACH + 1)
-
-#endif /* _MACHINE_PTRACE_H_ */
diff --git a/sys/ia64/include/reg.h b/sys/ia64/include/reg.h
deleted file mode 100644
index af6489d..0000000
--- a/sys/ia64/include/reg.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_REG_H_
-#define _MACHINE_REG_H_
-
-#include <machine/_regset.h>
-
-struct reg32 {
- unsigned int r_fs;
- unsigned int r_es;
- unsigned int r_ds;
- unsigned int r_edi;
- unsigned int r_esi;
- unsigned int r_ebp;
- unsigned int r_isp;
- unsigned int r_ebx;
- unsigned int r_edx;
- unsigned int r_ecx;
- unsigned int r_eax;
- unsigned int r_trapno;
- unsigned int r_err;
- unsigned int r_eip;
- unsigned int r_cs;
- unsigned int r_eflags;
- unsigned int r_esp;
- unsigned int r_ss;
- unsigned int r_gs;
-};
-
-struct reg {
- struct _special r_special;
- struct _callee_saved r_preserved;
- struct _caller_saved r_scratch;
-};
-
-struct fpreg32 {
- unsigned int fpr_env[7];
- unsigned char fpr_acc[8][10];
- unsigned int fpr_ex_sw;
- unsigned char fpr_pad[64];
-};
-
-struct fpreg {
- struct _callee_saved_fp fpr_preserved;
- struct _caller_saved_fp fpr_scratch;
- struct _high_fp fpr_high;
-};
-
-struct dbreg32 {
- unsigned int dr[8];
-};
-
-struct dbreg {
- unsigned long dbr_data[8];
- unsigned long dbr_inst[8];
-};
-
-#ifdef _KERNEL
-struct thread;
-
-/* XXX these interfaces are MI, so they should be declared in a MI place. */
-int fill_regs(struct thread *, struct reg *);
-int set_regs(struct thread *, struct reg *);
-int fill_fpregs(struct thread *, struct fpreg *);
-int set_fpregs(struct thread *, struct fpreg *);
-int fill_dbregs(struct thread *, struct dbreg *);
-int set_dbregs(struct thread *, struct dbreg *);
-#ifdef COMPAT_FREEBSD32
-int fill_regs32(struct thread *, struct reg32 *);
-int set_regs32(struct thread *, struct reg32 *);
-int fill_fpregs32(struct thread *, struct fpreg32 *);
-int set_fpregs32(struct thread *, struct fpreg32 *);
-int fill_dbregs32(struct thread *, struct dbreg32 *);
-int set_dbregs32(struct thread *, struct dbreg32 *);
-#endif
-#endif
-
-#endif /* _MACHINE_REG_H_ */
diff --git a/sys/ia64/include/reloc.h b/sys/ia64/include/reloc.h
deleted file mode 100644
index 0e4155d..0000000
--- a/sys/ia64/include/reloc.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*-
- * Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>.
- * All rights reserved.
- *
- * 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. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL 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 REGENTS 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.
- *
- * $FreeBSD$
- */
diff --git a/sys/ia64/include/resource.h b/sys/ia64/include/resource.h
deleted file mode 100644
index edde5eb..0000000
--- a/sys/ia64/include/resource.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $FreeBSD$ */
-/*-
- * Copyright 1998 Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby
- * granted, provided that both the above copyright notice and this
- * permission notice appear in all copies, that both the above
- * copyright notice and this permission notice appear in all
- * supporting documentation, and that the name of M.I.T. not be used
- * in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. M.I.T. makes
- * no representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
- * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
- * SHALL M.I.T. 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.
- */
-
-#ifndef _MACHINE_RESOURCE_H_
-#define _MACHINE_RESOURCE_H_ 1
-
-/*
- * Definitions of resource types for Intel Architecture machines
- * with support for legacy ISA devices and drivers.
- */
-
-#define SYS_RES_IRQ 1 /* interrupt lines */
-#define SYS_RES_DRQ 2 /* isa dma lines */
-#define SYS_RES_MEMORY 3 /* i/o memory */
-#define SYS_RES_IOPORT 4 /* i/o ports */
-
-#endif /* !_MACHINE_RESOURCE_H_ */
diff --git a/sys/ia64/include/runq.h b/sys/ia64/include/runq.h
deleted file mode 100644
index c2486d1..0000000
--- a/sys/ia64/include/runq.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*-
- * Copyright (c) 2001 Jake Burkholder <jake@FreeBSD.org>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_RUNQ_H_
-#define _MACHINE_RUNQ_H_
-
-#define RQB_LEN (1UL) /* Number of priority status words. */
-#define RQB_L2BPW (6UL) /* Log2(sizeof(rqb_word_t) * NBBY)). */
-#define RQB_BPW (1UL<<RQB_L2BPW) /* Bits in an rqb_word_t. */
-
-#define RQB_BIT(pri) (1UL << ((pri) & (RQB_BPW - 1)))
-#define RQB_WORD(pri) ((pri) >> RQB_L2BPW)
-
-#define RQB_FFS(word) (__ffsl(word) - 1)
-
-/*
- * Type of run queue status word.
- */
-typedef uint64_t rqb_word_t;
-
-static __inline uint64_t
-__popcnt(uint64_t bits)
-{
- uint64_t result;
-
- __asm __volatile("popcnt %0=%1" : "=r" (result) : "r" (bits));
- return result;
-}
-
-
-static __inline int
-__ffsl(u_long mask)
-{
-
- if (__predict_false(mask == 0ul))
- return (0);
- return (__popcnt(mask ^ (mask - 1)));
-}
-
-#endif
diff --git a/sys/ia64/include/sal.h b/sys/ia64/include/sal.h
deleted file mode 100644
index 4857464..0000000
--- a/sys/ia64/include/sal.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_SAL_H_
-#define _MACHINE_SAL_H_
-
-struct sal_system_table {
- char sal_signature[4];
-#define SAL_SIGNATURE "SST_"
- uint32_t sal_length;
- uint8_t sal_rev[2];
- uint16_t sal_entry_count;
- uint8_t sal_checksum;
- uint8_t sal_reserved1[7];
- uint8_t sal_a_version[2];
- uint8_t sal_b_version[2];
- char sal_oem_id[32];
- char sal_product_id[32];
- uint8_t sal_reserved2[8];
-};
-
-struct sal_entrypoint_descriptor {
- uint8_t sale_type; /* == 0 */
- uint8_t sale_reserved1[7];
- uint64_t sale_pal_proc;
- uint64_t sale_sal_proc;
- uint64_t sale_sal_gp;
- uint8_t sale_reserved2[16];
-};
-
-struct sal_memory_descriptor {
- uint8_t sale_type; /* == 1 */
- uint8_t sale_need_virtual;
- uint8_t sale_current_attribute;
- uint8_t sale_access_rights;
- uint8_t sale_supported_attributes;
- uint8_t sale_reserved1;
- uint8_t sale_memory_type[2];
- uint64_t sale_physical_address;
- uint32_t sale_length;
- uint8_t sale_reserved2[12];
-};
-
-struct sal_platform_descriptor {
- uint8_t sale_type; /* == 2 */
- uint8_t sale_features;
- uint8_t sale_reserved[14];
-};
-
-struct sal_tr_descriptor {
- uint8_t sale_type; /* == 3 */
- uint8_t sale_register_type;
- uint8_t sale_register_number;
- uint8_t sale_reserved1[5];
- uint64_t sale_virtual_address;
- uint64_t sale_page_size;
- uint8_t sale_reserved2[8];
-};
-
-struct sal_ptc_cache_descriptor {
- uint8_t sale_type; /* == 4 */
- uint8_t sale_reserved[3];
- uint32_t sale_domains;
- uint64_t sale_address;
-};
-
-struct sal_ap_wakeup_descriptor {
- uint8_t sale_type; /* == 5 */
- uint8_t sale_mechanism;
- uint8_t sale_reserved[6];
- uint64_t sale_vector;
-};
-
-/*
- * SAL Procedure numbers.
- */
-
-#define SAL_SET_VECTORS 0x01000000
-#define SAL_GET_STATE_INFO 0x01000001
-#define SAL_GET_STATE_INFO_SIZE 0x01000002
-#define SAL_CLEAR_STATE_INFO 0x01000003
-#define SAL_MC_RENDEZ 0x01000004
-#define SAL_MC_SET_PARAMS 0x01000005
-#define SAL_REGISTER_PHYSICAL_ADDR 0x01000006
-#define SAL_CACHE_FLUSH 0x01000008
-#define SAL_CACHE_INIT 0x01000009
-#define SAL_PCI_CONFIG_READ 0x01000010
-#define SAL_PCI_CONFIG_WRITE 0x01000011
-#define SAL_FREQ_BASE 0x01000012
-#define SAL_UPDATE_PAL 0x01000020
-
-/* SAL_SET_VECTORS event handler types */
-#define SAL_OS_MCA 0
-#define SAL_OS_INIT 1
-#define SAL_OS_BOOT_RENDEZ 2
-
-/* SAL_GET_STATE_INFO, SAL_GET_STATE_INFO_SIZE types */
-#define SAL_INFO_MCA 0
-#define SAL_INFO_INIT 1
-#define SAL_INFO_CMC 2
-#define SAL_INFO_CPE 3
-#define SAL_INFO_TYPES 4 /* number of types we know about */
-
-struct ia64_sal_result {
- int64_t sal_status;
- uint64_t sal_result[3];
-};
-
-typedef struct ia64_sal_result sal_entry_t(uint64_t, uint64_t, uint64_t,
- uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
-
-extern sal_entry_t *ia64_sal_entry;
-
-extern void ia64_sal_init(void);
-
-#endif /* _MACHINE_SAL_H_ */
diff --git a/sys/ia64/include/setjmp.h b/sys/ia64/include/setjmp.h
deleted file mode 100644
index 0e7641e..0000000
--- a/sys/ia64/include/setjmp.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*-
- * Copyright (c) 2000
- * Intel Corporation.
- * All rights reserved.
- *
- * 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 Intel Corporation and
- * its contributors.
- *
- * 4. Neither the name of Intel Corporation or its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION 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 INTEL CORPORATION 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_SETJMP_H_
-#define _MACHINE_SETJMP_H_
-
-#include <sys/cdefs.h>
-
-#if __BSD_VISIBLE
-#define JMPBUF_ADDR_OF(buf, item) ((unsigned long)((char *)buf + item))
-
-#define J_UNAT 0
-#define J_NATS 0x8
-#define J_PFS 0x10
-#define J_BSP 0x18
-#define J_RNAT 0x20
-#define J_PREDS 0x28
-#define J_LC 0x30
-#define J_R4 0x38
-#define J_R5 0x40
-#define J_R6 0x48
-#define J_R7 0x50
-#define J_SP 0x58
-#define J_F2 0x60
-#define J_F3 0x70
-#define J_F4 0x80
-#define J_F5 0x90
-#define J_F16 0xa0
-#define J_F17 0xb0
-#define J_F18 0xc0
-#define J_F19 0xd0
-#define J_F20 0xe0
-#define J_F21 0xf0
-#define J_F22 0x100
-#define J_F23 0x110
-#define J_F24 0x120
-#define J_F25 0x130
-#define J_F26 0x140
-#define J_F27 0x150
-#define J_F28 0x160
-#define J_F29 0x170
-#define J_F30 0x180
-#define J_F31 0x190
-#define J_FPSR 0x1a0
-#define J_B0 0x1a8
-#define J_B1 0x1b0
-#define J_B2 0x1b8
-#define J_B3 0x1c0
-#define J_B4 0x1c8
-#define J_B5 0x1d0
-#define J_SIGMASK 0x1d8
-#define J_SIGSET 0x1e0
-#endif /* __BSD_VISIBLE */
-
-#define _JBLEN 0x20 /* Size in long doubles */
-
-/*
- * XXX this check is wrong, since LOCORE is in the application namespace and
- * applications shouldn't be able to affect the implementation. One workaround
- * would be to only check LOCORE if _KERNEL is defined, but unfortunately
- * LOCORE is used outside of the kernel. The best solution would be to rename
- * LOCORE to _LOCORE, so that it can be used in userland to safely affect the
- * implementation.
- */
-#ifndef LOCORE
-
-/*
- * jmp_buf and sigjmp_buf are encapsulated in different structs to force
- * compile-time diagnostics for mismatches. The structs are the same
- * internally to avoid some run-time errors for mismatches.
- */
-#if __BSD_VISIBLE || __POSIX_VISIBLE || __XSI_VISIBLE
-struct _sigjmp_buf {
- long double buf[_JBLEN];
-};
-typedef struct _sigjmp_buf sigjmp_buf[1];
-#endif
-
-struct _jmp_buf {
- long double buf[_JBLEN];
-};
-typedef struct _jmp_buf jmp_buf[1];
-
-#ifdef _KERNEL
-#ifdef CTASSERT
-CTASSERT(sizeof(struct _jmp_buf) == 512);
-#endif
-#endif
-
-#endif /* !LOCORE */
-
-#endif /* !_MACHINE_SETJMP_H_ */
diff --git a/sys/ia64/include/sf_buf.h b/sys/ia64/include/sf_buf.h
deleted file mode 100644
index 44d0109..0000000
--- a/sys/ia64/include/sf_buf.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*-
- * Copyright (c) 2003 Alan L. Cox <alc@cs.rice.edu>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_SF_BUF_H_
-#define _MACHINE_SF_BUF_H_
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/vm_page.h>
-
-/*
- * On this machine, the only purpose for which sf_buf is used is to implement
- * an opaque pointer required by the machine-independent parts of the kernel.
- * That pointer references the vm_page that is "mapped" by the sf_buf. The
- * actual mapping is provided by the direct virtual-to-physical mapping.
- */
-struct sf_buf;
-
-static inline struct sf_buf *
-sf_buf_alloc(struct vm_page *m, int pri)
-{
-
- return ((struct sf_buf *)m);
-}
-
-static inline void
-sf_buf_free(struct sf_buf *sf)
-{
-}
-
-static __inline vm_page_t
-sf_buf_page(struct sf_buf *sf)
-{
-
- return ((vm_page_t)sf);
-}
-
-static __inline vm_offset_t
-sf_buf_kva(struct sf_buf *sf)
-{
- vm_page_t m;
-
- m = sf_buf_page(sf);
- return (pmap_page_to_va(m));
-}
-
-#endif /* !_MACHINE_SF_BUF_H_ */
diff --git a/sys/ia64/include/sigframe.h b/sys/ia64/include/sigframe.h
deleted file mode 100644
index d0e886e..0000000
--- a/sys/ia64/include/sigframe.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * Copyright (c) 1999 Marcel Moolenaar
- * All rights reserved.
- *
- * 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
- * in this position and unchanged.
- * 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. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_SIGFRAME_H_
-#define _MACHINE_SIGFRAME_H_ 1
-
-struct sigframe {
- ucontext_t sf_uc;
- siginfo_t sf_si;
-};
-
-#endif /* _MACHINE_SIGFRAME_H_ */
diff --git a/sys/ia64/include/signal.h b/sys/ia64/include/signal.h
deleted file mode 100644
index d99013c..0000000
--- a/sys/ia64/include/signal.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* $FreeBSD$ */
-/* From: NetBSD: signal.h,v 1.3 1997/04/06 08:47:43 cgd Exp */
-
-/*-
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#ifndef _MACHINE_SIGNAL_H_
-#define _MACHINE_SIGNAL_H_
-
-#include <sys/cdefs.h>
-#include <sys/_sigset.h>
-
-typedef long sig_atomic_t;
-
-#if __BSD_VISIBLE
-/* portable macros for SIGFPE/ARITHTRAP */
-#define FPE_INTOVF 1 /* integer overflow */
-#define FPE_INTDIV 2 /* integer divide by zero */
-#define FPE_FLTDIV 3 /* floating point divide by zero */
-#define FPE_FLTOVF 4 /* floating point overflow */
-#define FPE_FLTUND 5 /* floating point underflow */
-#define FPE_FLTRES 6 /* floating point inexact result */
-#define FPE_FLTINV 7 /* invalid floating point operation */
-#define FPE_FLTSUB 8 /* subscript out of range */
-
-#define BUS_SEGM_FAULT 30 /* segment protection base */
-#endif
-
-/*
- * Information pushed on stack when a signal is delivered.
- * This is used by the kernel to restore state following
- * execution of the signal handler. It is also made available
- * to the handler to allow it to restore state properly if
- * a non-standard exit is performed.
- */
-
-#if __BSD_VISIBLE
-#include <machine/_regset.h>
-
-/*
- * The sequence of the fields should match those in
- * mcontext_t. Keep them in sync!
- */
-struct sigcontext {
- struct __sigset sc_mask; /* signal mask to restore */
- unsigned long sc_onstack;
- unsigned long sc_flags;
- struct _special sc_special;
- struct _callee_saved sc_preserved;
- struct _callee_saved_fp sc_preserved_fp;
- struct _caller_saved sc_scratch;
- struct _caller_saved_fp sc_scratch_fp;
- struct _high_fp sc_high_fp;
-};
-#endif /* __BSD_VISIBLE */
-
-#endif /* !_MACHINE_SIGNAL_H_*/
diff --git a/sys/ia64/include/smp.h b/sys/ia64/include/smp.h
deleted file mode 100644
index 1623609..0000000
--- a/sys/ia64/include/smp.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * $FreeBSD$
- */
-#ifndef _MACHINE_SMP_H_
-#define _MACHINE_SMP_H_
-
-#ifdef _KERNEL
-
-#define IPI_AST ia64_ipi_ast
-#define IPI_HARDCLOCK ia64_ipi_hardclock
-#define IPI_PREEMPT ia64_ipi_preempt
-#define IPI_RENDEZVOUS ia64_ipi_rndzvs
-#define IPI_STOP ia64_ipi_stop
-#define IPI_STOP_HARD ia64_ipi_nmi
-
-#ifndef LOCORE
-
-#include <sys/_cpuset.h>
-
-struct pcpu;
-
-struct ia64_ap_state {
- uint64_t as_trace;
- uint64_t as_pgtbl_pte;
- uint64_t as_pgtbl_itir;
- uint64_t as_text_va;
- uint64_t as_text_pte;
- uint64_t as_text_itir;
- uint64_t as_data_va;
- uint64_t as_data_pte;
- uint64_t as_data_itir;
- void *as_kstack;
- void *as_kstack_top;
- struct pcpu *as_pcpu;
- void *as_xtrace_buffer;
- volatile int as_delay;
- volatile u_int as_awake;
- volatile u_int as_spin;
-};
-
-extern int ia64_ipi_ast;
-extern int ia64_ipi_hardclock;
-extern int ia64_ipi_highfp;
-extern int ia64_ipi_nmi;
-extern int ia64_ipi_preempt;
-extern int ia64_ipi_rndzvs;
-extern int ia64_ipi_stop;
-extern int ia64_ipi_wakeup;
-
-void ipi_all_but_self(int ipi);
-void ipi_cpu(int cpu, u_int ipi);
-void ipi_selected(cpuset_t cpus, int ipi);
-void ipi_send(struct pcpu *, int ipi);
-
-#endif /* !LOCORE */
-#endif /* _KERNEL */
-#endif /* !_MACHINE_SMP_H */
diff --git a/sys/ia64/include/stdarg.h b/sys/ia64/include/stdarg.h
deleted file mode 100644
index e6d0988..0000000
--- a/sys/ia64/include/stdarg.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * Copyright (c) 2002 David E. O'Brien. All rights reserved.
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)stdarg.h 8.1 (Berkeley) 6/10/93
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_STDARG_H_
-#define _MACHINE_STDARG_H_
-
-#include <sys/cdefs.h>
-#include <sys/_types.h>
-
-#ifndef _VA_LIST_DECLARED
-#define _VA_LIST_DECLARED
-typedef __va_list va_list;
-#endif
-
-#if defined(__GNUCLIKE_BUILTIN_STDARG)
-
-#define va_start(ap, last) \
- __builtin_va_start((ap), (last))
-
-#define va_arg(ap, type) \
- __builtin_va_arg((ap), type)
-
-#if __ISO_C_VISIBLE >= 1999
-#define va_copy(dest, src) \
- __builtin_va_copy((dest), (src))
-#endif
-
-#define va_end(ap) \
- __builtin_va_end(ap)
-
-#endif
-
-#endif /* !_MACHINE_STDARG_H_ */
diff --git a/sys/ia64/include/sysarch.h b/sys/ia64/include/sysarch.h
deleted file mode 100644
index c46d100..0000000
--- a/sys/ia64/include/sysarch.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * Copyright (c) 1993 The Regents of the University of California.
- * All rights reserved.
- *
- * 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. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_SYSARCH_H_
-#define _MACHINE_SYSARCH_H_
-
-#ifndef _KERNEL
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-int sysarch(int, void *);
-__END_DECLS
-#endif
-
-#endif /* !_MACHINE_SYSARCH_H_ */
diff --git a/sys/ia64/include/ucontext.h b/sys/ia64/include/ucontext.h
deleted file mode 100644
index f4af26c..0000000
--- a/sys/ia64/include/ucontext.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*-
- * Copyright (c) 1999, 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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
- * in this position and unchanged.
- * 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. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_UCONTEXT_H_
-#define _MACHINE_UCONTEXT_H_
-
-#include <machine/_regset.h>
-
-/*
- * The mc_flags field provides the necessary clues when dealing with the gory
- * details of ia64 specific contexts. A comprehensive explanation is added for
- * everybody's sanity, including the author's.
- *
- * The first and foremost variation in the context is synchronous contexts
- * (= synctx) versus asynchronous contexts (= asynctx). A synctx is created
- * synchronously WRT program execution and has the advantage that none of the
- * scratch registers have to be saved. They are assumed to be clobbered by the
- * call to the function that creates the context. An asynctx needs to have the
- * scratch registers preserved because it can describe any point in a thread's
- * (or process') execution.
- * The second variation is for synchronous contexts. When the kernel creates
- * a synchronous context if needs to preserve the scratch registers, because
- * the syscall argument and return values are stored there in the trapframe
- * and they need to be preserved in order to restart a syscall or return the
- * proper return values. Also, the IIP and CFM fields need to be preserved
- * as they point to the syscall stub, which the kernel saves as a favor to
- * userland (it keeps the stubs small and simple).
- *
- * Below a description of the flags and their meaning:
- *
- * _MC_FLAGS_ASYNC_CONTEXT
- * If set, indicates that mc_scratch and mc_scratch_fp are both
- * valid. IFF not set, _MC_FLAGS_SYSCALL_CONTEXT indicates if the
- * synchronous context is one corresponding to a syscall or not.
- * Only the kernel is expected to create such a context and it's
- * probably wise to let the kernel restore it.
- * _MC_FLAGS_HIGHFP_VALID
- * If set, indicates that the high FP registers (f32-f127) are
- * valid. This flag is very likely not going to be set for any
- * sensible synctx, but is not explicitly disallowed. Any synctx
- * that has this flag may or may not have the high FP registers
- * restored. In short: don't do it.
- * _MC_FLAGS_SYSCALL_CONTEXT
- * If set (hence _MC_FLAGS_ASYNC_CONTEXT is not set) indicates
- * that the scratch registers contain syscall arguments and
- * return values and that additionally IIP and CFM are valid.
- * Only the kernel is expected to create such a context. It's
- * probably wise to let the kernel restore it.
- */
-
-typedef struct __mcontext {
- unsigned long mc_flags;
-#define _MC_FLAGS_ASYNC_CONTEXT 0x0001
-#define _MC_FLAGS_HIGHFP_VALID 0x0002
-#define _MC_FLAGS_SYSCALL_CONTEXT 0x0008
- unsigned long _reserved_;
- struct _special mc_special;
- struct _callee_saved mc_preserved;
- struct _callee_saved_fp mc_preserved_fp;
- struct _caller_saved mc_scratch;
- struct _caller_saved_fp mc_scratch_fp;
- struct _high_fp mc_high_fp;
-} mcontext_t;
-
-#endif /* !_MACHINE_UCONTEXT_H_ */
diff --git a/sys/ia64/include/unwind.h b/sys/ia64/include/unwind.h
deleted file mode 100644
index b1d512c..0000000
--- a/sys/ia64/include/unwind.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_UNWIND_H_
-#define _MACHINE_UNWIND_H_
-
-struct pcb;
-struct trapframe;
-struct uwx_env;
-
-struct unw_regstate {
- struct pcb *pcb;
- struct trapframe *frame;
- struct uwx_env *env;
- uint64_t keyval[8];
-};
-
-int unw_create_from_pcb(struct unw_regstate *s, struct pcb *pcb);
-int unw_create_from_frame(struct unw_regstate *s, struct trapframe *tf);
-void unw_delete(struct unw_regstate *s);
-int unw_step(struct unw_regstate *s);
-
-int unw_get_bsp(struct unw_regstate *s, uint64_t *r);
-int unw_get_cfm(struct unw_regstate *s, uint64_t *r);
-int unw_get_ip(struct unw_regstate *s, uint64_t *r);
-int unw_get_sp(struct unw_regstate *s, uint64_t *r);
-
-int unw_table_add(uint64_t, uint64_t, uint64_t);
-void unw_table_remove(uint64_t);
-
-#endif /* _MACHINE_UNWIND_H_ */
diff --git a/sys/ia64/include/varargs.h b/sys/ia64/include/varargs.h
deleted file mode 100644
index 3ed4231..0000000
--- a/sys/ia64/include/varargs.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * Copyright (c) 2002 David E. O'Brien. All rights reserved.
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * (c) UNIX System Laboratories, Inc.
- * All or some portions of this file are derived from material licensed
- * to the University of California by American Telephone and Telegraph
- * Co. or Unix System Laboratories, Inc. and are reproduced herein with
- * the permission of UNIX System Laboratories, Inc.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)varargs.h 8.2 (Berkeley) 3/22/94
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_VARARGS_H_
-#define _MACHINE_VARARGS_H_
-
-#error "<varargs.h> is obsolete on ia64. Use <stdarg.h> instead."
-
-#endif /* !_MACHINE_VARARGS_H_ */
diff --git a/sys/ia64/include/vdso.h b/sys/ia64/include/vdso.h
deleted file mode 100644
index 4571daa..0000000
--- a/sys/ia64/include/vdso.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * Copyright 2012 Konstantin Belousov <kib@FreeBSD.ORG>.
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _IA64_VDSO_H
-#define _IA64_VDSO_H
-
-#define VDSO_TIMEHANDS_MD \
- uint32_t th_res[8];
-
-#ifdef _KERNEL
-#ifdef COMPAT_FREEBSD32
-
-#define VDSO_TIMEHANDS_MD32 VDSO_TIMEHANDS_MD
-
-#endif
-#endif
-#endif
diff --git a/sys/ia64/include/vm.h b/sys/ia64/include/vm.h
deleted file mode 100644
index 7176771..0000000
--- a/sys/ia64/include/vm.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * Copyright (c) 2009 Alan L. Cox <alc@cs.rice.edu>
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_VM_H_
-#define _MACHINE_VM_H_
-
-#include <machine/atomic.h>
-#include <machine/pte.h>
-
-/* Memory attributes. */
-#define VM_MEMATTR_WRITE_BACK ((vm_memattr_t)PTE_MA_WB)
-#define VM_MEMATTR_UNCACHEABLE ((vm_memattr_t)PTE_MA_UC)
-#define VM_MEMATTR_UNCACHEABLE_EXPORTED ((vm_memattr_t)PTE_MA_UCE)
-#define VM_MEMATTR_WRITE_COMBINING ((vm_memattr_t)PTE_MA_WC)
-#define VM_MEMATTR_NATPAGE ((vm_memattr_t)PTE_MA_NATPAGE)
-
-#define VM_MEMATTR_DEFAULT VM_MEMATTR_WRITE_BACK
-
-#endif /* !_MACHINE_VM_H_ */
diff --git a/sys/ia64/include/vmparam.h b/sys/ia64/include/vmparam.h
deleted file mode 100644
index edae4c4..0000000
--- a/sys/ia64/include/vmparam.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/*-
- * Copyright (c) 1988 University of Utah.
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * the Systems Programming Group of the University of Utah Computer
- * Science Department and Ralph Campbell.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from: Utah $Hdr: vmparam.h 1.16 91/01/18$
- *
- * @(#)vmparam.h 8.2 (Berkeley) 4/22/94
- *
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_VMPARAM_H_
-#define _MACHINE_VMPARAM_H_
-
-/*
- * Virtual memory related constants, all in bytes
- */
-#ifndef MAXTSIZ
-#define MAXTSIZ (1<<30) /* max text size (1G) */
-#endif
-#ifndef DFLDSIZ
-#define DFLDSIZ (1<<27) /* initial data size (128M) */
-#endif
-#ifndef MAXDSIZ
-#define MAXDSIZ (1<<30) /* max data size (1G) */
-#endif
-#ifndef DFLSSIZ
-#define DFLSSIZ (1<<21) /* initial stack size (2M) */
-#endif
-#ifndef MAXSSIZ
-#define MAXSSIZ (1<<28) /* max stack size (256M) */
-#endif
-#ifndef SGROWSIZ
-#define SGROWSIZ (128UL*1024) /* amount to grow stack */
-#endif
-
-/*
- * We need region 7 virtual addresses for pagetables.
- */
-#define UMA_MD_SMALL_ALLOC
-
-/*
- * The physical address space is sparsely populated.
- */
-#define VM_PHYSSEG_SPARSE
-
-/*
- * The number of PHYSSEG entries is equal to the number of phys_avail
- * entries.
- */
-#define VM_PHYSSEG_MAX 49
-
-/*
- * Create three free page pools: VM_FREEPOOL_DEFAULT is the default pool
- * from which physical pages are allocated and VM_FREEPOOL_DIRECT is
- * the pool from which physical pages for small UMA objects are
- * allocated.
- */
-#define VM_NFREEPOOL 3
-#define VM_FREEPOOL_CACHE 2
-#define VM_FREEPOOL_DEFAULT 0
-#define VM_FREEPOOL_DIRECT 1
-
-/*
- * Create one free page list.
- */
-#define VM_NFREELIST 1
-#define VM_FREELIST_DEFAULT 0
-
-/*
- * An allocation size of 256MB is supported in order to optimize the
- * use of the identity mappings in region 7 by UMA.
- */
-#define VM_NFREEORDER 16
-
-/*
- * Disable superpage reservations.
- */
-#ifndef VM_NRESERVLEVEL
-#define VM_NRESERVLEVEL 0
-#endif
-
-#define IA64_VM_MINKERN_REGION 4
-
-/*
- * Manipulating region bits of an address.
- */
-#define IA64_RR_BASE(n) (((uint64_t) (n)) << 61)
-#define IA64_RR_MASK(x) ((x) & ((1L << 61) - 1))
-
-#define IA64_PHYS_TO_RR6(x) ((x) | IA64_RR_BASE(6))
-#define IA64_PHYS_TO_RR7(x) ((x) | IA64_RR_BASE(7))
-
-/*
- * The Itanium architecture defines that all implementations support at
- * least 51 virtual address bits (i.e. IMPL_VA_MSB=50). The unimplemented
- * bits are sign-extended from VA{IMPL_VA_MSB}. As such, there's a gap in
- * the virtual address range, which extends at most from 0x0004000000000000
- * to 0x1ffbffffffffffff. We define the top half of a region in terms of
- * this worst-case gap.
- */
-#define IA64_REGION_GAP_START 0x0004000000000000
-#define IA64_REGION_GAP_EXTEND 0x1ffc000000000000
-
-/*
- * Parameters for Pre-Boot Virtual Memory (PBVM).
- * The kernel, its modules and metadata are loaded in the PBVM by the loader.
- * The PBVM consists of pages for which the mapping is maintained in a page
- * table. The page table is at least 1 EFI page large (i.e. 4KB), but can be
- * larger to accommodate more PBVM. The maximum page table size is 1MB. With
- * 8 bytes per page table entry, this means that the PBVM has at least 512
- * pages and at most 128K pages.
- * The GNU toolchain (in particular GNU ld) does not support an alignment
- * larger than 64K. This means that we cannot guarantee page alignment for
- * a page size that's larger than 64K. We do want to have text and data in
- * different pages, which means that the maximum usable page size is 64KB.
- * Consequently:
- * The maximum total PBVM size is 8GB -- enough for a DVD image. A page table
- * of a single EFI page (4KB) allows for 32MB of PBVM.
- *
- * The kernel is given the PA and size of the page table that provides the
- * mapping of the PBVM. The page table itself is assumed to be mapped at a
- * known virtual address and using a single translation wired into the CPU.
- * As such, the page table is assumed to be a power of 2 and naturally aligned.
- * The kernel also assumes that a good portion of the kernel text is mapped
- * and wired into the CPU, but does not assume that the mapping covers the
- * whole of PBVM.
- */
-#define IA64_PBVM_RR IA64_VM_MINKERN_REGION
-#define IA64_PBVM_BASE \
- (IA64_RR_BASE(IA64_PBVM_RR) + IA64_REGION_GAP_EXTEND)
-
-#define IA64_PBVM_PGTBL_MAXSZ 1048576
-#define IA64_PBVM_PGTBL \
- (IA64_RR_BASE(IA64_PBVM_RR + 1) - IA64_PBVM_PGTBL_MAXSZ)
-
-#define IA64_PBVM_PAGE_SHIFT 16 /* 64KB */
-#define IA64_PBVM_PAGE_SIZE (1 << IA64_PBVM_PAGE_SHIFT)
-#define IA64_PBVM_PAGE_MASK (IA64_PBVM_PAGE_SIZE - 1)
-
-/*
- * Mach derived constants
- */
-
-/* user/kernel map constants */
-#define VM_MIN_ADDRESS 0
-#define VM_MAXUSER_ADDRESS IA64_RR_BASE(IA64_VM_MINKERN_REGION)
-#define VM_MIN_KERNEL_ADDRESS VM_MAXUSER_ADDRESS
-#define VM_INIT_KERNEL_ADDRESS IA64_RR_BASE(IA64_VM_MINKERN_REGION + 1)
-#define VM_MAX_KERNEL_ADDRESS (IA64_RR_BASE(IA64_VM_MINKERN_REGION + 2) - 1)
-#define VM_MAX_ADDRESS ~0UL
-
-/* We link the kernel at IA64_PBVM_BASE. */
-#define KERNBASE IA64_PBVM_BASE
-
-/*
- * USRSTACK is the top (end) of the user stack. Immediately above the user
- * stack resides the syscall gateway page.
- */
-#define USRSTACK VM_MAXUSER_ADDRESS
-#define IA64_BACKINGSTORE (USRSTACK - (2 * MAXSSIZ) - PAGE_SIZE)
-
-/*
- * How many physical pages per kmem arena virtual page.
- */
-#ifndef VM_KMEM_SIZE_SCALE
-#define VM_KMEM_SIZE_SCALE (4)
-#endif
-
-/* initial pagein size of beginning of executable file */
-#ifndef VM_INITIAL_PAGEIN
-#define VM_INITIAL_PAGEIN 16
-#endif
-
-#define ZERO_REGION_SIZE (2 * 1024 * 1024) /* 2MB */
-
-#endif /* !_MACHINE_VMPARAM_H_ */
diff --git a/sys/ia64/isa/isa.c b/sys/ia64/isa/isa.c
deleted file mode 100644
index cdb93cc..0000000
--- a/sys/ia64/isa/isa.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-/*
- * Modifications for Intel architecture by Garrett A. Wollman.
- * Copyright 1998 Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby
- * granted, provided that both the above copyright notice and this
- * permission notice appear in all copies, that both the above
- * copyright notice and this permission notice appear in all
- * supporting documentation, and that the name of M.I.T. not be used
- * in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. M.I.T. makes
- * no representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
- * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
- * SHALL M.I.T. 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 <sys/param.h>
-#include <sys/bus.h>
-#include <sys/malloc.h>
-#include <machine/bus.h>
-#include <sys/rman.h>
-
-#include <machine/resource.h>
-
-#include <isa/isareg.h>
-#include <isa/isavar.h>
-#include <isa/isa_common.h>
-
-void
-isa_init(device_t dev)
-{
-}
-
-/*
- * This implementation simply passes the request up to the parent
- * bus, which in our case is the special i386 nexus, substituting any
- * configured values if the caller defaulted. We can get away with
- * this because there is no special mapping for ISA resources on an Intel
- * platform. When porting this code to another architecture, it may be
- * necessary to interpose a mapping layer here.
- */
-struct resource *
-isa_alloc_resource(device_t bus, device_t child, int type, int *rid,
- u_long start, u_long end, u_long count, u_int flags)
-{
- /*
- * Consider adding a resource definition.
- */
- int passthrough = (device_get_parent(child) != bus);
- int isdefault = (start == 0UL && end == ~0UL);
- struct isa_device* idev = DEVTOISA(child);
- struct resource_list *rl = &idev->id_resources;
- struct resource_list_entry *rle;
-
- if (!passthrough && !isdefault) {
- rle = resource_list_find(rl, type, *rid);
- if (!rle) {
- if (*rid < 0)
- return 0;
- switch (type) {
- case SYS_RES_IRQ:
- if (*rid >= ISA_NIRQ)
- return 0;
- break;
- case SYS_RES_DRQ:
- if (*rid >= ISA_NDRQ)
- return 0;
- break;
- case SYS_RES_MEMORY:
- if (*rid >= ISA_NMEM)
- return 0;
- break;
- case SYS_RES_IOPORT:
- if (*rid >= ISA_NPORT)
- return 0;
- break;
- default:
- return 0;
- }
- resource_list_add(rl, type, *rid, start, end, count);
- }
- }
-
- return resource_list_alloc(rl, bus, child, type, rid,
- start, end, count, flags);
-}
-
-int
-isa_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
-{
- struct isa_device* idev = DEVTOISA(child);
- struct resource_list *rl = &idev->id_resources;
- return resource_list_release(rl, bus, child, type, rid, r);
-}
diff --git a/sys/ia64/isa/isa_dma.c b/sys/ia64/isa/isa_dma.c
deleted file mode 100644
index 1b093e5..0000000
--- a/sys/ia64/isa/isa_dma.c
+++ /dev/null
@@ -1,508 +0,0 @@
-/*-
- * Copyright (c) 1991 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * from: @(#)isa.c 7.2 (Berkeley) 5/13/91
- * from: isa_dma.c,v 1.3 1999/05/09 23:56:00 peter Exp $
- * $FreeBSD$
- */
-
-/*
- * code to manage AT bus
- *
- * 92/08/18 Frank P. MacLachlan (fpm@crash.cts.com):
- * Fixed uninitialized variable problem and added code to deal
- * with DMA page boundaries in isa_dmarangecheck(). Fixed word
- * mode DMA count compution and reorganized DMA setup code in
- * isa_dmastart()
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/malloc.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/bus.h>
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/pmap.h>
-#include <isa/isareg.h>
-#include <isa/isavar.h>
-#include <isa/isa_dmareg.h>
-#include <machine/bus.h>
-
-static bus_dma_tag_t dma_tag[8];
-static bus_dmamap_t dma_map[8];
-static u_int8_t dma_busy = 0; /* Used in isa_dmastart() */
-static u_int8_t dma_inuse = 0; /* User for acquire/release */
-static u_int8_t dma_auto_mode = 0;
-static u_int8_t dma_bounced = 0;
-
-#define VALID_DMA_MASK (7)
-
-/* high byte of address is stored in this port for i-th dma channel */
-static int dmapageport[8] = { 0x87, 0x83, 0x81, 0x82, 0x8f, 0x8b, 0x89, 0x8a };
-
-/*
- * Setup a DMA channel's bounce buffer.
- */
-int
-isa_dma_init(int chan, u_int bouncebufsize, int flag __unused)
-{
- static int initted = 0;
- bus_addr_t boundary = chan >= 4 ? 0x20000 : 0x10000;
-
- if (!initted) {
- /*
- * Reset the DMA hardware.
- */
- outb(DMA1_RESET, 0);
- outb(DMA2_RESET, 0);
- isa_dmacascade(4);
-
- initted = 1;
- }
-
-#ifdef DIAGNOSTIC
- if (chan & ~VALID_DMA_MASK)
- panic("isa_dma_init: channel out of range");
-
- if (dma_tag[chan] || dma_map[chan])
- panic("isa_dma_init: impossible request");
-#endif
-
- if (bus_dma_tag_create(/*parent*/NULL,
- /*alignment*/2,
- /*boundary*/boundary,
- /*lowaddr*/BUS_SPACE_MAXADDR_24BIT,
- /*highaddr*/BUS_SPACE_MAXADDR,
- /*filter*/NULL, /*filterarg*/NULL,
- /*maxsize*/bouncebufsize,
- /*nsegments*/1, /*maxsegz*/0x3ffff,
- /*flags*/0,
- /*lockfunc*/busdma_lock_mutex,
- /*lockarg*/&Giant,
- &dma_tag[chan]) != 0) {
- panic("isa_dma_init: unable to create dma tag\n");
- }
-
- if (bus_dmamap_create(dma_tag[chan], 0, &dma_map[chan])) {
- panic("isa_dma_init: unable to create dma map\n");
- }
-
- return (0);
-}
-
-/*
- * Register a DMA channel's usage. Usually called from a device driver
- * in open() or during its initialization.
- */
-int
-isa_dma_acquire(chan)
- int chan;
-{
-#ifdef DIAGNOSTIC
- if (chan & ~VALID_DMA_MASK)
- panic("isa_dma_acquire: channel out of range");
-#endif
-
- if (dma_inuse & (1 << chan)) {
- printf("isa_dma_acquire: channel %d already in use\n", chan);
- return (EBUSY);
- }
- dma_inuse |= (1 << chan);
- dma_auto_mode &= ~(1 << chan);
-
- return (0);
-}
-
-/*
- * Unregister a DMA channel's usage. Usually called from a device driver
- * during close() or during its shutdown.
- */
-void
-isa_dma_release(chan)
- int chan;
-{
-#ifdef DIAGNOSTIC
- if (chan & ~VALID_DMA_MASK)
- panic("isa_dma_release: channel out of range");
-
- if ((dma_inuse & (1 << chan)) == 0)
- printf("isa_dma_release: channel %d not in use\n", chan);
-#endif
-
- if (dma_busy & (1 << chan)) {
- dma_busy &= ~(1 << chan);
- /*
- * XXX We should also do "dma_bounced &= (1 << chan);"
- * because we are acting on behalf of isa_dmadone() which
- * was not called to end the last DMA operation. This does
- * not matter now, but it may in the future.
- */
- }
-
- dma_inuse &= ~(1 << chan);
- dma_auto_mode &= ~(1 << chan);
-}
-
-/*
- * isa_dmacascade(): program 8237 DMA controller channel to accept
- * external dma control by a board.
- */
-void
-isa_dmacascade(chan)
- int chan;
-{
-#ifdef DIAGNOSTIC
- if (chan & ~VALID_DMA_MASK)
- panic("isa_dmacascade: channel out of range");
-#endif
-
- /* set dma channel mode, and set dma channel mode */
- if ((chan & 4) == 0) {
- outb(DMA1_MODE, DMA37MD_CASCADE | chan);
- outb(DMA1_SMSK, chan);
- } else {
- outb(DMA2_MODE, DMA37MD_CASCADE | (chan & 3));
- outb(DMA2_SMSK, chan & 3);
- }
-}
-
-/*
- * isa_dmastart(): program 8237 DMA controller channel.
- */
-
-struct isa_dmastart_arg {
- caddr_t addr;
- int chan;
- int flags;
-};
-
-static void isa_dmastart_cb(void *arg, bus_dma_segment_t *segs, int nseg,
- int error)
-{
-#if 0
- caddr_t addr = ((struct isa_dmastart_arg *) arg)->addr;
-#endif
- int chan = ((struct isa_dmastart_arg *) arg)->chan;
- int flags = ((struct isa_dmastart_arg *) arg)->flags;
- bus_addr_t phys = segs->ds_addr;
- int nbytes = segs->ds_len;
- int waport;
-
- if (nseg != 1)
- panic("isa_dmastart: transfer mapping not contiguous");
-
-#if 0
- if ((chipset.sgmap == NULL) &&
- (pmap_extract(kernel_pmap, (vm_offset_t)addr)
- > BUS_SPACE_MAXADDR_24BIT)) {
- /* we bounced */
- dma_bounced |= (1 << chan);
- /* copy bounce buffer on write */
- if (!(flags & ISADMA_READ))
- bus_dmamap_sync(dma_tag[chan], dma_map[chan],
- BUS_DMASYNC_PREWRITE);
- }
-#endif
-
- if ((chan & 4) == 0) {
- /*
- * Program one of DMA channels 0..3. These are
- * byte mode channels.
- */
- /* set dma channel mode, and reset address ff */
-
- /* If ISADMA_RAW flag is set, then use autoinitialise mode */
- if (flags & ISADMA_RAW) {
- if (flags & ISADMA_READ)
- outb(DMA1_MODE, DMA37MD_AUTO|DMA37MD_WRITE|chan);
- else
- outb(DMA1_MODE, DMA37MD_AUTO|DMA37MD_READ|chan);
- }
- else
- if (flags & ISADMA_READ)
- outb(DMA1_MODE, DMA37MD_SINGLE|DMA37MD_WRITE|chan);
- else
- outb(DMA1_MODE, DMA37MD_SINGLE|DMA37MD_READ|chan);
- outb(DMA1_FFC, 0);
-
- /* send start address */
- waport = DMA1_CHN(chan);
- outb(waport, phys);
- outb(waport, phys>>8);
- outb(dmapageport[chan], phys>>16);
-
- /* send count */
- outb(waport + 1, --nbytes);
- outb(waport + 1, nbytes>>8);
-
- /* unmask channel */
- outb(DMA1_SMSK, chan);
- } else {
- /*
- * Program one of DMA channels 4..7. These are
- * word mode channels.
- */
- /* set dma channel mode, and reset address ff */
-
- /* If ISADMA_RAW flag is set, then use autoinitialise mode */
- if (flags & ISADMA_RAW) {
- if (flags & ISADMA_READ)
- outb(DMA2_MODE, DMA37MD_AUTO|DMA37MD_WRITE|(chan&3));
- else
- outb(DMA2_MODE, DMA37MD_AUTO|DMA37MD_READ|(chan&3));
- }
- else
- if (flags & ISADMA_READ)
- outb(DMA2_MODE, DMA37MD_SINGLE|DMA37MD_WRITE|(chan&3));
- else
- outb(DMA2_MODE, DMA37MD_SINGLE|DMA37MD_READ|(chan&3));
- outb(DMA2_FFC, 0);
-
- /* send start address */
- waport = DMA2_CHN(chan - 4);
- outb(waport, phys>>1);
- outb(waport, phys>>9);
- outb(dmapageport[chan], phys>>16);
-
- /* send count */
- nbytes >>= 1;
- outb(waport + 2, --nbytes);
- outb(waport + 2, nbytes>>8);
-
- /* unmask channel */
- outb(DMA2_SMSK, chan & 3);
- }
-}
-
-void
-isa_dmastart(int flags, caddr_t addr, u_int nbytes, int chan)
-{
- struct isa_dmastart_arg args;
-
-#ifdef DIAGNOSTIC
- if (chan & ~VALID_DMA_MASK)
- panic("isa_dmastart: channel out of range");
-
- if ((chan < 4 && nbytes > (1<<16))
- || (chan >= 4 && (nbytes > (1<<17) || (uintptr_t)addr & 1)))
- panic("isa_dmastart: impossible request");
-
- if ((dma_inuse & (1 << chan)) == 0)
- printf("isa_dmastart: channel %d not acquired\n", chan);
-#endif
-
-#if 0
- /*
- * XXX This should be checked, but drivers like ad1848 only call
- * isa_dmastart() once because they use Auto DMA mode. If we
- * leave this in, drivers that do this will print this continuously.
- */
- if (dma_busy & (1 << chan))
- printf("isa_dmastart: channel %d busy\n", chan);
-#endif
-
- if (!dma_tag[chan] || !dma_map[chan])
- panic("isa_dmastart: called without isa_dma_init");
-
- dma_busy |= (1 << chan);
-
- if (flags & ISADMA_RAW) {
- dma_auto_mode |= (1 << chan);
- } else {
- dma_auto_mode &= ~(1 << chan);
- }
-
- /*
- * Freeze dma while updating registers.
- */
- outb(chan & 4 ? DMA2_SMSK : DMA1_SMSK, (chan & 3) | 4);
-
- args.addr = addr;
- args.chan = chan;
- args.flags = flags;
- bus_dmamap_load(dma_tag[chan], dma_map[chan], addr, nbytes,
- isa_dmastart_cb, &args, 0);
-}
-
-void
-isa_dmadone(int flags, caddr_t addr, int nbytes, int chan)
-{
-#ifdef DIAGNOSTIC
- if (chan & ~VALID_DMA_MASK)
- panic("isa_dmadone: channel out of range");
-
- if ((dma_inuse & (1 << chan)) == 0)
- printf("isa_dmadone: channel %d not acquired\n", chan);
-#endif
-
- if (((dma_busy & (1 << chan)) == 0) &&
- (dma_auto_mode & (1 << chan)) == 0 )
- printf("isa_dmadone: channel %d not busy\n", chan);
-
- if (dma_bounced & (1 << chan)) {
- /* copy bounce buffer on read */
- if (flags & ISADMA_READ) {
- bus_dmamap_sync(dma_tag[chan], dma_map[chan],
- BUS_DMASYNC_POSTREAD);
- }
- dma_bounced &= ~(1 << chan);
- }
-
- if ((dma_auto_mode & (1 << chan)) == 0) {
- outb(chan & 4 ? DMA2_SMSK : DMA1_SMSK, (chan & 3) | 4);
- bus_dmamap_unload(dma_tag[chan], dma_map[chan]);
- }
-
- dma_busy &= ~(1 << chan);
-}
-
-/*
- * Query the progress of a transfer on a DMA channel.
- *
- * To avoid having to interrupt a transfer in progress, we sample
- * each of the high and low databytes twice, and apply the following
- * logic to determine the correct count.
- *
- * Reads are performed with interrupts disabled, thus it is to be
- * expected that the time between reads is very small. At most
- * one rollover in the low count byte can be expected within the
- * four reads that are performed.
- *
- * There are three gaps in which a rollover can occur :
- *
- * - read low1
- * gap1
- * - read high1
- * gap2
- * - read low2
- * gap3
- * - read high2
- *
- * If a rollover occurs in gap1 or gap2, the low2 value will be
- * greater than the low1 value. In this case, low2 and high2 are a
- * corresponding pair.
- *
- * In any other case, low1 and high1 can be considered to be correct.
- *
- * The function returns the number of bytes remaining in the transfer,
- * or -1 if the channel requested is not active.
- *
- */
-int
-isa_dmastatus(int chan)
-{
- u_long cnt = 0;
- int ffport, waport;
- u_long low1, high1, low2, high2;
- int s;
-
- /* channel active? */
- if ((dma_inuse & (1 << chan)) == 0) {
- printf("isa_dmastatus: channel %d not active\n", chan);
- return(-1);
- }
- /* channel busy? */
-
- if (((dma_busy & (1 << chan)) == 0) &&
- (dma_auto_mode & (1 << chan)) == 0 ) {
- printf("chan %d not busy\n", chan);
- return -2 ;
- }
- if (chan < 4) { /* low DMA controller */
- ffport = DMA1_FFC;
- waport = DMA1_CHN(chan) + 1;
- } else { /* high DMA controller */
- ffport = DMA2_FFC;
- waport = DMA2_CHN(chan - 4) + 2;
- }
-
- s = splhigh(); /* no interrupts Mr Jones! */
- outb(ffport, 0); /* clear register LSB flipflop */
- low1 = inb(waport);
- high1 = inb(waport);
- outb(ffport, 0); /* clear again */
- low2 = inb(waport);
- high2 = inb(waport);
- splx(s); /* enable interrupts again */
-
- /*
- * Now decide if a wrap has tried to skew our results.
- * Note that after TC, the count will read 0xffff, while we want
- * to return zero, so we add and then mask to compensate.
- */
- if (low1 >= low2) {
- cnt = (low1 + (high1 << 8) + 1) & 0xffff;
- } else {
- cnt = (low2 + (high2 << 8) + 1) & 0xffff;
- }
-
- if (chan >= 4) /* high channels move words */
- cnt *= 2;
- return(cnt);
-}
-
-/*
- * Reached terminal count yet ?
- */
-int
-isa_dmatc(int chan)
-{
-
- if (chan < 4)
- return(inb(DMA1_STATUS) & (1 << chan));
- else
- return(inb(DMA2_STATUS) & (1 << (chan & 3)));
-}
-
-/*
- * Stop a DMA transfer currently in progress.
- */
-int
-isa_dmastop(int chan)
-{
- if ((dma_inuse & (1 << chan)) == 0)
- printf("isa_dmastop: channel %d not acquired\n", chan);
-
- if (((dma_busy & (1 << chan)) == 0) &&
- ((dma_auto_mode & (1 << chan)) == 0)) {
- printf("chan %d not busy\n", chan);
- return -2 ;
- }
-
- if ((chan & 4) == 0) {
- outb(DMA1_SMSK, (chan & 3) | 4 /* disable mask */);
- } else {
- outb(DMA2_SMSK, (chan & 3) | 4 /* disable mask */);
- }
- return(isa_dmastatus(chan));
-}
diff --git a/sys/ia64/pci/pci_cfgreg.c b/sys/ia64/pci/pci_cfgreg.c
deleted file mode 100644
index e3f472b..0000000
--- a/sys/ia64/pci/pci_cfgreg.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * Copyright (c) 2010 Marcel Moolenaar
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * 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 AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <machine/cpufunc.h>
-#include <machine/pci_cfgreg.h>
-#include <machine/sal.h>
-
-static u_long
-pci_sal_address(int dom, int bus, int slot, int func, int reg)
-{
- u_long addr;
-
- addr = ~0ul;
- if (dom >= 0 && dom <= 255 && bus >= 0 && bus <= 255 &&
- slot >= 0 && slot <= 31 && func >= 0 && func <= 7 &&
- reg >= 0 && reg <= 255) {
- addr = ((u_long)dom << 24) | ((u_long)bus << 16) |
- ((u_long)slot << 11) | ((u_long)func << 8) | (u_long)reg;
- }
- return (addr);
-}
-
-static int
-pci_valid_access(int reg, int len)
-{
- int ok;
-
- ok = ((len == 1 || len == 2 || len == 4) && (reg & (len - 1)) == 0)
- ? 1 : 0;
- return (ok);
-}
-
-int
-pci_cfgregopen(void)
-{
- return (1);
-}
-
-uint32_t
-pci_cfgregread(int bus, int slot, int func, int reg, int len)
-{
- struct ia64_sal_result res;
- register_t is;
- u_long addr;
-
- addr = pci_sal_address(bus >> 8, bus & 0xff, slot, func, reg);
- if (addr == ~0ul)
- return (~0);
-
- if (!pci_valid_access(reg, len))
- return (~0);
-
- is = intr_disable();
- res = ia64_sal_entry(SAL_PCI_CONFIG_READ, addr, len, 0, 0, 0, 0, 0);
- intr_restore(is);
-
- return ((res.sal_status < 0) ? ~0 : res.sal_result[0]);
-}
-
-void
-pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, int len)
-{
- struct ia64_sal_result res;
- register_t is;
- u_long addr;
-
- addr = pci_sal_address(bus >> 8, bus & 0xff, slot, func, reg);
- if (addr == ~0ul)
- return;
-
- if (!pci_valid_access(reg, len))
- return;
-
- is = intr_disable();
- res = ia64_sal_entry(SAL_PCI_CONFIG_WRITE, addr, len, data, 0, 0, 0, 0);
- intr_restore(is);
-}
diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c
index b085a70..6342119 100644
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -130,7 +130,7 @@ SYSCTL_INT(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO,
__XSTRING(__CONCAT(ELF, __ELF_WORD_SIZE)) ": enable non-executable stack");
#if __ELF_WORD_SIZE == 32
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
int i386_read_exec = 0;
SYSCTL_INT(_kern_elf32, OID_AUTO, read_exec, CTLFLAG_RW, &i386_read_exec, 0,
"enable execution from readable segments");
@@ -2112,7 +2112,7 @@ __elfN(trans_prot)(Elf_Word flags)
if (flags & PF_R)
prot |= VM_PROT_READ;
#if __ELF_WORD_SIZE == 32
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
if (i386_read_exec && (flags & PF_R))
prot |= VM_PROT_EXECUTE;
#endif
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index bc9af29..860820a 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -1091,15 +1091,6 @@ exec_new_vmspace(imgp, sv)
if (error)
return (error);
-#ifdef __ia64__
- /* Allocate a new register stack */
- stack_addr = IA64_BACKINGSTORE;
- error = vm_map_stack(map, stack_addr, (vm_size_t)ssiz,
- sv->sv_stackprot, VM_PROT_ALL, MAP_STACK_GROWS_UP);
- if (error)
- return (error);
-#endif
-
/*
* vm_ssize and vm_maxsaddr are somewhat antiquated concepts, but they
* are still used to enforce the stack rlimit on the process stack.
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c
index b21a4f0..3f95371 100644
--- a/sys/kern/kern_thread.c
+++ b/sys/kern/kern_thread.c
@@ -234,7 +234,7 @@ thread_fini(void *mem, int size)
* For a newly created process,
* link up all the structures and its initial threads etc.
* called from:
- * {arch}/{arch}/machdep.c ia64_init(), init386() etc.
+ * {arch}/{arch}/machdep.c {arch}_init(), init386() etc.
* proc_dtor() (should go away)
* proc_init()
*/
diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c
index 631ba75..ecee5a7 100644
--- a/sys/kern/link_elf.c
+++ b/sys/kern/link_elf.c
@@ -317,10 +317,6 @@ link_elf_delete_gdb(struct link_map *l)
}
#endif /* GDB */
-#ifdef __ia64__
-Elf_Addr link_elf_get_gp(linker_file_t);
-#endif
-
/*
* The kernel symbol table starts here.
*/
@@ -1454,21 +1450,6 @@ link_elf_each_function_nameval(linker_file_t file,
return (0);
}
-#ifdef __ia64__
-/*
- * Each KLD has its own GP. The GP value for each load module is given by
- * DT_PLTGOT on ia64. We need GP to construct function descriptors, but
- * don't have direct access to the ELF file structure. The link_elf_get_gp()
- * function returns the GP given a pointer to a generic linker file struct.
- */
-Elf_Addr
-link_elf_get_gp(linker_file_t lf)
-{
- elf_file_t ef = (elf_file_t)lf;
- return ((Elf_Addr)ef->got);
-}
-#endif
-
const Elf_Sym *
elf_get_sym(linker_file_t lf, Elf_Size symidx)
{
diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c
index 4ba4cf1..8d25461 100644
--- a/sys/kern/subr_witness.c
+++ b/sys/kern/subr_witness.c
@@ -660,9 +660,6 @@ static struct witness_order_list_entry order_lists[] = {
{ "mprof lock", &lock_class_mtx_spin },
{ "zombie lock", &lock_class_mtx_spin },
{ "ALD Queue", &lock_class_mtx_spin },
-#ifdef __ia64__
- { "MCA spin lock", &lock_class_mtx_spin },
-#endif
#if defined(__i386__) || defined(__amd64__)
{ "pcicfg", &lock_class_mtx_spin },
{ "NDIS thread lock", &lock_class_mtx_spin },
diff --git a/sys/libkern/ia64/__divdi3.S b/sys/libkern/ia64/__divdi3.S
deleted file mode 100644
index 9465c9c..0000000
--- a/sys/libkern/ia64/__divdi3.S
+++ /dev/null
@@ -1,142 +0,0 @@
-.file "__divdi3.s"
-
-// $FreeBSD$
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-.proc __divdi3#
-.align 32
-.global __divdi3#
-.align 32
-
-// 64-bit signed integer divide
-
-__divdi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mmi
-
- // 64-BIT SIGNED INTEGER DIVIDE BEGINS HERE
-
- setf.sig f8=r32
- setf.sig f9=r33
- nop.i 0;;
-} { .mfb
- nop.m 0
- fcvt.xf f6=f8
- nop.b 0
-} { .mfb
- nop.m 0
- fcvt.xf f7=f9
- nop.b 0;;
-} { .mfi
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // e0 = 1 - b * y0 in f9
- (p6) fnma.s1 f9=f7,f8,f1
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // q0 = a * y0 in f10
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f9,f9,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // q1 = q0 + e0 * q0 in f10
- (p6) fma.s1 f10=f9,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f9,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // r2 = a - b * q2 in f10
- (p6) fnma.s1 f10=f7,f9,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (10)
- // q3 = q2 + r2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f9
- nop.i 0;;
-} { .mfb
- nop.m 0
- // Step (11)
- // q = trunc (q3)
- fcvt.fx.trunc.s1 f8=f8
- nop.b 0;;
-} { .mmi
- // quotient will be in r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 64-BIT SIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __divdi3
diff --git a/sys/libkern/ia64/__divsi3.S b/sys/libkern/ia64/__divsi3.S
deleted file mode 100644
index f7edd97..0000000
--- a/sys/libkern/ia64/__divsi3.S
+++ /dev/null
@@ -1,124 +0,0 @@
-.file "__divsi3.s"
-
-// $FreeBSD$
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-
-// 32-bit signed integer divide
-
-.proc __divsi3#
-.align 32
-.global __divsi3#
-.align 32
-
-__divsi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mii
- nop.m 0
-
- // 32-BIT SIGNED INTEGER DIVIDE BEGINS HERE
-
- // general register used:
- // r32 - 32-bit signed integer dividend
- // r33 - 32-bit signed integer divisor
- // r8 - 32-bit signed integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9
- // predicate registers used: p6
-
- sxt4 r32=r32
- sxt4 r33=r33;;
-} { .mmb
- setf.sig f6=r32
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- nop.m 0
- fcvt.xf f6=f6
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xf f7=f7
- mov r2 = 0x0ffdd;;
-} { .mfi
- setf.exp f9 = r2
- // (1) y0
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (2) q0 = a * y0
- (p6) fma.s1 f6=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // (3) e0 = 1 - b * y0
- (p6) fnma.s1 f7=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (4) q1 = q0 + e0 * q0
- (p6) fma.s1 f6=f7,f6,f6
- nop.i 0
-} { .mfi
- nop.m 0
- // (5) e1 = e0 * e0 + 2^-34
- (p6) fma.s1 f7=f7,f7,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (6) q2 = q1 + e1 * q1
- (p6) fma.s1 f8=f7,f6,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (7) q = trunc(q2)
- fcvt.fx.trunc.s1 f8=f8
- nop.i 0;;
-} { .mmi
- // quotient will be in the least significant 32 bits of r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 32-BIT SIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __divsi3
diff --git a/sys/libkern/ia64/__moddi3.S b/sys/libkern/ia64/__moddi3.S
deleted file mode 100644
index e731adc..0000000
--- a/sys/libkern/ia64/__moddi3.S
+++ /dev/null
@@ -1,159 +0,0 @@
-.file "__moddi3.s"
-
-// $FreeBSD$
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-
-// 64-bit signed integer remainder
-
-.proc __moddi3#
-.align 32
-.global __moddi3#
-.align 32
-
-__moddi3:
-
-{ .mii
- alloc r31=ar.pfs,3,0,0,0
- nop.i 0
- nop.i 0
-} { .mmb
-
- // 64-BIT SIGNED INTEGER REMAINDER BEGINS HERE
-
- // general register used:
- // r32 - 64-bit signed integer dividend, called a below
- // r33 - 64-bit signed integer divisor, called b below
- // r8 - 64-bit signed integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9, f10, f11, f12
- // predicate registers used: p6
-
- setf.sig f12=r32 // holds a in integer form
- setf.sig f7=r33
- nop.b 0
-} { .mlx
- nop.m 0
- //movl r2=0x8000000000000000;;
- movl r2=0xffffffffffffffff;;
-} { .mfi
- // get the 2's complement of b
- sub r33=r0,r33
- fcvt.xf f6=f12
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xf f7=f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // q0 = a * y0 in f10
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // e0 = 1 - b * y0 in f9
- (p6) fnma.s1 f9=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // q1 = q0 + e0 * q0 in f10
- (p6) fma.s1 f10=f9,f10,f10
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f9,f9,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f9,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // r2 = a - b * q2 in f10
- (p6) fnma.s1 f10=f7,f9,f6
- nop.i 0;;
-} { .mfi
- setf.sig f7=r33
- // Step (10)
- // q3 = q2 + r2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (11) q = trunc(q3)
- fcvt.fx.trunc.s1 f8=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (12) r = a + (-b) * q
- xma.l f8=f8,f7,f12
- nop.i 0;;
-} { .mib
- getf.sig r8=f8
- nop.i 0
- nop.b 0
-}
-
- // 64-BIT SIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mib
- nop.m 0
- nop.i 0
- br.ret.sptk b0;;
-}
-
-.endp __moddi3
diff --git a/sys/libkern/ia64/__modsi3.S b/sys/libkern/ia64/__modsi3.S
deleted file mode 100644
index 568b20b..0000000
--- a/sys/libkern/ia64/__modsi3.S
+++ /dev/null
@@ -1,131 +0,0 @@
-.file "__modsi3.s"
-
-// $FreeBSD$
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-
-// 32-bit signed integer remainder
-
-.proc __modsi3#
-.align 32
-.global __modsi3#
-.align 32
-
-__modsi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mii
- nop.m 0
-
- // 32-BIT SIGNED INTEGER REMAINDER BEGINS HERE
-
- // general register used:
- // r32 - 32-bit signed integer dividend
- // r33 - 32-bit signed integer divisor
- // r8 - 32-bit signed integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9, f10, f11
- // predicate registers used: p6
-
- sxt4 r32=r32
- sxt4 r33=r33;;
-} { .mmb
- setf.sig f11=r32
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- // get 2's complement of b
- sub r33=r0,r33
- fcvt.xf f6=f11
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xf f7=f7
- mov r2 = 0x0ffdd;;
-} { .mfi
- setf.exp f9 = r2
- // (1) y0
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (2) q0 = a * y0
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // (3) e0 = 1 - b * y0
- (p6) fnma.s1 f8=f7,f8,f1
- nop.i 0;;
-} { .mfi
- // 2's complement of b
- setf.sig f7=r33
- // (4) q1 = q0 + e0 * q0
- (p6) fma.s1 f10=f8,f10,f10
- nop.i 0
-} { .mfi
- nop.m 0
- // (5) e1 = e0 * e0 + 2^-34
- (p6) fma.s1 f8=f8,f8,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (6) q2 = q1 + e1 * q1
- (p6) fma.s1 f8=f8,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (7) q = trunc(q2)
- fcvt.fx.trunc.s1 f8=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (8) r = a + (-b) * q
- xma.l f8=f8,f7,f11
- nop.i 0;;
-} { .mmi
- // remainder will be in the least significant 32 bits of r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 32-BIT SIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __modsi3
diff --git a/sys/libkern/ia64/__udivdi3.S b/sys/libkern/ia64/__udivdi3.S
deleted file mode 100644
index 91c9429..0000000
--- a/sys/libkern/ia64/__udivdi3.S
+++ /dev/null
@@ -1,143 +0,0 @@
-.file "__udivdi3.s"
-
-// $FreeBSD$
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-.proc __udivdi3#
-.align 32
-.global __udivdi3#
-.align 32
-
-// 64-bit unsigned integer divide
-
-__udivdi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-}
-
-{ .mmi
-
- // 64-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
-
- setf.sig f8=r32
- setf.sig f9=r33
- nop.i 0;;
-} { .mfb
- nop.m 0
- fma.s1 f6=f8,f1,f0
- nop.b 0
-} { .mfb
- nop.m 0
- fma.s1 f7=f9,f1,f0
- nop.b 0;;
-} { .mfi
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // e0 = 1 - b * y0 in f9
- (p6) fnma.s1 f9=f7,f8,f1
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // q0 = a * y0 in f10
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f9,f9,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // q1 = q0 + e0 * q0 in f10
- (p6) fma.s1 f10=f9,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f9,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // r2 = a - b * q2 in f10
- (p6) fnma.s1 f10=f7,f9,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (10)
- // q3 = q2 + r2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f9
- nop.i 0;;
-} { .mfb
- nop.m 0
- // (11) q = trunc(q3)
- fcvt.fxu.trunc.s1 f8=f8
- nop.b 0;;
-} { .mmi
- // quotient will be in r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 64-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __udivdi3
diff --git a/sys/libkern/ia64/__udivsi3.S b/sys/libkern/ia64/__udivsi3.S
deleted file mode 100644
index 9597abd..0000000
--- a/sys/libkern/ia64/__udivsi3.S
+++ /dev/null
@@ -1,124 +0,0 @@
-.file "__udivsi3.s"
-
-// $FreeBSD$
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-
-// 32-bit unsigned integer divide
-
-.proc __udivsi3#
-.align 32
-.global __udivsi3#
-.align 32
-
-__udivsi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mii
- nop.m 0
-
- // 32-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
-
- // general register used:
- // r32 - 32-bit unsigned integer dividend
- // r33 - 32-bit unsigned integer divisor
- // r8 - 32-bit unsigned integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9
- // predicate registers used: p6
-
- zxt4 r32=r32
- zxt4 r33=r33;;
-} { .mmb
- setf.sig f6=r32
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- nop.m 0
- fcvt.xf f6=f6
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xf f7=f7
- mov r2 = 0x0ffdd;;
-} { .mfi
- setf.exp f9 = r2
- // (1) y0
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (2) q0 = a * y0
- (p6) fma.s1 f6=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // (3) e0 = 1 - b * y0
- (p6) fnma.s1 f7=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (4) q1 = q0 + e0 * q0
- (p6) fma.s1 f6=f7,f6,f6
- nop.i 0
-} { .mfi
- nop.m 0
- // (5) e1 = e0 * e0 + 2^-34
- (p6) fma.s1 f7=f7,f7,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (6) q2 = q1 + e1 * q1
- (p6) fma.s1 f8=f7,f6,f6
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (7) q = trunc(q2)
- fcvt.fxu.trunc.s1 f8=f8
- nop.i 0;;
-} { .mmi
- // quotient will be in the least significant 32 bits of r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 32-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __udivsi3
diff --git a/sys/libkern/ia64/__umoddi3.S b/sys/libkern/ia64/__umoddi3.S
deleted file mode 100644
index 98708e4..0000000
--- a/sys/libkern/ia64/__umoddi3.S
+++ /dev/null
@@ -1,155 +0,0 @@
-.file "__umoddi3.s"
-
-// $FreeBSD$
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-
- // 64-bit unsigned integer remainder
-
-.proc __umoddi3#
-.align 32
-.global __umoddi3#
-.align 32
-
-__umoddi3:
-
-{ .mii
- alloc r31=ar.pfs,3,0,0,0
- nop.i 0
- nop.i 0
-} { .mmb
-
- // 64-BIT UNSIGNED INTEGER REMAINDER BEGINS HERE
-
- // general register used:
- // r32 - 64-bit unsigned integer dividend, called a below
- // r33 - 64-bit unsigned integer divisor, called b below
- // r8 - 64-bit unsigned integer result
- // floating-point registers used: f6, f7, f8, f9, f10, f11, f12
- // predicate registers used: p6
-
- setf.sig f12=r32 // holds a in integer form
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- // get 2's complement of b
- sub r33=r0,r33
- fcvt.xuf.s1 f6=f12
- nop.i 0
-} { .mfi
- nop.m 0
- fcvt.xuf.s1 f7=f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (1)
- // y0 = 1 / b in f8
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (2)
- // q0 = a * y0 in f10
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (3)
- // e0 = 1 - b * y0 in f9
- (p6) fnma.s1 f9=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (4)
- // q1 = q0 + e0 * q0 in f10
- (p6) fma.s1 f10=f9,f10,f10
- nop.i 0
-} { .mfi
- nop.m 0
- // Step (5)
- // e1 = e0 * e0 in f11
- (p6) fma.s1 f11=f9,f9,f0
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (6)
- // y1 = y0 + e0 * y0 in f8
- (p6) fma.s1 f8=f9,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (7)
- // q2 = q1 + e1 * q1 in f9
- (p6) fma.s1 f9=f11,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (8)
- // y2 = y1 + e1 * y1 in f8
- (p6) fma.s1 f8=f11,f8,f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // Step (9)
- // r2 = a - b * q2 in f10
- (p6) fnma.s1 f10=f7,f9,f6
- nop.i 0;;
-} { .mfi
- // f7=-b
- setf.sig f7=r33
- // Step (10)
- // q3 = q2 + r2 * y2 in f8
- (p6) fma.s1 f8=f10,f8,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (11) q = trunc(q3)
- fcvt.fxu.trunc.s1 f8=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (12) r = a + (-b) * q
- xma.l f8=f8,f7,f12
- nop.i 0;;
-} { .mib
- getf.sig r8=f8
- nop.i 0
- nop.b 0
-}
-
- // 64-BIT UNSIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mib
- nop.m 0
- nop.i 0
- br.ret.sptk b0;;
-}
-
-.endp __umoddi3
diff --git a/sys/libkern/ia64/__umodsi3.S b/sys/libkern/ia64/__umodsi3.S
deleted file mode 100644
index 7df61a6..0000000
--- a/sys/libkern/ia64/__umodsi3.S
+++ /dev/null
@@ -1,131 +0,0 @@
-.file "__umodsi3.s"
-
-// $FreeBSD$
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache,
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab,
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL OR ITS
-// 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-
-// 32-bit unsigned integer remainder
-
-.proc __umodsi3#
-.align 32
-.global __umodsi3#
-.align 32
-
-__umodsi3:
-
-{ .mii
- alloc r31=ar.pfs,2,0,0,0
- nop.i 0
- nop.i 0;;
-} { .mii
- nop.m 0
-
- // 32-BIT UNSIGNED INTEGER REMAINDER BEGINS HERE
-
- // general register used:
- // r32 - 32-bit unsigned integer dividend
- // r33 - 32-bit unsigned integer divisor
- // r8 - 32-bit unsigned integer result
- // r2 - scratch register
- // floating-point registers used: f6, f7, f8, f9, f10, f11
- // predicate registers used: p6
-
- zxt4 r32=r32
- zxt4 r33=r33;;
-} { .mmb
- setf.sig f11=r32
- setf.sig f7=r33
- nop.b 0;;
-} { .mfi
- nop.m 0
- fcvt.xf f6=f11
- nop.i 0
-} { .mfi
- // get 2's complement of b
- sub r33=r0,r33
- fcvt.xf f7=f7
- mov r2 = 0x0ffdd;;
-} { .mfi
- setf.exp f9 = r2
- // (1) y0
- frcpa.s1 f8,p6=f6,f7
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (2) q0 = a * y0
- (p6) fma.s1 f10=f6,f8,f0
- nop.i 0
-} { .mfi
- nop.m 0
- // (3) e0 = 1 - b * y0
- (p6) fnma.s1 f8=f7,f8,f1
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (4) q1 = q0 + e0 * q0
- (p6) fma.s1 f10=f8,f10,f10
- nop.i 0
-} { .mfi
- // get 2's complement of b
- setf.sig f7=r33
- // (5) e1 = e0 * e0 + 2^-34
- (p6) fma.s1 f8=f8,f8,f9
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (6) q2 = q1 + e1 * q1
- (p6) fma.s1 f8=f8,f10,f10
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (7) q = trunc(q2)
- fcvt.fxu.trunc.s1 f8=f8
- nop.i 0;;
-} { .mfi
- nop.m 0
- // (8) r = a + (-b) * q
- xma.l f8=f8,f7,f11
- nop.i 0;;
-} { .mmi
- // remainder will be in the least significant 32 bits of r8 (if b != 0)
- getf.sig r8=f8
- nop.m 0
- nop.i 0;;
-}
-
- // 32-BIT UNSIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mmb
- nop.m 0
- nop.m 0
- br.ret.sptk b0;;
-}
-
-.endp __umodsi3
diff --git a/sys/libkern/ia64/bswap16.S b/sys/libkern/ia64/bswap16.S
deleted file mode 100644
index d3adc2e..0000000
--- a/sys/libkern/ia64/bswap16.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * Copyright (c) 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- *
- * from: NetBSD: htons.S,v 1.1 1996/04/17 22:36:54 cgd
- * from: src/sys/libkern/ia64/htons.S,v 1.2 2002/02/18 20:35:21
- *
- * $FreeBSD$
- */
-
-#define NAME __bswap16
-
-#include <libkern/ia64/byte_swap_2.S>
diff --git a/sys/libkern/ia64/bswap32.S b/sys/libkern/ia64/bswap32.S
deleted file mode 100644
index c1c76d1..0000000
--- a/sys/libkern/ia64/bswap32.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * Copyright (c) 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- *
- * from: NetBSD: htonl.S,v 1.1 1996/04/17 22:36:52 cgd
- * from: src/sys/libkern/ia64/htonl.S,v 1.2 2002/02/18 20:35:21
- *
- * $FreeBSD$
- */
-
-#define NAME __bswap32
-
-#include <libkern/ia64/byte_swap_4.S>
diff --git a/sys/libkern/ia64/byte_swap_2.S b/sys/libkern/ia64/byte_swap_2.S
deleted file mode 100644
index 74ad5f7..0000000
--- a/sys/libkern/ia64/byte_swap_2.S
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: byte_swap_2.S,v 1.2 1996/10/17 03:08:08 cgd Exp $ */
-
-/*-
- * Copyright (c) 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-
-#ifndef NAME
-#error NAME not defined
-#endif
-
-/*
- * Byte-swap a 2-byte quantity. (Convert 0x0123 to 0x2301.)
- *
- * Argument is an unsigned 2-byte integer (u_int16_t).
- */
-ENTRY(NAME, 1)
- mux1 r16=in0,@rev
- ;;
- extr.u r8=r16,48,16
- br.ret.sptk.few rp
-END(NAME)
diff --git a/sys/libkern/ia64/byte_swap_4.S b/sys/libkern/ia64/byte_swap_4.S
deleted file mode 100644
index 9aba08d..0000000
--- a/sys/libkern/ia64/byte_swap_4.S
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: byte_swap_4.S,v 1.2 1996/10/17 03:08:09 cgd Exp $ */
-
-/*-
- * Copyright (c) 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <machine/asm.h>
-
-#ifndef NAME
-#error NAME not defined
-#endif
-
-/*
- * Byte-swap a 4-byte quantity. (Convert 0x01234567 to 0x67452301.)
- *
- * Argument is an unsigned 4-byte integer (u_int32_t).
- */
-ENTRY(NAME, 1)
- mux1 r16=in0,@rev
- ;;
- extr.u r8=r16,32,32
- br.ret.sptk.few rp
-END(NAME)
diff --git a/sys/modules/Makefile b/sys/modules/Makefile
index 28a72b7..0a28b2b 100644
--- a/sys/modules/Makefile
+++ b/sys/modules/Makefile
@@ -782,46 +782,6 @@ _cpsw= cpsw
_sound= sound
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-_aac= aac
-_aacraid= aacraid
-_aic= aic
-_an= an
-_arcnet= arcnet
-_asr= asr
-_bktr= bktr
-_cardbus= cardbus
-_cbb= cbb
-_ciss= ciss
-_cm= cm
-_cmx= cmx
-_coff= coff
-_cpufreq= cpufreq
-_dpt= dpt
-_em= em
-_ep= ep
-_et= et
-_exca= exca
-_fe= fe
-_hptiop= hptiop
-_ida= ida
-_igb= igb
-_iir= iir
-_ips= ips
-_mly= mly
-_pccard= pccard
-_scsi_low= scsi_low
-_smbfs= smbfs
-_sound= sound
-_splash= splash
-_sppp= sppp
-_streams= streams
-_tpm= tpm
-_twa= twa
-_wi= wi
-_xe= xe
-.endif
-
.if ${MACHINE_CPUARCH} == "powerpc"
_agp= agp
_an= an
diff --git a/sys/modules/acpi/acpi/Makefile b/sys/modules/acpi/acpi/Makefile
index 9cf28b5..5722692 100644
--- a/sys/modules/acpi/acpi/Makefile
+++ b/sys/modules/acpi/acpi/Makefile
@@ -4,10 +4,6 @@
.error "The ACPI module is deprecated, set FORCE_BUILD to force it"
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-.error "ACPI can only be compiled into the kernel on the ia64 platform"
-.endif
-
.if ${MACHINE} != "amd64" && ${MACHINE} != "i386"
.error "The ACPI module is only for amd64 and i386"
.endif
diff --git a/sys/modules/hwpmc/Makefile b/sys/modules/hwpmc/Makefile
index fd05940..c9c60fc 100644
--- a/sys/modules/hwpmc/Makefile
+++ b/sys/modules/hwpmc/Makefile
@@ -24,10 +24,6 @@ SRCS+= hwpmc_pentium.c hwpmc_tsc.c hwpmc_x86.c hwpmc_uncore.c
SRCS+= device_if.h bus_if.h
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-SRCS+= hwpmc_ia64.c
-.endif
-
.if ${MACHINE_CPUARCH} == "powerpc"
SRCS+= hwpmc_powerpc.c hwpmc_mpc7xxx.c hwpmc_ppc970.c
.endif
diff --git a/sys/modules/ppc/Makefile b/sys/modules/ppc/Makefile
index c097002..53621f1 100644
--- a/sys/modules/ppc/Makefile
+++ b/sys/modules/ppc/Makefile
@@ -17,8 +17,4 @@ SRCS+= ppc_acpi.c
SRCS+= ppc_isa.c
.endif
-.if ${MACHINE_CPUARCH} == "ia64"
-SRCS+= ppc_acpi.c
-.endif
-
.include <bsd.kmod.mk>
diff --git a/sys/modules/sound/sound/Makefile b/sys/modules/sound/sound/Makefile
index 0db294b..9650adf 100644
--- a/sys/modules/sound/sound/Makefile
+++ b/sys/modules/sound/sound/Makefile
@@ -45,7 +45,7 @@ CLEANFILES+= feeder_eq_gen.h feeder_rate_gen.h snd_fxdiv_gen.h
EXPORT_SYMS= YES # XXX evaluate
.if ${MACHINE_CPUARCH} != "i386" && ${MACHINE_CPUARCH} != "amd64" && \
- ${MACHINE_CPUARCH} != "ia64" && ${MACHINE_CPUARCH} != "pc98"
+ ${MACHINE_CPUARCH} != "pc98"
# Create an empty opt_isa.h in order to keep kmod.mk from linking in an
# existing one from KERNBUILDDIR which possibly has DEV_ISA defined so
# sound.ko is always built without isadma support.
diff --git a/sys/sys/disklabel.h b/sys/sys/disklabel.h
index c3501e0..80d57c4 100644
--- a/sys/sys/disklabel.h
+++ b/sys/sys/disklabel.h
@@ -52,7 +52,7 @@
/* XXX these should be defined per controller (or drive) elsewhere, not here! */
#if defined(__i386__) || defined(__amd64__) || defined(__arm__) || \
- defined(__ia64__) || defined(__powerpc__) || defined(__mips__)
+ defined(__powerpc__) || defined(__mips__)
#define LABELSECTOR 1 /* sector containing label */
#define LABELOFFSET 0 /* offset of label in sector */
#endif
diff --git a/sys/sys/efi.h b/sys/sys/efi.h
index 749f094..4c5d937 100644
--- a/sys/sys/efi.h
+++ b/sys/sys/efi.h
@@ -151,27 +151,4 @@ struct efi_systbl {
uint64_t st_cfgtbl;
};
-#if defined(_KERNEL) && defined(__ia64__)
-
-typedef u_long (*ia64_efi_f)(u_long, u_long, u_long, u_long);
-
-u_long ia64_efi_physical(ia64_efi_f, u_long, u_long, u_long, u_long);
-
-void efi_boot_finish(void);
-int efi_boot_minimal(uint64_t);
-void *efi_get_table(struct uuid *);
-void efi_get_time(struct efi_tm *);
-struct efi_md *efi_md_find(vm_paddr_t);
-struct efi_md *efi_md_first(void);
-struct efi_md *efi_md_last(void);
-struct efi_md *efi_md_next(struct efi_md *);
-struct efi_md *efi_md_prev(struct efi_md *);
-void efi_reset_system(void);
-int efi_set_time(struct efi_tm *);
-int efi_var_get(efi_char *, struct uuid *, uint32_t *, size_t *, void *);
-int efi_var_nextname(size_t *, efi_char *, struct uuid *);
-int efi_var_set(efi_char *, struct uuid *, uint32_t, size_t, void *);
-
-#endif /* _KERNEL && __ia64__ */
-
#endif /* _SYS_EFI_H_ */
diff --git a/sys/sys/fnv_hash.h b/sys/sys/fnv_hash.h
index c1452a6..901603e 100644
--- a/sys/sys/fnv_hash.h
+++ b/sys/sys/fnv_hash.h
@@ -60,7 +60,7 @@ static __inline Fnv64_t
fnv_64_str(const char *str, Fnv64_t hval)
{
const u_int8_t *s = (const u_int8_t *)str;
- u_register_t c; /* 32 bit on i386, 64 bit on alpha,ia64 */
+ u_register_t c; /* 32 bit on i386, 64 bit on alpha */
while ((c = *s++) != 0) {
hval *= FNV_64_PRIME;
diff --git a/sys/sys/kerneldump.h b/sys/sys/kerneldump.h
index 6342f7d..a148736 100644
--- a/sys/sys/kerneldump.h
+++ b/sys/sys/kerneldump.h
@@ -70,7 +70,6 @@ struct kerneldumpheader {
#define KERNELDUMP_AMD64_VERSION 2
#define KERNELDUMP_ARM_VERSION 1
#define KERNELDUMP_I386_VERSION 2
-#define KERNELDUMP_IA64_VERSION 1
#define KERNELDUMP_MIPS_VERSION 1
#define KERNELDUMP_POWERPC_VERSION 1
#define KERNELDUMP_SPARC64_VERSION 1
diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h
index 209e732..21ad521 100644
--- a/sys/sys/sysctl.h
+++ b/sys/sys/sysctl.h
@@ -131,7 +131,7 @@ struct ctlname {
#define REQ_WIRED 2
/* definitions for sysctl_req 'flags' member */
-#if defined(__amd64__) || defined(__ia64__) || defined(__powerpc64__) ||\
+#if defined(__amd64__) || defined(__powerpc64__) ||\
(defined(__mips__) && defined(__mips_n64))
#define SCTL_MASK32 1 /* 32 bit emulation */
#endif
diff --git a/sys/sys/sysent.h b/sys/sys/sysent.h
index c49db41..0f1c256 100644
--- a/sys/sys/sysent.h
+++ b/sys/sys/sysent.h
@@ -155,7 +155,7 @@ extern struct sysentvec null_sysvec;
extern struct sysent sysent[];
extern const char *syscallnames[];
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
extern int i386_read_exec;
#endif
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index e94090c..1ae7189 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -487,7 +487,7 @@ ommap(td, uap)
nargs.len = uap->len;
nargs.prot = cvtbsdprot[uap->prot & 0x7];
#ifdef COMPAT_FREEBSD32
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
if (i386_read_exec && SV_PROC_FLAG(td->td_proc, SV_ILP32) &&
nargs.prot != 0)
nargs.prot |= PROT_EXEC;
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index 65743d7..264aff4 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -875,14 +875,6 @@ vm_pageout_map_deactivate_pages(map, desired)
tmpe = tmpe->next;
}
-#ifdef __ia64__
- /*
- * Remove all non-wired, managed mappings if a process is swapped out.
- * This will free page table pages.
- */
- if (desired == 0)
- pmap_remove_pages(map->pmap);
-#else
/*
* Remove all mappings if a process is swapped out, this will free page
* table pages.
@@ -891,7 +883,6 @@ vm_pageout_map_deactivate_pages(map, desired)
pmap_remove(vm_map_pmap(map), vm_map_min(map),
vm_map_max(map));
}
-#endif
vm_map_unlock(map);
}
diff --git a/sys/vm/vm_unix.c b/sys/vm/vm_unix.c
index edb6ecc..de9aa78 100644
--- a/sys/vm/vm_unix.c
+++ b/sys/vm/vm_unix.c
@@ -162,7 +162,7 @@ sys_obreak(td, uap)
#endif
prot = VM_PROT_RW;
#ifdef COMPAT_FREEBSD32
-#if defined(__amd64__) || defined(__ia64__)
+#if defined(__amd64__)
if (i386_read_exec && SV_PROC_FLAG(td->td_proc, SV_ILP32))
prot |= VM_PROT_EXECUTE;
#endif
diff --git a/sys/x86/include/segments.h b/sys/x86/include/segments.h
index 0d6a282..a5c1ea4 100644
--- a/sys/x86/include/segments.h
+++ b/sys/x86/include/segments.h
@@ -219,7 +219,7 @@ union descriptor {
#define IDT_DTRACE_RET 0x92 /* DTrace pid provider Interrupt Vector */
#define IDT_EVTCHN 0x93 /* Xen HVM Event Channel Interrupt Vector */
-#if defined(__i386__) || defined(__ia64__)
+#if defined(__i386__)
/*
* Entries in the Global Descriptor Table (GDT)
* Note that each 4 entries share a single 32 byte L1 cache line.
@@ -264,7 +264,7 @@ union descriptor {
#define LBSDICALLS_SEL 16 /* BSDI system call gate */
#define NLDT (LBSDICALLS_SEL + 1)
-#else /* !__i386__ && !__ia64__ */
+#else /* !__i386__ */
/*
* Entries in the Global Descriptor Table (GDT)
*/
@@ -282,6 +282,6 @@ union descriptor {
#define GUSERLDT_SEL 11 /* LDT */
/* slot 12 is second half of GUSERLDT_SEL */
#define NGDT 13
-#endif /* __i386__ || __ia64__ */
+#endif /* __i386__ */
#endif /* !_X86_SEGMENTS_H_ */
diff --git a/sys/x86/iommu/intel_drv.c b/sys/x86/iommu/intel_drv.c
index ce3f284..a71c02f 100644
--- a/sys/x86/iommu/intel_drv.c
+++ b/sys/x86/iommu/intel_drv.c
@@ -31,7 +31,7 @@
__FBSDID("$FreeBSD$");
#include "opt_acpi.h"
-#if defined(__amd64__) /* || defined(__ia64__) */
+#if defined(__amd64__)
#define DEV_APIC
#else
#include "opt_apic.h"
diff --git a/sys/xen/interface/arch-ia64.h b/sys/xen/interface/arch-ia64.h
deleted file mode 100644
index c9da5d4..0000000
--- a/sys/xen/interface/arch-ia64.h
+++ /dev/null
@@ -1,637 +0,0 @@
-/******************************************************************************
- * arch-ia64/hypervisor-if.h
- *
- * Guest OS interface to IA64 Xen.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- */
-
-#include "xen.h"
-
-#ifndef __HYPERVISOR_IF_IA64_H__
-#define __HYPERVISOR_IF_IA64_H__
-
-#if !defined(__GNUC__) || defined(__STRICT_ANSI__)
-#error "Anonymous structs/unions are a GNU extension."
-#endif
-
-/* Structural guest handles introduced in 0x00030201. */
-#if __XEN_INTERFACE_VERSION__ >= 0x00030201
-#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \
- typedef struct { type *p; } __guest_handle_ ## name
-#else
-#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \
- typedef type * __guest_handle_ ## name
-#endif
-
-#define __DEFINE_XEN_GUEST_HANDLE(name, type) \
- ___DEFINE_XEN_GUEST_HANDLE(name, type); \
- ___DEFINE_XEN_GUEST_HANDLE(const_##name, const type)
-
-#define DEFINE_XEN_GUEST_HANDLE(name) __DEFINE_XEN_GUEST_HANDLE(name, name)
-#define XEN_GUEST_HANDLE(name) __guest_handle_ ## name
-#define XEN_GUEST_HANDLE_64(name) XEN_GUEST_HANDLE(name)
-#define uint64_aligned_t uint64_t
-#define set_xen_guest_handle_raw(hnd, val) do { (hnd).p = val; } while (0)
-#ifdef __XEN_TOOLS__
-#define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0)
-#endif
-#define set_xen_guest_handle(hnd, val) set_xen_guest_handle_raw(hnd, val)
-
-#ifndef __ASSEMBLY__
-typedef unsigned long xen_pfn_t;
-#define PRI_xen_pfn "lx"
-#endif
-
-/* Arch specific VIRQs definition */
-#define VIRQ_ITC VIRQ_ARCH_0 /* V. Virtual itc timer */
-#define VIRQ_MCA_CMC VIRQ_ARCH_1 /* MCA cmc interrupt */
-#define VIRQ_MCA_CPE VIRQ_ARCH_2 /* MCA cpe interrupt */
-
-/* Maximum number of virtual CPUs in multi-processor guests. */
-/* WARNING: before changing this, check that shared_info fits on a page */
-#define XEN_LEGACY_MAX_VCPUS 64
-
-/* IO ports location for PV. */
-#define IO_PORTS_PADDR 0x00000ffffc000000UL
-#define IO_PORTS_SIZE 0x0000000004000000UL
-
-#ifndef __ASSEMBLY__
-
-typedef unsigned long xen_ulong_t;
-
-#ifdef __XEN_TOOLS__
-#define XEN_PAGE_SIZE XC_PAGE_SIZE
-#else
-#define XEN_PAGE_SIZE PAGE_SIZE
-#endif
-
-#define INVALID_MFN (~0UL)
-
-struct pt_fpreg {
- union {
- unsigned long bits[2];
- long double __dummy; /* force 16-byte alignment */
- } u;
-};
-
-union vac {
- unsigned long value;
- struct {
- int a_int:1;
- int a_from_int_cr:1;
- int a_to_int_cr:1;
- int a_from_psr:1;
- int a_from_cpuid:1;
- int a_cover:1;
- int a_bsw:1;
- long reserved:57;
- };
-};
-typedef union vac vac_t;
-
-union vdc {
- unsigned long value;
- struct {
- int d_vmsw:1;
- int d_extint:1;
- int d_ibr_dbr:1;
- int d_pmc:1;
- int d_to_pmd:1;
- int d_itm:1;
- long reserved:58;
- };
-};
-typedef union vdc vdc_t;
-
-struct mapped_regs {
- union vac vac;
- union vdc vdc;
- unsigned long virt_env_vaddr;
- unsigned long reserved1[29];
- unsigned long vhpi;
- unsigned long reserved2[95];
- union {
- unsigned long vgr[16];
- unsigned long bank1_regs[16]; // bank1 regs (r16-r31) when bank0 active
- };
- union {
- unsigned long vbgr[16];
- unsigned long bank0_regs[16]; // bank0 regs (r16-r31) when bank1 active
- };
- unsigned long vnat;
- unsigned long vbnat;
- unsigned long vcpuid[5];
- unsigned long reserved3[11];
- unsigned long vpsr;
- unsigned long vpr;
- unsigned long reserved4[76];
- union {
- unsigned long vcr[128];
- struct {
- unsigned long dcr; // CR0
- unsigned long itm;
- unsigned long iva;
- unsigned long rsv1[5];
- unsigned long pta; // CR8
- unsigned long rsv2[7];
- unsigned long ipsr; // CR16
- unsigned long isr;
- unsigned long rsv3;
- unsigned long iip;
- unsigned long ifa;
- unsigned long itir;
- unsigned long iipa;
- unsigned long ifs;
- unsigned long iim; // CR24
- unsigned long iha;
- unsigned long rsv4[38];
- unsigned long lid; // CR64
- unsigned long ivr;
- unsigned long tpr;
- unsigned long eoi;
- unsigned long irr[4];
- unsigned long itv; // CR72
- unsigned long pmv;
- unsigned long cmcv;
- unsigned long rsv5[5];
- unsigned long lrr0; // CR80
- unsigned long lrr1;
- unsigned long rsv6[46];
- };
- };
- union {
- unsigned long reserved5[128];
- struct {
- unsigned long precover_ifs;
- unsigned long unat; // not sure if this is needed until NaT arch is done
- int interrupt_collection_enabled; // virtual psr.ic
- /* virtual interrupt deliverable flag is evtchn_upcall_mask in
- * shared info area now. interrupt_mask_addr is the address
- * of evtchn_upcall_mask for current vcpu
- */
- unsigned char *interrupt_mask_addr;
- int pending_interruption;
- unsigned char vpsr_pp;
- unsigned char vpsr_dfh;
- unsigned char hpsr_dfh;
- unsigned char hpsr_mfh;
- unsigned long reserved5_1[4];
- int metaphysical_mode; // 1 = use metaphys mapping, 0 = use virtual
- int banknum; // 0 or 1, which virtual register bank is active
- unsigned long rrs[8]; // region registers
- unsigned long krs[8]; // kernel registers
- unsigned long tmp[16]; // temp registers (e.g. for hyperprivops)
-
- /* itc paravirtualization
- * vAR.ITC = mAR.ITC + itc_offset
- * itc_last is one which was lastly passed to
- * the guest OS in order to prevent it from
- * going backwords.
- */
- unsigned long itc_offset;
- unsigned long itc_last;
- };
- };
-};
-typedef struct mapped_regs mapped_regs_t;
-
-struct vpd {
- struct mapped_regs vpd_low;
- unsigned long reserved6[3456];
- unsigned long vmm_avail[128];
- unsigned long reserved7[4096];
-};
-typedef struct vpd vpd_t;
-
-struct arch_vcpu_info {
-};
-typedef struct arch_vcpu_info arch_vcpu_info_t;
-
-/*
- * This structure is used for magic page in domain pseudo physical address
- * space and the result of XENMEM_machine_memory_map.
- * As the XENMEM_machine_memory_map result,
- * xen_memory_map::nr_entries indicates the size in bytes
- * including struct xen_ia64_memmap_info. Not the number of entries.
- */
-struct xen_ia64_memmap_info {
- uint64_t efi_memmap_size; /* size of EFI memory map */
- uint64_t efi_memdesc_size; /* size of an EFI memory map descriptor */
- uint32_t efi_memdesc_version; /* memory descriptor version */
- void *memdesc[0]; /* array of efi_memory_desc_t */
-};
-typedef struct xen_ia64_memmap_info xen_ia64_memmap_info_t;
-
-struct arch_shared_info {
- /* PFN of the start_info page. */
- unsigned long start_info_pfn;
-
- /* Interrupt vector for event channel. */
- int evtchn_vector;
-
- /* PFN of memmap_info page */
- unsigned int memmap_info_num_pages;/* currently only = 1 case is
- supported. */
- unsigned long memmap_info_pfn;
-
- uint64_t pad[31];
-};
-typedef struct arch_shared_info arch_shared_info_t;
-
-typedef unsigned long xen_callback_t;
-
-struct ia64_tr_entry {
- unsigned long pte;
- unsigned long itir;
- unsigned long vadr;
- unsigned long rid;
-};
-typedef struct ia64_tr_entry ia64_tr_entry_t;
-DEFINE_XEN_GUEST_HANDLE(ia64_tr_entry_t);
-
-struct vcpu_tr_regs {
- struct ia64_tr_entry itrs[12];
- struct ia64_tr_entry dtrs[12];
-};
-
-union vcpu_ar_regs {
- unsigned long ar[128];
- struct {
- unsigned long kr[8];
- unsigned long rsv1[8];
- unsigned long rsc;
- unsigned long bsp;
- unsigned long bspstore;
- unsigned long rnat;
- unsigned long rsv2;
- unsigned long fcr;
- unsigned long rsv3[2];
- unsigned long eflag;
- unsigned long csd;
- unsigned long ssd;
- unsigned long cflg;
- unsigned long fsr;
- unsigned long fir;
- unsigned long fdr;
- unsigned long rsv4;
- unsigned long ccv; /* 32 */
- unsigned long rsv5[3];
- unsigned long unat;
- unsigned long rsv6[3];
- unsigned long fpsr;
- unsigned long rsv7[3];
- unsigned long itc;
- unsigned long rsv8[3];
- unsigned long ign1[16];
- unsigned long pfs; /* 64 */
- unsigned long lc;
- unsigned long ec;
- unsigned long rsv9[45];
- unsigned long ign2[16];
- };
-};
-
-union vcpu_cr_regs {
- unsigned long cr[128];
- struct {
- unsigned long dcr; // CR0
- unsigned long itm;
- unsigned long iva;
- unsigned long rsv1[5];
- unsigned long pta; // CR8
- unsigned long rsv2[7];
- unsigned long ipsr; // CR16
- unsigned long isr;
- unsigned long rsv3;
- unsigned long iip;
- unsigned long ifa;
- unsigned long itir;
- unsigned long iipa;
- unsigned long ifs;
- unsigned long iim; // CR24
- unsigned long iha;
- unsigned long rsv4[38];
- unsigned long lid; // CR64
- unsigned long ivr;
- unsigned long tpr;
- unsigned long eoi;
- unsigned long irr[4];
- unsigned long itv; // CR72
- unsigned long pmv;
- unsigned long cmcv;
- unsigned long rsv5[5];
- unsigned long lrr0; // CR80
- unsigned long lrr1;
- unsigned long rsv6[46];
- };
-};
-
-struct vcpu_guest_context_regs {
- unsigned long r[32];
- unsigned long b[8];
- unsigned long bank[16];
- unsigned long ip;
- unsigned long psr;
- unsigned long cfm;
- unsigned long pr;
- unsigned int nats; /* NaT bits for r1-r31. */
- unsigned int bnats; /* Nat bits for banked registers. */
- union vcpu_ar_regs ar;
- union vcpu_cr_regs cr;
- struct pt_fpreg f[128];
- unsigned long dbr[8];
- unsigned long ibr[8];
- unsigned long rr[8];
- unsigned long pkr[16];
-
- /* FIXME: cpuid,pmd,pmc */
-
- unsigned long xip;
- unsigned long xpsr;
- unsigned long xfs;
- unsigned long xr[4];
-
- struct vcpu_tr_regs tr;
-
- /* Physical registers in case of debug event. */
- unsigned long excp_iipa;
- unsigned long excp_ifa;
- unsigned long excp_isr;
- unsigned int excp_vector;
-
- /*
- * The rbs is intended to be the image of the stacked registers still
- * in the cpu (not yet stored in memory). It is laid out as if it
- * were written in memory at a 512 (64*8) aligned address + offset.
- * rbs_voff is (offset / 8). rbs_nat contains NaT bits for the
- * remaining rbs registers. rbs_rnat contains NaT bits for in memory
- * rbs registers.
- * Note: loadrs is 2**14 bytes == 2**11 slots.
- */
- unsigned int rbs_voff;
- unsigned long rbs[2048];
- unsigned long rbs_rnat;
-
- /*
- * RSE.N_STACKED_PHYS via PAL_RSE_INFO
- * Strictly this isn't cpu context, but this value is necessary
- * for domain save/restore. So is here.
- */
- unsigned long num_phys_stacked;
-};
-
-struct vcpu_guest_context {
-#define VGCF_EXTRA_REGS (1UL << 1) /* Set extra regs. */
-#define VGCF_SET_CR_IRR (1UL << 2) /* Set cr_irr[0:3]. */
-#define VGCF_online (1UL << 3) /* make this vcpu online */
-#define VGCF_SET_AR_ITC (1UL << 4) /* set pv ar.itc. itc_offset, itc_last */
- unsigned long flags; /* VGCF_* flags */
-
- struct vcpu_guest_context_regs regs;
-
- unsigned long event_callback_ip;
-
- /* xen doesn't share privregs pages with hvm domain so that this member
- * doesn't make sense for hvm domain.
- * ~0UL is already used for INVALID_P2M_ENTRY. */
-#define VGC_PRIVREGS_HVM (~(-2UL))
- unsigned long privregs_pfn;
-};
-typedef struct vcpu_guest_context vcpu_guest_context_t;
-DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
-
-/* dom0 vp op */
-#define __HYPERVISOR_ia64_dom0vp_op __HYPERVISOR_arch_0
-/* Map io space in machine address to dom0 physical address space.
- Currently physical assigned address equals to machine address. */
-#define IA64_DOM0VP_ioremap 0
-
-/* Convert a pseudo physical page frame number to the corresponding
- machine page frame number. If no page is assigned, INVALID_MFN or
- GPFN_INV_MASK is returned depending on domain's non-vti/vti mode. */
-#define IA64_DOM0VP_phystomach 1
-
-/* Convert a machine page frame number to the corresponding pseudo physical
- page frame number of the caller domain. */
-#define IA64_DOM0VP_machtophys 3
-
-/* Reserved for future use. */
-#define IA64_DOM0VP_iounmap 4
-
-/* Unmap and free pages contained in the specified pseudo physical region. */
-#define IA64_DOM0VP_zap_physmap 5
-
-/* Assign machine page frame to dom0's pseudo physical address space. */
-#define IA64_DOM0VP_add_physmap 6
-
-/* expose the p2m table into domain */
-#define IA64_DOM0VP_expose_p2m 7
-
-/* xen perfmon */
-#define IA64_DOM0VP_perfmon 8
-
-/* gmfn version of IA64_DOM0VP_add_physmap */
-#define IA64_DOM0VP_add_physmap_with_gmfn 9
-
-/* get fpswa revision */
-#define IA64_DOM0VP_fpswa_revision 10
-
-/* Add an I/O port space range */
-#define IA64_DOM0VP_add_io_space 11
-
-/* expose the foreign domain's p2m table into privileged domain */
-#define IA64_DOM0VP_expose_foreign_p2m 12
-#define IA64_DOM0VP_EFP_ALLOC_PTE 0x1 /* allocate p2m table */
-
-/* unexpose the foreign domain's p2m table into privileged domain */
-#define IA64_DOM0VP_unexpose_foreign_p2m 13
-
-/* get memmap_info and memmap. It is possible to map the page directly
- by foreign page mapping, but there is a race between writer.
- This hypercall avoids such race. */
-#define IA64_DOM0VP_get_memmap 14
-
-// flags for page assignement to pseudo physical address space
-#define _ASSIGN_readonly 0
-#define ASSIGN_readonly (1UL << _ASSIGN_readonly)
-#define ASSIGN_writable (0UL << _ASSIGN_readonly) // dummy flag
-/* Internal only: memory attribute must be WC/UC/UCE. */
-#define _ASSIGN_nocache 1
-#define ASSIGN_nocache (1UL << _ASSIGN_nocache)
-// tlb tracking
-#define _ASSIGN_tlb_track 2
-#define ASSIGN_tlb_track (1UL << _ASSIGN_tlb_track)
-/* Internal only: associated with PGC_allocated bit */
-#define _ASSIGN_pgc_allocated 3
-#define ASSIGN_pgc_allocated (1UL << _ASSIGN_pgc_allocated)
-/* Page is an IO page. */
-#define _ASSIGN_io 4
-#define ASSIGN_io (1UL << _ASSIGN_io)
-
-/* This structure has the same layout of struct ia64_boot_param, defined in
- <asm/system.h>. It is redefined here to ease use. */
-struct xen_ia64_boot_param {
- unsigned long command_line; /* physical address of cmd line args */
- unsigned long efi_systab; /* physical address of EFI system table */
- unsigned long efi_memmap; /* physical address of EFI memory map */
- unsigned long efi_memmap_size; /* size of EFI memory map */
- unsigned long efi_memdesc_size; /* size of an EFI memory map descriptor */
- unsigned int efi_memdesc_version; /* memory descriptor version */
- struct {
- unsigned short num_cols; /* number of columns on console. */
- unsigned short num_rows; /* number of rows on console. */
- unsigned short orig_x; /* cursor's x position */
- unsigned short orig_y; /* cursor's y position */
- } console_info;
- unsigned long fpswa; /* physical address of the fpswa interface */
- unsigned long initrd_start;
- unsigned long initrd_size;
- unsigned long domain_start; /* va where the boot time domain begins */
- unsigned long domain_size; /* how big is the boot domain */
-};
-
-#endif /* !__ASSEMBLY__ */
-
-/* Size of the shared_info area (this is not related to page size). */
-#define XSI_SHIFT 14
-#define XSI_SIZE (1 << XSI_SHIFT)
-/* Log size of mapped_regs area (64 KB - only 4KB is used). */
-#define XMAPPEDREGS_SHIFT 12
-#define XMAPPEDREGS_SIZE (1 << XMAPPEDREGS_SHIFT)
-/* Offset of XASI (Xen arch shared info) wrt XSI_BASE. */
-#define XMAPPEDREGS_OFS XSI_SIZE
-
-/* Hyperprivops. */
-#define HYPERPRIVOP_START 0x1
-#define HYPERPRIVOP_RFI (HYPERPRIVOP_START + 0x0)
-#define HYPERPRIVOP_RSM_DT (HYPERPRIVOP_START + 0x1)
-#define HYPERPRIVOP_SSM_DT (HYPERPRIVOP_START + 0x2)
-#define HYPERPRIVOP_COVER (HYPERPRIVOP_START + 0x3)
-#define HYPERPRIVOP_ITC_D (HYPERPRIVOP_START + 0x4)
-#define HYPERPRIVOP_ITC_I (HYPERPRIVOP_START + 0x5)
-#define HYPERPRIVOP_SSM_I (HYPERPRIVOP_START + 0x6)
-#define HYPERPRIVOP_GET_IVR (HYPERPRIVOP_START + 0x7)
-#define HYPERPRIVOP_GET_TPR (HYPERPRIVOP_START + 0x8)
-#define HYPERPRIVOP_SET_TPR (HYPERPRIVOP_START + 0x9)
-#define HYPERPRIVOP_EOI (HYPERPRIVOP_START + 0xa)
-#define HYPERPRIVOP_SET_ITM (HYPERPRIVOP_START + 0xb)
-#define HYPERPRIVOP_THASH (HYPERPRIVOP_START + 0xc)
-#define HYPERPRIVOP_PTC_GA (HYPERPRIVOP_START + 0xd)
-#define HYPERPRIVOP_ITR_D (HYPERPRIVOP_START + 0xe)
-#define HYPERPRIVOP_GET_RR (HYPERPRIVOP_START + 0xf)
-#define HYPERPRIVOP_SET_RR (HYPERPRIVOP_START + 0x10)
-#define HYPERPRIVOP_SET_KR (HYPERPRIVOP_START + 0x11)
-#define HYPERPRIVOP_FC (HYPERPRIVOP_START + 0x12)
-#define HYPERPRIVOP_GET_CPUID (HYPERPRIVOP_START + 0x13)
-#define HYPERPRIVOP_GET_PMD (HYPERPRIVOP_START + 0x14)
-#define HYPERPRIVOP_GET_EFLAG (HYPERPRIVOP_START + 0x15)
-#define HYPERPRIVOP_SET_EFLAG (HYPERPRIVOP_START + 0x16)
-#define HYPERPRIVOP_RSM_BE (HYPERPRIVOP_START + 0x17)
-#define HYPERPRIVOP_GET_PSR (HYPERPRIVOP_START + 0x18)
-#define HYPERPRIVOP_SET_RR0_TO_RR4 (HYPERPRIVOP_START + 0x19)
-#define HYPERPRIVOP_MAX (0x1a)
-
-/* Fast and light hypercalls. */
-#define __HYPERVISOR_ia64_fast_eoi __HYPERVISOR_arch_1
-
-/* Extra debug features. */
-#define __HYPERVISOR_ia64_debug_op __HYPERVISOR_arch_2
-
-/* Xencomm macros. */
-#define XENCOMM_INLINE_MASK 0xf800000000000000UL
-#define XENCOMM_INLINE_FLAG 0x8000000000000000UL
-
-#ifndef __ASSEMBLY__
-
-/*
- * Optimization features.
- * The hypervisor may do some special optimizations for guests. This hypercall
- * can be used to switch on/of these special optimizations.
- */
-#define __HYPERVISOR_opt_feature 0x700UL
-
-#define XEN_IA64_OPTF_OFF 0x0
-#define XEN_IA64_OPTF_ON 0x1
-
-/*
- * If this feature is switched on, the hypervisor inserts the
- * tlb entries without calling the guests traphandler.
- * This is useful in guests using region 7 for identity mapping
- * like the linux kernel does.
- */
-#define XEN_IA64_OPTF_IDENT_MAP_REG7 1
-
-/* Identity mapping of region 4 addresses in HVM. */
-#define XEN_IA64_OPTF_IDENT_MAP_REG4 2
-
-/* Identity mapping of region 5 addresses in HVM. */
-#define XEN_IA64_OPTF_IDENT_MAP_REG5 3
-
-#define XEN_IA64_OPTF_IDENT_MAP_NOT_SET (0)
-
-struct xen_ia64_opt_feature {
- unsigned long cmd; /* Which feature */
- unsigned char on; /* Switch feature on/off */
- union {
- struct {
- /* The page protection bit mask of the pte.
- * This will be or'ed with the pte. */
- unsigned long pgprot;
- unsigned long key; /* A protection key for itir. */
- };
- };
-};
-
-#endif /* __ASSEMBLY__ */
-
-/* xen perfmon */
-#ifdef XEN
-#ifndef __ASSEMBLY__
-#ifndef _ASM_IA64_PERFMON_H
-
-#include <xen/list.h> // asm/perfmon.h requires struct list_head
-#include <asm/perfmon.h>
-// for PFM_xxx and pfarg_features_t, pfarg_context_t, pfarg_reg_t, pfarg_load_t
-
-#endif /* _ASM_IA64_PERFMON_H */
-
-DEFINE_XEN_GUEST_HANDLE(pfarg_features_t);
-DEFINE_XEN_GUEST_HANDLE(pfarg_context_t);
-DEFINE_XEN_GUEST_HANDLE(pfarg_reg_t);
-DEFINE_XEN_GUEST_HANDLE(pfarg_load_t);
-#endif /* __ASSEMBLY__ */
-#endif /* XEN */
-
-#ifndef __ASSEMBLY__
-#include "arch-ia64/hvm/memmap.h"
-#endif
-
-#endif /* __HYPERVISOR_IF_IA64_H__ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/sys/xen/interface/arch-ia64/debug_op.h b/sys/xen/interface/arch-ia64/debug_op.h
deleted file mode 100644
index 8f47358..0000000
--- a/sys/xen/interface/arch-ia64/debug_op.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/******************************************************************************
- * debug_op.h
- *
- * Copyright (c) 2007 Tristan Gingold <tgingold@free.fr>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef __XEN_PUBLIC_IA64_DEBUG_OP_H__
-#define __XEN_PUBLIC_IA64_DEBUG_OP_H__
-
-/* Set/Get extra conditions to break. */
-#define XEN_IA64_DEBUG_OP_SET_FLAGS 1
-#define XEN_IA64_DEBUG_OP_GET_FLAGS 2
-
-/* Break on kernel single step. */
-#define XEN_IA64_DEBUG_ON_KERN_SSTEP (1 << 0)
-
-/* Break on kernel debug (breakpoint or watch point). */
-#define XEN_IA64_DEBUG_ON_KERN_DEBUG (1 << 1)
-
-/* Break on kernel taken branch. */
-#define XEN_IA64_DEBUG_ON_KERN_TBRANCH (1 << 2)
-
-/* Break on interrupt injection. */
-#define XEN_IA64_DEBUG_ON_EXTINT (1 << 3)
-
-/* Break on interrupt injection. */
-#define XEN_IA64_DEBUG_ON_EXCEPT (1 << 4)
-
-/* Break on event injection. */
-#define XEN_IA64_DEBUG_ON_EVENT (1 << 5)
-
-/* Break on privop/virtualized instruction (slow path only). */
-#define XEN_IA64_DEBUG_ON_PRIVOP (1 << 6)
-
-/* Break on emulated PAL call (at entry). */
-#define XEN_IA64_DEBUG_ON_PAL (1 << 7)
-
-/* Break on emulated SAL call (at entry). */
-#define XEN_IA64_DEBUG_ON_SAL (1 << 8)
-
-/* Break on emulated EFI call (at entry). */
-#define XEN_IA64_DEBUG_ON_EFI (1 << 9)
-
-/* Break on rfi emulation (slow path only, before exec). */
-#define XEN_IA64_DEBUG_ON_RFI (1 << 10)
-
-/* Break on address translation switch. */
-#define XEN_IA64_DEBUG_ON_MMU (1 << 11)
-
-/* Break on bad guest physical address. */
-#define XEN_IA64_DEBUG_ON_BAD_MPA (1 << 12)
-
-/* Force psr.ss bit. */
-#define XEN_IA64_DEBUG_FORCE_SS (1 << 13)
-
-/* Force psr.db bit. */
-#define XEN_IA64_DEBUG_FORCE_DB (1 << 14)
-
-/* Break on ITR/PTR. */
-#define XEN_IA64_DEBUG_ON_TR (1 << 15)
-
-/* Break on ITC/PTC.L/PTC.G/PTC.GA. */
-#define XEN_IA64_DEBUG_ON_TC (1 << 16)
-
-/* Get translation cache. */
-#define XEN_IA64_DEBUG_OP_GET_TC 3
-
-/* Translate virtual address to guest physical address. */
-#define XEN_IA64_DEBUG_OP_TRANSLATE 4
-
-union xen_ia64_debug_op {
- uint64_t flags;
- struct xen_ia64_debug_vtlb {
- uint64_t nbr; /* IN/OUT */
- XEN_GUEST_HANDLE_64(ia64_tr_entry_t) tr; /* IN/OUT */
- } vtlb;
-};
-typedef union xen_ia64_debug_op xen_ia64_debug_op_t;
-DEFINE_XEN_GUEST_HANDLE(xen_ia64_debug_op_t);
-
-#endif /* __XEN_PUBLIC_IA64_DEBUG_OP_H__ */
diff --git a/sys/xen/interface/arch-ia64/hvm/memmap.h b/sys/xen/interface/arch-ia64/hvm/memmap.h
deleted file mode 100644
index 68d14f3..0000000
--- a/sys/xen/interface/arch-ia64/hvm/memmap.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/******************************************************************************
- * memmap.h
- *
- * Copyright (c) 2008 Tristan Gingold <tgingold AT free fr>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef __XEN_PUBLIC_HVM_MEMMAP_IA64_H__
-#define __XEN_PUBLIC_HVM_MEMMAP_IA64_H__
-
-#define MEM_G (1UL << 30)
-#define MEM_M (1UL << 20)
-#define MEM_K (1UL << 10)
-
-/* Guest physical address of IO ports space. */
-#define MMIO_START (3 * MEM_G)
-#define MMIO_SIZE (512 * MEM_M)
-
-#define VGA_IO_START 0xA0000UL
-#define VGA_IO_SIZE 0x20000
-
-#define LEGACY_IO_START (MMIO_START + MMIO_SIZE)
-#define LEGACY_IO_SIZE (64 * MEM_M)
-
-#define IO_PAGE_START (LEGACY_IO_START + LEGACY_IO_SIZE)
-#define IO_PAGE_SIZE XEN_PAGE_SIZE
-
-#define STORE_PAGE_START (IO_PAGE_START + IO_PAGE_SIZE)
-#define STORE_PAGE_SIZE XEN_PAGE_SIZE
-
-#define BUFFER_IO_PAGE_START (STORE_PAGE_START + STORE_PAGE_SIZE)
-#define BUFFER_IO_PAGE_SIZE XEN_PAGE_SIZE
-
-#define BUFFER_PIO_PAGE_START (BUFFER_IO_PAGE_START + BUFFER_IO_PAGE_SIZE)
-#define BUFFER_PIO_PAGE_SIZE XEN_PAGE_SIZE
-
-#define IO_SAPIC_START 0xfec00000UL
-#define IO_SAPIC_SIZE 0x100000
-
-#define PIB_START 0xfee00000UL
-#define PIB_SIZE 0x200000
-
-#define GFW_START (4 * MEM_G - 16 * MEM_M)
-#define GFW_SIZE (16 * MEM_M)
-
-/* domVTI */
-#define GPFN_FRAME_BUFFER 0x1 /* VGA framebuffer */
-#define GPFN_LOW_MMIO 0x2 /* Low MMIO range */
-#define GPFN_PIB 0x3 /* PIB base */
-#define GPFN_IOSAPIC 0x4 /* IOSAPIC base */
-#define GPFN_LEGACY_IO 0x5 /* Legacy I/O base */
-#define GPFN_HIGH_MMIO 0x6 /* High MMIO range */
-
-/* Nvram belongs to GFW memory space */
-#define NVRAM_SIZE (MEM_K * 64)
-#define NVRAM_START (GFW_START + 10 * MEM_M)
-
-#define NVRAM_VALID_SIG 0x4650494e45584948 /* "HIXENIPF" */
-struct nvram_save_addr {
- unsigned long addr;
- unsigned long signature;
-};
-
-#endif /* __XEN_PUBLIC_HVM_MEMMAP_IA64_H__ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/sys/xen/interface/arch-ia64/hvm/save.h b/sys/xen/interface/arch-ia64/hvm/save.h
deleted file mode 100644
index c44e913..0000000
--- a/sys/xen/interface/arch-ia64/hvm/save.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/******************************************************************************
- * save_types.h
- *
- * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp>
- * VA Linux Systems Japan K.K.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef __XEN_PUBLIC_HVM_SAVE_IA64_H__
-#define __XEN_PUBLIC_HVM_SAVE_IA64_H__
-
-#include "../../hvm/save.h"
-#include "../../arch-ia64.h"
-
-/*
- * Save/restore header: general info about the save file.
- */
-
-/* x86 uses 0x54381286 */
-#define HVM_FILE_MAGIC 0x343641492f6e6558UL /* "Xen/IA64" */
-#define HVM_FILE_VERSION 0x0000000000000001UL
-
-struct hvm_save_header {
- uint64_t magic; /* Must be HVM_FILE_MAGIC */
- uint64_t version; /* File format version */
- uint64_t changeset; /* Version of Xen that saved this file */
- uint64_t cpuid[5]; /* CPUID[0x01][%eax] on the saving machine */
-};
-
-DECLARE_HVM_SAVE_TYPE(HEADER, 1, struct hvm_save_header);
-
-/*
- * CPU
- */
-struct hvm_hw_ia64_cpu {
- uint64_t ipsr;
-};
-DECLARE_HVM_SAVE_TYPE(CPU, 2, struct hvm_hw_ia64_cpu);
-
-/*
- * CPU
- */
-struct hvm_hw_ia64_vpd {
- struct vpd vpd;
-};
-DECLARE_HVM_SAVE_TYPE(VPD, 3, struct hvm_hw_ia64_vpd);
-
-/*
- * device dependency
- * vacpi => viosapic => vlsapic
- */
-/*
- * vlsapic
- */
-struct hvm_hw_ia64_vlsapic {
- uint64_t insvc[4];
- uint64_t vhpi; // ??? should this be saved in vpd
- uint8_t xtp;
- uint8_t pal_init_pending;
- uint8_t pad[2];
-};
-DECLARE_HVM_SAVE_TYPE(VLSAPIC, 4, struct hvm_hw_ia64_vlsapic);
-/* set
- * unconditionaly set v->arch.irq_new_peding = 1
- * unconditionaly set v->arch.irq_new_condition = 0
- */
-
-/*
- * vtime
- */
-/* itc, itm, itv are saved by arch vcpu context */
-struct hvm_hw_ia64_vtime {
- uint64_t itc;
- uint64_t itm;
-
- uint64_t last_itc;
- uint64_t pending;
-};
-DECLARE_HVM_SAVE_TYPE(VTIME, 5, struct hvm_hw_ia64_vtime);
-/*
- * calculate v->vtm.vtm_offset
- * ??? Or should vtm_offset be set by leave_hypervisor_tail()?
- * start vtm_timer if necessary by vtm_set_itm().
- * ??? Or should vtm_timer be set by leave_hypervisor_tail()?
- *
- * ??? or should be done by schedule_tail()
- * => schedule_tail() should do.
- */
-
-/*
- * viosapic
- */
-#define VIOSAPIC_NUM_PINS 48
-
-/* To share VT-d code which uses vioapic_redir_entry.
- * Although on ia64 this is for vsapic, but we have to vioapic_redir_entry
- * instead of viosapic_redir_entry.
- */
-union vioapic_redir_entry
-{
- uint64_t bits;
- struct {
- uint8_t vector;
-
- uint8_t delivery_mode : 3;
- uint8_t reserve1 : 1;
- uint8_t delivery_status: 1;
- uint8_t polarity : 1;
- uint8_t reserve2 : 1;
- uint8_t trig_mode : 1;
-
- uint8_t mask : 1;
- uint8_t reserve3 : 7;
-
- uint8_t reserved[3];
- uint16_t dest_id;
- } fields;
-};
-
-struct hvm_hw_ia64_viosapic {
- uint64_t irr;
- uint64_t isr;
- uint32_t ioregsel;
- uint32_t pad;
- uint64_t lowest_vcpu_id;
- uint64_t base_address;
- union vioapic_redir_entry redirtbl[VIOSAPIC_NUM_PINS];
-};
-DECLARE_HVM_SAVE_TYPE(VIOSAPIC, 6, struct hvm_hw_ia64_viosapic);
-
-/*
- * vacpi
- * PM timer
- */
-struct vacpi_regs {
- union {
- struct {
- uint32_t pm1a_sts:16;/* PM1a_EVT_BLK.PM1a_STS: status register */
- uint32_t pm1a_en:16; /* PM1a_EVT_BLK.PM1a_EN: enable register */
- };
- uint32_t evt_blk;
- };
- uint32_t tmr_val; /* PM_TMR_BLK.TMR_VAL: 32bit free-running counter */
-};
-
-struct hvm_hw_ia64_vacpi {
- struct vacpi_regs regs;
-};
-DECLARE_HVM_SAVE_TYPE(VACPI, 7, struct hvm_hw_ia64_vacpi);
-/* update last_gtime and setup timer of struct vacpi */
-
-/*
- * opt_feature: identity mapping of region 4, 5 and 7.
- * With the c/s 16396:d2935f9c217f of xen-ia64-devel.hg,
- * opt_feature hypercall supports only region 4,5,7 identity mappings.
- * structure hvm_hw_ia64_identity_mappings only supports them.
- * The new structure, struct hvm_hw_ia64_identity_mappings, is created to
- * avoid to keep up with change of the xen/ia64 internal structure, struct
- * opt_feature.
- *
- * If it is enhanced in the future, new structure will be created.
- */
-struct hvm_hw_ia64_identity_mapping {
- uint64_t on; /* on/off */
- uint64_t pgprot; /* The page protection bit mask of the pte. */
- uint64_t key; /* A protection key. */
-};
-
-struct hvm_hw_ia64_identity_mappings {
- struct hvm_hw_ia64_identity_mapping im_reg4;/* Region 4 identity mapping */
- struct hvm_hw_ia64_identity_mapping im_reg5;/* Region 5 identity mapping */
- struct hvm_hw_ia64_identity_mapping im_reg7;/* Region 7 identity mapping */
-};
-DECLARE_HVM_SAVE_TYPE(OPT_FEATURE_IDENTITY_MAPPINGS, 8, struct hvm_hw_ia64_identity_mappings);
-
-/*
- * Largest type-code in use
- */
-#define HVM_SAVE_CODE_MAX 8
-
-#endif /* __XEN_PUBLIC_HVM_SAVE_IA64_H__ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/sys/xen/interface/arch-ia64/sioemu.h b/sys/xen/interface/arch-ia64/sioemu.h
deleted file mode 100644
index d48da1a..0000000
--- a/sys/xen/interface/arch-ia64/sioemu.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/******************************************************************************
- * sioemu.h
- *
- * Copyright (c) 2008 Tristan Gingold <tgingold@free.fr>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef __XEN_PUBLIC_IA64_SIOEMU_H__
-#define __XEN_PUBLIC_IA64_SIOEMU_H__
-
-/* SIOEMU specific hypercalls.
- The numbers are the minor part of FW_HYPERCALL_SIOEMU. */
-
-/* Defines the callback entry point. r8=ip, r9=data.
- Must be called per-vcpu. */
-#define SIOEMU_HYPERCALL_SET_CALLBACK 0x01
-
-/* Finish sioemu fw initialization and start firmware. r8=ip. */
-#define SIOEMU_HYPERCALL_START_FW 0x02
-
-/* Add IO pages in physmap. */
-#define SIOEMU_HYPERCALL_ADD_IO_PHYSMAP 0x03
-
-/* Get wallclock time. */
-#define SIOEMU_HYPERCALL_GET_TIME 0x04
-
-/* Flush cache. */
-#define SIOEMU_HYPERCALL_FLUSH_CACHE 0x07
-
-/* Get freq base. */
-#define SIOEMU_HYPERCALL_FREQ_BASE 0x08
-
-/* Return from callback. */
-#define SIOEMU_HYPERCALL_CALLBACK_RETURN 0x09
-
-/* Deliver an interrupt. */
-#define SIOEMU_HYPERCALL_DELIVER_INT 0x0a
-
-/* SIOEMU callback reason. */
-
-/* An event (from event channel) has to be delivered. */
-#define SIOEMU_CB_EVENT 0x00
-
-/* Emulate an IO access. */
-#define SIOEMU_CB_IO_EMULATE 0x01
-
-/* An IPI is sent to a dead vcpu. */
-#define SIOEMU_CB_WAKEUP_VCPU 0x02
-
-/* A SAL hypercall is executed. */
-#define SIOEMU_CB_SAL_ASSIST 0x03
-
-#ifndef __ASSEMBLY__
-struct sioemu_callback_info {
- /* Saved registers. */
- unsigned long ip;
- unsigned long psr;
- unsigned long ifs;
- unsigned long nats;
- unsigned long r8;
- unsigned long r9;
- unsigned long r10;
- unsigned long r11;
-
- /* Callback parameters. */
- unsigned long cause;
- unsigned long arg0;
- unsigned long arg1;
- unsigned long arg2;
- unsigned long arg3;
- unsigned long _pad2[2];
- unsigned long r2;
-};
-#endif /* __ASSEMBLY__ */
-#endif /* __XEN_PUBLIC_IA64_SIOEMU_H__ */
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 69543e6..8259b2b 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -1283,8 +1283,6 @@ OLD_FILES+=usr/include/gcc/4.2/pmmintrin.h
OLD_FILES+=usr/include/gcc/4.2/tmmintrin.h
OLD_FILES+=usr/include/gcc/4.2/wmmintrin.h
OLD_FILES+=usr/include/gcc/4.2/xmmintrin.h
-.elif ${TARGET_ARCH} == "ia64"
-OLD_FILES+=usr/include/gcc/4.2/ia64intrin.h
.elif ${TARGET_ARCH} == "arm"
OLD_FILES+=usr/include/gcc/4.2/mmintrin.h
.elif ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "powerpc64"
diff --git a/tools/regression/README b/tools/regression/README
index 87e4ab3..a2de372 100644
--- a/tools/regression/README
+++ b/tools/regression/README
@@ -77,7 +77,6 @@ this file.
acct Exercise the integer to float conversion used in acct(5)
geom Some tests and an out-of-kernel simulator for the GEOM code
-ia64 ia64 specific regression tests
nfsmmap Some tests to exercise some tricky cases in NFS and mmap
p1003_1b Exercise 1003.1B scheduler
pipe Pipe code regression test
diff --git a/tools/regression/filemon/Makefile b/tools/regression/filemon/Makefile
index 6ee88f4..3911d33 100644
--- a/tools/regression/filemon/Makefile
+++ b/tools/regression/filemon/Makefile
@@ -1,6 +1,6 @@
# $FreeBSD$
-.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "ia64"
+.if ${MACHINE_ARCH} == "amd64"
BI_BITS=
.endif
diff --git a/tools/regression/ia64/emulated/brl.t b/tools/regression/ia64/emulated/brl.t
deleted file mode 100644
index c47989c..0000000
--- a/tools/regression/ia64/emulated/brl.t
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env perl -w
-#
-# Copyright (c) 2006 Marcel Moolenaar
-# All rights reserved.
-#
-# 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 AUTHOR ``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 AUTHOR 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.
-#
-# $FreeBSD$
-
-my $srcdir = `dirname $0`;
-chomp $srcdir;
-
-my @types = ("Call", "Cond");
-my @preds = ("False", "True");
-my %variant_mapping = (
- "Call" => "",
- "Cond" => "Backward Forward"
-);
-
-sub run ($$$$) {
- local ($nr, $type, $pred, $var) = @_;
- local $test = "${type}_${pred}_${var}";
- local $tmpfile = "/tmp/" . $$ . "_$test";
- local $st;
-
- $st = system("cc -o $tmpfile -DTYPE=$type -DPRED=$pred -DVAR=$var -Wall -O1 -g $srcdir/test.c");
- if ($st != 0) {
- print "not ok $nr $test # compiling $test\n";
- }
- else {
- $st = system($tmpfile);
- if ($st == 0) {
- print "ok $nr $test\n";
- }
- elsif ($st == 256) {
- print "not ok $nr $test # invalid combination\n";
- }
- elsif ($st == 512) {
- print "not ok $nr $test # long branch failure\n";
- }
- else {
- print "not ok $nr $test # signalled (exit status $st)\n";
- return; # Preserve the executable
- }
- }
- unlink $tmpfile;
-}
-
-#
-# We can only test the long brach emulation on the Merced processor.
-# Check for that and skip these tests if it's not...
-#
-$_ = `sysctl -n hw.model`;
-if (! /^Merced$/) {
- print "1..0 # SKIP This test can only be run on the Merced\n";
- exit 0;
-}
-
-#
-# Get the total number of tests we're going to perform.
-#
-my $count = 0;
-foreach $type (@types) {
- my @variants = split(/ /, $variant_mapping{$type});
- $count += @preds * @variants;
-}
-
-print "1..$count\n";
-
-my $nr=0;
-foreach $type (@types) {
- my @variants = split(/ /, $variant_mapping{$type});
- foreach $pred (@preds) {
- foreach $var (@variants) {
- run ++$nr, $type, $pred, $var;
- }
- }
-}
-
-exit 0;
diff --git a/tools/regression/ia64/emulated/test.c b/tools/regression/ia64/emulated/test.c
deleted file mode 100644
index 35d4b05..0000000
--- a/tools/regression/ia64/emulated/test.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/mman.h>
-#include <stdio.h>
-#include <string.h>
-
-/* Supported long branch types */
-#define Call 1
-#define Cond 2
-
-/* Supported predicates */
-#define False 1
-#define True 2
-
-/* Supported variations */
-#define Backward 1
-#define Forward 2
-
-#if TYPE == 0 || PRED == 0 || VAR == 0
-#error Define TYPE, PRED and/or VAR
-#endif
-
-union bundle {
- unsigned char bytes[16];
- long double _align;
-};
-
-/*
- * Machine code of a bundle containing a long branch. The predicate of the
- * long branch is the result of the compare in the first slot.
- * The assembly of the bundle is:
- * { .mlx
- * cmp.eq p0,p15= <PREDICATE>,r0
- * (p15) brl.few <TARGET> ;;
- * }
- * the predicate is written to bit 18:1
- * The branch target is written to bits 100:20, 48:39 and 123:1
- */
-unsigned char mc_brl_cond[16] = {
- 0x05, 0x00, 0x00, 0x00, 0x0f, 0x39,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
- 0x00, 0x00, 0x00, 0xc0
-};
-
-/*
- * Machine code of the epilogue of a typical function returning an integer.
- * The assembly of the epilogue is:
- * { .mib
- * nop.m 0
- * addl r8 = <RETVAL>, r0
- * br.ret.sptk.few b0 ;;
- * }
- * The return value is written to bits 59:7, 73:9, 68:5, and 82:1.
- */
-unsigned char mc_epilogue[16] = {
- 0x11, 0x00, 0x00, 0x00, 0x01, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x48, 0x80,
- 0x00, 0x00, 0x84, 0x00
-};
-
-void
-mc_patch(union bundle *b, unsigned long val, int start, int len)
-{
- unsigned long mask;
- int bit, byte, run;
-
- byte = start >> 3;
- bit = start & 7;
- while (len) {
- run = ((len > (8 - bit)) ? (8 - bit) : len);
- mask = (1UL << run) - 1UL;
- b->bytes[byte] |= (val & mask) << bit;
- val >>= run;
- len -= run;
- byte++;
- bit = 0;
- }
-}
-
-void
-assemble_brl_cond(union bundle *b, int pred, unsigned long tgt)
-{
- unsigned long iprel;
-
- iprel = tgt - (unsigned long)b;
- memcpy(b->bytes, mc_brl_cond, sizeof(mc_brl_cond));
- mc_patch(b, pred ? 1 : 0, 18, 1);
- mc_patch(b, iprel >> 4, 100, 20);
- mc_patch(b, iprel >> 24, 48, 39);
- mc_patch(b, iprel >> 63, 123, 1);
-}
-
-void
-assemble_epilogue(union bundle *b, int retval)
-{
- memcpy(b->bytes, mc_epilogue, sizeof(mc_epilogue));
- mc_patch(b, retval, 59, 7);
- mc_patch(b, retval >> 7, 73, 9);
- mc_patch(b, retval >> 16, 68, 5);
- mc_patch(b, retval >> 21, 82, 1);
-}
-
-int
-doit(void *addr)
-{
- asm("mov b6 = %0; br.sptk b6;;" :: "r"(addr));
- return 1;
-}
-
-int
-test_cond(int pred, union bundle *src, union bundle *dst)
-{
- assemble_epilogue(dst, pred ? 0 : 2);
- assemble_brl_cond(src, pred ? 1 : 0, (unsigned long)dst);
- assemble_epilogue(src + 1, !pred ? 0 : 2);
- return doit(src);
-}
-
-int
-main()
-{
- static union bundle blob_low[2];
- union bundle *blob_high;
- void *addr;
-
- addr = (void *)0x7FFFFFFF00000000L;
- blob_high = mmap(addr, 32, PROT_EXEC | PROT_READ | PROT_WRITE,
- MAP_ANON, -1, 0L);
- if (blob_high != addr)
- printf("NOTICE: blob_high is at %p, not at %p\n", blob_high,
- addr);
-
-#if TYPE == Call
- return (test_call(blob_high, blob_low));
-#elif TYPE == Cond
- #if VAR == Forward
- return (test_cond(PRED - 1, blob_low, blob_high));
- #elif VAR == Backward
- return (test_cond(PRED - 1, blob_high, blob_low));
- #else
- return (1);
- #endif
-#else
- return (1);
-#endif
-}
diff --git a/tools/regression/ia64/unaligned/test.c b/tools/regression/ia64/unaligned/test.c
deleted file mode 100644
index 869c864..0000000
--- a/tools/regression/ia64/unaligned/test.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (c) 2005 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/float.h>
-#include <string.h>
-
-/* Memory accesses. */
-#define Load 0x01
-#define Store 0x02
-
-/* Data type. */
-#define Integer 0x11
-#define FloatingPoint 0x12
-
-/* Data size. */
-#define Small 0x21
-#define Medium 0x22
-#define Large 0x23
-
-/* Post increment. */
-#define NoPostInc 0x31
-#define MinConstPostInc 0x32
-#define PlusConstPostInc 0x33
-#define ScratchRegPostInc 0x34
-#define PreservedRegPostInc 0x35
-
-#if ACCESS == 0 || TYPE == 0 || SIZE == 0 || POSTINC == 0
-#error define ACCESS, TYPE, SIZE and/or POSTINC
-#endif
-
-#if TYPE == Integer
-# define REG "r8"
-# if SIZE == Small
-# define DATA_TYPE short
-# define DATA_VALUE 0x1234
-# define LD "ld2"
-# define ST "st2"
-# elif SIZE == Medium
-# define DATA_TYPE int
-# define DATA_VALUE 0x12345678
-# define LD "ld4"
-# define ST "st4"
-# elif SIZE == Large
-# define DATA_TYPE long
-# define DATA_VALUE 0x1234567890ABCDEF
-# define LD "ld8"
-# define ST "st8"
-# endif
-#elif TYPE == FloatingPoint
-# define REG "f6"
-# if SIZE == Small
-# define DATA_TYPE float
-# define DATA_VALUE FLT_MIN
-# define LD "ldfs"
-# define ST "stfs"
-# elif SIZE == Medium
-# define DATA_TYPE double
-# define DATA_VALUE DBL_MIN
-# define LD "ldfd"
-# define ST "stfd"
-# elif SIZE == Large
-# define DATA_TYPE long double
-# define DATA_VALUE LDBL_MIN
-# define LD "ldfe"
-# define ST "stfe"
-# endif
-#endif
-
-struct {
- DATA_TYPE aligned;
- char _;
- char misaligned[sizeof(DATA_TYPE)];
-} data;
-
-DATA_TYPE *aligned = &data.aligned;
-DATA_TYPE *misaligned = (DATA_TYPE *)data.misaligned;
-DATA_TYPE value = DATA_VALUE;
-
-void
-block_copy(void *dst, void *src, size_t sz)
-{
-
- memcpy(dst, src, sz);
-}
-
-int
-main()
-{
-
- /* Set PSR.ac. */
- asm volatile("sum 8");
-
-#if ACCESS == Load
- /*
- * LOAD
- */
- block_copy(misaligned, &value, sizeof(DATA_TYPE));
-
-# if POSTINC == NoPostInc
- /* Misaligned load. */
- *aligned = *misaligned;
-# elif POSTINC == MinConstPostInc
- asm volatile(
- "ld8 r2=%0;;"
- LD " " REG "=[r2],%2;;"
- "st8 %0=r2;" ST " %1=" REG ";;"
- : "=m"(misaligned), "=m"(*aligned)
- : "i"(-sizeof(DATA_TYPE))
- : REG, "r2", "memory");
-# elif POSTINC == PlusConstPostInc
- asm volatile(
- "ld8 r2=%0;;"
- LD " " REG "=[r2],%2;;"
- "st8 %0=r2;" ST " %1=" REG ";;"
- : "=m"(misaligned), "=m"(*aligned)
- : "i"(sizeof(DATA_TYPE))
- : REG, "r2", "memory");
-# elif POSTINC == ScratchRegPostInc
- asm volatile(
- "ld8 r2=%0; mov r3=%2;;"
- LD " " REG "=[r2],r3;;"
- "st8 %0=r2;" ST " %1=" REG ";;"
- : "=m"(misaligned), "=m"(*aligned)
- : "i"(sizeof(DATA_TYPE))
- : REG, "r2", "r3", "memory");
-# elif POSTINC == PreservedRegPostInc
- asm volatile(
- "ld8 r2=%0; mov r4=%2;;"
- LD " " REG "=[r2],r4;;"
- "st8 %0=r2;" ST " %1=" REG ";;"
- : "=m"(misaligned), "=m"(*aligned)
- : "i"(sizeof(DATA_TYPE))
- : REG, "r2", "r4", "memory");
-# endif
-
-#elif ACCESS == Store
- /*
- * STORE
- */
-
-# if POSTINC == NoPostInc
- /* Misaligned store. */
- *misaligned = value;
-# elif POSTINC == MinConstPostInc
- asm volatile(
- "ld8 r2=%0;" LD " " REG "=%1;;"
- ST " [r2]=" REG ",%2;;"
- "st8 %0=r2;;"
- : "=m"(misaligned)
- : "m"(value), "i"(-sizeof(DATA_TYPE))
- : REG, "r2", "memory");
-# elif POSTINC == PlusConstPostInc
- asm volatile(
- "ld8 r2=%0;" LD " " REG "=%1;;"
- ST " [r2]=" REG ",%2;;"
- "st8 %0=r2;;"
- : "=m"(misaligned)
- : "m"(value), "i"(sizeof(DATA_TYPE))
- : REG, "r2", "memory");
-# elif POSTINC == ScratchRegPostInc || POSTINC == PreservedRegPostInc
- return (1);
-# endif
-
- block_copy(aligned, data.misaligned, sizeof(DATA_TYPE));
-#endif
-
- if (*aligned != value)
- return (2);
-
-#if POSTINC == NoPostInc
- return (0);
-#elif POSTINC == MinConstPostInc
- return (((char *)misaligned == data.misaligned - sizeof(DATA_TYPE))
- ? 0 : 4);
-#else
- return (((char *)misaligned == data.misaligned + sizeof(DATA_TYPE))
- ? 0 : 4);
-#endif
-}
diff --git a/tools/regression/ia64/unaligned/unaligned.t b/tools/regression/ia64/unaligned/unaligned.t
deleted file mode 100644
index 5d061bd..0000000
--- a/tools/regression/ia64/unaligned/unaligned.t
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env perl -w
-#
-# Copyright (c) 2005 Marcel Moolenaar
-# All rights reserved.
-#
-# 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 AUTHOR ``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 AUTHOR 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.
-#
-# $FreeBSD$
-
-my $srcdir = `dirname $0`;
-chomp $srcdir;
-
-my @accesses = ("Load", "Store");
-my @types = ("Integer", "FloatingPoint");
-my @sizes = ("Small", "Medium", "Large");
-my @postincs = ("NoPostInc", "MinConstPostInc", "PlusConstPostInc",
- "ScratchRegPostInc", "PreservedRegPostInc");
-
-sub run ($$$$$) {
- local ($nr, $access, $type, $size, $postinc) = @_;
- local $test = "${access}_${type}_${size}_${postinc}";
- local $tmpfile = "/tmp/" . $$ . "_$test";
- local $st;
-
- $st = system("cc -o $tmpfile -DACCESS=$access -DTYPE=$type -DSIZE=$size -DPOSTINC=$postinc -Wall -O -g $srcdir/test.c");
- if ($st != 0) {
- print "not ok $nr $test # compiling $test\n";
- }
- else {
- $st = system($tmpfile);
- if ($st == 0) {
- print "ok $nr $test\n";
- }
- elsif ($st == 256) {
- print "not ok $nr $test # invalid combination\n";
- }
- elsif ($st == 512) {
- print "not ok $nr $test # value mismatch\n";
- }
- elsif ($st == 1024) {
- print "not ok $nr $test # post increment mismatch\n";
- }
- else {
- print "not ok $nr $test # signalled (exit status $st)\n";
- return; # Preserve the executable
- }
- }
- unlink $tmpfile;
-}
-
-system("sysctl debug.unaligned_test=1");
-if (`sysctl -n debug.unaligned_test` != "1") {
- print "1..0 # SKIP The debug.unaligned_test sysctl could not be set\n";
- exit 0;
-}
-
-my $count = @accesses * @types * @sizes * @postincs;
-
-# There's no register based post inc. for stores.
-$count -= 12;
-
-print "1..$count\n";
-
-my $nr=0;
-foreach $access (@accesses) {
- foreach $postinc (@postincs) {
- $_ = "$access $postinc";
- if (! /Store.+RegPostInc/) {
- foreach $type (@types) {
- foreach $size (@sizes) {
- run ++$nr, $access, $type, $size, $postinc;
- }
- }
- }
- }
-}
-
-system("sysctl debug.unaligned_test=0");
-
-exit 0;
diff --git a/tools/tools/gdb_regofs/ia64.c b/tools/tools/gdb_regofs/ia64.c
deleted file mode 100644
index 59e0055..0000000
--- a/tools/tools/gdb_regofs/ia64.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (c) 2004 Marcel Moolenaar
- * All rights reserved.
- *
- * 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stddef.h>
-#include <machine/reg.h>
-
-#define PRESERVED(x) offsetof(struct reg, r_preserved) \
- + offsetof(struct _callee_saved, x)
-#define SCRATCH(x) offsetof(struct reg, r_scratch) \
- + offsetof(struct _caller_saved, x)
-#define SPECIAL(x) offsetof(struct reg, r_special) \
- + offsetof(struct _special, x)
-
-#define HIGH_FP(x) offsetof(struct fpreg, fpr_high) \
- + offsetof(struct _high_fp, x)
-#define PRESERVED_FP(x) offsetof(struct fpreg, fpr_preserved) \
- + offsetof(struct _callee_saved_fp, x)
-#define SCRATCH_FP(x) offsetof(struct fpreg, fpr_scratch) \
- + offsetof(struct _caller_saved_fp, x)
-
-static int regofs[] = {
- /*
- * General registers (0-127)
- */
- -1, /* gr0 */
- SPECIAL(gp),
- SCRATCH(gr2), SCRATCH(gr3),
- PRESERVED(gr4), PRESERVED(gr5), PRESERVED(gr6), PRESERVED(gr7),
- SCRATCH(gr8), SCRATCH(gr9), SCRATCH(gr10), SCRATCH(gr11),
- SPECIAL(sp), SPECIAL(tp),
- SCRATCH(gr14), SCRATCH(gr15), SCRATCH(gr16), SCRATCH(gr17),
- SCRATCH(gr18), SCRATCH(gr19), SCRATCH(gr20), SCRATCH(gr21),
- SCRATCH(gr22), SCRATCH(gr23), SCRATCH(gr24), SCRATCH(gr25),
- SCRATCH(gr26), SCRATCH(gr27), SCRATCH(gr28), SCRATCH(gr29),
- SCRATCH(gr30), SCRATCH(gr31),
- /*
- * gr32 through gr127 are not directly available as they are
- * stacked registers.
- */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr32-gr39 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr40-gr47 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr48-gr55 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr56-gr63 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr64-gr71 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr72-gr79 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr80-gr87 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr88-gr95 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr96-gr103 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr104-gr111 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr112-gr119 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* gr120-gr127 */
- /*
- * Floating-point registers (128-255)
- */
- -1, /* fr0: constant 0.0 */
- -1, /* fr1: constant 1.0 */
- PRESERVED_FP(fr2), PRESERVED_FP(fr3),
- PRESERVED_FP(fr4), PRESERVED_FP(fr5),
- SCRATCH_FP(fr6), SCRATCH_FP(fr7),
- SCRATCH_FP(fr8), SCRATCH_FP(fr9),
- SCRATCH_FP(fr10), SCRATCH_FP(fr11),
- SCRATCH_FP(fr12), SCRATCH_FP(fr13),
- SCRATCH_FP(fr14), SCRATCH_FP(fr15),
- PRESERVED_FP(fr16), PRESERVED_FP(fr17),
- PRESERVED_FP(fr18), PRESERVED_FP(fr19),
- PRESERVED_FP(fr20), PRESERVED_FP(fr21),
- PRESERVED_FP(fr22), PRESERVED_FP(fr23),
- PRESERVED_FP(fr24), PRESERVED_FP(fr25),
- PRESERVED_FP(fr26), PRESERVED_FP(fr27),
- PRESERVED_FP(fr28), PRESERVED_FP(fr29),
- PRESERVED_FP(fr30), PRESERVED_FP(fr31),
- HIGH_FP(fr32), HIGH_FP(fr33), HIGH_FP(fr34), HIGH_FP(fr35),
- HIGH_FP(fr36), HIGH_FP(fr37), HIGH_FP(fr38), HIGH_FP(fr39),
- HIGH_FP(fr40), HIGH_FP(fr41), HIGH_FP(fr42), HIGH_FP(fr43),
- HIGH_FP(fr44), HIGH_FP(fr45), HIGH_FP(fr46), HIGH_FP(fr47),
- HIGH_FP(fr48), HIGH_FP(fr49), HIGH_FP(fr50), HIGH_FP(fr51),
- HIGH_FP(fr52), HIGH_FP(fr53), HIGH_FP(fr54), HIGH_FP(fr55),
- HIGH_FP(fr56), HIGH_FP(fr57), HIGH_FP(fr58), HIGH_FP(fr59),
- HIGH_FP(fr60), HIGH_FP(fr61), HIGH_FP(fr62), HIGH_FP(fr63),
- HIGH_FP(fr64), HIGH_FP(fr65), HIGH_FP(fr66), HIGH_FP(fr67),
- HIGH_FP(fr68), HIGH_FP(fr69), HIGH_FP(fr70), HIGH_FP(fr71),
- HIGH_FP(fr72), HIGH_FP(fr73), HIGH_FP(fr74), HIGH_FP(fr75),
- HIGH_FP(fr76), HIGH_FP(fr77), HIGH_FP(fr78), HIGH_FP(fr79),
- HIGH_FP(fr80), HIGH_FP(fr81), HIGH_FP(fr82), HIGH_FP(fr83),
- HIGH_FP(fr84), HIGH_FP(fr85), HIGH_FP(fr86), HIGH_FP(fr87),
- HIGH_FP(fr88), HIGH_FP(fr89), HIGH_FP(fr90), HIGH_FP(fr91),
- HIGH_FP(fr92), HIGH_FP(fr93), HIGH_FP(fr94), HIGH_FP(fr95),
- HIGH_FP(fr96), HIGH_FP(fr97), HIGH_FP(fr98), HIGH_FP(fr99),
- HIGH_FP(fr100), HIGH_FP(fr101), HIGH_FP(fr102), HIGH_FP(fr103),
- HIGH_FP(fr104), HIGH_FP(fr105), HIGH_FP(fr106), HIGH_FP(fr107),
- HIGH_FP(fr108), HIGH_FP(fr109), HIGH_FP(fr110), HIGH_FP(fr111),
- HIGH_FP(fr112), HIGH_FP(fr113), HIGH_FP(fr114), HIGH_FP(fr115),
- HIGH_FP(fr116), HIGH_FP(fr117), HIGH_FP(fr118), HIGH_FP(fr119),
- HIGH_FP(fr120), HIGH_FP(fr121), HIGH_FP(fr122), HIGH_FP(fr123),
- HIGH_FP(fr124), HIGH_FP(fr125), HIGH_FP(fr126), HIGH_FP(fr127),
- /*
- * Predicate registers (256-319)
- * These are not individually available. Predicates are
- * in the pr register.
- */
- -1, -1, -1, -1, -1, -1, -1, -1, /* pr0-pr7 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* pr8-pr15 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* pr16-pr23 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* pr24-pr31 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* pr32-pr39 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* pr40-pr47 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* pr48-pr55 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* pr56-pr63 */
- /*
- * Branch registers (320-327)
- */
- SPECIAL(rp),
- PRESERVED(br1), PRESERVED(br2), PRESERVED(br3), PRESERVED(br4),
- PRESERVED(br5),
- SCRATCH(br6), SCRATCH(br7),
- /*
- * Misc other registers (328-333)
- */
- -1, -1,
- SPECIAL(pr),
- SPECIAL(iip),
- SPECIAL(psr),
- SPECIAL(cfm),
- /*
- * Application registers (334-461)
- */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar.k0-ar.k7 */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar8-ar15 (reserved) */
- SPECIAL(rsc), /* ar.rsc */
- SPECIAL(ndirty), /* ar.bsp !!YEDI!! */
- SPECIAL(bspstore), /* ar.bspstore */
- SPECIAL(rnat), /* ar.rnat */
- -1, /* ar20 (reserved) */
- -1, /* ar.fcr */
- -1, -1, /* ar22-ar23 (reserved) */
- -1, /* ar.eflag */
- SCRATCH(csd), /* ar.csd */
- SCRATCH(ssd), /* ar.ssd */
- -1, /* ar.cflg */
- -1, /* ar.fsr */
- -1, /* ar.fir */
- -1, /* ar.fdr */
- -1, /* ar31 (reserved) */
- SCRATCH(ccv), /* ar.ccv */
- -1, -1, -1, /* ar33-ar35 (reserved) */
- SPECIAL(unat), /* ar.unat */
- -1, -1, -1, /* ar37-ar39 (reserved) */
- SPECIAL(fpsr), /* ar.fpsr */
- -1, -1, -1, /* ar41-ar43 (reserved) */
- -1, /* ar.itc */
- -1, -1, -1, /* ar45-ar47 (reserved) */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar48-ar55 (ignored) */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar56-ar63 (ignored) */
- SPECIAL(pfs), /* ar.pfs */
- PRESERVED(lc), /* ar.lc */
- -1, /* ar.ec */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar67-ar74 (reserved) */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar75-ar82 (reserved) */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar83-ar90 (reserved) */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar91-ar98 (reserved) */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar99-ar106 (reserved) */
- -1, -1, -1, -1, -1, /* ar107-ar111 (reserved) */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar112-ar119 (ignored) */
- -1, -1, -1, -1, -1, -1, -1, -1, /* ar120-ar127 (ignored) */
-};
-
-int
-main()
-{
- int elem, nelems;
-
- nelems = sizeof(regofs)/sizeof(regofs[0]);
- printf("static int reg_offset[%d] = {", nelems);
- for (elem = 0; elem < nelems; elem++) {
- if ((elem & 7) == 0)
- printf("\n ");
- printf("%4d", regofs[elem]);
- if (elem < nelems - 1)
- putchar(',');
- if ((elem & 7) != 7)
- putchar(' ');
- else
- printf("\t/* Regs %d-%d. */", elem - 7, elem);
- }
- printf("\n};");
- return (0);
-}
diff --git a/usr.bin/Makefile.ia64 b/usr.bin/Makefile.ia64
deleted file mode 100644
index fee2fb0..0000000
--- a/usr.bin/Makefile.ia64
+++ /dev/null
@@ -1,3 +0,0 @@
-# $FreeBSD$
-
-SUBDIR+= smbutil
diff --git a/usr.bin/gprof/gprof.h b/usr.bin/gprof/gprof.h
index c841a20..c8140eb 100644
--- a/usr.bin/gprof/gprof.h
+++ b/usr.bin/gprof/gprof.h
@@ -46,9 +46,6 @@
#if __i386__
# include "i386.h"
#endif
-#if __ia64__
-# include "ia64.h"
-#endif
#if __mips__
# include "mips.h"
#endif
diff --git a/usr.bin/gprof/ia64.h b/usr.bin/gprof/ia64.h
deleted file mode 100644
index 58b92c5..0000000
--- a/usr.bin/gprof/ia64.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)i386.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
- /*
- * offset (in bytes) of the code from the entry address of a routine.
- * (see asgnsamples for use and explanation.)
- */
-#define OFFSET_OF_CODE 0
-
-enum opermodes { dummy };
-typedef enum opermodes operandenum;
diff --git a/usr.bin/truss/extern.h b/usr.bin/truss/extern.h
index c60c6c7..820f4f0 100644
--- a/usr.bin/truss/extern.h
+++ b/usr.bin/truss/extern.h
@@ -55,10 +55,6 @@ extern long i386_syscall_exit(struct trussinfo *, int);
extern void i386_linux_syscall_entry(struct trussinfo *, int);
extern long i386_linux_syscall_exit(struct trussinfo *, int);
#endif
-#ifdef __ia64__
-extern void ia64_syscall_entry(struct trussinfo *, int);
-extern long ia64_syscall_exit(struct trussinfo *, int);
-#endif
#ifdef __powerpc__
extern void powerpc_syscall_entry(struct trussinfo *, int);
extern long powerpc_syscall_exit(struct trussinfo *, int);
diff --git a/usr.bin/truss/ia64-fbsd.c b/usr.bin/truss/ia64-fbsd.c
deleted file mode 100644
index 2218fe5..0000000
--- a/usr.bin/truss/ia64-fbsd.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * Copyright 1997 Sean Eric Fagan
- *
- * 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 Sean Eric Fagan
- * 4. Neither the name of the author may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- */
-
-#ifndef lint
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-/*
- * FreeBSD/ia64-specific system call handling. This is probably the most
- * complex part of the entire truss program, although I've got lots of
- * it handled relatively cleanly now. The system call names are generated
- * automatically, thanks to /usr/src/sys/kern/syscalls.master. The
- * names used for the various structures are confusing, I sadly admit.
- */
-
-#include <sys/types.h>
-#include <sys/ptrace.h>
-#include <sys/syscall.h>
-
-#include <machine/reg.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include "truss.h"
-#include "syscall.h"
-#include "extern.h"
-
-#include "syscalls.h"
-
-static int nsyscalls = sizeof(syscallnames) / sizeof(syscallnames[0]);
-
-/*
- * This is what this particular file uses to keep track of a system call.
- * It is probably not quite sufficient -- I can probably use the same
- * structure for the various syscall personalities, and I also probably
- * need to nest system calls (for signal handlers).
- *
- * 'struct syscall' describes the system call; it may be NULL, however,
- * if we don't know about this particular system call yet.
- */
-struct freebsd_syscall {
- struct syscall *sc;
- const char *name;
- int number;
- unsigned long *args;
- int nargs; /* number of arguments -- *not* number of words! */
- char **s_args; /* the printable arguments */
-};
-
-static struct freebsd_syscall *
-alloc_fsc(void)
-{
-
- return (malloc(sizeof(struct freebsd_syscall)));
-}
-
-/* Clear up and free parts of the fsc structure. */
-static void
-free_fsc(struct freebsd_syscall *fsc)
-{
- int i;
-
- free(fsc->args);
- if (fsc->s_args) {
- for (i = 0; i < fsc->nargs; i++)
- free(fsc->s_args[i]);
- free(fsc->s_args);
- }
- free(fsc);
-}
-
-/*
- * Called when a process has entered a system call. nargs is the
- * number of words, not number of arguments (a necessary distinction
- * in some cases). Note that if the STOPEVENT() code in ia64/ia64/trap.c
- * is ever changed these functions need to keep up.
- */
-
-void
-ia64_syscall_entry(struct trussinfo *trussinfo, int nargs)
-{
- struct reg regs;
- struct freebsd_syscall *fsc;
- struct syscall *sc;
- unsigned long *parm_offset;
- lwpid_t tid;
- int i, syscall_num;
-
- tid = trussinfo->curthread->tid;
-
- if (ptrace(PT_GETREGS, tid, (caddr_t)&regs, 0) < 0) {
- fprintf(trussinfo->outfile, "-- CANNOT READ REGISTERS --\n");
- return;
- }
- parm_offset = &regs.r_scratch.gr16;
-
- /*
- * FreeBSD has two special kinds of system call redirctions --
- * SYS_syscall, and SYS___syscall. The former is the old syscall()
- * routine, basically; the latter is for quad-aligned arguments.
- */
- syscall_num = regs.r_scratch.gr15; /* XXX double-check. */
- if (syscall_num == SYS_syscall || syscall_num == SYS___syscall)
- syscall_num = (int)*parm_offset++;
-
- fsc = alloc_fsc();
- if (fsc == NULL)
- return;
- fsc->number = syscall_num;
- fsc->name = (syscall_num < 0 || syscall_num >= nsyscalls) ?
- NULL : syscallnames[syscall_num];
- if (!fsc->name) {
- fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n",
- syscall_num);
- }
-
- if (fsc->name && (trussinfo->flags & FOLLOWFORKS) &&
- (strcmp(fsc->name, "fork") == 0 ||
- strcmp(fsc->name, "rfork") == 0 ||
- strcmp(fsc->name, "vfork") == 0))
- trussinfo->curthread->in_fork = 1;
-
- if (nargs == 0)
- return;
-
- fsc->args = malloc((1 + nargs) * sizeof(unsigned long));
- memcpy(fsc->args, parm_offset, nargs * sizeof(long));
-
- sc = get_syscall(fsc->name);
- if (sc)
- fsc->nargs = sc->nargs;
- else {
-#if DEBUG
- fprintf(trussinfo->outfile, "unknown syscall %s -- setting "
- "args to %d\n", fsc->name, nargs);
-#endif
- fsc->nargs = nargs;
- }
-
- fsc->s_args = calloc(1, (1 + fsc->nargs) * sizeof(char *));
- fsc->sc = sc;
-
- /*
- * At this point, we set up the system call arguments.
- * We ignore any OUT ones, however -- those are arguments that
- * are set by the system call, and so are probably meaningless
- * now. This doesn't currently support arguments that are
- * passed in *and* out, however.
- */
-
- if (fsc->name) {
-#if DEBUG
- fprintf(stderr, "syscall %s(", fsc->name);
-#endif
- for (i = 0; i < fsc->nargs; i++) {
-#if DEBUG
- fprintf(stderr, "0x%x%s", sc ?
- fsc->args[sc->args[i].offset] : fsc->args[i],
- i < (fsc->nargs - 1) ? "," : "");
-#endif
- if (sc && !(sc->args[i].type & OUT)) {
- fsc->s_args[i] = print_arg(&sc->args[i],
- fsc->args, 0, trussinfo);
- }
- }
-#if DEBUG
- fprintf(stderr, ")\n");
-#endif
- }
-
-#if DEBUG
- fprintf(trussinfo->outfile, "\n");
-#endif
-
- if (fsc->name != NULL && (strcmp(fsc->name, "execve") == 0 ||
- strcmp(fsc->name, "exit") == 0)) {
- /*
- * XXX
- * This could be done in a more general
- * manner but it still wouldn't be very pretty.
- */
- if (strcmp(fsc->name, "execve") == 0) {
- if ((trussinfo->flags & EXECVEARGS) == 0) {
- if (fsc->s_args[1]) {
- free(fsc->s_args[1]);
- fsc->s_args[1] = NULL;
- }
- }
- if ((trussinfo->flags & EXECVEENVS) == 0) {
- if (fsc->s_args[2]) {
- free(fsc->s_args[2]);
- fsc->s_args[2] = NULL;
- }
- }
- }
- }
- trussinfo->curthread->fsc = fsc;
-}
-
-/*
- * And when the system call is done, we handle it here.
- * Currently, no attempt is made to ensure that the system calls
- * match -- this needs to be fixed (and is, in fact, why S_SCX includes
- * the system call number instead of, say, an error status).
- */
-
-long
-ia64_syscall_exit(struct trussinfo *trussinfo, int syscall_num __unused)
-{
- struct reg regs;
- struct freebsd_syscall *fsc;
- struct syscall *sc;
- lwpid_t tid;
- long retval;
- int errorp, i;
-
- if (trussinfo->curthread->fsc == NULL)
- return (-1);
-
- tid = trussinfo->curthread->tid;
-
- if (ptrace(PT_GETREGS, tid, (caddr_t)&regs, 0) < 0) {
- fprintf(trussinfo->outfile, "-- CANNOT READ REGISTERS --\n");
- return (-1);
- }
-
- retval = regs.r_scratch.gr8;
- errorp = (regs.r_scratch.gr10 != 0) ? 1 : 0;
-
- /*
- * This code, while simpler than the initial versions I used, could
- * stand some significant cleaning.
- */
-
- fsc = trussinfo->curthread->fsc;
- sc = fsc->sc;
- if (!sc) {
- for (i = 0; i < fsc->nargs; i++)
- asprintf(&fsc->s_args[i], "0x%lx", fsc->args[i]);
- } else {
- /*
- * Here, we only look for arguments that have OUT masked in --
- * otherwise, they were handled in the syscall_entry function.
- */
- for (i = 0; i < sc->nargs; i++) {
- char *temp;
- if (sc->args[i].type & OUT) {
- /*
- * If an error occurred, then don't bother
- * getting the data; it may not be valid.
- */
- if (errorp) {
- asprintf(&temp, "0x%lx",
- fsc->args[sc->args[i].offset]);
- } else {
- temp = print_arg(&sc->args[i],
- fsc->args, retval, trussinfo);
- }
- fsc->s_args[i] = temp;
- }
- }
- }
-
- if (fsc->name != NULL && (strcmp(fsc->name, "execve") == 0 ||
- strcmp(fsc->name, "exit") == 0))
- trussinfo->curthread->in_syscall = 1;
-
- /*
- * It would probably be a good idea to merge the error handling,
- * but that complicates things considerably.
- */
-
- print_syscall_ret(trussinfo, fsc->name, fsc->nargs, fsc->s_args, errorp,
- retval, fsc->sc);
- free_fsc(fsc);
-
- return (retval);
-}
diff --git a/usr.bin/truss/main.c b/usr.bin/truss/main.c
index ecaa0db..7792caf 100644
--- a/usr.bin/truss/main.c
+++ b/usr.bin/truss/main.c
@@ -93,9 +93,6 @@ static struct ex_types {
{ "FreeBSD ELF32", i386_syscall_entry, i386_syscall_exit },
{ "Linux ELF", i386_linux_syscall_entry, i386_linux_syscall_exit },
#endif
-#ifdef __ia64__
- { "FreeBSD ELF64", ia64_syscall_entry, ia64_syscall_exit },
-#endif
#ifdef __powerpc__
{ "FreeBSD ELF", powerpc_syscall_entry, powerpc_syscall_exit },
{ "FreeBSD ELF32", powerpc_syscall_entry, powerpc_syscall_exit },
diff --git a/usr.bin/xlint/arch/ia64/targparam.h b/usr.bin/xlint/arch/ia64/targparam.h
deleted file mode 100644
index 7ec1038..0000000
--- a/usr.bin/xlint/arch/ia64/targparam.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: targparam.h,v 1.1 2002/01/18 20:39:18 thorpej Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Jochen Pohl
- * All Rights Reserved.
- *
- * 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 Jochen Pohl for
- * The NetBSD Project.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/*
- * Machine-dependent target parameters for lint1.
- */
-
-#include "lp64.h"
-
-/*
- * Should be set to 1 if the difference of two pointers is of type long
- * or the value of sizeof is of type unsigned long. Note this MUST be
- * kept in sync with the compiler!
- */
-
-#define PTRDIFF_IS_LONG 1
-#define SIZEOF_IS_ULONG 1
-
-#define FLOAT_SIZE (4 * CHAR_BIT)
-#define DOUBLE_SIZE (8 * CHAR_BIT)
-#define LDOUBLE_SIZE (16 * CHAR_BIT)
-
-#define ENUM_SIZE (4 * CHAR_BIT)
diff --git a/usr.bin/xlint/lint1/param.h b/usr.bin/xlint/lint1/param.h
index 27de692..94d8947 100644
--- a/usr.bin/xlint/lint1/param.h
+++ b/usr.bin/xlint/lint1/param.h
@@ -62,10 +62,7 @@
* Should be set to 1 if the difference of two pointers is of type long
* or the value of sizeof is of type unsigned long.
*/
-#ifdef __ia64__
-#define PTRDIFF_IS_LONG 1
-#define SIZEOF_IS_ULONG 1
-#elif __amd64__
+#if __amd64__
#define PTRDIFF_IS_LONG 1
#define SIZEOF_IS_ULONG 1
#elif __alpha__
diff --git a/usr.sbin/Makefile.ia64 b/usr.sbin/Makefile.ia64
deleted file mode 100644
index 0a897b4..0000000
--- a/usr.sbin/Makefile.ia64
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-
-.if ${MK_ACPI} != "no"
-SUBDIR+= acpi
-.endif
-SUBDIR+= kgmon
-SUBDIR+= mount_smbfs
-SUBDIR:= ${SUBDIR:Nuathload}
-SUBDIR+= zzz
diff --git a/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c b/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c
index f8644f4..b8e66a6 100644
--- a/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c
+++ b/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c
@@ -584,7 +584,7 @@ bridge_get_basemac(const char *bif_name, u_char *mac, size_t mlen)
/*
* Not just casting because of alignment constraints
- * on sparc64 and ia64.
+ * on sparc64.
*/
bcopy(ifa->ifa_addr, &sdl, sizeof(struct sockaddr_dl));
diff --git a/usr.sbin/config/config.5 b/usr.sbin/config/config.5
index 7513db1..dfc9fc8 100644
--- a/usr.sbin/config/config.5
+++ b/usr.sbin/config/config.5
@@ -182,8 +182,6 @@ The ARM architecture.
The AMD x86-64 architecture.
.It Cm i386
The Intel x86 based PC architecture.
-.It Cm ia64
-The Intel IA64 architecture.
.It Cm mips
The MIPS architecture.
.It Cm pc98
diff --git a/usr.sbin/crunch/crunchide/Makefile b/usr.sbin/crunch/crunchide/Makefile
index c959a3e..e328aa4 100644
--- a/usr.sbin/crunch/crunchide/Makefile
+++ b/usr.sbin/crunch/crunchide/Makefile
@@ -12,9 +12,8 @@ CFLAGS+=-DNLIST_AOUT
SRCS+= exec_aout.c
.endif
-.if ${TARGET_ARCH} == ia64 || ${TARGET_ARCH} == powerpc64 || \
- ${TARGET_ARCH} == sparc64 || ${TARGET_ARCH} == amd64 || \
- ${TARGET_ARCH:Mmips64*}
+.if ${TARGET_ARCH} == amd64 || ${TARGET_ARCH} == powerpc64 || \
+ ${TARGET_ARCH} == sparc64 || ${TARGET_ARCH:Mmips64*}
CFLAGS+=-DNLIST_ELF64
SRCS+= exec_elf64.c
exec_elf64.o: exec_elf32.c
diff --git a/usr.sbin/crunch/crunchide/exec_elf32.c b/usr.sbin/crunch/crunchide/exec_elf32.c
index 752007f..e9bc227 100644
--- a/usr.sbin/crunch/crunchide/exec_elf32.c
+++ b/usr.sbin/crunch/crunchide/exec_elf32.c
@@ -186,10 +186,6 @@ ELFNAMEEND(check)(int fd, const char *fn)
#endif
case EM_MIPS: break;
case /* EM_MIPS_RS3_LE */ EM_MIPS_RS4_BE: break;
-#ifndef EM_IA_64
-#define EM_IA_64 50
-#endif
- case EM_IA_64: break;
#ifndef EM_PPC
#define EM_PPC 20
#endif
diff --git a/usr.sbin/mergemaster/mergemaster.sh b/usr.sbin/mergemaster/mergemaster.sh
index a200088..9bf4f9f 100755
--- a/usr.sbin/mergemaster/mergemaster.sh
+++ b/usr.sbin/mergemaster/mergemaster.sh
@@ -760,7 +760,7 @@ CONFIRMED_UMASK=${NEW_UMASK:-0022}
# Warn users who still have old rc files
#
for file in atm devfs diskless1 diskless2 network network6 pccard \
- serial syscons sysctl alpha amd64 i386 ia64 sparc64; do
+ serial syscons sysctl alpha amd64 i386 sparc64; do
if [ -f "${DESTDIR}/etc/rc.${file}" ]; then
OLD_RC_PRESENT=1
break
@@ -786,7 +786,7 @@ case "${OLD_RC_PRESENT}" in
*)
mkdir -p /var/tmp/mergemaster/old_rc
for file in atm devfs diskless1 diskless2 network network6 pccard \
- serial syscons sysctl alpha amd64 i386 ia64 sparc64; do
+ serial syscons sysctl alpha amd64 i386 sparc64; do
if [ -f "${DESTDIR}/etc/rc.${file}" ]; then
mv ${DESTDIR}/etc/rc.${file} /var/tmp/mergemaster/old_rc/
fi
diff --git a/usr.sbin/ntp/config.h b/usr.sbin/ntp/config.h
index 41622f1..d4b3685 100644
--- a/usr.sbin/ntp/config.h
+++ b/usr.sbin/ntp/config.h
@@ -1176,7 +1176,7 @@
/* #undef SCO5_CLOCK */
/* The size of a `char*', as computed by sizeof. */
-#if defined(__alpha__) || defined(__ia64__) || defined(__sparc64__) || defined(__amd64__)
+#if defined(__alpha__) || defined(__sparc64__) || defined(__amd64__)
#define SIZEOF_CHARP 8
#else
#define SIZEOF_CHARP 4
@@ -1186,7 +1186,7 @@
#define SIZEOF_INT 4
/* The size of a `long', as computed by sizeof. */
-#if defined(__alpha__) || defined(__ia64__) || defined(__sparc64__) || defined(__amd64__)
+#if defined(__alpha__) || defined(__sparc64__) || defined(__amd64__)
#define SIZEOF_LONG 8
#else
#define SIZEOF_LONG 4
@@ -1199,7 +1199,7 @@
#define SIZEOF_SIGNED_CHAR 1
/* The size of a `time_t', as computed by sizeof. */
-#if defined(__alpha__) || defined(__ia64__) || defined(__sparc64__) || defined(__amd64__)
+#if defined(__alpha__) || defined(__sparc64__) || defined(__amd64__)
#define SIZEOF_TIME_T 8
#else
#define SIZEOF_TIME_T 4
@@ -1227,8 +1227,6 @@
#define STR_SYSTEM "sparc64-undermydesk-freebsd"
#elif defined(__amd64__)
#define STR_SYSTEM "amd64-undermydesk-freebsd"
-#elif defined(__ia64__)
-#define STR_SYSTEM "ia64-undermydesk-freebsd"
#else
#define STR_SYSTEM "i386-undermydesk-freebsd"
#endif
diff --git a/usr.sbin/pkg/elf_tables.h b/usr.sbin/pkg/elf_tables.h
index 0589ecf..55fd3bb 100644
--- a/usr.sbin/pkg/elf_tables.h
+++ b/usr.sbin/pkg/elf_tables.h
@@ -42,7 +42,6 @@ static struct _elf_corres mach_corres[] = {
{ EM_PPC, "powerpc" },
{ EM_PPC64, "powerpc" },
{ EM_SPARCV9, "sparc64" },
- { EM_IA_64, "ia64" },
{ -1, NULL },
};
OpenPOWER on IntegriCloud