ARM64- Stack Push Userspace -> Kernel Space 코드리뷰
By Guillermo Austin Kim | 2017년 12월 31일 |
유저 공간에서 실행된 레지스터가 커널 Bottom Stack에 Push 되는 디버깅 정보를 예전 페이지에 업데이트했잖아요.아래와 같은 메모리 덤프를 확인했었죠.(출처:http://rousalome.egloos.com/9966225)NUD:FFFFFFE4DE6A7EB8| 3C 6B 77 2B 46 76 A8 C2 0xC2A876462B776B3CNUD:FFFFFFE4DE6A7EC0| 45 00 00 00 00 00 00 00 0x45 // x0 NUD:FFFFFFE4DE6A7EC8| 80 37 81 AF 7B 00 00 00 0x7BAF813780 // x1NUD:FFFFFFE4DE6A7ED0| 16 00 00 00 00 00 00 00 0x16 // x2NUD:FFFFFF
[Trace32] 폰트 색상 변경 - setup.color
By Guillermo Austin Kim | 2018년 5월 26일 |
config.t32 파일에 다음 명령어를 입력하면 Trace32 폰트 색상이 바뀝니다.PALETTE 0 = 56 56 56PALETTE 1 = 221 221 221PALETTE 4 = 128 0 255PALETTE 11 = 255 0 0PALETTE 18 = 255 128 64PALETTE 27 = 255 128 64PALETTE 48 = 128 128 0PALETTE 50 = 255 128 64. Trace32를 열고 setup.color을 입력해서 폰트나 텍스트 상자 색상을 바꿀 수도 있습니다.
[리눅스커널] Arm64: VMEMMAP_START, vmemmap, PAGE_OFFSET 위치 조정(v5.4)
By Guillermo Austin Kim | 2021년 8월 8일 |
리눅스 커널 v5.4 버전부터 가상 주소 맵이 약간 변경됐습니다.그 중 대표적인 속성은 아래 정보입니다. VMEMMAP_START: 0xfffffffeffe00000PAGE_OFFSET: 0xffffff8000000000 이 정보를 직접 어셈블리 코드로 확인해보겠습니다. 관련 코드는 참고로 다음과 같습니다. vmemmap ((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT)) 패치 코드 먼저 다음과 같은 패치 코드를 작성합시다. diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.cindex 9af647d..3000332 100644--- a/arch/arm64/mm/
[Arm프로세서] AAPCS: Armv7: AAPCS와 관련된 레지스터와 어셈블리 명령어 분석
By Guillermo Austin Kim | 2021년 6월 14일 |
6.1절에서 Arm 스팩 문서 분석으로 AAPCS와 관련된 레지스터를 소개했고, 6.2절에서는 AAPCS와 관련된 어셈블리 명령어에 대해 살펴봤습니다. 이번 절에서는 AAPCS와 관련된 레지스터가 어떻게 사용되는지, 어셈블리 명령어와 함께 분석하면서 자세히 알아보겠습니다. 먼저 AAPCS와 연관된 레지스터의 목록을 알아볼까요? 표 6.4 AAPCS와 연관된 레지스터 먼저 SP 레지스터에 대해 소개하고, SP 레지스터가 어떻게 바뀌는지 어셈블리 명령어 분석으로 알아보겠습니다. Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자