devel/tbb: Deprecate port
No port using devel/tbb remain, so it's time to deprecate this port.
While here, fix a typo in devel/ispc still referencing devel/tbb.
PR: 252648
Port amd64 fix for PR port-xen/58561 to i386, with one extra fix:
with recent Xen (maybe since pvshim), traps handlers are called with
interrupts enabled, so adjust the i386 assembly code for this.
updating curcup()->ci_vcpu->evtchn_upcall_mask requires 2 intructions, e.g.
movl CPUVAR(VCPU),reg
movb $1,EVTCHN_UPCALL_MASK(reg)
With preemption enabled we may be moved to another CPU between the
2 intructions and we end up updating the evtchn_upcall_mask of another VCPU
than the one we're now running on.
Fix for Xen/i386:
- Add a CLI2 macro, which disables preemtion before the above sequence.
Use it instead of CLI where preemtion may be enabled
- Add DIAGNOSTIC code to check that preemtion is disabled in CLI
- Add DIAGNOSTIC code to check that interrupts are disabled when calling STI and STIC
- rename PUSHF to PUSHFCLI and change it to both read and disable
EVTCHN_UPCALL_MASK with preemption disabled
- remove the XENPVHVM version of STIC which is unused
updating curcup()->ci_vcpu->evtchn_upcall_mask requires 2 intructions, e.g.
movq CPUVAR(VCPU),%r ## temp_reg ;
movb $1,EVTCHN_UPCALL_MASK(%r ## temp_reg);
With preemption enabled we may be moved to another CPU between the
2 intructions and we end up updating the evtchn_upcall_mask of another VCPU
than the one we're now running on.
Fix for Xen/amd64:
- Add a CLI2 macro, which disables preemtion before the above sequence.
Use it instead of CLI where preemtion may be enabled
- Add DIAGNOSTIC code to check that preemtion is disabled in CLI
- Add DIAGNOSTIC code to check that interrupts are disabled when calling STI
while there, remove PUSHF/POPF macros which are unused
Hopefully fixes PR port-xen/58561
Thanks to Konrad Schroder for testing and Taylor R Campbell for review.
PR toolchain/59652 DNS utilities core dump in -current
Fix the alignment of TLS initialised data for __HAVE_TLS_VARIANT_I
platforms by registering the largest alignment required and allocating
memory accordingly. Additionally calculate correct offsets for each
object's data relative to the end of the struct tls_tcb placed at the
beginning of the TCB.
This makes the tests/libexec/ld.elf_so:t_tls_alignment pass.
I also tested it against a program that attempts to dlopen a DSO that
(erroneously) attempts to use tls_model("initial-exec") and it correctly
failed with
Use of initialized Thread Local Storage with model initial-exec and dlopen is not supported