Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 2 additions & 15 deletions drivers/filesystems/udfs/Include/mem_tools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,12 @@

#ifdef MY_USE_INTERNAL_MEMMANAGER

#ifdef _X86_

__inline VOID DbgTouch(IN PVOID addr)
{
__asm {
mov eax,addr
mov al,[byte ptr eax]
}
}

#else // NO X86 optimization , use generic C/C++

__inline VOID DbgTouch(IN PVOID addr)
{
UCHAR a = ((PUCHAR)addr)[0];
volatile UCHAR a = ((volatile UCHAR*)addr)[0];
(void)a;
}

#endif // _X86_

//MEM_ALLOC_DESC Allocs[MY_HEAP_MAX_BLOCKS];

MEM_FRAME_ALLOC_DESC FrameList[MY_HEAP_MAX_FRAMES];
Expand Down
8 changes: 4 additions & 4 deletions drivers/filesystems/udfs/Include/mem_tools.h
Original file line number Diff line number Diff line change
Expand Up @@ -198,13 +198,13 @@ VOID inline MyFreePool__(PVOID addr) {
// ULONG i;
newaddr = (PCHAR)addr;
if (!newaddr) {
__asm int 3;
__debugbreak();
return;
}
/*
for(i=0; i<MY_HEAP_ALIGN+1; i++) {
if (newaddr[len+i] != (UCHAR)('A'+i)) {
__asm int 3;
__debugbreak();
break;
}
}
Expand Down Expand Up @@ -233,7 +233,7 @@ ULONG inline MyReallocPool__(PCHAR addr, ULONG len, PCHAR *pnewaddr, ULONG newle

for(i=0; i<MY_HEAP_ALIGN+1; i++) {
if ((UCHAR)(addr[len+i]) != (UCHAR)('A'+i)) {
__asm int 3;
__debugbreak();
break;
}
}
Expand Down Expand Up @@ -269,7 +269,7 @@ ULONG inline MyReallocPool__(PCHAR addr, ULONG len, PCHAR *pnewaddr, ULONG newle
#ifdef MY_MEM_BOUNDS_CHECK
for(i=0; i<MY_HEAP_ALIGN+1; i++) {
if ((UCHAR)(newaddr[newlen+i]) != (UCHAR)('A'+i)) {
__asm int 3;
__debugbreak();
break;
}
}
Expand Down
55 changes: 8 additions & 47 deletions drivers/filesystems/udfs/Include/string_lib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,34 +65,14 @@ RtlAppendUnicodeToString(
)
{
PWCHAR tmp;
USHORT i;

#ifdef _X86_

__asm push ebx
__asm push esi
__asm xor ebx,ebx
__asm mov esi,Str2
Scan_1:
__asm cmp [word ptr esi+ebx],0
__asm je EO_Scan
__asm add ebx,2
__asm jmp Scan_1
EO_Scan:
__asm mov i,bx
__asm pop esi
__asm pop ebx

#else // NO X86 optimization, use generic C/C++
ULONG i;

i=0;
while(Str2[i]) {
while(Str2[i] && i < (MAXUSHORT / sizeof(WCHAR))) {
i++;
}
i *= sizeof(WCHAR);

#endif // _X86_

tmp = Str1->Buffer;
ASSERT(Str1->MaximumLength);
if ((Str1->Length+i+sizeof(WCHAR)) > Str1->MaximumLength) {
Expand All @@ -102,13 +82,13 @@ RtlAppendUnicodeToString(
memcpy(tmp2, tmp, Str1->MaximumLength);
ExFreePool(tmp);
tmp = tmp2;
Str1->MaximumLength = STRING_BUFFER_ALIGN(i + sizeof(WCHAR))*2;
Str1->MaximumLength = (USHORT)(STRING_BUFFER_ALIGN(i + sizeof(WCHAR))*2);
Str1->Buffer = tmp;
}
RtlCopyMemory(((PCHAR)tmp)+Str1->Length, Str2, i);
i+=Str1->Length;
tmp[(i / sizeof(WCHAR))] = 0;
Str1->Length = i;
Str1->Length = (USHORT)i;

return STATUS_SUCCESS;

Expand All @@ -126,35 +106,16 @@ MyInitUnicodeString(
)
{

USHORT i;

#ifdef _X86_

__asm push ebx
__asm push esi
__asm xor ebx,ebx
__asm mov esi,Str2
Scan_1:
__asm cmp [word ptr esi+ebx],0
__asm je EO_Scan
__asm add ebx,2
__asm jmp Scan_1
EO_Scan:
__asm mov i,bx
__asm pop esi
__asm pop ebx

#else // NO X86 optimization, use generic C/C++
ULONG i;

i=0;
while(Str2[i]) {
while(Str2[i] && i < (MAXUSHORT / sizeof(WCHAR))) {
i++;
}
i *= sizeof(WCHAR);

#endif // _X86_

Str1->MaximumLength = STRING_BUFFER_ALIGN((Str1->Length = i) + sizeof(WCHAR));
Str1->Length = (USHORT)i;
Str1->MaximumLength = (USHORT)STRING_BUFFER_ALIGN(i + sizeof(WCHAR));
Str1->Buffer = (PWCHAR)MyAllocatePool__(NonPagedPool, Str1->MaximumLength);
if (!Str1->Buffer)
return STATUS_INSUFFICIENT_RESOURCES;
Expand Down
26 changes: 3 additions & 23 deletions drivers/filesystems/udfs/udf_dbg.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,13 +120,7 @@ DbgWaitForSingleObject_(

#ifdef UDF_DBG

#ifdef _X86_
// This is an illegal use of INT3
#define UDFBreakPoint() { __asm int 3 }
#else // _X86_

#define UDFBreakPoint() DbgBreakPoint()
#endif // _X86_
#define UDFBreakPoint() __debugbreak()

#ifdef BRUTE
#define BrutePoint() UDFBreakPoint()
Expand Down Expand Up @@ -189,26 +183,12 @@ VOID DebugFreePool(PVOID addr);
#define ValidateFileInfo(fi) {}
#endif

#if defined (_X86_) && defined (_MSC_VER)

__inline VOID UDFTouch(IN PVOID addr)
{
__asm {
mov eax,addr
mov al,[byte ptr eax]
}
}

#else // NO X86 optimization , use generic C/C++

__inline VOID UDFTouch(IN PVOID addr)
{
UCHAR a = ((PUCHAR)addr)[0];
a = a;
UCHAR a = *((volatile UCHAR*)addr);
UNREFERENCED_PARAMETER(a);
}

#endif // _X86_

#else // UDF_DBG

#define DbgAllocatePool(x,y) ExAllocatePoolWithTag(x,y,'Fnwd')
Expand Down