Clubcos
0.0.0
Clubcos - Clubc Operating System
메인 페이지
데이타 구조
파일들
파일 목록
전역
모두
데이타 구조
파일들
함수
변수
타입정의
열거형 타입
열거형 멤버
매크로
페이지들
pic.h
이 파일의 문서화 페이지로 가기
1
// Copyright (c) 2014, 임경현 (dlarudgus20)
2
// All rights reserved.
3
//
4
// Redistribution and use in source and binary forms, with or without
5
// modification, are permitted provided that the following conditions are met:
6
//
7
// * Redistributions of source code must retain the above copyright notice, this
8
// list of conditions and the following disclaimer.
9
//
10
// * Redistributions in binary form must reproduce the above copyright notice,
11
// this list of conditions and the following disclaimer in the documentation
12
// and/or other materials provided with the distribution.
13
//
14
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
32
#ifndef PIC_H_
33
#define PIC_H_
34
35
#include <stddef.h>
36
#include <stdint.h>
37
38
enum
39
{
40
PIC_MASTER_PORT1
= 0x20,
41
PIC_MASTER_PORT2
= 0x21,
42
PIC_SLAVE_PORT1
= 0xa0,
43
PIC_SLAVE_PORT2
= 0xa1,
44
45
PIC_INTERRUPT_NUMBER
= 0x20
46
};
47
48
enum
49
{
50
PIC_IRQ_TIMER
= 0,
51
PIC_IRQ_KEYBOARD
= 1,
52
PIC_IRQ_SLAVE
= 2,
53
PIC_IRQ_SERIAL1
= 3,
54
PIC_IRQ_SERIAL2
= 4,
55
PIC_IRQ_PARALLEL1
= 5,
56
PIC_IRQ_FLOPPY
= 6,
57
PIC_IRQ_PARALLEL2
= 7,
58
PIC_IRQ_RTC
= 8,
59
PIC_IRQ_MOUSE
= 12,
60
PIC_IRQ_COPROCESSER
= 13,
61
PIC_IRQ_HARDDISK1
= 14,
62
PIC_IRQ_HARDDISK2
= 15
63
};
64
enum
65
{
66
PIC_MASKBIT_TIMER
= 1 <<
PIC_IRQ_TIMER
,
67
PIC_MASKBIT_KEYBOARD
= 1 <<
PIC_IRQ_KEYBOARD
,
68
PIC_MASKBIT_SLAVE
= 1 <<
PIC_IRQ_SLAVE
,
69
PIC_MASKBIT_SERIAL1
= 1 <<
PIC_IRQ_SERIAL1
,
70
PIC_MASKBIT_SERIAL2
= 1 <<
PIC_IRQ_SERIAL2
,
71
PIC_MASKBIT_PARALLEL1
= 1 <<
PIC_IRQ_PARALLEL1
,
72
PIC_MASKBIT_FLOPPY
= 1 <<
PIC_IRQ_FLOPPY
,
73
PIC_MASKBIT_PARALLEL2
= 1 <<
PIC_IRQ_PARALLEL2
,
74
PIC_MASKBIT_RTC
= 1 <<
PIC_IRQ_RTC
,
75
PIC_MASKBIT_MOUSE
= 1 <<
PIC_IRQ_MOUSE
,
76
PIC_MASKBIT_COPROCESSER
= 1 <<
PIC_IRQ_COPROCESSER
,
77
PIC_MASKBIT_HARDDISK1
= 1 <<
PIC_IRQ_HARDDISK1
,
78
PIC_MASKBIT_HARDDISK2
= 1 <<
PIC_IRQ_HARDDISK2
79
};
80
enum
81
{
82
PIC_INTERRUPT_TIMER
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_TIMER
,
83
PIC_INTERRUPT_KEYBOARD
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_KEYBOARD
,
84
PIC_INTERRUPT_SLAVE
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_SLAVE
,
85
PIC_INTERRUPT_SERIAL1
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_SERIAL1
,
86
PIC_INTERRUPT_SERIAL2
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_SERIAL2
,
87
PIC_INTERRUPT_PARALLEL1
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_PARALLEL1
,
88
PIC_INTERRUPT_FLOPPY
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_FLOPPY
,
89
PIC_INTERRUPT_PARALLEL2
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_PARALLEL2
,
90
PIC_INTERRUPT_RTC
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_RTC
,
91
PIC_INTERRUPT_MOUSE
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_MOUSE
,
92
PIC_INTERRUPT_COPROCESSER
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_COPROCESSER
,
93
PIC_INTERRUPT_HARDDISK1
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_HARDDISK1
,
94
PIC_INTERRUPT_HARDDISK2
=
PIC_INTERRUPT_NUMBER
+
PIC_IRQ_HARDDISK2
95
};
96
100
void
ckPicInitialize
(
void
);
101
106
void
ckPicMaskInterrupt
(uint16_t mask);
107
112
void
ckPicSendEOI
(uint8_t irq);
113
114
#endif
/* PIC_H_ */
PIC_MASKBIT_KEYBOARD
Definition:
pic.h:67
PIC_IRQ_SERIAL1
Definition:
pic.h:53
PIC_INTERRUPT_SERIAL2
Definition:
pic.h:86
PIC_MASTER_PORT2
Definition:
pic.h:41
PIC_INTERRUPT_FLOPPY
Definition:
pic.h:88
PIC_IRQ_PARALLEL2
Definition:
pic.h:57
PIC_MASKBIT_PARALLEL1
Definition:
pic.h:71
ckPicSendEOI
void ckPicSendEOI(uint8_t irq)
특정 IRQ에 EOI를 보냅니다.
Definition:
pic.c:56
PIC_INTERRUPT_NUMBER
Definition:
pic.h:45
PIC_IRQ_COPROCESSER
Definition:
pic.h:60
PIC_SLAVE_PORT1
Definition:
pic.h:42
PIC_INTERRUPT_MOUSE
Definition:
pic.h:91
PIC_IRQ_SLAVE
Definition:
pic.h:52
PIC_MASKBIT_FLOPPY
Definition:
pic.h:72
PIC_MASKBIT_PARALLEL2
Definition:
pic.h:73
PIC_IRQ_PARALLEL1
Definition:
pic.h:55
PIC_INTERRUPT_RTC
Definition:
pic.h:90
PIC_IRQ_SERIAL2
Definition:
pic.h:54
PIC_MASKBIT_SLAVE
Definition:
pic.h:68
PIC_INTERRUPT_COPROCESSER
Definition:
pic.h:92
PIC_INTERRUPT_HARDDISK2
Definition:
pic.h:94
PIC_MASKBIT_TIMER
Definition:
pic.h:66
PIC_MASKBIT_COPROCESSER
Definition:
pic.h:76
PIC_INTERRUPT_HARDDISK1
Definition:
pic.h:93
PIC_IRQ_FLOPPY
Definition:
pic.h:56
PIC_IRQ_TIMER
Definition:
pic.h:50
PIC_MASKBIT_SERIAL2
Definition:
pic.h:70
PIC_MASTER_PORT1
Definition:
pic.h:40
PIC_MASKBIT_HARDDISK1
Definition:
pic.h:77
PIC_MASKBIT_MOUSE
Definition:
pic.h:75
PIC_IRQ_RTC
Definition:
pic.h:58
PIC_SLAVE_PORT2
Definition:
pic.h:43
PIC_IRQ_KEYBOARD
Definition:
pic.h:51
PIC_INTERRUPT_TIMER
Definition:
pic.h:82
PIC_MASKBIT_HARDDISK2
Definition:
pic.h:78
PIC_INTERRUPT_SLAVE
Definition:
pic.h:84
PIC_INTERRUPT_SERIAL1
Definition:
pic.h:85
ckPicMaskInterrupt
void ckPicMaskInterrupt(uint16_t mask)
PIC 인터럽트를 마스크합니다.
Definition:
pic.c:50
PIC_IRQ_MOUSE
Definition:
pic.h:59
PIC_IRQ_HARDDISK2
Definition:
pic.h:62
PIC_INTERRUPT_PARALLEL2
Definition:
pic.h:89
ckPicInitialize
void ckPicInitialize(void)
PIC를 초기화합니다.
Definition:
pic.c:35
PIC_INTERRUPT_KEYBOARD
Definition:
pic.h:83
PIC_INTERRUPT_PARALLEL1
Definition:
pic.h:87
PIC_MASKBIT_SERIAL1
Definition:
pic.h:69
PIC_IRQ_HARDDISK1
Definition:
pic.h:61
PIC_MASKBIT_RTC
Definition:
pic.h:74
src
pic.h
생성시간 : 화 7월 29 2014 17:32:19, 프로젝트명 : Clubcos, 생성자 :
1.8.7