head	1.5;
access;
symbols;
locks
	root:1.5; strict;
comment	@# @;


1.5
date	2010.03.12.10.47.55;	author root;	state Exp;
branches;
next	1.4;

1.4
date	2010.03.12.10.47.35;	author root;	state Exp;
branches;
next	1.3;

1.3
date	2010.03.12.10.46.54;	author root;	state Exp;
branches;
next	1.2;

1.2
date	2010.03.11.14.30.36;	author root;	state Exp;
branches;
next	1.1;

1.1
date	2010.03.11.13.00.59;	author root;	state Exp;
branches;
next	;


desc
@/opt/nforge/var/wiki/mimic/data/text/MMU
@


1.5
log
@58.227.230.63;;hoppang 호빵 ;;
@
text
@== 섹션 변환 예제 ==

 * 예제의 가상주소는 0xA000A6E4

 * Translation Table Base는 0xA0004000

=== virtual address ===

1010 0000 0000 (테이블 색인/12비트) / 0000 1010 0110 1110 0100 (섹션 색인/20비트)

=== CP15 레지스터 2 - Translation Table Base ===

1010 0000 0000 0000 01 (TTB 주소/18비트) / --- (14비트)

 이 값은 미리 들어가 있는 값이다. 즉 MMU 활성화 전에 미리 Translation Table Base를 지정해 줘야 함.

=== 메모리 접근 ===

1010 0000 0000 0000 01 (TTB 주소/18비트) / 1010 0000 0000 (테이블 색인/12비트) / 00

-> 0xA0006800

테스트용 가상머신의 TTB를 뒤져보면

 * 00006800:a0000c1e

이런 값이 들어있다.

=== Translation Table Base 주소 해석 ===

A0000C1E

1010 0000 0000 / 0000 0000 / 11 / 0 / 0000 / 1 / 1 / 1 / 10

 * 1010 0000 0000 (섹션 기본 주소/12비트) / 0000 0000 / 11 (AP/2비트) / 0 / 0000 (도메인/4비트) / 1 (?/1비트) / 1 (C, 1비트) / (B, 1비트) / 10 (엔트리 종류, 0b10은 섹션, 2비트)

여기에서 섹션 기본 주소 밑을 잘라내고(AP, 도메인 등은  일단 생략) 거기에 섹션 색인을 붙이면

* 1010 0000 0000 / 0000 1010 0110 1110 0100

=> 0xA000A6E4... 그대로다.
@


1.4
log
@58.227.230.63;;hoppang 호빵 ;;
@
text
@d3 1
a3 1
* 예제의 가상주소는 0xA000A6E4
d5 1
a5 1
* Translation Table Base는 0xA0004000
d25 1
a25 1
* 00006800:a0000c1e
d35 1
a35 1
* 1010 0000 0000 (섹션 기본 주소/12비트) / 0000 0000 / 11 (AP/2비트) / 0 / 0000 (도메인/4비트) / 1 (?/1비트) / 1 (C, 1비트) / (B, 1비트) / 10 (엔트리 종류, 0b10은 섹션, 2비트)
@


1.3
log
@58.227.230.63;;hoppang 호빵 ;;
@
text
@d15 2
@


1.2
log
@58.227.230.63;;hoppang 호빵 ;;
@
text
@d1 1
a1 1
가상주소->물리주소 변환하기
d3 1
a3 1
Translation Table Base는 0xA0004000 (~0xA0008000)
d5 1
a5 1
가상 주소 A000A6E4
d7 1
a7 1
TTB의 상위 18비트 + 가상주소의 상위 12비트 + 0b00
d9 1
a9 1
1010 0000 0000 0000 01 / 1010 0000 0000 / 00
d11 1
a11 1
-> 0xA0006800 (1차 변환이 이루어진 후의 주소)
d13 1
a13 1
=== 2차 레벨 페이지 디스크립터의 주소 계산 ===
d15 1
a15 1
가상주소 0xA000A6E4
d17 1
a17 1
 * 1010 0000 0000 / 0000 1010 0110 1110 0100
d19 1
a19 1
table index / section index
d21 1
a21 1
A00 / 0A6E4
d23 1
a23 1
CP15 레지스터
d25 1
a25 1
 * 1010 0000 0000 0000 01 / 00 0000 0000 0000
d27 1
a27 1
translation table base address / -
d29 1
a29 1
메모리 접근
d31 1
a31 1
 * 1010 0000 0000 0000 01 / 1010 0000 0000 / 00
d33 1
a33 1
translation table base address / table index / 00
d35 1
a35 1
0xA0006800
d37 1
a37 1
->
d39 1
a39 1
* 
@


1.1
log
@58.227.230.63;;hoppang 호빵 ;;
@
text
@d15 1
a15 1
* 1차레벨 디스크립터의 31~10 비트(총 22비트) + 가상주소의 19~12비트(8비트) + ??
d17 1
a17 1
하여 2차 레벨 페이지 디스크립터의 베이스 주소 계산
d19 1
a19 1
* 1010 0000 0000 0000 0110 10 / 0000 0110 / 00?
d21 1
a21 1
-> 0xA0006814
d23 17
a39 1
(틀린거 같다.. 수정중)
@
