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
bbccc497
Commit
bbccc497
authored
22 years ago
by
James Bottomley
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[x86 arch split]
Add better documentation to the hooks.
parent
835b1066
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
101 additions
and
3 deletions
+101
-3
arch/i386/generic/do_timer.h
arch/i386/generic/do_timer.h
+20
-0
arch/i386/generic/entry_arch.h
arch/i386/generic/entry_arch.h
+6
-0
arch/i386/generic/irq_vectors.h
arch/i386/generic/irq_vectors.h
+21
-0
arch/i386/generic/setup.c
arch/i386/generic/setup.c
+48
-0
arch/i386/generic/setup_arch_post.h
arch/i386/generic/setup_arch_post.h
+6
-3
No files found.
arch/i386/generic/do_timer.h
View file @
bbccc497
/* defines for inline arch setup functions */
/* defines for inline arch setup functions */
/**
* do_timer_interrupt_hook - hook into timer tick
* @regs: standard registers from interrupt
*
* Description:
* This hook is called immediately after the timer interrupt is ack'd.
* It's primary purpose is to allow architectures that don't possess
* individual per CPU clocks (like the CPU APICs supply) to broadcast the
* timer interrupt as a means of triggering reschedules etc.
**/
static
inline
void
do_timer_interrupt_hook
(
struct
pt_regs
*
regs
)
static
inline
void
do_timer_interrupt_hook
(
struct
pt_regs
*
regs
)
{
{
do_timer
(
regs
);
do_timer
(
regs
);
...
@@ -22,6 +33,15 @@ static inline void do_timer_interrupt_hook(struct pt_regs *regs)
...
@@ -22,6 +33,15 @@ static inline void do_timer_interrupt_hook(struct pt_regs *regs)
#define BUGGY_NEPTUN_TIMER
#define BUGGY_NEPTUN_TIMER
/**
* do_timer_overflow - process a detected timer overflow condition
* @count: hardware timer interrupt count on overflow
*
* Description:
* This call is invoked when the jiffies count has not incremented but
* the hardware timer interrupt has. It means that a timer tick interrupt
* came along while the previous one was pending, thus a tick was missed
**/
static
inline
int
do_timer_overflow
(
int
count
)
static
inline
int
do_timer_overflow
(
int
count
)
{
{
int
i
;
int
i
;
...
...
This diff is collapsed.
Click to expand it.
arch/i386/generic/entry_arch.h
View file @
bbccc497
/*
* This file is designed to contain the BUILD_INTERRUPT specifications for
* all of the extra named interrupt vectors used by the architecture.
* Usually this is the Inter Process Interrupts (IPIs)
*/
/*
/*
* The following vectors are part of the Linux architecture, there
* The following vectors are part of the Linux architecture, there
* is no hardware IRQ pin equivalent for them, they are triggered
* is no hardware IRQ pin equivalent for them, they are triggered
...
...
This diff is collapsed.
Click to expand it.
arch/i386/generic/irq_vectors.h
View file @
bbccc497
/*
* This file should contain #defines for all of the interrupt vector
* numbers used by this architecture.
*
* In addition, there are some standard defines:
*
* FIRST_EXTERNAL_VECTOR:
* The first free place for external interrupts
*
* SYSCALL_VECTOR:
* The IRQ vector a syscall makes the user to kernel transition
* under.
*
* TIMER_IRQ:
* The IRQ number the timer interrupt comes in at.
*
* NR_IRQS:
* The total number of interrupt vectors (including all the
* architecture specific interrupts) needed.
*
*/
#ifndef _ASM_IRQ_VECTORS_H
#ifndef _ASM_IRQ_VECTORS_H
#define _ASM_IRQ_VECTORS_H
#define _ASM_IRQ_VECTORS_H
...
...
This diff is collapsed.
Click to expand it.
arch/i386/generic/setup.c
View file @
bbccc497
...
@@ -9,6 +9,15 @@
...
@@ -9,6 +9,15 @@
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <asm/arch_hooks.h>
#include <asm/arch_hooks.h>
/**
* pre_intr_init_hook - initialisation prior to setting up interrupt vectors
*
* Description:
* Perform any necessary interrupt initialisation prior to setting up
* the "ordinary" interrupt call gates. For legacy reasons, the ISA
* interrupts should be initialised here if the machine emulates a PC
* in any way.
**/
void
__init
pre_intr_init_hook
(
void
)
void
__init
pre_intr_init_hook
(
void
)
{
{
init_ISA_irqs
();
init_ISA_irqs
();
...
@@ -19,6 +28,15 @@ void __init pre_intr_init_hook(void)
...
@@ -19,6 +28,15 @@ void __init pre_intr_init_hook(void)
*/
*/
static
struct
irqaction
irq2
=
{
no_action
,
0
,
0
,
"cascade"
,
NULL
,
NULL
};
static
struct
irqaction
irq2
=
{
no_action
,
0
,
0
,
"cascade"
,
NULL
,
NULL
};
/**
* intr_init_hook - post gate setup interrupt initialisation
*
* Description:
* Fill in any interrupts that may have been left out by the general
* init_IRQ() routine. interrupts having to do with the machine rather
* than the devices on the I/O bus (like APIC interrupts in intel MP
* systems) are started here.
**/
void
__init
intr_init_hook
(
void
)
void
__init
intr_init_hook
(
void
)
{
{
#ifdef CONFIG_X86_LOCAL_APIC
#ifdef CONFIG_X86_LOCAL_APIC
...
@@ -28,22 +46,52 @@ void __init intr_init_hook(void)
...
@@ -28,22 +46,52 @@ void __init intr_init_hook(void)
setup_irq
(
2
,
&
irq2
);
setup_irq
(
2
,
&
irq2
);
}
}
/**
* pre_setup_arch_hook - hook called prior to any setup_arch() execution
*
* Description:
* generally used to activate any machine specific identification
* routines that may be needed before setup_arch() runs. On VISWS
* this is used to get the board revision and type.
**/
void
__init
pre_setup_arch_hook
(
void
)
void
__init
pre_setup_arch_hook
(
void
)
{
{
}
}
/**
* trap_init_hook - initialise system specific traps
*
* Description:
* Called as the final act of trap_init(). Used in VISWS to initialise
* the various board specific APIC traps.
**/
void
__init
trap_init_hook
(
void
)
void
__init
trap_init_hook
(
void
)
{
{
}
}
static
struct
irqaction
irq0
=
{
timer_interrupt
,
SA_INTERRUPT
,
0
,
"timer"
,
NULL
,
NULL
};
static
struct
irqaction
irq0
=
{
timer_interrupt
,
SA_INTERRUPT
,
0
,
"timer"
,
NULL
,
NULL
};
/**
* time_init_hook - do any specific initialisations for the system timer.
*
* Description:
* Must plug the system timer interrupt source at HZ into the IRQ listed
* in irq_vectors.h:TIMER_IRQ
**/
void
__init
time_init_hook
(
void
)
void
__init
time_init_hook
(
void
)
{
{
setup_irq
(
0
,
&
irq0
);
setup_irq
(
0
,
&
irq0
);
}
}
#ifdef CONFIG_MCA
#ifdef CONFIG_MCA
/**
* mca_nmi_hook - hook into MCA specific NMI chain
*
* Description:
* The MCA (Microchannel Arcitecture) has an NMI chain for NMI sources
* along the MCA bus. Use this to hook into that chain if you will need
* it.
**/
void
__init
mca_nmi_hook
(
void
)
void
__init
mca_nmi_hook
(
void
)
{
{
/* If I recall correctly, there's a whole bunch of other things that
/* If I recall correctly, there's a whole bunch of other things that
...
...
This diff is collapsed.
Click to expand it.
arch/i386/generic/setup_arch_post.h
View file @
bbccc497
/* Hook for machine specific memory setup.
/**
* machine_specific_memory_setup - Hook for machine specific memory setup.
*
*
* This is included late in kernel/setup.c so that it can make use of all of
* Description:
* the static functions. */
* This is included late in kernel/setup.c so that it can make
* use of all of the static functions.
**/
static
inline
char
*
__init
machine_specific_memory_setup
(
void
)
static
inline
char
*
__init
machine_specific_memory_setup
(
void
)
{
{
...
...
This diff is collapsed.
Click to expand it.
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