[coreboot-gerrit] Change in ...coreboot[master]: helper functions: memcpy, memset, ...
Iru Cai (Code Review)
gerrit at coreboot.org
Wed Dec 12 10:58:29 CET 2018
Iru Cai has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/30188
Change subject: helper functions: memcpy, memset, ...
......................................................................
helper functions: memcpy, memset, ...
Change-Id: Ifebe96f655c13d7c17ac09f520581d7df7e3cf7d
Signed-off-by: Iru Cai <mytbk920423 at gmail.com>
---
M src/northbridge/intel/haswell/Makefile.inc
M src/northbridge/intel/haswell/mrc.asm
A src/northbridge/intel/haswell/mrc_utils.c
3 files changed, 231 insertions(+), 303 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/88/30188/1
diff --git a/src/northbridge/intel/haswell/Makefile.inc b/src/northbridge/intel/haswell/Makefile.inc
index a450eb5..7f53f78 100644
--- a/src/northbridge/intel/haswell/Makefile.inc
+++ b/src/northbridge/intel/haswell/Makefile.inc
@@ -34,6 +34,8 @@
$(obj)/mrc.o: $(src)/northbridge/intel/haswell/mrc.asm
nasm -f elf32 -o $@ $<
+romstage-y += mrc_utils.c
+
postcar-y += ram_calc.c
endif
diff --git a/src/northbridge/intel/haswell/mrc.asm b/src/northbridge/intel/haswell/mrc.asm
index cc4361b..feca76f 100644
--- a/src/northbridge/intel/haswell/mrc.asm
+++ b/src/northbridge/intel/haswell/mrc.asm
@@ -5,6 +5,12 @@
global mrc_entry
extern mrc_printk
+extern mrc_setmem
+extern mrc_memcpy
+extern memcpy ; pass parameters by stack
+extern mrc_fillword
+extern mrc_zeromem
+extern mrc_highest_bit
mrc_entry:
mov ecx, esp
@@ -1558,75 +1564,6 @@
pop ebp
ret
-fcn_fffa115e:
-push ebp
-mov ebp, esp
-push esi
-mov esi, ecx
-push ebx
-xor ebx, ebx
-jmp short loc_fffa1170 ; jmp 0xfffa1170
-
-loc_fffa1169:
-mov cl, byte [edx + ebx]
-mov byte [eax + ebx], cl
-inc ebx
-
-loc_fffa1170:
-cmp ebx, esi
-jne short loc_fffa1169 ; jne 0xfffa1169
-pop ebx
-pop esi
-pop ebp
-ret
-
-fcn_fffa1178: ; not directly referenced
-push ebp
-mov ebp, esp
-mov ecx, dword [ebp + 0x10]
-mov edx, dword [ebp + 0xc]
-mov eax, dword [ebp + 8]
-pop ebp
-jmp near fcn_fffa115e ; jmp 0xfffa115e
-
-fcn_fffa118a:
-push ebp
-test edx, edx
-mov ebp, esp
-jne short loc_fffa1197 ; jne 0xfffa1197
-jmp short loc_fffa119d ; jmp 0xfffa119d
-
-loc_fffa1193:
-mov byte [eax + edx], 0
-
-loc_fffa1197:
-dec edx
-cmp edx, 0xffffffffffffffff
-jne short loc_fffa1193 ; jne 0xfffa1193
-
-loc_fffa119d:
-pop ebp
-ret
-
-fcn_fffa119f: ; not directly referenced
-push ebp
-test edx, edx
-mov ebp, esp
-jne short loc_fffa11ab ; jne 0xfffa11ab
-jmp short loc_fffa11b1 ; jmp 0xfffa11b1
-
-loc_fffa11a8: ; not directly referenced
-mov byte [eax + edx], cl
-
-loc_fffa11ab: ; not directly referenced
-dec edx
-cmp edx, 0xffffffffffffffff
-jne short loc_fffa11a8 ; jne 0xfffa11a8
-
-loc_fffa11b1: ; not directly referenced
-pop ebp
-ret
-
fcn_fffa11b3:
push ebp
mov ebp, esp
@@ -2477,7 +2414,7 @@
mov ecx, 0x100
lea eax, [edx + 0x40]
mov edx, dword [ebp - 0x2c]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov edx, dword [ebp - 0x20]
add esp, 0x10
mov byte [edx + 0x14e], 0
@@ -3450,7 +3387,7 @@
mov dword [ebp - 0x1dc], eax
mov dword [ebp - 0x230], fcn_fffa04e7 ; mov dword [ebp - 0x230], 0xfffa04e7
lea eax, [ebp - 0x565]
-mov dword [ebp - 0x224], fcn_fffa1178 ; mov dword [ebp - 0x224], 0xfffa1178
+mov dword [ebp - 0x224], memcpy ; mov dword [ebp - 0x224], 0xfffa1178
mov dword [ebp - 0x1d0], eax
mov dword [ebp - 0x21c], fcn_fffa04ee ; mov dword [ebp - 0x21c], 0xfffa04ee
lea eax, [ebp - 0x585]
@@ -3826,18 +3763,18 @@
mov esi, eax
je short loc_fffa3d32 ; je 0xfffa3d32
mov edx, 0xc
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov eax, 0x28
call fcn_fffa2937 ; call 0xfffa2937
test eax, eax
mov edi, eax
je short loc_fffa3d32 ; je 0xfffa3d32
mov edx, 0x28
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov ecx, 0x28
mov edx, ref_fffcc8dc ; mov edx, 0xfffcc8dc
mov eax, edi
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov dword [esi + 8], edi
mov dword [esi], 0x80000010
mov dword [esi + 4], ref_fffcd534 ; mov dword [esi + 4], 0xfffcd534
@@ -4005,15 +3942,15 @@
lea edi, [eax + 8]
add eax, 0x18
rep movsd ; rep movsd dword es:[edi], dword ptr [esi]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov eax, dword [ebp - 0x620]
mov edx, 8
add eax, 0x20
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov eax, dword [ebp - 0x620]
mov edx, 0x1e
add eax, 0x29
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov eax, dword [ebp - 0x620]
add esp, 0x10
mov byte [eax + 0x28], 0
@@ -4927,10 +4864,10 @@
loc_fffa4e1b:
mov edx, 7
lea eax, [ebp - 0x5f6]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov edx, 7
lea eax, [ebp - 0x5ef]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov eax, dword [0xff7d7538]
sub esp, 0xc
lea ecx, [ebp - 0x620]
@@ -4960,14 +4897,14 @@
loc_fffa4e85:
mov edx, 5
lea eax, [ebp - 0x5fb]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov edx, 8
lea eax, [ebp - 0x5b4]
mov byte [ebp - 0x5f7], bl
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov edx, 8
lea eax, [ebp - 0x5b4]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov al, byte [ebp - 0x5f7]
sub esp, 0xc
mov byte [ebp - 0x5af], al
@@ -5011,14 +4948,14 @@
loc_fffa4f70:
mov edx, 7
lea eax, [ebp - 0x5f6]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov edx, 8
lea eax, [ebp - 0x5b4]
mov byte [ebp - 0x5f0], bl
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov edx, 8
lea eax, [ebp - 0x5b4]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov al, byte [ebp - 0x5f0]
sub esp, 0xc
mov byte [ebp - 0x5af], al
@@ -5056,7 +4993,7 @@
jne loc_fffa532b ; jne 0xfffa532b
mov edx, 7
lea eax, [ebp - 0x5ef]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
cmp bl, 1
mov byte [ebp - 0x5e9], bl
jne loc_fffa520e ; jne 0xfffa520e
@@ -5100,7 +5037,7 @@
lea eax, [ebp - 0x5c4]
mov byte [ebp - 0x668], cl
movzx esi, word [ebp - 0x5ed]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
mov cl, byte [ebp - 0x668]
mov eax, esi
mov byte [ebp - 0x5b4], cl
@@ -5136,7 +5073,7 @@
mov word [ebp - 0x5b2], ax
lea edx, [ebp - 0x5b4]
lea eax, [ebp - 0x5c4]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov dl, byte [ebp - 0x65a]
mov eax, 2
mov byte [ebp - 0x5bf], dl
@@ -5190,7 +5127,7 @@
lea eax, [ebp - 0x5e8]
mov dword [ebp - 0x5b8], esi
or byte [ebp - 0x5b5], 0x80
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov eax, dword [ebp - 0x5e8]
mov edx, dword [ebp - 0x5e4]
mov ecx, 0x150
@@ -5204,7 +5141,7 @@
mov dword [ebp - 0x5e4], edx
lea eax, [ebp - 0x5bc]
lea edx, [ebp - 0x5e8]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov eax, 0xa
call fcn_fffc5e98 ; call 0xfffc5e98
mov edx, dword [ebp - 0x648]
@@ -5214,7 +5151,7 @@
lea edx, [ebp - 0x5e8]
mov ecx, 8
lea eax, [ebp - 0x5b4]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov ecx, dword [ebp - 0x5b0]
cmp dword [ebp - 0x5b8], ecx
je short loc_fffa531e ; je 0xfffa531e
@@ -5576,16 +5513,16 @@
mov edx, 2
lea eax, [ebp - 0x5e]
mov dword [ebp - 0xd4], esi
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
lea edx, [ebp - 0x3b]
mov ecx, 5
lea eax, [ebp - 0x36]
mov esi, 0xcf8
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
lea edx, [ebp - 0x4d]
mov ecx, 4
lea eax, [ebp - 0x49]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
lea edx, [ebx + 0x2974]
mov eax, 0x80000000
mov dword [ebp - 0xa4], edx
@@ -7811,7 +7748,7 @@
mov edi, dword [ebp - 0x24]
cmp dword [ebp - 0x28], edi
jne short loc_fffa761b ; jne 0xfffa761b
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
mov edi, dword [ebp - 0x70]
sub eax, 9
or edi, 0x40
@@ -9358,31 +9295,31 @@
mov dword [ebp - 0x48], ref_fffcb78c ; mov dword [ebp - 0x48], 0xfffcb78c
mov dword [ebp - 0x44], ref_fffcb7ec ; mov dword [ebp - 0x44], 0xfffcb7ec
mov dword [ebp - 0xc4], 0
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 8
lea eax, [ebp - 0x38]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 8
lea eax, [ebp - 0x30]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 8
lea eax, [ebp - 0x28]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 8
lea eax, [ebp - 0x20]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 0xff
mov edx, 4
lea eax, [ebp - 0x58]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 4
lea eax, [ebp - 0x54]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
cmp dword [edi + 0x1749], 2
jne short loc_fffa8917 ; jne 0xfffa8917
mov word [ebp - 0x5c], 8
@@ -10018,7 +9955,7 @@
pop ebp
mov ecx, 4
mov edx, ref_fffcb7f8 ; mov edx, 0xfffcb7f8
-jmp near fcn_fffa115e ; jmp 0xfffa115e
+jmp mrc_memcpy
loc_fffa91ad:
pop ebp
@@ -10340,7 +10277,7 @@
mov byte [ebp - 0x1f5], 0
mov dword [ebp - 0x248], ebx
movzx edi, byte [esi + 0x176b]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov eax, dword [esi + 0x1005]
cmp eax, 0x40650
je short loc_fffa95ba ; je 0xfffa95ba
@@ -11238,7 +11175,7 @@
mov word [ebp - 0x206], 0x1000
mov word [ebp - 0x204], 0x1000
mov word [ebp - 0x202], 0x1000
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov edi, dword [ebp - 0x250]
mov eax, 2
cmp dword [edi + 0x297c], 2
@@ -11551,7 +11488,7 @@
lea edx, [esi + eax + 0xa]
lea eax, [ecx + eax + 8]
mov ecx, 0x2a
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
cmp edi, 4
jne short loc_fffaa747 ; jne 0xfffaa747
xor di, di
@@ -11574,13 +11511,13 @@
mov ecx, 0xfb
lea eax, [edx + eax + 0x1151]
mov edx, dword [ebp - 0x3c]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
imul eax, edi, 0x1f
mov ecx, 0x1f
lea edx, [esi + eax + 0x2a8]
mov eax, dword [ebp - 0x34]
add eax, 0x81
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
loc_fffaa7ca: ; not directly referenced
inc edi
@@ -11771,7 +11708,7 @@
mov dword [ebp - 0x48], 0
mov byte [ebp - 0x56], 0
mov byte [ebp - 0x55], 0
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
cmp byte [ebx + 0x1740], 1
je short loc_fffaaa2c ; je 0xfffaaa2c
cmp byte [ebx + 0x16b8], 1
@@ -12109,7 +12046,7 @@
xor ecx, ecx
mov edx, 0x2c
lea eax, [ebp - 0x44]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
cmp byte [ebx + 0x1740], 1
jne short loc_fffaae92 ; jne 0xfffaae92
cmp dword [ebx + 0x297c], 2
@@ -12311,7 +12248,7 @@
imul eax, dword [ebp - 0x74]
mov dword [ebp - 0x90], edx
dec eax
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
mov edx, dword [ebp - 0x90]
mov ecx, dword [ebx + 0x103f]
add ecx, edx
@@ -12517,28 +12454,28 @@
mov ecx, 0x2a
lea edx, [esi + eax + 8]
lea eax, [edi + eax + 0xa]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 4
jne short loc_fffab320 ; jne 0xfffab320
lea edx, [esi + 0x1151]
mov ecx, 0xfb
lea eax, [edi + 0xb2]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov edx, dword [ebp - 0x24]
mov ecx, 0x1f
add edx, 0xa1
lea eax, [edi + 0x2a8]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
lea edx, [esi + 0x124c]
mov ecx, 0xfb
lea eax, [edi + 0x1ad]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov edx, dword [ebp - 0x24]
lea eax, [edi + 0x2c7]
add edx, 0x1f0
mov ecx, 0x1f
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 2
jne loc_fffab2cd ; jne 0xfffab2cd
@@ -12625,7 +12562,7 @@
lea eax, [ebp - 0x218]
push ebx
lea esp, [esp - 0x39c]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ebx, dword [ebp + 8]
add ebx, 0x16be
mov dword [ebp - 0x380], ebx
@@ -12648,14 +12585,14 @@
rep movsd ; rep movsd dword es:[edi], dword ptr [esi]
lea eax, [ebp - 0x2a8]
lea ebx, [ebp - 0x2a8]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0xc
lea eax, [ebp - 0x2c8]
mov byte [ebp - 0x2a7], 1
lea esi, [ebp - 0x298]
mov edi, 1
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
jmp short loc_fffab5b9 ; jmp 0xfffab5b9
loc_fffab57e: ; not directly referenced
@@ -12736,7 +12673,7 @@
imul eax, edi, 0x2fa
mov esi, dword [ebp - 0x344]
lea eax, [esi + eax + 0x2b3]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
lea eax, [ebx - 0x3010]
mov dword [ebp - 0x33c], eax
xor eax, eax
@@ -12975,11 +12912,11 @@
lea eax, [ebp - 0x2a8]
mov bl, byte [ebx + 0x176a]
mov byte [ebp - 0x37c], bl
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x48
lea eax, [ebp - 0x260]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ebx, dword [ebp + 8]
mov eax, 0x3074
add ebx, 0x2974
@@ -13188,17 +13125,17 @@
mov edx, 0x10
lea ebx, [ebp - 0x2e8]
mov eax, ebx
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x10
lea eax, [ebp - 0x308]
lea esi, [ebp - 0x330]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x10
lea eax, [ebp - 0x2c8]
lea edi, [ebp - 0x338]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov eax, dword [ebp + 8]
mov dword [ebp - 0x368], esi
mov dword [ebp - 0x344], edi
@@ -13532,11 +13469,11 @@
lea eax, [ebp - 0x2a8]
mov bl, byte [ebx + 0x176a]
mov byte [ebp - 0x348], bl
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x48
lea eax, [ebp - 0x260]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ebx, dword [ebp + 8]
mov eax, 0x3074
add ebx, 0x2974
@@ -13762,12 +13699,12 @@
mov edx, 4
lea eax, [ebp - 0x2c8]
lea ebx, [ebp - 0x308]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 4
lea eax, [ebp - 0x2e8]
lea esi, [ebp - 0x2a8]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov eax, dword [ebp + 8]
mov dword [ebp - 0x340], ebx
add eax, 0x10b7
@@ -14270,7 +14207,7 @@
mov eax, dword [ebp - 0x340]
xor edx, edx
add eax, 0xf9
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffacafd: ; not directly referenced
inc edi
@@ -14820,7 +14757,7 @@
movzx ecx, byte [ebx + 0x1755]
add eax, 0xf9
xor edx, edx
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffad2d3: ; not directly referenced
inc esi
@@ -14889,11 +14826,11 @@
xor ecx, ecx
lea eax, [ebp - 0x21]
mov edi, dword [ebp + 0x10]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 1
mov edx, 7
lea eax, [ebp - 0x1f]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
movzx eax, byte [ebp - 0x2a]
mov dl, byte [ebp - 0x48]
shr edx, 1
@@ -15100,19 +15037,19 @@
mov ebx, dword [ebp + 0xc]
mov byte [ebp - 0x1a], 0xf8
mov byte [ebp - 0x19], 8
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 2
lea eax, [ebp - 0x22]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 2
lea eax, [ebp - 0x1e]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 0x7f
mov edx, 2
lea eax, [ebp - 0x1c]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
movzx esi, byte [ebp - 0x35]
xor edx, edx
mov ecx, esi
@@ -15864,7 +15801,7 @@
mov esi, dword [ebp + 8]
mov bl, byte [esi + 0x176a]
mov byte [ebp - 0x31], bl
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
cmp dword [esi + 0x1749], 2
mov eax, esi
movzx edx, byte [esi + 0x176b]
@@ -15898,7 +15835,7 @@
xor edx, edx
movzx ecx, byte [esi + 0x1755]
add eax, 0x107
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffade76: ; not directly referenced
inc edi
@@ -16173,7 +16110,7 @@
mov eax, dword [ebp - 0x160]
xor edx, edx
add eax, 0xf9
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffae176: ; not directly referenced
inc edi
@@ -16540,7 +16477,7 @@
lea eax, [ebx + 0xf9]
xor edx, edx
movzx ecx, byte [esi + 0x1755]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
add ebx, dword [ebp - 0x148]
xor eax, eax
mov dword [ebp - 0x144], ebx
@@ -19215,7 +19152,7 @@
mov ecx, 1
mov bl, byte [ebp + 8]
mov edi, dword [ebp + 0xc]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
cmp byte [ebp - 0x155], 0xb
mov al, byte [ebp - 0x155]
setne byte [ebp - 0x156]
@@ -19355,7 +19292,7 @@
loc_fffb05cf: ; not directly referenced
lea eax, [ebx + 0xf9]
xor edx, edx
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov edx, edi
mov eax, dword [esi + 0x103f]
shl edx, 0xa
@@ -20023,7 +19960,7 @@
ja loc_fffb1cc4 ; ja 0xfffb1cc4
mov edx, 0x10
lea eax, [ebp - 0xc68]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor eax, eax
loc_fffb0e06: ; not directly referenced
@@ -20057,14 +19994,14 @@
xor ecx, ecx
mov edx, 0x1c
lea eax, [ebp - 0xc04]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
jmp short loc_fffb0ea6 ; jmp 0xfffb0ea6
loc_fffb0e90: ; not directly referenced
mov ecx, 0x1c
lea edx, [ebp - 0xc20]
lea eax, [ebp - 0xc04]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
loc_fffb0ea6: ; not directly referenced
mov dword [ebp - 0xcd0], 0
@@ -20117,7 +20054,7 @@
movzx ecx, byte [eax + 0x1755]
imul eax, ebx, 0x1347
lea eax, [esi + eax + 0x101]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffb0fa2: ; not directly referenced
inc ebx
@@ -20165,7 +20102,7 @@
mov edx, 0x18
movzx ecx, byte [eax + 0x1755]
mov eax, ebx
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov eax, dword [ebp - 0xc7c]
mov edx, 0x18
movzx ecx, byte [eax + 0x1755]
@@ -20176,24 +20113,24 @@
mov edx, 1
movzx ecx, byte [eax + 0x1755]
lea eax, [ebp - 0xba0]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov eax, dword [ebp - 0xc7c]
mov edx, 1
movzx ecx, byte [eax + 0x1755]
lea eax, [ebp - 0xbe8]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov eax, dword [ebp - 0xc7c]
mov edx, 1
movzx ecx, byte [eax + 0x1755]
lea eax, [ebp - 0xb7c]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov eax, dword [ebp - 0xc7c]
mov edx, 1
movzx ecx, byte [eax + 0x1755]
loc_fffb10d3: ; not directly referenced
lea eax, [ebp - 0xbc4]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffb10de: ; not directly referenced
push eax
@@ -20556,7 +20493,7 @@
mov eax, dword [ebp - 0xc84]
xor edx, edx
add eax, 0xf9
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffb1640: ; not directly referenced
inc esi
@@ -20595,12 +20532,12 @@
mov edx, 0x18
movzx ecx, byte [eax + 0x1755]
mov eax, ebx
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov eax, dword [ebp - 0xc7c]
mov edx, 0x18
movzx ecx, byte [eax + 0x1755]
lea eax, [ebp - 0xbc4]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffb16f9: ; not directly referenced
mov bl, byte [ebp - 0xca8]
@@ -20638,7 +20575,7 @@
add eax, esi
mov edx, 8
inc ebx
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
add dword [ebp - 0xc90], 0x24
cmp ebx, 2
jne short loc_fffb175b ; jne 0xfffb175b
@@ -20936,7 +20873,7 @@
mov eax, dword [ebp - 0xc94]
xor edx, edx
add eax, 0xf9
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffb1bd2: ; not directly referenced
inc edi
@@ -21465,42 +21402,6 @@
pop ebp
ret
-fcn_fffb21bf: ; not directly referenced
-cmp eax, 0xffffffffffffffff
-je short loc_fffb21e7 ; je 0xfffb21e7
-push ebp
-xor ecx, ecx
-xor edx, edx
-mov ebp, esp
-push edi
-push esi
-push ebx
-mov ebx, 1
-
-loc_fffb21d3: ; not directly referenced
-mov edi, ebx
-lea esi, [ecx + 1]
-shl edi, cl
-test edi, eax
-cmovne edx, esi
-inc ecx
-cmp ecx, 0x20
-jne short loc_fffb21d3 ; jne 0xfffb21d3
-jmp short loc_fffb21ec ; jmp 0xfffb21ec
-
-loc_fffb21e7: ; not directly referenced
-xor edx, edx
-mov al, dl
-ret
-
-loc_fffb21ec: ; not directly referenced
-pop ebx
-mov al, dl
-pop esi
-pop edi
-pop ebp
-ret
-
fcn_fffb21f3: ; not directly referenced
push ebp
mov ebp, esp
@@ -21516,19 +21417,19 @@
mov ecx, 1
mov edx, 8
lea eax, [ebp - 0x38]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 8
lea eax, [ebp - 0x30]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 9
mov edx, 8
lea eax, [ebp - 0x28]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor edx, edx
mov ecx, 2
lea eax, [ebp - 0x20]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
cmp byte [ebp - 0x49], 1
jne short loc_fffb2278 ; jne 0xfffb2278
mov byte [ebp - 0x35], 0xa
@@ -21615,7 +21516,7 @@
mov byte [ebp - 0x70], dl
movzx eax, dl
dec eax
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
mov dl, byte [ebp - 0x70]
cmp dl, 0x1f
jbe short loc_fffb2368 ; jbe 0xfffb2368
@@ -21924,7 +21825,7 @@
mov dword [ebp - 0x41], 0
mov dword [ebp - 0x3d], 0
mov ebx, dword [ebp + 0x24]
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
mov cl, byte [ebp - 0x49]
mov byte [ebp - 0x5d], al
inc ecx
@@ -21963,7 +21864,7 @@
jbe short loc_fffb271d ; jbe 0xfffb271d
movzx edx, dx
lea eax, [edx - 1]
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
mov byte [ebp - 0x98], al
loc_fffb271d: ; not directly referenced
@@ -21971,7 +21872,7 @@
mov si, word [eax]
movzx eax, si
dec eax
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
cmp si, 0x1f
jbe short loc_fffb273d ; jbe 0xfffb273d
mov edx, dword [ebp + 0x18]
@@ -22662,7 +22563,7 @@
add edi, 0x1774
mov dword [ebp - 0x40], edi
xor edi, edi
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
sub esp, 0xc
mov eax, dword [ebp + 8]
push 0
@@ -22700,7 +22601,7 @@
mov edx, dword [ebp - 0x3c]
lea eax, [edx + eax + 0x101]
xor edx, edx
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffb2f0f: ; not directly referenced
cmp byte [ebp - 0x29], 0
@@ -24237,19 +24138,19 @@
xor ecx, ecx
mov dword [ebp - 0x1f8], ebx
lea esi, [edi + 0x2974]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 0xf8
mov edx, 0x12
lea eax, [ebp - 0x1a4]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 0xff
mov edx, 0x12
lea eax, [ebp - 0x16e]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x12
lea eax, [ebp - 0x180]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov dword [ebp - 0x1c4], 0x64
xor eax, eax
mov dword [ebp - 0x1c0], esi
@@ -24578,11 +24479,11 @@
mov edx, 0xa2
lea eax, [ebp - 0x15c]
lea esi, [edi + 0x2974]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0xa2
lea eax, [ebp - 0xba]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
cmp dword [ebp - 0x1f8], 1
mov dword [ebp - 0x1c0], 1
sbb ebx, ebx
@@ -24949,11 +24850,11 @@
mov byte [ebp - 0x42], 2
mov byte [ebp - 0x41], 3
mov dword [ebp - 0x54], esi
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov ecx, 6
lea edx, [ebp - 0x3c]
lea eax, [ebp - 0x36]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov eax, dword [ebp - 0x4c]
xor edx, edx
cmp dword [eax + 0x1749], 2
@@ -26710,23 +26611,23 @@
mov byte [ebp - 0xbd65], 0
mov byte [ebp - 0xbd7f], 6
mov byte [ebp - 0xbd7e], 5
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0xb77a
lea eax, [ebp - 0xb792]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x15e
lea eax, [ebp - 0xbd52]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 2
lea eax, [ebp - 0xbd85]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 8
lea eax, [ebp - 0xbd64]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov edi, dword [ebp + 8]
mov dl, bl
xor edx, 1
@@ -29647,16 +29548,16 @@
push ebx
lea esp, [esp - 0x19c]
mov ebx, dword [ebp + 8]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 2
lea eax, [ebp - 0x15e]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x130
lea eax, [ebp - 0x148]
lea esi, [ebx + 0x16be]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor eax, eax
cmp dword [ebx + 0x1749], 2
sete al
@@ -29694,7 +29595,7 @@
movzx ecx, byte [ebx + 0x1755]
lea eax, [edx + eax + 0x13b7]
xor edx, edx
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffb8136: ; not directly referenced
inc esi
@@ -29764,11 +29665,11 @@
mov edx, 2
lea eax, [ebp - 0x15c]
lea esi, [ebp - 0x15a]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 2
mov eax, esi
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
lea ecx, [ebp - 0x15c]
xor edx, edx
push ecx
@@ -30808,7 +30709,7 @@
mov dword [ebp - 0x34], eax
mov edx, 4
mov eax, dword [ebp + 0xc]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov eax, dword [ebp - 0x2c]
shl eax, 0xa
mov ebx, eax
@@ -31876,7 +31777,7 @@
mov edx, ebx
mov byte [eax + 0x1c], 1
add eax, 0x1d
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
jmp near loc_fffb9cc6 ; jmp 0xfffb9cc6
loc_fffb9a24:
@@ -33405,11 +33306,11 @@
mov dword [ebp - 0x229], 0
mov dword [ebp - 0x225], 3
mov byte [ebp - 0x221], 0
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
xor ecx, ecx
mov edx, 8
lea eax, [ebp - 0x24c]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor edx, edx
cmp dword [ebx + 0x1749], 2
sete dl
@@ -34015,11 +33916,11 @@
lea eax, [esi + 0x16be]
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x28]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 1
mov edx, 3
lea eax, [ebp - 0x3b]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
sub esp, 0xc
mov ecx, 0x11
movzx edx, byte [esi + 0x176b]
@@ -34056,7 +33957,7 @@
movzx ecx, byte [esi + 0x1755]
add eax, 0x107
xor edx, edx
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffbb8d9: ; not directly referenced
inc ebx
@@ -34252,7 +34153,7 @@
add eax, 0x107
xor edx, edx
movzx ecx, byte [esi + 0x1755]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffbbad1: ; not directly referenced
inc ebx
@@ -37937,27 +37838,27 @@
mov edx, 0x4ee4
mov byte [ebp - 0x6b58], bl
mov bl, byte [ebp + 0x2c]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 0xff
mov edx, 0x3e
mov eax, dword [ebp - 0x6b98]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0xf0
lea eax, [ebp - 0x6aec]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x30
lea eax, [ebp - 0x6b1c]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 2
lea eax, [ebp - 0x6b37]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x10
lea eax, [ebp - 0x6b2c]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor eax, eax
loc_fffbe31a: ; not directly referenced
@@ -38016,7 +37917,7 @@
xor ecx, ecx
movzx edx, byte [eax + 0x1755]
lea eax, [edi + 0x101]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
loc_fffbe3e4: ; not directly referenced
inc ebx
@@ -38920,11 +38821,11 @@
mov byte [ebp - 0x4fc], 0
mov byte [ebp - 0x4fb], 0
mov dword [ebp - 0x503], 0
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 0xff
mov edx, 0x53e
mov eax, dword [ebp - 0x524]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov eax, dword [ebp - 0x52c]
mov dl, byte [ebp - 0x520]
mov byte [ebp - 0x50d], 0
@@ -39697,27 +39598,27 @@
mov edx, 1
lea eax, [ebp - 0x34c]
movzx ebx, byte [ebp + 8]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov ecx, 5
mov edx, 1
lea eax, [ebp - 0x338]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov ecx, 5
or edx, 0xffffffff
lea eax, [ebp - 0x324]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov ecx, 5
xor edx, edx
lea eax, [ebp - 0x310]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov ecx, 5
xor edx, edx
lea eax, [ebp - 0x2fc]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
mov ecx, 5
xor edx, edx
lea eax, [ebp - 0x2e8]
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
xor ecx, ecx
mov edx, 0x2bc
lea eax, [ebp - 0x2d4]
@@ -39726,11 +39627,11 @@
mov word [ebp - 0x352], 0
mov word [ebp - 0x350], 0
mov word [ebp - 0x34e], 0
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x462
mov eax, dword [ebp - 0x370]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
movsx ecx, byte [ebp - 0x371]
mov dword [ebp - 0x398], ebx
mov ebx, dword [ebp - 0x378]
@@ -40041,7 +39942,7 @@
mov eax, esi
loc_fffbffae: ; not directly referenced
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
inc edi
add ebx, eax
cmp edi, 5
@@ -40358,7 +40259,7 @@
mov byte [ebp - 0x2a], dl
lea eax, [ebp - 0x1d]
mov edx, 5
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
cmp dword [ebp + 0xc], 0
mov al, 0
mov cl, byte [ebp - 0x2a]
@@ -40601,7 +40502,7 @@
mov edx, 0x26
mov dword [ebp - 0x88], eax
lea eax, [ebp - 0x3e]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
movzx ecx, byte [ebp - 0x77]
mov edx, esi
movzx eax, dl
@@ -41033,11 +40934,11 @@
xor ecx, ecx
mov edx, 4
lea eax, [ebp - 0x28]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov edx, 2
xor ecx, ecx
lea eax, [ebp - 0x40]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
imul eax, dword [ebp - 0x64], 0x24
mov edx, dword [ebp - 0x50]
add edx, eax
@@ -41813,7 +41714,7 @@
mov ecx, 1
mov edx, 7
lea eax, [ebp - 0x4f]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
movsx si, byte [ebp - 0x6c]
cmp dword [edi + 0x1749], 2
mov word [ebp - 0x78], si
@@ -42169,7 +42070,7 @@
lea eax, [ebp - 0x27]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x20], 0
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, esi
mov eax, esi
and ecx, 1
@@ -42449,12 +42350,12 @@
lea esp, [esp - 0x50bc]
mov dword [ebp - 0x50bc], eax
lea eax, [ebp - 0x503a]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
lea eax, [ebp - 0x5079]
mov ecx, 0x3f
mov edx, ref_fffcbee8 ; mov edx, 0xfffcbee8
mov dword [ebp - 0x38ce], eax
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov edx, dword [ebp - 0x50bc]
push edi
push edi
@@ -42484,7 +42385,7 @@
lea edi, [eax + 8]
add eax, 0x18
rep movsd ; rep movsd dword es:[edi], dword ptr [esi]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
jmp short loc_fffc1c07 ; jmp 0xfffc1c07
loc_fffc1bfd:
@@ -42929,7 +42830,7 @@
jne loc_fffc2251 ; jne 0xfffc2251
lea eax, [ebp - 0x397c]
mov edx, 0x395c
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
lea eax, [ebp - 0x5079]
inc byte [ebp - 0x4022]
mov dword [ebp - 0x38ce], eax
@@ -43092,7 +42993,7 @@
mov eax, dword [ebp - 0x50a0]
mov edx, 1
add eax, 0x503a
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
add esp, 0x10
loc_fffc2355:
@@ -43110,7 +43011,7 @@
loc_fffc2376:
mov edx, 0xfd4
lea eax, [ebp - 0x5036]
-call fcn_fffa118a ; call 0xfffa118a
+call mrc_zeromem
xor edi, edi
jmp near loc_fffc1f53 ; jmp 0xfffc1f53
@@ -44274,7 +44175,7 @@
movzx ecx, byte [ebx + 0x1755]
mov edx, dword [ebp - 0x34]
mov eax, esi
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffc32a3: ; not directly referenced
inc byte [ebp - 0x2d]
@@ -44331,7 +44232,7 @@
mov byte [ebp - 0x933], 1
mov byte [ebp - 0x932], 1
mov dword [ebp - 0x944], ebx
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor eax, eax
loc_fffc3355: ; not directly referenced
@@ -44404,7 +44305,7 @@
xor edx, edx
movzx ecx, byte [esi + 0x1755]
add eax, 0x107
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffc3457: ; not directly referenced
inc ebx
@@ -44743,7 +44644,7 @@
mov eax, dword [ebp - 0x950]
xor edx, edx
add eax, 0xf9
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
sub esp, 0xc
mov ecx, 1
push 0
@@ -45042,7 +44943,7 @@
mov eax, dword [ebp - 0x950]
xor edx, edx
add eax, 0xf9
-call fcn_fffc83ab ; call 0xfffc83ab
+call mrc_fillword
loc_fffc3d05: ; not directly referenced
inc edi
@@ -45358,7 +45259,7 @@
loc_fffc406a: ; not directly referenced
dec eax
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
movzx eax, al
jmp short loc_fffc4078 ; jmp 0xfffc4078
@@ -45383,7 +45284,7 @@
lea eax, [edx + 0x80]
jbe short loc_fffc40b6 ; jbe 0xfffc40b6
lea eax, [edx - 1]
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
movzx eax, al
loc_fffc40b6: ; not directly referenced
@@ -45404,7 +45305,7 @@
lea eax, [edx + 0x20]
jbe short loc_fffc40f3 ; jbe 0xfffc40f3
lea eax, [edx - 1]
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
movzx eax, al
loc_fffc40f3: ; not directly referenced
@@ -45423,7 +45324,7 @@
lea eax, [edx + 0x80]
jbe short loc_fffc4125 ; jbe 0xfffc4125
lea eax, [edx - 1]
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
movzx eax, al
loc_fffc4125: ; not directly referenced
@@ -46153,19 +46054,19 @@
mov dword [ebp - 0x32a], 0
mov dword [ebp - 0x326], 7
mov byte [ebp - 0x322], 0
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 2
lea eax, [ebp - 0x337]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 0x10
lea eax, [ebp - 0x314]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, 0x2c
lea edx, [ebp - 0x2e0]
lea eax, [ebp - 0x2b4]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
xor eax, eax
loc_fffc49a5: ; not directly referenced
@@ -46348,7 +46249,7 @@
call fcn_fffb2650 ; call 0xfffb2650
add esp, 0x20
lea eax, [esi - 1]
-call fcn_fffb21bf ; call 0xfffb21bf
+call mrc_highest_bit
movzx eax, al
mov ecx, ebx
sub ecx, eax
@@ -48817,10 +48718,10 @@
fcn_fffc6986:
mov ecx, 0xce
-rdmsr
+rdmsr ; rdmsr(MSR_PLATFORM_INFO)
movzx ecx, ah
xor edx, edx
-imul ecx, ecx, 0x186a0
+imul ecx, ecx, 0x186a0 ; 100000
xor eax, eax
test ecx, ecx
je short loc_fffc69ba ; je 0xfffc69ba
@@ -48928,11 +48829,11 @@
mov edx, 4
lea eax, [ebp - 0xa2]
lea esi, [ebp - 0x72]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
xor ecx, ecx
mov edx, 4
lea eax, [ebp - 0x9e]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov dword [ebp - 0xbc], esi
xor esi, esi
@@ -50948,24 +50849,6 @@
pop ebp
ret
-fcn_fffc83ab: ; not directly referenced
-push ebp
-mov ebp, esp
-push ebx
-xor ebx, ebx
-jmp short loc_fffc83b7 ; jmp 0xfffc83b7
-
-loc_fffc83b3: ; not directly referenced
-mov dword [eax + ebx*4], edx
-inc ebx
-
-loc_fffc83b7: ; not directly referenced
-cmp ebx, ecx
-jne short loc_fffc83b3 ; jne 0xfffc83b3
-pop ebx
-pop ebp
-ret
-
fcn_fffc83be:
push ebp
mov ecx, edx
@@ -52109,7 +51992,7 @@
mov ecx, 8
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x20]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov bl, byte [ebp - 0x19]
shr bl, 7
jmp short loc_fffc8ed7 ; jmp 0xfffc8ed7
@@ -52201,7 +52084,7 @@
mov ecx, 8
lea eax, [ebp - 0x30]
or byte [ebp - 0x21], 0x80
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov ecx, 0x150
@@ -52218,7 +52101,7 @@
mov dword [ebp - 0x2c], edx
lea eax, [ebp - 0x28]
lea edx, [ebp - 0x30]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov eax, 0xa
call fcn_fffc5e98 ; call 0xfffc5e98
mov eax, dword [ebp - 0x40]
@@ -52228,7 +52111,7 @@
mov ecx, 8
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x20]
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
mov edx, dword [ebp - 0x1c]
cmp dword [ebp - 0x24], edx
je short loc_fffc904d ; je 0xfffc904d
@@ -52245,7 +52128,7 @@
loc_fffc905e:
mov eax, esi
-call fcn_fffa115e ; call 0xfffa115e
+call mrc_memcpy
jmp short loc_fffc906c ; jmp 0xfffc906c
loc_fffc9067:
@@ -53068,7 +52951,7 @@
mov byte [ebp - 0x5d], al
xor ecx, ecx
lea eax, [ebp - 0x2c]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov ecx, edi
mov eax, 1
movzx edx, cl
@@ -53460,7 +53343,7 @@
mov byte [ebp - 0x3b], al
xor ecx, ecx
lea eax, [ebp - 0x1a]
-call fcn_fffa119f ; call 0xfffa119f
+call mrc_setmem
mov cl, bl
mov dword [ebp - 0x40], 1
movzx edx, bl
diff --git a/src/northbridge/intel/haswell/mrc_utils.c b/src/northbridge/intel/haswell/mrc_utils.c
new file mode 100644
index 0000000..f4c125a
--- /dev/null
+++ b/src/northbridge/intel/haswell/mrc_utils.c
@@ -0,0 +1,43 @@
+#include <string.h>
+
+void __attribute((regparm(3))) mrc_setmem(void *s, size_t n, int c);
+void __attribute((regparm(3))) mrc_memcpy(void *dst, const void *src, size_t n);
+void __attribute((regparm(3))) mrc_fillword(int *s, int c, size_t n);
+void __attribute((regparm(3))) mrc_zeromem(void *s, size_t n);
+char __attribute((regparm(3))) mrc_highest_bit(int a);
+
+void __attribute((regparm(3))) mrc_setmem(void *s, size_t n, int c)
+{
+ memset(s, c, n);
+}
+
+void __attribute((regparm(3))) mrc_fillword(int *s, int c, size_t n)
+{
+ for (size_t i = 0; i < n; i++)
+ s[i] = c;
+}
+
+void __attribute((regparm(3))) mrc_memcpy(void *dst, const void *src, size_t n)
+{
+ memcpy(dst, src, n);
+}
+
+void __attribute((regparm(3))) mrc_zeromem(void *s, size_t n)
+{
+ memset(s, 0, n);
+}
+
+char __attribute((regparm(3))) mrc_highest_bit(int a)
+{
+ int result = 0;
+
+ if (a == -1)
+ return 0;
+
+ for (int i = 0; i < 32; i++) {
+ if (a & (1 << i))
+ result = i + 1;
+ }
+
+ return result;
+}
--
To view, visit https://review.coreboot.org/c/coreboot/+/30188
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ifebe96f655c13d7c17ac09f520581d7df7e3cf7d
Gerrit-Change-Number: 30188
Gerrit-PatchSet: 1
Gerrit-Owner: Iru Cai <mytbk920423 at gmail.com>
Gerrit-Reviewer: Iru Cai <mytbk920423 at gmail.com>
Gerrit-Reviewer: Martin Roth <martinroth at google.com>
Gerrit-Reviewer: Patrick Georgi <pgeorgi at google.com>
Gerrit-Reviewer: Patrick Rudolph <siro at das-labor.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20181212/60758697/attachment-0001.html>
More information about the coreboot-gerrit
mailing list