/// @file\r
/// Low level IPF routines used by the debug support driver\r
///\r
-/// Copyright (c) 2006, Intel Corporation\r
+/// Copyright (c) 2006 - 2008, Intel Corporation\r
/// All rights reserved. This program and the accompanying materials\r
/// are licensed and made available under the terms and conditions of the BSD License\r
/// which accompanies this distribution. The full text of the license may be found at\r
// Next, copy the patch code into the IVT\r
movl out0=PatchCode // out0 = source buffer of patch code\r
addl out1=PATCH_OFFSET, r2 // out1 = destination buffer - in IVT\r
- mov out2=NUM_PATCH_BUNDLES;; // out2 = number of bundles to copy\r
+ mov out2=PATCH_CODE_SIZE;; \r
+ shr out2=out2, 4;; // out2 = number of bundles to copy\r
br.call.sptk.few b0 = CopyBundles\r
\r
\r
cmp.gt p14, p15 = loc5, loc6;; // check to see we're not out of range for an ip-relative branch\r
(p14) br.sptk.few RelocateSlotError\r
cmp.lt p15, p14 = 0, loc4;; // store sign in p14 again\r
-(p14) dep in0=1,in0,36,1 // store sign bit in instruction\r
+(p14) dep in0=-1,in0,36,1 // store sign bit in instruction\r
(p15) dep in0=0,in0,36,1\r
shr loc4=loc4, 4;; // convert back to bundle offset\r
dep in0=loc4,in0,13,16;; // put first 16 bits of new offset into instruction\r
/// @file\r
/// This is set of macros used in calculating offsets in the IVT.\r
///\r
-/// Copyright (c) 2006, Intel Corporation\r
+/// Copyright (c) 2006 - 2008, Intel Corporation\r
/// All rights reserved. This program and the accompanying materials\r
/// are licensed and made available under the terms and conditions of the BSD License\r
/// which accompanies this distribution. The full text of the license may be found at\r
// unloaded.\r
#define PATCH_ENTRY_OFFSET 0x03400\r
\r
-// PATCH_BUNDLES is the number of bundles actually in the patch\r
-#define NUM_PATCH_BUNDLES ((EndPatchCode - PatchCode) / 0x10)\r
+// PATCH_CODE_SIZE is the size of patch code\r
+#define PATCH_CODE_SIZE (EndPatchCode - PatchCode)\r
\r
// A hard coded branch back into the external interrupt IVT entry's second bundle\r
// is put here, just in case the original bundle zero did not have a branch\r