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
bbccc497
Commit
bbccc497
authored
Jun 07, 2002
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
;
...
...
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
...
...
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
...
...
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
...
...
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
)
{
{
...
...
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