зеркало из https://github.com/mozilla/pjs.git
Use local labels as needed.
This commit is contained in:
Родитель
2598d55c67
Коммит
d6f90439cc
|
@ -1,255 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* A per function stub should look like this (N is the number of incoming arguments)
|
||||
*
|
||||
* functionStub:
|
||||
* push $function
|
||||
* jmp sysInvokeNative##N
|
||||
*/
|
||||
|
||||
#include <md/Asm.h>
|
||||
|
||||
.file "x86LinuxInvokeNative.S"
|
||||
|
||||
#define sysInvokeNative(N); \
|
||||
STATIC_ENTRY(CAT(sysInvokeNative,N)); \
|
||||
popl %eax; /* pop the function adress */ \
|
||||
\
|
||||
pushl %ebp; /************************************/ \
|
||||
movl %esp,%ebp; /* */ \
|
||||
pushl %edi; /* PROLOG */ \
|
||||
pushl %esi; /* */ \
|
||||
pushl %ebx; /************************************/ \
|
||||
\
|
||||
movl $N,%edx; /* %edx = nArgs */ \
|
||||
\
|
||||
SYMBOL_NAME_LABEL(CAT(top,N)); \
|
||||
\
|
||||
leal (16+4*N)(%esp),%ecx; /* %ecx = %esp + 16 + 4 * nArgs */ \
|
||||
pushl (%ecx); /* push original argument */ \
|
||||
decl %edx; /* nArgs -= 1 */ \
|
||||
jne SYMBOL_NAME(CAT(top,N)); /* loop over */ \
|
||||
call *%eax; /* call the native function */ \
|
||||
\
|
||||
movl %ebp,%esp; /********************************** */ \
|
||||
popl %ebp; /* EPILOG */ \
|
||||
ret $(4*N); /************************************/ \
|
||||
END_ENTRY(CAT(sysInvokeNative,N))
|
||||
|
||||
TEXT_SEGMENT
|
||||
|
||||
STATIC_ENTRY(sysInvokeNative0)
|
||||
popl %eax
|
||||
pushl %ebp
|
||||
movl %esp,%ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
call *%eax
|
||||
movl %ebp,%esp
|
||||
popl %ebp
|
||||
ret
|
||||
END_ENTRY(sysInvokeNative0)
|
||||
|
||||
STATIC_ENTRY(sysInvokeNative1)
|
||||
popl %eax
|
||||
pushl %ebp
|
||||
movl %esp,%ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
movl 20(%esp),%ecx
|
||||
pushl %ecx
|
||||
call *%eax
|
||||
movl %ebp,%esp
|
||||
popl %ebp
|
||||
ret $4
|
||||
END_ENTRY(sysInvokeNative1)
|
||||
|
||||
STATIC_ENTRY(sysInvokeNative2)
|
||||
popl %eax
|
||||
pushl %ebp
|
||||
movl %esp,%ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
movl 24(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 24(%esp),%ecx
|
||||
pushl %ecx
|
||||
call *%eax
|
||||
movl %ebp,%esp
|
||||
popl %ebp
|
||||
ret $8
|
||||
END_ENTRY(sysInvokeNative2)
|
||||
|
||||
STATIC_ENTRY(sysInvokeNative3)
|
||||
popl %eax
|
||||
pushl %ebp
|
||||
movl %esp,%ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
movl 28(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 28(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 28(%esp),%ecx
|
||||
pushl %ecx
|
||||
call *%eax
|
||||
movl %ebp,%esp
|
||||
popl %ebp
|
||||
ret $12
|
||||
END_ENTRY(sysInvokeNative3)
|
||||
|
||||
STATIC_ENTRY(sysInvokeNative4)
|
||||
popl %eax
|
||||
pushl %ebp
|
||||
movl %esp,%ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
movl 32(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 32(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 32(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 32(%esp),%ecx
|
||||
pushl %ecx
|
||||
call *%eax
|
||||
movl %ebp,%esp
|
||||
popl %ebp
|
||||
ret $16
|
||||
END_ENTRY(sysInvokeNative4)
|
||||
|
||||
STATIC_ENTRY(sysInvokeNative5)
|
||||
popl %eax
|
||||
pushl %ebp
|
||||
movl %esp,%ebp
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
movl 36(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 36(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 36(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 36(%esp),%ecx
|
||||
pushl %ecx
|
||||
movl 36(%esp),%ecx
|
||||
pushl %ecx
|
||||
call *%eax
|
||||
movl %ebp,%esp
|
||||
popl %ebp
|
||||
ret $20
|
||||
END_ENTRY(sysInvokeNative5)
|
||||
|
||||
sysInvokeNative(6); sysInvokeNative(7); sysInvokeNative(8); sysInvokeNative(9); sysInvokeNative(10);
|
||||
sysInvokeNative(11); sysInvokeNative(12); sysInvokeNative(13); sysInvokeNative(14); sysInvokeNative(15);
|
||||
sysInvokeNative(16); sysInvokeNative(17); sysInvokeNative(18); sysInvokeNative(19); sysInvokeNative(20);
|
||||
sysInvokeNative(21); sysInvokeNative(22); sysInvokeNative(23); sysInvokeNative(24); sysInvokeNative(25);
|
||||
sysInvokeNative(26); sysInvokeNative(27); sysInvokeNative(28); sysInvokeNative(29); sysInvokeNative(30);
|
||||
sysInvokeNative(31); sysInvokeNative(32); sysInvokeNative(33); sysInvokeNative(34); sysInvokeNative(35);
|
||||
sysInvokeNative(36); sysInvokeNative(37); sysInvokeNative(38); sysInvokeNative(39); sysInvokeNative(40);
|
||||
sysInvokeNative(41); sysInvokeNative(42); sysInvokeNative(43); sysInvokeNative(44); sysInvokeNative(45);
|
||||
sysInvokeNative(46); sysInvokeNative(47); sysInvokeNative(48); sysInvokeNative(49); sysInvokeNative(50);
|
||||
sysInvokeNative(51); sysInvokeNative(52); sysInvokeNative(53); sysInvokeNative(54); sysInvokeNative(55);
|
||||
sysInvokeNative(56); sysInvokeNative(57); sysInvokeNative(58); sysInvokeNative(59); sysInvokeNative(60);
|
||||
sysInvokeNative(61); sysInvokeNative(62); sysInvokeNative(63); sysInvokeNative(64); sysInvokeNative(65);
|
||||
sysInvokeNative(66); sysInvokeNative(67); sysInvokeNative(68); sysInvokeNative(69); sysInvokeNative(70);
|
||||
sysInvokeNative(71); sysInvokeNative(72); sysInvokeNative(73); sysInvokeNative(74); sysInvokeNative(75);
|
||||
sysInvokeNative(76); sysInvokeNative(77); sysInvokeNative(78); sysInvokeNative(79); sysInvokeNative(80);
|
||||
sysInvokeNative(81); sysInvokeNative(82); sysInvokeNative(83); sysInvokeNative(84); sysInvokeNative(85);
|
||||
sysInvokeNative(86); sysInvokeNative(87); sysInvokeNative(88); sysInvokeNative(89); sysInvokeNative(90);
|
||||
sysInvokeNative(91); sysInvokeNative(92); sysInvokeNative(93); sysInvokeNative(94); sysInvokeNative(95);
|
||||
sysInvokeNative(96); sysInvokeNative(97); sysInvokeNative(98); sysInvokeNative(99); sysInvokeNative(100);
|
||||
sysInvokeNative(101); sysInvokeNative(102); sysInvokeNative(103); sysInvokeNative(104); sysInvokeNative(105);
|
||||
sysInvokeNative(106); sysInvokeNative(107); sysInvokeNative(108); sysInvokeNative(109); sysInvokeNative(110);
|
||||
sysInvokeNative(111); sysInvokeNative(112); sysInvokeNative(113); sysInvokeNative(114); sysInvokeNative(115);
|
||||
sysInvokeNative(116); sysInvokeNative(117); sysInvokeNative(118); sysInvokeNative(119); sysInvokeNative(120);
|
||||
sysInvokeNative(121); sysInvokeNative(122); sysInvokeNative(123); sysInvokeNative(124); sysInvokeNative(125);
|
||||
sysInvokeNative(126); sysInvokeNative(127); sysInvokeNative(128); sysInvokeNative(129); sysInvokeNative(130);
|
||||
sysInvokeNative(131); sysInvokeNative(132); sysInvokeNative(133); sysInvokeNative(134); sysInvokeNative(135);
|
||||
sysInvokeNative(136); sysInvokeNative(137); sysInvokeNative(138); sysInvokeNative(139); sysInvokeNative(140);
|
||||
sysInvokeNative(141); sysInvokeNative(142); sysInvokeNative(143); sysInvokeNative(144); sysInvokeNative(145);
|
||||
sysInvokeNative(146); sysInvokeNative(147); sysInvokeNative(148); sysInvokeNative(149); sysInvokeNative(150);
|
||||
sysInvokeNative(151); sysInvokeNative(152); sysInvokeNative(153); sysInvokeNative(154); sysInvokeNative(155);
|
||||
sysInvokeNative(156); sysInvokeNative(157); sysInvokeNative(158); sysInvokeNative(159); sysInvokeNative(160);
|
||||
sysInvokeNative(161); sysInvokeNative(162); sysInvokeNative(163); sysInvokeNative(164); sysInvokeNative(165);
|
||||
sysInvokeNative(166); sysInvokeNative(167); sysInvokeNative(168); sysInvokeNative(169); sysInvokeNative(170);
|
||||
sysInvokeNative(171); sysInvokeNative(172); sysInvokeNative(173); sysInvokeNative(174); sysInvokeNative(175);
|
||||
sysInvokeNative(176); sysInvokeNative(177); sysInvokeNative(178); sysInvokeNative(179); sysInvokeNative(180);
|
||||
sysInvokeNative(181); sysInvokeNative(182); sysInvokeNative(183); sysInvokeNative(184); sysInvokeNative(185);
|
||||
sysInvokeNative(186); sysInvokeNative(187); sysInvokeNative(188); sysInvokeNative(189); sysInvokeNative(190);
|
||||
sysInvokeNative(191); sysInvokeNative(192); sysInvokeNative(193); sysInvokeNative(194); sysInvokeNative(195);
|
||||
sysInvokeNative(196); sysInvokeNative(197); sysInvokeNative(198); sysInvokeNative(199); sysInvokeNative(200);
|
||||
sysInvokeNative(201); sysInvokeNative(202); sysInvokeNative(203); sysInvokeNative(204); sysInvokeNative(205);
|
||||
sysInvokeNative(206); sysInvokeNative(207); sysInvokeNative(208); sysInvokeNative(209); sysInvokeNative(210);
|
||||
sysInvokeNative(211); sysInvokeNative(212); sysInvokeNative(213); sysInvokeNative(214); sysInvokeNative(215);
|
||||
sysInvokeNative(216); sysInvokeNative(217); sysInvokeNative(218); sysInvokeNative(219); sysInvokeNative(220);
|
||||
sysInvokeNative(221); sysInvokeNative(222); sysInvokeNative(223); sysInvokeNative(224); sysInvokeNative(225);
|
||||
sysInvokeNative(226); sysInvokeNative(227); sysInvokeNative(228); sysInvokeNative(229); sysInvokeNative(230);
|
||||
sysInvokeNative(231); sysInvokeNative(232); sysInvokeNative(233); sysInvokeNative(234); sysInvokeNative(235);
|
||||
sysInvokeNative(236); sysInvokeNative(237); sysInvokeNative(238); sysInvokeNative(239); sysInvokeNative(240);
|
||||
sysInvokeNative(241); sysInvokeNative(242); sysInvokeNative(243); sysInvokeNative(244); sysInvokeNative(245);
|
||||
sysInvokeNative(246); sysInvokeNative(247); sysInvokeNative(248); sysInvokeNative(249); sysInvokeNative(250);
|
||||
sysInvokeNative(251); sysInvokeNative(252); sysInvokeNative(253); sysInvokeNative(254); sysInvokeNative(255);
|
||||
|
||||
DATA_SEGMENT
|
||||
|
||||
#define STUB(N) .long SYMBOL_NAME(CAT(sysInvokeNative,N))
|
||||
|
||||
GLOBAL_ENTRY(sysInvokeNativeStubs)
|
||||
STUB(0); STUB(1); STUB(2); STUB(3); STUB(4); STUB(5); STUB(6); STUB(7);
|
||||
STUB(8); STUB(9); STUB(10); STUB(11); STUB(12); STUB(13); STUB(14); STUB(15);
|
||||
STUB(16); STUB(17); STUB(18); STUB(19); STUB(20); STUB(21); STUB(22); STUB(23);
|
||||
STUB(24); STUB(25); STUB(26); STUB(27); STUB(28); STUB(29); STUB(30); STUB(31);
|
||||
STUB(32); STUB(33); STUB(34); STUB(35); STUB(36); STUB(37); STUB(38); STUB(39);
|
||||
STUB(40); STUB(41); STUB(42); STUB(43); STUB(44); STUB(45); STUB(46); STUB(47);
|
||||
STUB(48); STUB(49); STUB(50); STUB(51); STUB(52); STUB(53); STUB(54); STUB(55);
|
||||
STUB(56); STUB(57); STUB(58); STUB(59); STUB(60); STUB(61); STUB(62); STUB(63);
|
||||
STUB(64); STUB(65); STUB(66); STUB(67); STUB(68); STUB(69); STUB(70); STUB(71);
|
||||
STUB(72); STUB(73); STUB(74); STUB(75); STUB(76); STUB(77); STUB(78); STUB(79);
|
||||
STUB(80); STUB(81); STUB(82); STUB(83); STUB(84); STUB(85); STUB(86); STUB(87);
|
||||
STUB(88); STUB(89); STUB(90); STUB(91); STUB(92); STUB(93); STUB(94); STUB(95);
|
||||
STUB(96); STUB(97); STUB(98); STUB(99); STUB(100); STUB(101); STUB(102); STUB(103);
|
||||
STUB(104); STUB(105); STUB(106); STUB(107); STUB(108); STUB(109); STUB(110); STUB(111);
|
||||
STUB(112); STUB(113); STUB(114); STUB(115); STUB(116); STUB(117); STUB(118); STUB(119);
|
||||
STUB(120); STUB(121); STUB(122); STUB(123); STUB(124); STUB(125); STUB(126); STUB(127);
|
||||
STUB(128); STUB(129); STUB(130); STUB(131); STUB(132); STUB(133); STUB(134); STUB(135);
|
||||
STUB(136); STUB(137); STUB(138); STUB(139); STUB(140); STUB(141); STUB(142); STUB(143);
|
||||
STUB(144); STUB(145); STUB(146); STUB(147); STUB(148); STUB(149); STUB(150); STUB(151);
|
||||
STUB(152); STUB(153); STUB(154); STUB(155); STUB(156); STUB(157); STUB(158); STUB(159);
|
||||
STUB(160); STUB(161); STUB(162); STUB(163); STUB(164); STUB(165); STUB(166); STUB(167);
|
||||
STUB(168); STUB(169); STUB(170); STUB(171); STUB(172); STUB(173); STUB(174); STUB(175);
|
||||
STUB(176); STUB(177); STUB(178); STUB(179); STUB(180); STUB(181); STUB(182); STUB(183);
|
||||
STUB(184); STUB(185); STUB(186); STUB(187); STUB(188); STUB(189); STUB(190); STUB(191);
|
||||
STUB(192); STUB(193); STUB(194); STUB(195); STUB(196); STUB(197); STUB(198); STUB(199);
|
||||
STUB(200); STUB(201); STUB(202); STUB(203); STUB(204); STUB(205); STUB(206); STUB(207);
|
||||
STUB(208); STUB(209); STUB(210); STUB(211); STUB(212); STUB(213); STUB(214); STUB(215);
|
||||
STUB(216); STUB(217); STUB(218); STUB(219); STUB(220); STUB(221); STUB(222); STUB(223);
|
||||
STUB(224); STUB(225); STUB(226); STUB(227); STUB(228); STUB(229); STUB(230); STUB(231);
|
||||
STUB(232); STUB(233); STUB(234); STUB(235); STUB(236); STUB(237); STUB(238); STUB(239);
|
||||
STUB(240); STUB(241); STUB(242); STUB(243); STUB(244); STUB(245); STUB(246); STUB(247);
|
||||
STUB(248); STUB(249); STUB(250); STUB(251); STUB(252); STUB(253); STUB(254); STUB(255);
|
||||
.size sysInvokeNativeStubs,1024
|
Загрузка…
Ссылка в новой задаче