Commit 621ce5a8 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://linux-scsi.bkbits.net/scsi-for-linus-2.5

into home.transmeta.com:/home/torvalds/v2.5/linux
parents 2983e9a6 ed9d059f
...@@ -130,12 +130,16 @@ ENTRY(lcall7) ...@@ -130,12 +130,16 @@ ENTRY(lcall7)
# gates, which has to be cleaned up later.. # gates, which has to be cleaned up later..
pushl %eax pushl %eax
SAVE_ALL SAVE_ALL
movl EIP(%esp), %eax # due to call gates, this is eflags, not eip.. movl %esp, %ebx
movl CS(%esp), %edx # this is eip.. pushl %ebx
movl EFLAGS(%esp), %ecx # and this is cs.. pushl $0x7
movl %eax,EFLAGS(%esp) # do_lcall:
movl %edx,EIP(%esp) # Now we move them to their "normal" places movl EIP(%ebx), %eax # due to call gates, this is eflags, not eip..
movl %ecx,CS(%esp) # movl CS(%ebx), %edx # this is eip..
movl EFLAGS(%ebx), %ecx # and this is cs..
movl %eax,EFLAGS(%ebx) #
movl %edx,EIP(%ebx) # Now we move them to their "normal" places
movl %ecx,CS(%ebx) #
# #
# Call gates don't clear TF and NT in eflags like # Call gates don't clear TF and NT in eflags like
...@@ -147,13 +151,9 @@ ENTRY(lcall7) ...@@ -147,13 +151,9 @@ ENTRY(lcall7)
pushl %eax pushl %eax
popfl popfl
movl %esp, %ebx
pushl %ebx
andl $-8192, %ebx # GET_THREAD_INFO andl $-8192, %ebx # GET_THREAD_INFO
movl TI_EXEC_DOMAIN(%ebx), %edx # Get the execution domain movl TI_EXEC_DOMAIN(%ebx), %edx # Get the execution domain
movl 4(%edx), %edx # Get the lcall7 handler for the domain call *4(%edx) # Call the lcall7 handler for the domain
pushl $0x7
call *%edx
addl $4, %esp addl $4, %esp
popl %eax popl %eax
jmp resume_userspace jmp resume_userspace
...@@ -163,33 +163,10 @@ ENTRY(lcall27) ...@@ -163,33 +163,10 @@ ENTRY(lcall27)
# gates, which has to be cleaned up later.. # gates, which has to be cleaned up later..
pushl %eax pushl %eax
SAVE_ALL SAVE_ALL
movl EIP(%esp), %eax # due to call gates, this is eflags, not eip..
movl CS(%esp), %edx # this is eip..
movl EFLAGS(%esp), %ecx # and this is cs..
movl %eax,EFLAGS(%esp) #
movl %edx,EIP(%esp) # Now we move them to their "normal" places
movl %ecx,CS(%esp) #
#
# Call gates don't clear TF and NT in eflags like
# traps do, so we need to do it ourselves.
# %eax already contains eflags (but it may have
# DF set, clear that also)
#
andl $~(DF_MASK | TF_MASK | NT_MASK),%eax
pushl %eax
popfl
movl %esp, %ebx movl %esp, %ebx
pushl %ebx pushl %ebx
andl $-8192, %ebx # GET_THREAD_INFO
movl TI_EXEC_DOMAIN(%ebx), %edx # Get the execution domain
movl 4(%edx), %edx # Get the lcall7 handler for the domain
pushl $0x27 pushl $0x27
call *%edx jmp do_lcall
addl $4, %esp
popl %eax
jmp resume_userspace
ENTRY(ret_from_fork) ENTRY(ret_from_fork)
......
...@@ -758,6 +758,7 @@ static void matrox_cfb8_revc(struct display* p, int xx, int yy) { ...@@ -758,6 +758,7 @@ static void matrox_cfb8_revc(struct display* p, int xx, int yy) {
} }
#endif #endif
#if defined(FBCON_HAS_CFB16) || defined(FBCON_HAS_CFB24) || defined(FBCON_HAS_CFB32)
static void matrox_cfbX_revc(struct display* p, int xx, int yy) { static void matrox_cfbX_revc(struct display* p, int xx, int yy) {
CRITFLAGS CRITFLAGS
MINFO_FROM_DISP(p); MINFO_FROM_DISP(p);
...@@ -778,6 +779,7 @@ static void matrox_cfbX_revc(struct display* p, int xx, int yy) { ...@@ -778,6 +779,7 @@ static void matrox_cfbX_revc(struct display* p, int xx, int yy) {
CRITEND CRITEND
} }
#endif
static void matrox_cfbX_clear_margins(struct vc_data* conp, struct display* p, int bottom_only) { static void matrox_cfbX_clear_margins(struct vc_data* conp, struct display* p, int bottom_only) {
unsigned int bottom_height, right_width; unsigned int bottom_height, right_width;
......
...@@ -849,7 +849,7 @@ static int parse_pins4(WPMINFO const struct matrox_bios* bd) { ...@@ -849,7 +849,7 @@ static int parse_pins4(WPMINFO const struct matrox_bios* bd) {
( bd->pins[86] & 0x0000000F); ( bd->pins[86] & 0x0000000F);
MINFO->values.reg.opt = ((bd->pins[53] << 15) & 0x00400000) | MINFO->values.reg.opt = ((bd->pins[53] << 15) & 0x00400000) |
((bd->pins[53] << 22) & 0x10000000) | ((bd->pins[53] << 22) & 0x10000000) |
((bd->pins[53] << 10) & 0x00001C00); ((bd->pins[53] << 7) & 0x00001C00);
MINFO->values.reg.opt3 = get_u32(bd->pins + 67); MINFO->values.reg.opt3 = get_u32(bd->pins + 67);
MINFO->values.pll.system = (bd->pins[ 65] == 0xFF) ? 200000 : bd->pins[ 65] * 4000; MINFO->values.pll.system = (bd->pins[ 65] == 0xFF) ? 200000 : bd->pins[ 65] * 4000;
MINFO->features.pll.ref_freq = (bd->pins[ 92] & 0x01) ? 14318 : 27000; MINFO->features.pll.ref_freq = (bd->pins[ 92] & 0x01) ? 14318 : 27000;
......
...@@ -909,7 +909,7 @@ int ncp_create_new(struct inode *dir, struct dentry *dentry, int mode, ...@@ -909,7 +909,7 @@ int ncp_create_new(struct inode *dir, struct dentry *dentry, int mode,
if (S_ISREG(mode) && if (S_ISREG(mode) &&
(server->m.flags & NCP_MOUNT_EXTRAS) && (server->m.flags & NCP_MOUNT_EXTRAS) &&
(mode & S_IXUGO)) (mode & S_IXUGO))
attributes |= aSYSTEM; attributes |= aSYSTEM | aSHARED;
result = ncp_open_create_file_or_subdir(server, dir, __name, result = ncp_open_create_file_or_subdir(server, dir, __name,
OC_MODE_CREATE | OC_MODE_OPEN | OC_MODE_REPLACE, OC_MODE_CREATE | OC_MODE_OPEN | OC_MODE_REPLACE,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment