Browse Source

* the prefetch bug handling is specific to x86_64

git-svn-id: trunk@44936 -
svenbarth 5 years ago
parent
commit
25c6f3a667
1 changed files with 4 additions and 0 deletions
  1. 4 0
      rtl/win64/seh64.inc

+ 4 - 0
rtl/win64/seh64.inc

@@ -412,12 +412,14 @@ var
 begin
   if (rec.ExceptionFlags and EXCEPTION_UNWIND)=0 then
   begin
+{$ifdef CPUX86_64}
     { Athlon prefetch bug? }
     if (rec.ExceptionCode=STATUS_ACCESS_VIOLATION) and is_prefetch(pointer(ContextGetIP(Context))) then
     begin
       result:=ExceptionContinueExecution;
       exit;
     end;
+{$endif CPUX86_64}
     PushException(rec,context,obj,True);
     RtlUnwindEx(frame, @L1, @rec, nil, dispatch.ContextRecord, dispatch.HistoryTable);
   end
@@ -502,12 +504,14 @@ begin
       else if (ControlRva>=scope^.RvaStart) and (ControlRva<scope^.RvaEnd) and
         (scope^.Typ<>SCOPE_FINALLY)then
       begin
+{$ifdef CPUX86_64}
         { Athlon prefetch bug? }
         if (rec.ExceptionCode=STATUS_ACCESS_VIOLATION) and is_prefetch(pointer(ContextGetIP(Context))) then
         begin
           result:=ExceptionContinueExecution;
           exit;
         end;
+{$endif CPUX86_64}
 
         if scope^.Typ>SCOPE_IMPLICIT then  // filtering needed
         begin