Index: arch/x86/boot/pmjump.S
===================================================================
--- arch/x86/boot/pmjump.S	(리비전 24)
+++ arch/x86/boot/pmjump.S	(작업 사본)
@@ -40,9 +40,9 @@
 	movw	$__BOOT_TSS, %di #di = 32(GDT_ENTRY_BOOT_TSS의 위치)
 
 	movl	%cr0, %edx		# cr0레지스터의 최하위 1bit를 0x1과 or 연산을 하면
-							# protected mode로활성화 된다. 
+					# protected mode로활성화 된다. 
 	orb	$X86_CR0_PE, %dl	# Protected mode
-							#define X86_CR0_PE	0x00000001 /* Protection Enable */
+					#define X86_CR0_PE	0x00000001 /* Protection Enable */
 	movl	%edx, %cr0		
 
 	#jmp $+2
Index: arch/x86/kernel/head_64.S
===================================================================
--- arch/x86/kernel/head_64.S	(리비전 24)
+++ arch/x86/kernel/head_64.S	(작업 사본)
@@ -84,8 +84,16 @@
 	 * Compute the delta between the address I am compiled to run at and the
 	 * address I am actually running at.
 	 */
+	/*
+	 * __START_KERNEL_map : _0xffffffff80000000 
+         * __START_KERNEL     :  0xffffffff81000000 
+	 * rbp 에실행시점의 주소를 넣고 (__START_KERNEL) 
+ 	 * compile된 시점의 주소에서 - _START_KERNEL_map (= 0x1000000) 값을 rbp에서 뺀다.
+	 * rbp는 실행시점의 주소가 변경되지 않은 경우 _START_KERNEL_map 값을 갖는다.
+ 	 * 이 방법으로 실행시점의 주소와 compile된 시점의 주소값의 차이 (delta)를 구한다.
+	 */
 	leaq	_text(%rip), %rbp
-	subq	$_text - __START_KERNEL_map, %rbp
+	subq	$_text - __START_KERNEL_map, %rbp  
 
 	/* Is the address not 2M aligned? */
 	movq	%rbp, %rax
@@ -96,6 +104,10 @@
 	/*
 	 * Is the address too large?
 	 */
+ 	/*
+	 * MAX_PHYSMEM_BITS = 46bit 이상의 값이라면
+	 * 잘못된 주소이므로 bad_address로 리턴한다.
+	 */
 	leaq	_text(%rip), %rax
 	shrq	$MAX_PHYSMEM_BITS, %rax
 	jnz	bad_address
@@ -103,6 +115,25 @@
 	/*
 	 * Fixup the physical addresses in the page table
 	 */
+	/*
+	 *
+	 *  RIP-relative addressing 을 다음과 같이 가정했음
+	 *  symbol + (value)(%rip)는 (symbol+(value))(%rip)로 보고
+	 *  symbol + (value)의 위치로 이동한다. 
+	 *  
+	 *  Kernel space는 64bit의 최대값 ffffffffffffffff - 2GB
+	 *  =  ffffffff80000000 의 주소를 사용한다. 
+	 * 
+	 *  15 ffffffff80000000 - ffffffffa0000000 (=512 MB) 
+	 *	 kernel text mapping, from phys 0
+	 *  16 ffffffffa0000000 - ffffffffff5fffff (=1526 MB)
+  	 *       module mapping space
+	 *  17 ffffffffff600000 - ffffffffffdfffff (=8 MB) vsyscalls
+ 	 *  18 ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
+	 *  위 memory map의 page table을 설정
+ 	 *
+	 *  2013. 10. 26. 
+	 */
 	addq	%rbp, early_level4_pgt + (L4_START_KERNEL*8)(%rip)
 
 	addq	%rbp, level3_kernel_pgt + (510*8)(%rip)
Index: arch/x86/kernel/vmlinux.lds.S
===================================================================
--- arch/x86/kernel/vmlinux.lds.S	(리비전 24)
+++ arch/x86/kernel/vmlinux.lds.S	(작업 사본)
@@ -85,11 +85,16 @@
         . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;
         phys_startup_32 = startup_32 - LOAD_OFFSET;
 #else
-        . = __START_KERNEL; /* 0xfffffff810000000 */
+        . = __START_KERNEL; /* 0xffffffff81000000 */
         phys_startup_64 = startup_64 - LOAD_OFFSET;
 #endif
 
 	/* Text and read-only data */
+	/* AT(ADDR(.text) - LOAD_OFFSET) => 0x1000000 실제 물리 주소값(LMA)
+	 * 코드 내부에서 사용하는 _text는=> 0xffffffff81000000 가상 물리 주소값(VMA)
+	 * 실제 커널은 0x1000000에 load되어있고, x86_64는 0xffffffff80000000 이후
+	 * 메모리 주소를 사용하므로 다음과 같이 AT() 형식을 사용한다. 
+   	 */
 	.text :  AT(ADDR(.text) - LOAD_OFFSET) {
 		_text = .;
 		/* bootstrapping code */


git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@25 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
[2013.11.09, 27차 스터디 정리]

; 금번 스터디에서 주석정리가 잘 되지 않았습니다.
  가능하면 향후 보완/정리해서 다시 커밋하도록 하겠습니다.

  - 김택훈 -


git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@26 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@27 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@28 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2013.11.23 x86 10차 head64.c분석


git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@29 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2013.11.30 
x86-10차 30회 커널 분석



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@30 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
 2013.12.14 x86 10차 커널 분석
 setup_arch() 분석중


git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@31 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2013.12.28 iamroot.org x86 10차

33회 커널 분석
  arch/x86/kernel/setup.c: setup_memory_map()
  arch/x86/kernel/setup.c: parse_setup_data()



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@32 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2014.1.4 iamroot.org x86 10차 34차 분석



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@33 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2014.1.18 iamroot.org 10차 x86 36차 분석



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@34 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2014.01.25 iamroot x86 10차 
37회 커널 분석


git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@35 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
asradad1 commit 2014.1.11 ~ 2014.2.8 source


git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@36 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2/22


git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@37 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@38 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2014.03.01 완료



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@39 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
build를 위해서 잘못된 주석 변경


git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@40 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2014.03.15 스터디



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@41 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2014.03.15 스터디 부족부분 주석추가



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@42 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2014.03.15 스터디중 부족부분 주석추가



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@43 d0ed7eea-84ab-4267-bc78-f5ef803aed0f
2014.03.17스터디내용 첨부



git-svn-id: http://iamroot.org/svn/kernel-10-x86/linux-3.10.4@44 d0ed7eea-84ab-4267-bc78-f5ef803aed0f