Unwind the syscall_with_err_pushed tweak that jake did some time back.

OK'ed by:	jake
This commit is contained in:
peter 2002-07-28 00:27:51 +00:00
parent f1f241d7d0
commit f34d68bd30
5 changed files with 48 additions and 8 deletions

View File

@ -226,7 +226,9 @@ db_nextframe(fp, ip, p)
} else if (!strncmp(name, "Xintr", 5) ||
!strncmp(name, "Xfastintr", 9)) {
frame_type = INTERRUPT;
} else if (!strcmp(name, "syscall_with_err_pushed")) {
} else if (!strcmp(name, "Xlcall_syscall")) {
frame_type = SYSCALL;
} else if (!strcmp(name, "Xint0x80_syscall")) {
frame_type = SYSCALL;
}
}

View File

@ -191,7 +191,20 @@ IDTVEC(lcall_syscall)
pushfl /* save eflags */
popl 8(%esp) /* shuffle into tf_eflags */
pushl $7 /* sizeof "lcall 7,0" */
jmp syscall_with_err_pushed
subl $4,%esp /* skip over tf_trapno */
pushal
pushl %ds
pushl %es
pushl %fs
mov $KDSEL,%ax /* switch to kernel segments */
mov %ax,%ds
mov %ax,%es
mov $KPSEL,%ax
mov %ax,%fs
FAKE_MCOUNT(13*4(%esp))
call syscall
MEXITCOUNT
jmp doreti
/*
* Call gate entry for FreeBSD ELF and Linux/NetBSD syscall (int 0x80)
@ -203,7 +216,6 @@ IDTVEC(lcall_syscall)
SUPERALIGN_TEXT
IDTVEC(int0x80_syscall)
pushl $2 /* sizeof "int 0x80" */
syscall_with_err_pushed:
subl $4,%esp /* skip over tf_trapno */
pushal
pushl %ds

View File

@ -191,7 +191,20 @@ IDTVEC(lcall_syscall)
pushfl /* save eflags */
popl 8(%esp) /* shuffle into tf_eflags */
pushl $7 /* sizeof "lcall 7,0" */
jmp syscall_with_err_pushed
subl $4,%esp /* skip over tf_trapno */
pushal
pushl %ds
pushl %es
pushl %fs
mov $KDSEL,%ax /* switch to kernel segments */
mov %ax,%ds
mov %ax,%es
mov $KPSEL,%ax
mov %ax,%fs
FAKE_MCOUNT(13*4(%esp))
call syscall
MEXITCOUNT
jmp doreti
/*
* Call gate entry for FreeBSD ELF and Linux/NetBSD syscall (int 0x80)
@ -203,7 +216,6 @@ IDTVEC(lcall_syscall)
SUPERALIGN_TEXT
IDTVEC(int0x80_syscall)
pushl $2 /* sizeof "int 0x80" */
syscall_with_err_pushed:
subl $4,%esp /* skip over tf_trapno */
pushal
pushl %ds

View File

@ -226,7 +226,9 @@ db_nextframe(fp, ip, p)
} else if (!strncmp(name, "Xintr", 5) ||
!strncmp(name, "Xfastintr", 9)) {
frame_type = INTERRUPT;
} else if (!strcmp(name, "syscall_with_err_pushed")) {
} else if (!strcmp(name, "Xlcall_syscall")) {
frame_type = SYSCALL;
} else if (!strcmp(name, "Xint0x80_syscall")) {
frame_type = SYSCALL;
}
}

View File

@ -191,7 +191,20 @@ IDTVEC(lcall_syscall)
pushfl /* save eflags */
popl 8(%esp) /* shuffle into tf_eflags */
pushl $7 /* sizeof "lcall 7,0" */
jmp syscall_with_err_pushed
subl $4,%esp /* skip over tf_trapno */
pushal
pushl %ds
pushl %es
pushl %fs
mov $KDSEL,%ax /* switch to kernel segments */
mov %ax,%ds
mov %ax,%es
mov $KPSEL,%ax
mov %ax,%fs
FAKE_MCOUNT(13*4(%esp))
call syscall
MEXITCOUNT
jmp doreti
/*
* Call gate entry for FreeBSD ELF and Linux/NetBSD syscall (int 0x80)
@ -203,7 +216,6 @@ IDTVEC(lcall_syscall)
SUPERALIGN_TEXT
IDTVEC(int0x80_syscall)
pushl $2 /* sizeof "int 0x80" */
syscall_with_err_pushed:
subl $4,%esp /* skip over tf_trapno */
pushal
pushl %ds