summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bn
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/bn')
-rw-r--r--src/lib/libcrypto/bn/asm/modexp512-x86_64.pl109
-rwxr-xr-xsrc/lib/libcrypto/bn/asm/x86_64-mont.pl177
2 files changed, 0 insertions, 286 deletions
diff --git a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl
index bfd6e97541..4317282835 100644
--- a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl
+++ b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl
@@ -61,8 +61,6 @@ $flavour = shift;
61$output = shift; 61$output = shift;
62if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } 62if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
63 63
64my $win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
65
66$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; 64$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
67( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or 65( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
68( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or 66( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -1374,113 +1372,6 @@ end_main_loop_a3b:
1374.size mod_exp_512, . - mod_exp_512 1372.size mod_exp_512, . - mod_exp_512
1375___ 1373___
1376 1374
1377if ($win64) {
1378# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
1379# CONTEXT *context,DISPATCHER_CONTEXT *disp)
1380my $rec="%rcx";
1381my $frame="%rdx";
1382my $context="%r8";
1383my $disp="%r9";
1384
1385$code.=<<___;
1386.extern __imp_RtlVirtualUnwind
1387.type mod_exp_512_se_handler,\@abi-omnipotent
1388.align 16
1389mod_exp_512_se_handler:
1390 push %rsi
1391 push %rdi
1392 push %rbx
1393 push %rbp
1394 push %r12
1395 push %r13
1396 push %r14
1397 push %r15
1398 pushfq
1399 sub \$64,%rsp
1400
1401 mov 120($context),%rax # pull context->Rax
1402 mov 248($context),%rbx # pull context->Rip
1403
1404 lea .Lbody(%rip),%r10
1405 cmp %r10,%rbx # context->Rip<prologue label
1406 jb .Lin_prologue
1407
1408 mov 152($context),%rax # pull context->Rsp
1409
1410 lea .Lepilogue(%rip),%r10
1411 cmp %r10,%rbx # context->Rip>=epilogue label
1412 jae .Lin_prologue
1413
1414 mov $rsp_offset(%rax),%rax # pull saved Rsp
1415
1416 mov 32(%rax),%rbx
1417 mov 40(%rax),%rbp
1418 mov 24(%rax),%r12
1419 mov 16(%rax),%r13
1420 mov 8(%rax),%r14
1421 mov 0(%rax),%r15
1422 lea 48(%rax),%rax
1423 mov %rbx,144($context) # restore context->Rbx
1424 mov %rbp,160($context) # restore context->Rbp
1425 mov %r12,216($context) # restore context->R12
1426 mov %r13,224($context) # restore context->R13
1427 mov %r14,232($context) # restore context->R14
1428 mov %r15,240($context) # restore context->R15
1429
1430.Lin_prologue:
1431 mov 8(%rax),%rdi
1432 mov 16(%rax),%rsi
1433 mov %rax,152($context) # restore context->Rsp
1434 mov %rsi,168($context) # restore context->Rsi
1435 mov %rdi,176($context) # restore context->Rdi
1436
1437 mov 40($disp),%rdi # disp->ContextRecord
1438 mov $context,%rsi # context
1439 mov \$154,%ecx # sizeof(CONTEXT)
1440 .long 0xa548f3fc # cld; rep movsq
1441
1442 mov $disp,%rsi
1443 xor %rcx,%rcx # arg1, UNW_FLAG_NHANDLER
1444 mov 8(%rsi),%rdx # arg2, disp->ImageBase
1445 mov 0(%rsi),%r8 # arg3, disp->ControlPc
1446 mov 16(%rsi),%r9 # arg4, disp->FunctionEntry
1447 mov 40(%rsi),%r10 # disp->ContextRecord
1448 lea 56(%rsi),%r11 # &disp->HandlerData
1449 lea 24(%rsi),%r12 # &disp->EstablisherFrame
1450 mov %r10,32(%rsp) # arg5
1451 mov %r11,40(%rsp) # arg6
1452 mov %r12,48(%rsp) # arg7
1453 mov %rcx,56(%rsp) # arg8, (NULL)
1454 call *__imp_RtlVirtualUnwind(%rip)
1455
1456 mov \$1,%eax # ExceptionContinueSearch
1457 add \$64,%rsp
1458 popfq
1459 pop %r15
1460 pop %r14
1461 pop %r13
1462 pop %r12
1463 pop %rbp
1464 pop %rbx
1465 pop %rdi
1466 pop %rsi
1467 ret
1468.size mod_exp_512_se_handler,.-mod_exp_512_se_handler
1469
1470.section .pdata
1471.align 4
1472 .rva .LSEH_begin_mod_exp_512
1473 .rva .LSEH_end_mod_exp_512
1474 .rva .LSEH_info_mod_exp_512
1475
1476.section .xdata
1477.align 8
1478.LSEH_info_mod_exp_512:
1479 .byte 9,0,0,0
1480 .rva mod_exp_512_se_handler
1481___
1482}
1483
1484sub reg_part { 1375sub reg_part {
1485my ($reg,$conv)=@_; 1376my ($reg,$conv)=@_;
1486 if ($reg =~ /%r[0-9]+/) { $reg .= $conv; } 1377 if ($reg =~ /%r[0-9]+/) { $reg .= $conv; }
diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont.pl b/src/lib/libcrypto/bn/asm/x86_64-mont.pl
index 17fb94c84c..90c717f115 100755
--- a/src/lib/libcrypto/bn/asm/x86_64-mont.pl
+++ b/src/lib/libcrypto/bn/asm/x86_64-mont.pl
@@ -33,8 +33,6 @@ $flavour = shift;
33$output = shift; 33$output = shift;
34if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } 34if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
35 35
36$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
37
38$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; 36$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
39( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or 37( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
40( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or 38( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -1502,180 +1500,5 @@ $code.=<<___;
1502.align 16 1500.align 16
1503___ 1501___
1504 1502
1505# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
1506# CONTEXT *context,DISPATCHER_CONTEXT *disp)
1507if ($win64) {
1508$rec="%rcx";
1509$frame="%rdx";
1510$context="%r8";
1511$disp="%r9";
1512
1513$code.=<<___;
1514.extern __imp_RtlVirtualUnwind
1515.type mul_handler,\@abi-omnipotent
1516.align 16
1517mul_handler:
1518 push %rsi
1519 push %rdi
1520 push %rbx
1521 push %rbp
1522 push %r12
1523 push %r13
1524 push %r14
1525 push %r15
1526 pushfq
1527 sub \$64,%rsp
1528
1529 mov 120($context),%rax # pull context->Rax
1530 mov 248($context),%rbx # pull context->Rip
1531
1532 mov 8($disp),%rsi # disp->ImageBase
1533 mov 56($disp),%r11 # disp->HandlerData
1534
1535 mov 0(%r11),%r10d # HandlerData[0]
1536 lea (%rsi,%r10),%r10 # end of prologue label
1537 cmp %r10,%rbx # context->Rip<end of prologue label
1538 jb .Lcommon_seh_tail
1539
1540 mov 152($context),%rax # pull context->Rsp
1541
1542 mov 4(%r11),%r10d # HandlerData[1]
1543 lea (%rsi,%r10),%r10 # epilogue label
1544 cmp %r10,%rbx # context->Rip>=epilogue label
1545 jae .Lcommon_seh_tail
1546
1547 mov 192($context),%r10 # pull $num
1548 mov 8(%rax,%r10,8),%rax # pull saved stack pointer
1549 lea 48(%rax),%rax
1550
1551 mov -8(%rax),%rbx
1552 mov -16(%rax),%rbp
1553 mov -24(%rax),%r12
1554 mov -32(%rax),%r13
1555 mov -40(%rax),%r14
1556 mov -48(%rax),%r15
1557 mov %rbx,144($context) # restore context->Rbx
1558 mov %rbp,160($context) # restore context->Rbp
1559 mov %r12,216($context) # restore context->R12
1560 mov %r13,224($context) # restore context->R13
1561 mov %r14,232($context) # restore context->R14
1562 mov %r15,240($context) # restore context->R15
1563
1564 jmp .Lcommon_seh_tail
1565.size mul_handler,.-mul_handler
1566
1567.type sqr_handler,\@abi-omnipotent
1568.align 16
1569sqr_handler:
1570 push %rsi
1571 push %rdi
1572 push %rbx
1573 push %rbp
1574 push %r12
1575 push %r13
1576 push %r14
1577 push %r15
1578 pushfq
1579 sub \$64,%rsp
1580
1581 mov 120($context),%rax # pull context->Rax
1582 mov 248($context),%rbx # pull context->Rip
1583
1584 lea .Lsqr4x_body(%rip),%r10
1585 cmp %r10,%rbx # context->Rip<.Lsqr_body
1586 jb .Lcommon_seh_tail
1587
1588 mov 152($context),%rax # pull context->Rsp
1589
1590 lea .Lsqr4x_epilogue(%rip),%r10
1591 cmp %r10,%rbx # context->Rip>=.Lsqr_epilogue
1592 jae .Lcommon_seh_tail
1593
1594 mov 56(%rax),%rax # pull saved stack pointer
1595 lea 48(%rax),%rax
1596
1597 mov -8(%rax),%rbx
1598 mov -16(%rax),%rbp
1599 mov -24(%rax),%r12
1600 mov -32(%rax),%r13
1601 mov -40(%rax),%r14
1602 mov -48(%rax),%r15
1603 mov %rbx,144($context) # restore context->Rbx
1604 mov %rbp,160($context) # restore context->Rbp
1605 mov %r12,216($context) # restore context->R12
1606 mov %r13,224($context) # restore context->R13
1607 mov %r14,232($context) # restore context->R14
1608 mov %r15,240($context) # restore context->R15
1609
1610.Lcommon_seh_tail:
1611 mov 8(%rax),%rdi
1612 mov 16(%rax),%rsi
1613 mov %rax,152($context) # restore context->Rsp
1614 mov %rsi,168($context) # restore context->Rsi
1615 mov %rdi,176($context) # restore context->Rdi
1616
1617 mov 40($disp),%rdi # disp->ContextRecord
1618 mov $context,%rsi # context
1619 mov \$154,%ecx # sizeof(CONTEXT)
1620 .long 0xa548f3fc # cld; rep movsq
1621
1622 mov $disp,%rsi
1623 xor %rcx,%rcx # arg1, UNW_FLAG_NHANDLER
1624 mov 8(%rsi),%rdx # arg2, disp->ImageBase
1625 mov 0(%rsi),%r8 # arg3, disp->ControlPc
1626 mov 16(%rsi),%r9 # arg4, disp->FunctionEntry
1627 mov 40(%rsi),%r10 # disp->ContextRecord
1628 lea 56(%rsi),%r11 # &disp->HandlerData
1629 lea 24(%rsi),%r12 # &disp->EstablisherFrame
1630 mov %r10,32(%rsp) # arg5
1631 mov %r11,40(%rsp) # arg6
1632 mov %r12,48(%rsp) # arg7
1633 mov %rcx,56(%rsp) # arg8, (NULL)
1634 call *__imp_RtlVirtualUnwind(%rip)
1635
1636 mov \$1,%eax # ExceptionContinueSearch
1637 add \$64,%rsp
1638 popfq
1639 pop %r15
1640 pop %r14
1641 pop %r13
1642 pop %r12
1643 pop %rbp
1644 pop %rbx
1645 pop %rdi
1646 pop %rsi
1647 ret
1648.size sqr_handler,.-sqr_handler
1649
1650.section .pdata
1651.align 4
1652 .rva .LSEH_begin_bn_mul_mont
1653 .rva .LSEH_end_bn_mul_mont
1654 .rva .LSEH_info_bn_mul_mont
1655
1656 .rva .LSEH_begin_bn_mul4x_mont
1657 .rva .LSEH_end_bn_mul4x_mont
1658 .rva .LSEH_info_bn_mul4x_mont
1659
1660 .rva .LSEH_begin_bn_sqr4x_mont
1661 .rva .LSEH_end_bn_sqr4x_mont
1662 .rva .LSEH_info_bn_sqr4x_mont
1663
1664.section .xdata
1665.align 8
1666.LSEH_info_bn_mul_mont:
1667 .byte 9,0,0,0
1668 .rva mul_handler
1669 .rva .Lmul_body,.Lmul_epilogue # HandlerData[]
1670.LSEH_info_bn_mul4x_mont:
1671 .byte 9,0,0,0
1672 .rva mul_handler
1673 .rva .Lmul4x_body,.Lmul4x_epilogue # HandlerData[]
1674.LSEH_info_bn_sqr4x_mont:
1675 .byte 9,0,0,0
1676 .rva sqr_handler
1677___
1678}
1679
1680print $code; 1503print $code;
1681close STDOUT; 1504close STDOUT;