diff --git a/ape/BUILD.mk b/ape/BUILD.mk index 8a71c8986..552ec2901 100644 --- a/ape/BUILD.mk +++ b/ape/BUILD.mk @@ -168,7 +168,6 @@ o/$(MODE)/ape/ape-no-modify-self.o: \ libc/macros.internal.h \ libc/nexgen32e/uart.internal.h \ libc/calls/metalfile.internal.h \ - libc/nexgen32e/vidya.internal.h \ libc/nt/pedef.internal.h \ libc/runtime/e820.internal.h \ libc/runtime/mman.internal.h \ @@ -199,7 +198,6 @@ o/$(MODE)/ape/ape-copy-self.o: \ libc/macros.internal.h \ libc/nexgen32e/uart.internal.h \ libc/calls/metalfile.internal.h \ - libc/nexgen32e/vidya.internal.h \ libc/nt/pedef.internal.h \ libc/runtime/e820.internal.h \ libc/runtime/mman.internal.h \ diff --git a/ape/macros.internal.h b/ape/macros.internal.h index 0fab603ff..19733f0f7 100644 --- a/ape/macros.internal.h +++ b/ape/macros.internal.h @@ -22,119 +22,6 @@ #ifdef __ASSEMBLER__ /* clang-format off */ -/** - * @fileoverview Macros relevant to αcτµαlly pδrταblε εxεcµταblε. - */ - -// Calls near (i.e. pc+pcrel<64kB) FUNCTION. -// @mode long,legacy,real -// @cost 9 bytes overhead -.macro rlcall function:req - .byte 0x50 # push %[er]ax - .byte 0xb8,0,0 # mov $?,%[e]ax - jmp 911f - .byte 0x58 # pop %[er]ax - .byte 0xe8 # call Jvds - .long \function\()-.-4 - jmp 912f -911: .byte 0x58 # pop %[er]ax - .byte 0xe8 # call Jvds - .short \function\()-.-2 -912: -.endm - -// Loads far (i.e. <1mb) abs constexpr ADDRESS into ES:DI+EDX+RDX. -// @mode long,legacy,real -.macro movesdi address:req - .byte 0xbf # mov $0x????xxxx,%[e]di - .short \address>>4 - .byte 0x8e,0xc7 # mov %di,%es - .byte 0xbf # mov $0x????xxxx,%[e]di - .short \address&0xf - jmp 297f - .byte 0xbf # mov $0x????xxxx,%edi - .long \address -297: -.endm - -// Loads 16-bit CONSTEXPR into Qw-register w/ optional zero-extend. -// @mode long,legacy,real -.macro bbmov constexpr:req abcd abcd.hi:req abcd.lo:req - .ifnb \abcd - .if (\constexpr)<128 && (\constexpr)>=0 - pushpop \constexpr,\abcd - .exitm - .endif - .endif - movb $(\constexpr)>>8&0xff,\abcd.hi - movb $(\constexpr)&0xff,\abcd.lo -.endm - -// Compares 16-bit CONSTEXPR with Qw-register. -// @mode long,legacy,real -.macro bbcmp constexpr:req abcd.hi:req abcd.lo:req - cmpb $(\constexpr)>>8&0xff,\abcd.hi - jnz 387f - cmpb $(\constexpr)&0xff,\abcd.lo -387: -.endm - -// Adds 16-bit CONSTEXPR to Qw-register. -// @mode long,legacy,real -.macro bbadd constexpr:req abcd.hi:req abcd.lo:req - addb $(\constexpr)&0xff,\abcd.lo - .if (\constexpr) != 0 - adcb $(\constexpr)>>8&0xff,\abcd.hi - .endif -.endm - -// Subtracts 16-bit CONSTEXPR from Qw-register. -// @mode long,legacy,real -.macro bbsub constexpr:req abcd.hi:req abcd.lo:req - subb $(\constexpr)&0xff,\abcd.lo - .if (\constexpr) != 0 - sbbb $(\constexpr)>>8&0xff,\abcd.hi - .endif -.endm - -// Ands Qw-register with 16-bit CONSTEXPR. -// @mode long,legacy,real -.macro bband constexpr:req abcd.hi:req abcd.lo:req - .if ((\constexpr)&0xff) != 0xff || ((\constexpr)>>8&0xff) == 0xff - andb $(\constexpr)&0xff,\abcd.lo - .endif - .if ((\constexpr)>>8&0xff) != 0xff - andb $(\constexpr)>>8&0xff,\abcd.hi - .endif -.endm - -// Ors Qw-register with 16-bit CONSTEXPR. -// @mode long,legacy,real -.macro bbor constexpr:req abcd.hi:req abcd.lo:req - .if ((\constexpr)&0xff) != 0 || ((\constexpr)>>8&0xff) != 0 - orb $(\constexpr)&0xff,\abcd.lo - .endif - .if ((\constexpr)>>8&0xff) != 0 - orb $(\constexpr)>>8&0xff,\abcd.hi - .endif -.endm - -// Performs ACTION only if in real mode. -// @mode long,legacy,real -.macro rlo clobber:req action:vararg -990: mov $0,\clobber - .if .-990b!=3 - .error "bad clobber or assembler mode" - .endif -991: \action - .rept 2-(.-991b) - nop - .endr - .if .-991b!=2 - .error "ACTION must be 1-2 bytes" - .endif -.endm - // Initializes real mode stack. // The most holiest of holy code. // @mode real diff --git a/libc/nexgen32e/kompressor.h b/libc/nexgen32e/kompressor.h index faf9998c3..9380b01e5 100644 --- a/libc/nexgen32e/kompressor.h +++ b/libc/nexgen32e/kompressor.h @@ -10,11 +10,6 @@ #define lz4decode __lz4decode COSMOPOLITAN_C_START_ -#if 0 -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § standard library » compression ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#endif struct RlDecode { uint8_t repititions; diff --git a/libc/nexgen32e/macros.h b/libc/nexgen32e/macros.h deleted file mode 100644 index 97c394f91..000000000 --- a/libc/nexgen32e/macros.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_NEXGEN32E_MACROS_H_ -#define COSMOPOLITAN_LIBC_NEXGEN32E_MACROS_H_ -#ifdef __ASSEMBLER__ -#include "libc/nexgen32e/macros.internal.inc" -#else - -/* let's give auto-import tooling a helping hand */ -#define pbroadcastb pbroadcastb - -#endif /* __ASSEMBLER__ */ -#endif /* COSMOPOLITAN_LIBC_NEXGEN32E_MACROS_H_ */ diff --git a/libc/nexgen32e/macros.internal.inc b/libc/nexgen32e/macros.internal.inc deleted file mode 100644 index 232171747..000000000 --- a/libc/nexgen32e/macros.internal.inc +++ /dev/null @@ -1,89 +0,0 @@ -/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ -│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2020 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/macros.internal.h" -#include "libc/nexgen32e/x86feature.h" - -// Broadcast byte literal to vector, e.g. -// -// # xmm0=0x12121212121212121212121212121212 -// .bcblit $0x12,%al,%eax,%xmm0 -// -// @param reg and regSI need to be the same register - .macro .bcblit lit:req reg:req regSI:req xmm:req - mov \lit,\reg - movd \regSI,\xmm - pbroadcastb \xmm - .endm - -// Broadcast word literal to vector, e.g. -// -// # xmm0=0x01230123012301230123012301230123 -// .bcwlit $0x123,%ax,%eax,%xmm0 -// -// @param reg and regSI need to be the same register - .macro .bcwlit lit:req reg:req regSI:req xmm:req - mov \lit,\reg - movd \regSI,\xmm - pbroadcastw \xmm - .endm - -// Broadcast int16 from register to vector. - .macro .bcwreg regSI:req xmm:req - movd \regSI,\xmm - pbroadcastw \xmm - .endm - -// Sets all bytes in XMM register to first byte, e.g. -// -// mov $0x11,%eax -// movd %eax,%xmm0 -// pbroadcastb %xmm0 -// -// 11000000000000000000000000000000 -// → 11111111111111111111111111111111 -// -// @param xmm can be %xmm0,%xmm1,etc. - .macro pbroadcastb xmm:req -#if X86_NEED(AVX2) - vpbroadcastb \xmm,\xmm -#else - punpcklbw \xmm,\xmm - punpcklwd \xmm,\xmm - pshufd $0,\xmm,\xmm -#endif - .endm - -// Sets all words in XMM register to first word, e.g. -// -// mov $0x1234,%eax -// movd %eax,%xmm0 -// pbroadcastw %xmm0 -// -// 12340000000000000000000000000000 -// → 12341234123412341234123412341234 -// -// @param xmm can be %xmm0,%xmm1,etc. - .macro pbroadcastw xmm:req -#if X86_NEED(AVX2) - vpbroadcastw \xmm,\xmm -#else - punpcklwd \xmm,\xmm - pshufd $0,\xmm,\xmm -#endif - .endm diff --git a/libc/nexgen32e/pcmpstr.inc b/libc/nexgen32e/pcmpstr.inc deleted file mode 100644 index 12a8319cd..000000000 --- a/libc/nexgen32e/pcmpstr.inc +++ /dev/null @@ -1,54 +0,0 @@ -/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ -│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2020 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ - -// Documentation for Intel(R)'s “Most Complicated Instruction”(TM) -// -// mnemonic op1 op2 op3 op4 modif f description, notes -// ═══════════ ════ ════ ════ ═══ ════════ ═════════════════════════════ -// PCMPESTRM XMM0 Vdq Wdq ... o..szapc Explicit Length, Return Mask -// PCMPESTRI rCX Vdq Wdq ... o..szapc Explicit Length, Return Index -// PCMPISTRM XMM0 Vdq Wdq Ib o..szapc Implicit Length, Return Mask -// PCMPISTRI rCX Vdq Wdq Ib o..szapc Implicit Length, Return Index -// -// CF ← Reset if IntRes2 is equal to zero, set otherwise -// ZF ← Set if any byte/word of xmm2/mem128 is null, reset otherwise -// SF ← Set if any byte/word of xmm1 is null, reset otherwise -// OF ← IntRes2[0] -// AF ← Reset -// PF ← Reset -// -// PCMP{E,I}STR{I,M} Control Byte -// @see Intel Manual V.2B §4.1.7 -// -// ┌─0:index of the LEAST significant, set, bit is used -// │ regardless of corresponding input element validity -// │ intres2 is returned in least significant bits of xmm0 -// ├─1:index of the MOST significant, set, bit is used -// │ regardless of corresponding input element validity -// │ each bit of intres2 is expanded to byte/word -// │┌─0:negation of intres1 is for all 16 (8) bits -// │├─1:negation of intres1 is masked by reg/mem validity -// ││┌─intres1 is negated (1’s complement) -// │││┌─mode{equalany,ranges,equaleach,equalordered} -// ││││ ┌─issigned -// ││││ │┌─is16bit -// u│││├┐││ -.Lequalordered = 0b00001100 -.Lequalorder16 = 0b00001101 -.Lequalranges8 = 0b00000100 diff --git a/libc/nexgen32e/tinydivsi.greg.S b/libc/nexgen32e/tinydivsi.greg.S deleted file mode 100644 index b8707f381..000000000 --- a/libc/nexgen32e/tinydivsi.greg.S +++ /dev/null @@ -1,41 +0,0 @@ -/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ -│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2020 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/macros.internal.h" - -// Support code for fast integer division by Si units. -// -// Division by magnums is described in Hacker's Delight and is -// usually generated automatically by compilers, but sadly not -// when we optimize for size and idiv goes at least 10x slower -// so we do this which saves space while avoiding build tuning -// -// @param rdi is number to divide -// @param cl is magnum #1 -// @param rdx is magnum #2 -// @return quotient -tinydivsi: - .leafprologue - mov %rdi,%rax - imul %rdx - mov %rdx,%rax - sar %cl,%rax - sar $63,%rdi - sub %rdi,%rax - .leafepilogue - .endfn tinydivsi,globl diff --git a/libc/nexgen32e/tinywcslen.greg.S b/libc/nexgen32e/tinywcslen.greg.S deleted file mode 100644 index 92d83cea9..000000000 --- a/libc/nexgen32e/tinywcslen.greg.S +++ /dev/null @@ -1,36 +0,0 @@ -/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ -│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2020 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/macros.internal.h" - -// 32-bit strlen that's tiny and near optimal if data's tiny. -// -// @param RDI is wchar_t *s -// @param EAX is unsigned length -// @see libc/nexgen32e/strsak32.S - .ftrace1 -tinywcslen: - .ftrace2 - .leafprologue - xor %eax,%eax -1: cmpl $0,(%rdi,%rax,4) - jz 2f - inc %eax - jmp 1b -2: .leafepilogue - .endfn tinywcslen,globl diff --git a/libc/nexgen32e/tinywcsnlen.greg.S b/libc/nexgen32e/tinywcsnlen.greg.S deleted file mode 100644 index a5102ba09..000000000 --- a/libc/nexgen32e/tinywcsnlen.greg.S +++ /dev/null @@ -1,39 +0,0 @@ -/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ -│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2020 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/macros.internal.h" - -// 32-bit strnlen that's tiny and near optimal if data's tiny. -// -// @param RDI is wchar_t *s -// @param RSI is size_t n -// @param EAX is unsigned length -// @see libc/nexgen32e/strsak32.S - .ftrace1 -tinywcsnlen: - .ftrace2 - .leafprologue - xor %eax,%eax -1: cmp %esi,%eax - jae 2f - cmpl $0,(%rdi,%rax,4) - jz 2f - inc %eax - jmp 1b -2: .leafepilogue - .endfn tinywcsnlen,globl diff --git a/libc/nexgen32e/vidya.internal.h b/libc/nexgen32e/vidya.internal.h deleted file mode 100644 index dfc24b783..000000000 --- a/libc/nexgen32e/vidya.internal.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_NEXGEN32E_VIDYA_H_ -#define COSMOPOLITAN_LIBC_NEXGEN32E_VIDYA_H_ - -#define VIDYA_ROWS 25 -#define VIDYA_COLUMNS 80 -#define VIDYA_SIZE (VIDYA_ROWS * VIDYA_COLUMNS * 2) -#define VIDYA_MODE_MDA 7 -#define VIDYA_MODE_CGA 3 -#define VIDYA_ADDR_MDA 0xb0000 -#define VIDYA_ADDR_CGA 0xb8000 -#define VIDYA_ATTR_NORMAL 0x07 /* cozy default for both mda and cga */ -#define VIDYA_REWIND ~0x7fff /* derived from mode addr min. lzcnt */ -#define VIDYA_SERVICE 0x10 -#define VIDYA_SET_MODE 0x0003 -#define VIDYA_SET_CURSOR 0x0100 -#define VIDYA_SET_CURSOR_NONE 0x2000 -#define VIDYA_SET_BLINKING 0x1003 -#define VIDYA_SET_BLINKING_NONE 0x0000 - - -enum VidyaMode { - kVidyaModeMda = VIDYA_MODE_MDA, - kVidyaModeCga = VIDYA_MODE_CGA -}; - -enum VidyaColor { - kVidyaColorBlack = 0x0, - kVidyaColorBlue = 0x1, - kVidyaColorGreen = 0x2, - kVidyaColorCyan = 0x3, - kVidyaColorRed = 0x4, - kVidyaColorMagenta = 0x5, - kVidyaColorBrown = 0x6, - kVidyaColorLightGray = 0x7, - kVidyaColorDarkGray = 0x8, - kVidyaColorLightBlue = 0x9, - kVidyaColorLightGreen = 0xa, - kVidyaColorLightCyan = 0xb, - kVidyaColorLightRed = 0xc, - kVidyaColorLightMagenta = 0xd, - kVidyaColorYellow = 0xe, - kVidyaColorWhite = 0xf -}; - -struct thatispacked VidyaCell { - unsigned glyph : 8; /* IBM Code Page 437 */ - union VidyaAttr { - enum { - kVidyaAttrBlank = 0x00, - kVidyaAttrNormal = VIDYA_ATTR_NORMAL, - kVidyaAttrMdaFlipped = 0x70, - kVidyaAttrMdaFlippedFaded = 0x78, - kVidyaAttrMdaFlippedIntense = 0xf0, - kVidyaAttrMdaFlippedFadedIntense = 0xf8 - } preset : 8; - struct VidyaTextDecoration { /* MDA Only */ - unsigned underline : 1; - unsigned __ignore1 : 1; - unsigned bold : 1; - unsigned __ignore2 : 3; - unsigned intense : 1; - } decoration; - struct { /* CGA Only */ - enum VidyaColor fg : 4; - enum VidyaColor bg : 4; - } color; - } attr; -}; - -typedef union VidyaAttr VidyaAttr; -typedef struct VidyaCell VidyaCell; -typedef struct VidyaCell VidyaPage[VIDYA_ROWS][VIDYA_COLUMNS]; - -__far VidyaPage *vinit(enum VidyaMode mode); -__far VidyaPage *vcls(__far VidyaCell *pos); -__far VidyaCell *vputc(__far VidyaCell *pos, int c); -__far VidyaCell *vputs(__far VidyaCell *pos, const char *str); -__far VidyaCell *vtput(__far VidyaCell *pos, const void *data, size_t size); -__far VidyaCell *vscroll(__far VidyaCell *pos, size_t bytes); - -#endif /* COSMOPOLITAN_LIBC_NEXGEN32E_VIDYA_H_ */ diff --git a/libc/nexgen32e/x87conf.inc b/libc/nexgen32e/x87conf.inc deleted file mode 100644 index e835197e6..000000000 --- a/libc/nexgen32e/x87conf.inc +++ /dev/null @@ -1,33 +0,0 @@ -/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ -│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2020 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ - -// Reconfigures transcendental math coprocessor. -// -// @param \conf can be absent to restore default -// @clob x87 status and control words only -// @see Intel Manual V.1 §8.1.5 -// @mode long,legacy - .macro x87conf conf=$0x33f - push %ax - pushw \conf - fclex - fldcw (%rsp) - pop %ax - pop %ax - .endm diff --git a/libc/sysv/systemfive.S b/libc/sysv/systemfive.S index 80acce8db..02b237817 100644 --- a/libc/sysv/systemfive.S +++ b/libc/sysv/systemfive.S @@ -20,7 +20,6 @@ #include "libc/dce.h" #include "libc/macros.internal.h" #include "libc/thread/pt.internal.h" -#include "libc/nexgen32e/macros.h" #define SIG_IGN 1