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
nexedi
linux
Commits
a3813329
Commit
a3813329
authored
Jun 08, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
parents
97d26b80
70aa488c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
51 additions
and
11 deletions
+51
-11
arch/ia64/kernel/module.c
arch/ia64/kernel/module.c
+6
-4
arch/ia64/kernel/setup.c
arch/ia64/kernel/setup.c
+2
-1
arch/ia64/kernel/traps.c
arch/ia64/kernel/traps.c
+18
-0
arch/ia64/mm/init.c
arch/ia64/mm/init.c
+17
-2
arch/ia64/sn/kernel/setup.c
arch/ia64/sn/kernel/setup.c
+2
-2
include/asm-ia64/pgtable.h
include/asm-ia64/pgtable.h
+6
-2
No files found.
arch/ia64/kernel/module.c
View file @
a3813329
...
...
@@ -825,14 +825,16 @@ apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symind
* XXX Should have an arch-hook for running this after final section
* addresses have been selected...
*/
/* See if gp can cover the entire core module: */
uint64_t
gp
=
(
uint64_t
)
mod
->
module_core
+
MAX_LTOFF
/
2
;
if
(
mod
->
core_size
>=
MAX_LTOFF
)
uint64_t
gp
;
if
(
mod
->
core_size
>
MAX_LTOFF
)
/*
* This takes advantage of fact that SHF_ARCH_SMALL gets allocated
* at the end of the module.
*/
gp
=
(
uint64_t
)
mod
->
module_core
+
mod
->
core_size
-
MAX_LTOFF
/
2
;
gp
=
mod
->
core_size
-
MAX_LTOFF
/
2
;
else
gp
=
mod
->
core_size
/
2
;
gp
=
(
uint64_t
)
mod
->
module_core
+
((
gp
+
7
)
&
-
8
);
mod
->
arch
.
gp
=
gp
;
DEBUGP
(
"%s: placing gp at 0x%lx
\n
"
,
__FUNCTION__
,
gp
);
}
...
...
arch/ia64/kernel/setup.c
View file @
a3813329
...
...
@@ -720,7 +720,8 @@ cpu_init (void)
ia64_set_kr
(
IA64_KR_PT_BASE
,
__pa
(
ia64_imva
(
empty_zero_page
)));
/*
* Initialize default control register to defer all speculative faults. The
* Initialize default control register to defer speculative faults except
* for those arising from TLB misses, which are not deferred. The
* kernel MUST NOT depend on a particular setting of these bits (in other words,
* the kernel must have recovery code for all speculative accesses). Turn on
* dcr.lc as per recommendation by the architecture team. Most IA-32 apps
...
...
arch/ia64/kernel/traps.c
View file @
a3813329
...
...
@@ -111,6 +111,24 @@ ia64_bad_break (unsigned long break_num, struct pt_regs *regs)
siginfo_t
siginfo
;
int
sig
,
code
;
/* break.b always sets cr.iim to 0, which causes problems for
* debuggers. Get the real break number from the original instruction,
* but only for kernel code. User space break.b is left alone, to
* preserve the existing behaviour. All break codings have the same
* format, so there is no need to check the slot type.
*/
if
(
break_num
==
0
&&
!
user_mode
(
regs
))
{
struct
ia64_psr
*
ipsr
=
ia64_psr
(
regs
);
unsigned
long
*
bundle
=
(
unsigned
long
*
)
regs
->
cr_iip
;
unsigned
long
slot
;
switch
(
ipsr
->
ri
)
{
case
0
:
slot
=
(
bundle
[
0
]
>>
5
);
break
;
case
1
:
slot
=
(
bundle
[
0
]
>>
46
)
|
(
bundle
[
1
]
<<
18
);
break
;
default:
slot
=
(
bundle
[
1
]
>>
23
);
break
;
}
break_num
=
((
slot
>>
36
&
1
)
<<
20
)
|
(
slot
>>
6
&
0xfffff
);
}
/* SIGILL, SIGFPE, SIGSEGV, and SIGBUS want these field initialized: */
siginfo
.
si_addr
=
(
void
__user
*
)
(
regs
->
cr_iip
+
ia64_psr
(
regs
)
->
ri
);
siginfo
.
si_imm
=
break_num
;
...
...
arch/ia64/mm/init.c
View file @
a3813329
...
...
@@ -305,8 +305,9 @@ setup_gate (void)
struct
page
*
page
;
/*
* Map the gate page twice: once read-only to export the ELF headers etc. and once
* execute-only page to enable privilege-promotion via "epc":
* Map the gate page twice: once read-only to export the ELF
* headers etc. and once execute-only page to enable
* privilege-promotion via "epc":
*/
page
=
virt_to_page
(
ia64_imva
(
__start_gate_section
));
put_kernel_page
(
page
,
GATE_ADDR
,
PAGE_READONLY
);
...
...
@@ -315,6 +316,20 @@ setup_gate (void)
put_kernel_page
(
page
,
GATE_ADDR
+
PAGE_SIZE
,
PAGE_GATE
);
#else
put_kernel_page
(
page
,
GATE_ADDR
+
PERCPU_PAGE_SIZE
,
PAGE_GATE
);
/* Fill in the holes (if any) with read-only zero pages: */
{
unsigned
long
addr
;
for
(
addr
=
GATE_ADDR
+
PAGE_SIZE
;
addr
<
GATE_ADDR
+
PERCPU_PAGE_SIZE
;
addr
+=
PAGE_SIZE
)
{
put_kernel_page
(
ZERO_PAGE
(
0
),
addr
,
PAGE_READONLY
);
put_kernel_page
(
ZERO_PAGE
(
0
),
addr
+
PERCPU_PAGE_SIZE
,
PAGE_READONLY
);
}
}
#endif
ia64_patch_gate
();
}
...
...
arch/ia64/sn/kernel/setup.c
View file @
a3813329
...
...
@@ -222,7 +222,7 @@ void __init early_sn_setup(void)
extern
int
platform_intr_list
[];
extern
nasid_t
master_nasid
;
static
int
shub_1_1_found
__initdata
;
static
int
__initdata
shub_1_1_found
=
0
;
/*
* sn_check_for_wars
...
...
@@ -251,7 +251,7 @@ static void __init sn_check_for_wars(void)
}
else
{
for_each_online_node
(
cnode
)
{
if
(
is_shub_1_1
(
cnodeid_to_nasid
(
cnode
)))
s
n_hub_info
->
s
hub_1_1_found
=
1
;
shub_1_1_found
=
1
;
}
}
}
...
...
include/asm-ia64/pgtable.h
View file @
a3813329
...
...
@@ -8,7 +8,7 @@
* This hopefully works with any (fixed) IA-64 page-size, as defined
* in <asm/page.h>.
*
* Copyright (C) 1998-200
4
Hewlett-Packard Co
* Copyright (C) 1998-200
5
Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
*/
...
...
@@ -551,7 +551,11 @@ do { \
/* These tell get_user_pages() that the first gate page is accessible from user-level. */
#define FIXADDR_USER_START GATE_ADDR
#define FIXADDR_USER_END (GATE_ADDR + 2*PERCPU_PAGE_SIZE)
#ifdef HAVE_BUGGY_SEGREL
# define FIXADDR_USER_END (GATE_ADDR + 2*PAGE_SIZE)
#else
# define FIXADDR_USER_END (GATE_ADDR + 2*PERCPU_PAGE_SIZE)
#endif
#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
...
...
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