Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
70e39deb
Commit
70e39deb
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 2.1.44pre2
parent
d5977cd7
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
243 additions
and
269 deletions
+243
-269
Documentation/Configure.help
Documentation/Configure.help
+6
-4
Makefile
Makefile
+1
-1
drivers/block/ide.c
drivers/block/ide.c
+1
-0
drivers/block/ide.h
drivers/block/ide.h
+1
-1
drivers/block/triton.c
drivers/block/triton.c
+88
-26
drivers/char/rtc.c
drivers/char/rtc.c
+1
-1
drivers/net/Config.in
drivers/net/Config.in
+2
-6
drivers/pci/pci.c
drivers/pci/pci.c
+1
-1
fs/dcache.c
fs/dcache.c
+92
-204
fs/namei.c
fs/namei.c
+1
-1
fs/readdir.c
fs/readdir.c
+2
-2
fs/super.c
fs/super.c
+2
-2
include/linux/dalloc.h
include/linux/dalloc.h
+13
-14
include/linux/fs.h
include/linux/fs.h
+2
-0
include/linux/pci.h
include/linux/pci.h
+1
-1
scripts/ksymoops.cc
scripts/ksymoops.cc
+29
-5
No files found.
Documentation/Configure.help
View file @
70e39deb
...
...
@@ -287,17 +287,19 @@ CONFIG_BLK_DEV_RZ1000
Linux. This may slow disk throughput by a few percent, but at least
things will operate 100% reliably. If unsure, say Y.
Intel 82371 PIIX (Triton I/II) DMA support
Intel 82371 PIIX (Triton I/II)
, VIA VP-1
DMA support
CONFIG_BLK_DEV_TRITON
If your PCI system uses an IDE harddrive (as opposed to SCSI, say)
and includes the Intel Triton I/II IDE interface chipset (i82371FB,
i82371SB or i82371AB), you will want to enable this option to allow
use of bus-mastering DMA data transfers. Read the comments at the
i82371SB or i82371AB), or the VIA VP-1 IDE interface chipset
(VT82C586), you will want to enable this option to allow use of
bus-mastering DMA data transfers. Read the comments at the
beginning of drivers/block/triton.c and Documentation/ide.txt.
You can get the latest version of the hdparm utility via
ftp (user: anonymous) from
sunsite.unc.edu/pub/Linux/kernel/patches/diskdrives/; it is
used to tune your harddisk. It is safe to say Y to this question.
used to tune your harddisk.
It is safe to say Y to this question.
Other IDE chipset support
CONFIG_IDE_CHIPSETS
...
...
Makefile
View file @
70e39deb
VERSION
=
2
PATCHLEVEL
=
1
SUBLEVEL
=
4
3
SUBLEVEL
=
4
4
ARCH
:=
$(
shell
uname
-m
|
sed
-e
s/i.86/i386/
-e
s/sun4u/sparc64/
)
...
...
drivers/block/ide.c
View file @
70e39deb
...
...
@@ -2603,6 +2603,7 @@ __initfunc(static void probe_for_hwifs (void))
ide_probe_pci
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82371SB_1
,
&
ide_init_triton
,
0
);
ide_probe_pci
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82371AB
,
&
ide_init_triton
,
0
);
#endif
/* CONFIG_BLK_DEV_TRITON */
ide_probe_pci
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C586_1
,
&
ide_init_triton
,
0
);
#ifdef CONFIG_BLK_DEV_OPTI621
ide_probe_pci
(
PCI_VENDOR_ID_OPTI
,
PCI_DEVICE_ID_OPTI_82C621
,
&
ide_init_opti621
,
0
);
#endif
/* CONFIG_BLK_DEV_OPTI621 */
...
...
drivers/block/ide.h
View file @
70e39deb
...
...
@@ -298,7 +298,7 @@ typedef void (ide_selectproc_t) (ide_drive_t *);
typedef
enum
{
ide_unknown
,
ide_generic
,
ide_triton
,
ide_cmd640
,
ide_dtc2278
,
ide_ali14xx
,
ide_qd6580
,
ide_umc8672
,
ide_ht6560b
,
ide_promise
}
ide_promise
,
ide_via
}
hwif_chipset_t
;
typedef
struct
hwif_s
{
...
...
drivers/block/triton.c
View file @
70e39deb
...
...
@@ -122,15 +122,25 @@ static unsigned int piix_key;
#define PIIX_FLAGS_PREFETCH 4
#define PIIX_FLAGS_FAST_DMA 8
typedef
struct
{
unsigned
d0_flags
:
4
;
unsigned
d1_flags
:
4
;
unsigned
recovery
:
2
;
unsigned
reserved
:
2
;
unsigned
sample
:
2
;
unsigned
sidetim_enabled
:
1
;
unsigned
ports_enabled
:
1
;
}
piix_timing_t
;
union
chip_en_reg_u
{
struct
{
unsigned
d0_flags
:
4
;
unsigned
d1_flags
:
4
;
unsigned
recovery
:
2
;
unsigned
reserved
:
2
;
unsigned
sample
:
2
;
unsigned
sidetim_enabled
:
1
;
unsigned
ports_enabled
:
1
;
}
piix_s
;
struct
{
unsigned
sec_en
:
1
;
unsigned
pri_en
:
1
;
unsigned
reserved
:
14
;
}
via_s
;
};
typedef
union
chip_en_reg_u
piix_timing_t
;
typedef
struct
{
unsigned
pri_recovery
:
2
;
...
...
@@ -269,16 +279,16 @@ static int piix_dmaproc (ide_dma_action_t func, ide_drive_t *drive)
printk
(
"%s: pcibios read failed
\n
"
,
HWIF
(
drive
)
->
name
);
return
1
;
}
dflags
=
drive
->
select
.
b
.
unit
?
timing
.
d1_flags
:
timing
.
d0_flags
;
dflags
=
drive
->
select
.
b
.
unit
?
timing
.
piix_s
.
d1_flags
:
timing
.
piix_s
.
d0_flags
;
if
(
dflags
&
PIIX_FLAGS_FAST_PIO
)
{
if
(
func
==
ide_dma_on
&&
drive
->
media
==
ide_disk
)
dflags
|=
PIIX_FLAGS_FAST_DMA
;
else
dflags
&=
~
PIIX_FLAGS_FAST_DMA
;
if
(
drive
->
select
.
b
.
unit
==
0
)
timing
.
d0_flags
=
dflags
;
timing
.
piix_s
.
d0_flags
=
dflags
;
else
timing
.
d1_flags
=
dflags
;
timing
.
piix_s
.
d1_flags
=
dflags
;
if
(
pcibios_write_config_word
(
piix_pci_bus
,
piix_pci_fn
,
reg
,
*
(
short
*
)
&
timing
))
{
printk
(
"%s: pcibios write failed
\n
"
,
HWIF
(
drive
)
->
name
);
return
1
;
...
...
@@ -456,8 +466,14 @@ void ide_init_triton (byte bus, byte fn)
chipset
=
"PIIX4"
;
else
if
(
devid
==
PCI_DEVICE_ID_INTEL_82371SB_1
)
chipset
=
"PIIX3"
;
else
else
if
(
devid
==
PCI_DEVICE_ID_INTEL_82371_1
)
chipset
=
"PIIX"
;
else
if
(
devid
==
PCI_DEVICE_ID_VIA_82C586_1
)
chipset
=
"VP1"
;
else
{
printk
(
"Unknown PCI IDE interface 0x%x
\n
"
,
devid
);
goto
quit
;
}
printk
(
"%s: bus-master IDE device on PCI bus %d function %d
\n
"
,
chipset
,
bus
,
fn
);
...
...
@@ -470,13 +486,24 @@ void ide_init_triton (byte bus, byte fn)
printk
(
"%s: IDE ports are not enabled (BIOS)
\n
"
,
chipset
);
goto
quit
;
}
if
((
rc
=
pcibios_read_config_word
(
bus
,
fn
,
0x40
,
(
short
*
)
&
timings
[
0
])))
goto
quit
;
if
((
rc
=
pcibios_read_config_word
(
bus
,
fn
,
0x42
,
(
short
*
)
&
timings
[
1
])))
goto
quit
;
if
((
!
timings
[
0
].
ports_enabled
)
&&
(
!
timings
[
1
].
ports_enabled
))
{
printk
(
"%s: neither IDE port is enabled
\n
"
,
chipset
);
goto
quit
;
if
(
devid
==
PCI_DEVICE_ID_VIA_82C586_1
)
{
/* pri and sec channel enables are in port 0x40 */
if
((
rc
=
pcibios_read_config_word
(
bus
,
fn
,
0x40
,
(
short
*
)
&
timings
[
0
])))
goto
quit
;
if
((
!
timings
[
0
].
via_s
.
pri_en
&&
(
!
timings
[
0
].
via_s
.
sec_en
)))
{
printk
(
"%s: neither IDE port is enabled
\n
"
,
chipset
);
goto
quit
;
}
}
else
{
/* INTEL piix */
if
((
rc
=
pcibios_read_config_word
(
bus
,
fn
,
0x40
,
(
short
*
)
&
timings
[
0
])))
goto
quit
;
if
((
rc
=
pcibios_read_config_word
(
bus
,
fn
,
0x42
,
(
short
*
)
&
timings
[
1
])))
goto
quit
;
if
((
!
timings
[
0
].
piix_s
.
ports_enabled
)
&&
(
!
timings
[
1
].
piix_s
.
ports_enabled
))
{
printk
(
"%s: neither IDE port is enabled
\n
"
,
chipset
);
goto
quit
;
}
}
/*
...
...
@@ -526,10 +553,30 @@ void ide_init_triton (byte bus, byte fn)
case
0x170
:
pri_sec
=
1
;
break
;
default:
continue
;
}
if
(
devid
==
PCI_DEVICE_ID_VIA_82C586_1
)
{
timing
=
timings
[
0
];
switch
(
h
)
{
case
0
:
if
(
!
timing
.
piix_s
.
ports_enabled
)
{
printk
(
"port 0 DMA not enabled
\n
"
);
continue
;
}
case
1
:
if
(
!
timing
.
piix_s
.
sidetim_enabled
)
{
printk
(
"port 1 DMA not enabled
\n
"
);
continue
;
}
}
hwif
->
chipset
=
ide_via
;
}
else
{
/* PIIX */
timing
=
timings
[
pri_sec
];
if
(
!
timing
.
ports_enabled
)
/* interface disabled? */
if
(
!
timing
.
p
iix_s
.
p
orts_enabled
)
/* interface disabled? */
continue
;
hwif
->
chipset
=
ide_triton
;
}
if
(
dma_enabled
)
init_piix_dma
(
hwif
,
bmiba
+
(
pri_sec
?
8
:
0
));
#ifdef DISPLAY_PIIX_TIMINGS
...
...
@@ -539,17 +586,32 @@ void ide_init_triton (byte bus, byte fn)
{
const
char
*
slave
;
piix_sidetim_t
sidetim
;
byte
sample
=
5
-
timing
.
sample
;
byte
recovery
=
4
-
timing
.
recovery
;
byte
sample
=
5
-
timing
.
piix_s
.
sample
;
byte
recovery
=
4
-
timing
.
piix_s
.
recovery
;
unsigned
int
drvtim
;
if
(
devid
==
PCI_DEVICE_ID_VIA_82C586_1
)
{
pcibios_read_config_dword
(
bus
,
fn
,
0x48
,
&
drvtim
);
if
(
pri_sec
==
0
)
{
printk
(
" %s master: active_pulse_CLKs=%d, recovery_CLKs=%d
\n
"
,
hwif
->
name
,
1
+
(
drvtim
>>
28
),
1
+
((
drvtim
&
0x0f000000
)
>>
24
));
printk
(
" %s slave: active_pulse_CLKs=%d, recovery_CLKs=%d
\n
"
,
hwif
->
name
,
1
+
((
drvtim
&
0xf00000
)
>>
20
),
1
+
((
drvtim
&
0x0f0000
)
>>
16
));
continue
;
}
else
{
printk
(
" %s master: active_pulse_CLKs=%d, recovery_CLKs=%d
\n
"
,
hwif
->
name
,
1
+
((
drvtim
&
0xf000
)
>>
12
),
1
+
((
drvtim
&
0x0f00
)
>>
8
));
printk
(
" %s slave: active_pulse_CLKs=%d, recovery_CLKs=%d
\n
"
,
hwif
->
name
,
1
+
((
drvtim
&
0xf0
)
>>
4
),
1
+
(
drvtim
&
0x0f
));
continue
;
}
}
if
((
devid
==
PCI_DEVICE_ID_INTEL_82371SB_1
||
devid
==
PCI_DEVICE_ID_INTEL_82371AB
)
&&
timing
.
sidetim_enabled
&&
timing
.
piix_s
.
sidetim_enabled
&&
!
pcibios_read_config_byte
(
bus
,
fn
,
0x44
,
(
byte
*
)
&
sidetim
))
slave
=
""
;
/* PIIX3 and later */
else
slave
=
"/slave"
;
/* PIIX, or PIIX3 in compatibility mode */
printk
(
" %s master%s: sample_CLKs=%d, recovery_CLKs=%d
\n
"
,
hwif
->
name
,
slave
,
sample
,
recovery
);
print_piix_drive_flags
(
"master:"
,
timing
.
d0_flags
);
print_piix_drive_flags
(
"master:"
,
timing
.
piix_s
.
d0_flags
);
if
(
!*
slave
)
{
if
(
pri_sec
==
0
)
{
sample
=
5
-
sidetim
.
pri_sample
;
...
...
@@ -560,7 +622,7 @@ void ide_init_triton (byte bus, byte fn)
}
printk
(
" slave : sample_CLKs=%d, recovery_CLKs=%d
\n
"
,
sample
,
recovery
);
}
print_piix_drive_flags
(
"slave :"
,
timing
.
d1_flags
);
print_piix_drive_flags
(
"slave :"
,
timing
.
piix_s
.
d1_flags
);
}
#endif
/* DISPLAY_PIIX_TIMINGS */
}
...
...
drivers/char/rtc.c
View file @
70e39deb
...
...
@@ -180,7 +180,7 @@ static long rtc_read(struct inode *inode, struct file *file, char *buf,
data
=
rtc_irq_data
;
rtc_irq_data
=
0
;
restore_flags
(
flags
);
retval
=
put_user
(
data
,
(
unsigned
long
*
)
buf
)
)
?:
sizeof
(
unsigned
long
);
retval
=
put_user
(
data
,
(
unsigned
long
*
)
buf
)
?:
sizeof
(
unsigned
long
);
}
current
->
state
=
TASK_RUNNING
;
...
...
drivers/net/Config.in
View file @
70e39deb
...
...
@@ -143,12 +143,8 @@ if [ "$CONFIG_NET_RADIO" != "n" ]; then
bool 'Soundmodem support for 2400 baud AFSK modulation (8MHz crystal)' CONFIG_SOUNDMODEM_AFSK2400_8
bool 'Soundmodem support for 4800 baud HAPN-1 modulation' CONFIG_SOUNDMODEM_HAPN4800
bool 'Soundmodem support for 9600 baud FSK G3RUH modulation' CONFIG_SOUNDMODEM_FSK9600
if [ -f drivers/net/soundmodem/sm_afsk2666.c ]; then
bool 'Soundmodem support for 2666 baud AFSK modulation' CONFIG_SOUNDMODEM_AFSK2666
fi
if [ -f drivers/net/soundmodem/sm_psk4800.c ]; then
bool 'Soundmodem support for 4800 baud PSK modulation' CONFIG_SOUNDMODEM_PSK4800
fi
#bool 'Soundmodem support for 2666 baud AFSK modulation' CONFIG_SOUNDMODEM_AFSK2666
#bool 'Soundmodem support for 4800 baud PSK modulation' CONFIG_SOUNDMODEM_PSK4800
fi
fi
tristate 'STRIP (Metricom starmode radio IP)' CONFIG_STRIP
...
...
drivers/pci/pci.c
View file @
70e39deb
...
...
@@ -204,7 +204,7 @@ struct pci_dev_info dev_info[] = {
DEVICE
(
VIA
,
VIA_82C586_1
,
"VT 82C586 Apollo VP-1"
),
DEVICE
(
VIA
,
VIA_82C576
,
"VT 82C576 3V"
),
DEVICE
(
VIA
,
VIA_82C585
,
"VT 82C585VP Apollo VP-1"
),
DEVICE
(
VIA
,
VIA_82C586
_0
,
"VT 82C586 Apollo VP-1"
),
DEVICE
(
VIA
,
VIA_82C586
,
"VT 82C586 Apollo VP-1"
),
DEVICE
(
VIA
,
VIA_82C416
,
"VT 82C416MV"
),
DEVICE
(
VORTEX
,
VORTEX_GDT60x0
,
"GDT 60x0"
),
DEVICE
(
VORTEX
,
VORTEX_GDT6000B
,
"GDT 6000b"
),
...
...
fs/dcache.c
View file @
70e39deb
This diff is collapsed.
Click to expand it.
fs/namei.c
View file @
70e39deb
...
...
@@ -951,7 +951,7 @@ static void basket_name(struct inode * dir, struct dentry * entry)
{
char prefix[32];
struct qstr prename = { prefix, 14 };
struct qstr entname = { entry->d_name
, entry->d_
len };
struct qstr entname = { entry->d_name
.name, entry->d_name.
len };
struct inode * inode;
struct dentry * old = entry; /* dummy */
int i;
...
...
fs/readdir.c
View file @
70e39deb
...
...
@@ -266,8 +266,8 @@ asmlinkage int sys_getdents(unsigned int fd, void * dirent, unsigned int count)
if
(
inode
)
{
nr
++
;
if
(
nr
>
(
file
->
f_pos
&
~
BASKET_BIT
))
{
int
err
=
filldir
(
&
buf
,
ptr
->
d_name
,
ptr
->
d_len
,
int
err
=
filldir
(
&
buf
,
ptr
->
d_name
.
name
,
ptr
->
d_
name
.
len
,
file
->
f_pos
,
inode
->
i_ino
);
if
(
err
)
...
...
fs/super.c
View file @
70e39deb
...
...
@@ -765,9 +765,9 @@ int do_mount(kdev_t dev, const char * dev_name, const char * dir_name, const cha
struct
dentry
*
old
=
dir_i
->
i_dentry
;
struct
dentry
*
new
;
vfs_lock
();
new
=
d_alloc
(
old
->
d_parent
,
old
->
d_len
,
1
);
new
=
d_alloc
(
old
->
d_parent
,
old
->
d_
name
.
len
,
1
);
if
(
new
)
{
struct
qstr
copy
=
{
old
->
d_name
,
old
->
d_
len
};
struct
qstr
copy
=
{
old
->
d_name
.
name
,
old
->
d_name
.
len
};
d_add
(
new
,
sb
->
s_mounted
,
&
copy
,
D_DUPLICATE
);
vfs_unlock
();
}
else
{
...
...
include/linux/dalloc.h
View file @
70e39deb
...
...
@@ -9,7 +9,7 @@
* <schoebel@informatik.uni-stuttgart.de>.
*/
#define D_MAXLEN
1024
#define D_MAXLEN 1024
/* public flags for d_add() */
#define D_NORMAL 0
...
...
@@ -26,6 +26,16 @@
#define IS_ROOT(x) ((x) == (x)->d_parent)
/* "quick string" -- I introduced this to shorten the parameter list
* of many routines. Think of it as a (str,stlen) pair.
* Storing the len instead of doing strlen() very often is performance
* critical.
*/
struct
qstr
{
char
*
name
;
int
len
;
};
struct
dentry
{
union
{
struct
inode
*
d_inode
;
/* Where the name belongs to */
...
...
@@ -38,19 +48,8 @@ struct dentry {
struct
dentry
*
d_hash_prev
;
struct
dentry
*
d_basket_next
;
struct
dentry
*
d_basket_prev
;
short
d_len
;
/* set by dalloc() */
short
d_flag
;
char
d_name
[
D_MAXLEN
];
};
/* "quick string" -- I introduced this to shorten the parameter list
* of many routines. Think of it as a (str,stlen) pair.
* Storing the len instead of doing strlen() very often is performance
* critical.
*/
struct
qstr
{
const
char
*
name
;
int
len
;
struct
qstr
d_name
;
unsigned
int
d_flag
;
};
extern
struct
dentry
*
the_root
;
...
...
include/linux/fs.h
View file @
70e39deb
...
...
@@ -15,7 +15,9 @@
#include <linux/net.h>
#include <linux/kdev_t.h>
#include <linux/ioctl.h>
#include <asm/atomic.h>
#include <asm/bitops.h>
/* Prefixes for routines (having no effect), but indicate what
* the routine may do. This can greatly ease reasoning about routines...
...
...
include/linux/pci.h
View file @
70e39deb
...
...
@@ -497,7 +497,7 @@
#define PCI_DEVICE_ID_VIA_82C586_1 0x0571
#define PCI_DEVICE_ID_VIA_82C576 0x0576
#define PCI_DEVICE_ID_VIA_82C585 0x0585
#define PCI_DEVICE_ID_VIA_82C586
_0
0x0586
#define PCI_DEVICE_ID_VIA_82C586 0x0586
#define PCI_DEVICE_ID_VIA_82C416 0x1571
#define PCI_VENDOR_ID_VORTEX 0x1119
...
...
scripts/ksymoops.cc
View file @
70e39deb
...
...
@@ -31,6 +31,7 @@
// * Only resolves operands of jump and call instructions.
#include <fstream.h>
#include <strstream.h>
#include <iomanip.h>
#include <stdio.h>
#include <string.h>
...
...
@@ -184,9 +185,23 @@ NameList::decode(unsigned char* code, long eip_addr)
char
buf
[
1024
];
int
lines
=
0
;
int
eip_seen
=
0
;
long
offset
;
while
(
fgets
(
buf
,
sizeof
(
buf
),
objdump_FILE
))
{
if
(
eip_seen
&&
buf
[
4
]
==
':'
)
{
// assume objdump from binutils 2.8..., reformat to old style
offset
=
strtol
(
buf
,
0
,
16
);
char
newbuf
[
sizeof
(
buf
)];
memset
(
newbuf
,
'\0'
,
sizeof
(
newbuf
));
ostrstream
ost
(
newbuf
,
sizeof
(
newbuf
));
ost
.
width
(
8
);
ost
<<
offset
;
ost
<<
" <_EIP+"
<<
offset
<<
">: "
<<
&
buf
[
6
]
<<
ends
;
strcpy
(
buf
,
newbuf
);
}
if
(
!
strnequ
(
&
buf
[
9
],
"<_EIP"
,
5
))
continue
;
eip_seen
=
1
;
if
(
strstr
(
buf
,
" is out of bounds"
))
break
;
lines
++
;
...
...
@@ -195,19 +210,28 @@ NameList::decode(unsigned char* code, long eip_addr)
cout
<<
buf
;
continue
;
}
long
offset
=
strtol
(
buf
,
0
,
16
);
char
*
bp_0
=
strchr
(
buf
,
'>'
)
+
2
;
offset
=
strtol
(
buf
,
0
,
16
);
char
*
bp_0
=
strchr
(
buf
,
'>'
);
KSym
*
ksym
=
find
(
eip_addr
+
offset
);
if
(
bp_0
)
bp_0
+=
2
;
else
bp_0
=
strchr
(
buf
,
':'
);
if
(
ksym
)
cout
<<
*
ksym
<<
' '
;
char
*
bp
=
bp_0
;
char
*
bp_1
=
strstr
(
bp_0
,
"
\t
"
);
// objdump from binutils 2.8...
if
(
bp_1
)
++
bp_1
;
else
bp_1
=
bp_0
;
char
*
bp
=
bp_1
;
while
(
!
isspace
(
*
bp
))
bp
++
;
while
(
isspace
(
*
bp
))
bp
++
;
if
(
*
bp
!=
'0'
)
{
if
(
!
isxdigit
(
*
bp
)
)
{
cout
<<
bp_0
;
}
else
if
(
*
bp_
0
==
'j'
||
strnequ
(
bp_0
,
"call"
,
4
))
{
// a jump or call insn
}
else
if
(
*
bp_
1
==
'j'
||
strnequ
(
bp_1
,
"call"
,
4
))
{
// a jump or call insn
long
rel_addr
=
strtol
(
bp
,
0
,
16
);
ksym
=
find
(
eip_addr
+
rel_addr
);
if
(
ksym
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment