Clean this up a bit, and use the trap gate to enter the kernel.
This commit is contained in:
parent
87ce99227c
commit
c1a45e7763
|
@ -27,7 +27,7 @@
|
|||
* (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: mdprologue.S,v 1.4 1994/08/03 15:57:58 pk Exp $
|
||||
* $Id: mdprologue.S,v 1.5 1994/10/26 19:41:13 mycroft Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -35,7 +35,6 @@
|
|||
*/
|
||||
|
||||
#include <sys/syscall.h>
|
||||
#define LCALL(x,y) .byte 0x9a ; .long y; .word x
|
||||
|
||||
.text
|
||||
.globl _binder, _binder_entry
|
||||
|
@ -48,6 +47,7 @@ _rtl: # crt0 calls us here
|
|||
pushl %ebp # Allocate stack frame
|
||||
movl %esp,%ebp
|
||||
pushl %ebx
|
||||
|
||||
call 1f # PIC function prologue
|
||||
1:
|
||||
popl %ebx
|
||||
|
@ -65,8 +65,8 @@ _rtl: # crt0 calls us here
|
|||
call %eax # _rtld(version, crtp, DYNAMIC)
|
||||
addl $12,%esp # pop arguments
|
||||
|
||||
movl -4(%ebp), %ebx # restore %ebx
|
||||
leave # remove stack frame,
|
||||
popl %ebx
|
||||
leave # remove stack frame
|
||||
ret # let's rock
|
||||
|
||||
# First call to a procedure generally comes through here for
|
||||
|
@ -77,7 +77,7 @@ _binder_entry:
|
|||
movl %esp,%ebp
|
||||
pusha # save all regs
|
||||
|
||||
movl $0, %eax # clear
|
||||
xorl %eax,%eax # clear
|
||||
movl 4(%ebp),%esi # return address in PLT
|
||||
movw (%esi),%ax # get hold of relocation number
|
||||
subl $6,%esi # make it point to the jmpslot
|
||||
|
@ -98,8 +98,8 @@ _binder_entry:
|
|||
|
||||
.globl _getreuid, _getregid
|
||||
_getreuid:
|
||||
lea SYS_getuid, %eax
|
||||
LCALL(7,0)
|
||||
movl $SYS_getuid,%eax
|
||||
int $0x80
|
||||
jc out
|
||||
movl 4(%esp),%ecx # get 1st arg
|
||||
movl %eax,(%ecx) # put value in it
|
||||
|
@ -108,8 +108,8 @@ _getreuid:
|
|||
ret # done
|
||||
|
||||
_getregid:
|
||||
lea SYS_getgid, %eax
|
||||
LCALL(7,0)
|
||||
movl $SYS_getgid,%eax
|
||||
int $0x80
|
||||
jc out
|
||||
movl 4(%esp),%ecx # get 1st arg
|
||||
movl %eax,(%ecx) # put value in it
|
||||
|
@ -118,4 +118,3 @@ _getregid:
|
|||
ret # done
|
||||
|
||||
out: jmp cerror@PLT # Call common error routine
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
* (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: mdprologue.S,v 1.4 1994/08/03 15:57:58 pk Exp $
|
||||
* $Id: mdprologue.S,v 1.5 1994/10/26 19:41:13 mycroft Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -35,7 +35,6 @@
|
|||
*/
|
||||
|
||||
#include <sys/syscall.h>
|
||||
#define LCALL(x,y) .byte 0x9a ; .long y; .word x
|
||||
|
||||
.text
|
||||
.globl _binder, _binder_entry
|
||||
|
@ -48,6 +47,7 @@ _rtl: # crt0 calls us here
|
|||
pushl %ebp # Allocate stack frame
|
||||
movl %esp,%ebp
|
||||
pushl %ebx
|
||||
|
||||
call 1f # PIC function prologue
|
||||
1:
|
||||
popl %ebx
|
||||
|
@ -65,8 +65,8 @@ _rtl: # crt0 calls us here
|
|||
call %eax # _rtld(version, crtp, DYNAMIC)
|
||||
addl $12,%esp # pop arguments
|
||||
|
||||
movl -4(%ebp), %ebx # restore %ebx
|
||||
leave # remove stack frame,
|
||||
popl %ebx
|
||||
leave # remove stack frame
|
||||
ret # let's rock
|
||||
|
||||
# First call to a procedure generally comes through here for
|
||||
|
@ -77,7 +77,7 @@ _binder_entry:
|
|||
movl %esp,%ebp
|
||||
pusha # save all regs
|
||||
|
||||
movl $0, %eax # clear
|
||||
xorl %eax,%eax # clear
|
||||
movl 4(%ebp),%esi # return address in PLT
|
||||
movw (%esi),%ax # get hold of relocation number
|
||||
subl $6,%esi # make it point to the jmpslot
|
||||
|
@ -98,8 +98,8 @@ _binder_entry:
|
|||
|
||||
.globl _getreuid, _getregid
|
||||
_getreuid:
|
||||
lea SYS_getuid, %eax
|
||||
LCALL(7,0)
|
||||
movl $SYS_getuid,%eax
|
||||
int $0x80
|
||||
jc out
|
||||
movl 4(%esp),%ecx # get 1st arg
|
||||
movl %eax,(%ecx) # put value in it
|
||||
|
@ -108,8 +108,8 @@ _getreuid:
|
|||
ret # done
|
||||
|
||||
_getregid:
|
||||
lea SYS_getgid, %eax
|
||||
LCALL(7,0)
|
||||
movl $SYS_getgid,%eax
|
||||
int $0x80
|
||||
jc out
|
||||
movl 4(%esp),%ecx # get 1st arg
|
||||
movl %eax,(%ecx) # put value in it
|
||||
|
@ -118,4 +118,3 @@ _getregid:
|
|||
ret # done
|
||||
|
||||
out: jmp cerror@PLT # Call common error routine
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
* (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: mdprologue.S,v 1.4 1994/08/03 15:57:58 pk Exp $
|
||||
* $Id: mdprologue.S,v 1.5 1994/10/26 19:41:13 mycroft Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -35,7 +35,6 @@
|
|||
*/
|
||||
|
||||
#include <sys/syscall.h>
|
||||
#define LCALL(x,y) .byte 0x9a ; .long y; .word x
|
||||
|
||||
.text
|
||||
.globl _binder, _binder_entry
|
||||
|
@ -48,6 +47,7 @@ _rtl: # crt0 calls us here
|
|||
pushl %ebp # Allocate stack frame
|
||||
movl %esp,%ebp
|
||||
pushl %ebx
|
||||
|
||||
call 1f # PIC function prologue
|
||||
1:
|
||||
popl %ebx
|
||||
|
@ -65,8 +65,8 @@ _rtl: # crt0 calls us here
|
|||
call %eax # _rtld(version, crtp, DYNAMIC)
|
||||
addl $12,%esp # pop arguments
|
||||
|
||||
movl -4(%ebp), %ebx # restore %ebx
|
||||
leave # remove stack frame,
|
||||
popl %ebx
|
||||
leave # remove stack frame
|
||||
ret # let's rock
|
||||
|
||||
# First call to a procedure generally comes through here for
|
||||
|
@ -77,7 +77,7 @@ _binder_entry:
|
|||
movl %esp,%ebp
|
||||
pusha # save all regs
|
||||
|
||||
movl $0, %eax # clear
|
||||
xorl %eax,%eax # clear
|
||||
movl 4(%ebp),%esi # return address in PLT
|
||||
movw (%esi),%ax # get hold of relocation number
|
||||
subl $6,%esi # make it point to the jmpslot
|
||||
|
@ -98,8 +98,8 @@ _binder_entry:
|
|||
|
||||
.globl _getreuid, _getregid
|
||||
_getreuid:
|
||||
lea SYS_getuid, %eax
|
||||
LCALL(7,0)
|
||||
movl $SYS_getuid,%eax
|
||||
int $0x80
|
||||
jc out
|
||||
movl 4(%esp),%ecx # get 1st arg
|
||||
movl %eax,(%ecx) # put value in it
|
||||
|
@ -108,8 +108,8 @@ _getreuid:
|
|||
ret # done
|
||||
|
||||
_getregid:
|
||||
lea SYS_getgid, %eax
|
||||
LCALL(7,0)
|
||||
movl $SYS_getgid,%eax
|
||||
int $0x80
|
||||
jc out
|
||||
movl 4(%esp),%ecx # get 1st arg
|
||||
movl %eax,(%ecx) # put value in it
|
||||
|
@ -118,4 +118,3 @@ _getregid:
|
|||
ret # done
|
||||
|
||||
out: jmp cerror@PLT # Call common error routine
|
||||
|
||||
|
|
Loading…
Reference in New Issue