Changeset c074ea2e in rtems
- Timestamp:
- 02/20/03 22:07:54 (21 years ago)
- Children:
- c494deb8
- Parents:
- da1100e
- Location:
- c/src/lib/libcpu/powerpc
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/lib/libcpu/powerpc/ChangeLog
rda1100e rc074ea2e 1 2003-02-20 Till Straumann <strauman@slac.stanford.edu> 2 3 PR 349/bsps 4 * mpc6xx/exceptions/raw_exception.c, mpc6xx/mmu/bat.c, 5 mpc6xx/mmu/pte121.c, shared/include/cpuIdent.c, 6 shared/include/cpuIdent.h, shared/src/Makefile.am, shared/src/stack.c, 7 shared/src/stackTrace.h, powerpc/registers.h: 8 - undo improper 'fix' who broke mpc604r identification 9 - fix: 7400 identification PVR value was wrong 10 - enhance 'setdbat()' to switch OFF a given BAT if called with 0 size 11 - fix: page table support bugfix 12 - enhancement: provide routines to take and print stack trace 13 snapshots 14 - add definitions for HID1 and DABR SPRs 15 1 16 2003-02-14 Greg Menke <gregory.menke@gsfc.nasa.gov> 2 17 -
c/src/lib/libcpu/powerpc/mpc6xx/exceptions/raw_exception.c
rda1100e rc074ea2e 126 126 case PPC_604: 127 127 case PPC_604e: 128 /* case PPC_604r: -- same value as PPC_750 */128 case PPC_604r: 129 129 if (!mpc604_vector_is_valid(vector)) { 130 130 return 0; … … 139 139 break; 140 140 default: 141 printk("Please complete libcpu/powerpc/mpc6xx/ raw_exception.c\n");141 printk("Please complete libcpu/powerpc/mpc6xx/exceptions/raw_exception.c\n"); 142 142 printk("current_ppc_cpu = %x\n", current_ppc_cpu); 143 143 return 0; -
c/src/lib/libcpu/powerpc/mpc6xx/mmu/bat.c
rda1100e rc074ea2e 44 44 ubat bat; 45 45 46 bl = (size > > 17) - 1;46 bl = (size >= (1<<17)) ? (size >> 17) - 1 : 0; 47 47 /* 603, 604, etc. */ 48 48 wimgxpp = flags & (_PAGE_WRITETHRU | _PAGE_NO_CACHE … … 54 54 bat.bat.batu.vp = 1; 55 55 bat_addrs[bat_index].start = virt; 56 bat_addrs[bat_index].limit = virt + ( (bl + 1) << 17) - 1;56 bat_addrs[bat_index].limit = virt + (bl ? ((bl + 1) << 17) - 1 : 0); 57 57 bat_addrs[bat_index].phys = phys; 58 if ( 0 == bl ) { 59 /* size of 0 tells us to switch it off */ 60 bat.bat.batu.vp = 0; 61 bat.bat.batu.vs = 0; 62 } 58 63 switch (bat_index) { 59 64 case 0 : asm_setdbat0(bat.word[0], bat.word[1]); break; -
c/src/lib/libcpu/powerpc/mpc6xx/mmu/pte121.c
rda1100e rc074ea2e 23 23 #include <rtems/bspIo.h> 24 24 #include <libcpu/cpuIdent.h> 25 #ifdef DEBUG_EXC 25 26 #include <bsp.h> 26 #ifdef DEBUG_EXC27 27 #include <bsp/vectors.h> 28 28 #include <libcpu/raw_exception.h> … … 126 126 127 127 /* Horrible Macros */ 128 #ifdef __rtems 128 #ifdef __rtems__ 129 129 /* must not use printf until multitasking is up */ 130 130 typedef void (*PrintF)(char *,...); … … 364 364 return 0; /* misaligned */ 365 365 366 /* This should work on a 604, but I couldn't test (I did367 * on 750 and 7400). Verify that the TLB invalidation works366 /* This was tested on 604r, 750 and 7400. 367 * On other CPUs, verify that the TLB invalidation works 368 368 * for a new CPU variant and that it has hardware PTE lookup/ 369 369 * TLB replacement before adding it to this list. … … 679 679 680 680 v=m=0; 681 for (i=0, pte=pt->base; i<pt->size/sizeof(PTERec); i++,pte++) { 681 #if 1 682 /* 10/9/2002: I had machine checks crashing after this loop 683 * terminated. Maybe caused by speculative loads 684 * from beyond the valid memory area (since the 685 * page hash table sits at the top of physical 686 * memory). 687 * Very bizarre - the other loops in this file 688 * seem to be fine. Maybe there is a compiler bug?? 689 * For the moment, I let the loop run backwards... 690 * 691 * Also see the comment a couple of lines down. 692 */ 693 for (i=pt->size/sizeof(PTERec)-1, pte=pt->base + i; i>=0; i--,pte--) 694 #else 695 for (i=0, pte=pt->base; i<pt->size/sizeof(PTERec); i++,pte++) 696 #endif 697 { 682 698 int err=0; 683 699 char buf[500]; 684 700 unsigned long *lp=(unsigned long*)pte; 701 #if 0 702 /* If I put this bogus while statement here (the body is 703 * never reached), the original loop works OK 704 */ 705 while (pte >= pt->base + pt->size/sizeof(PTERec)) 706 /* never reached */; 707 #endif 708 685 709 if ( (*lp & (0xfffff0<<7)) || *(lp+1) & 0xe00 || (pte->v && pte->marked)) { 686 710 /* check for vsid (without segment bits) == 0, unused bits == 0, valid && marked */ -
c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c
rda1100e rc074ea2e 34 34 case PPC_603ev: return "MPC603ev"; 35 35 case PPC_604: return "MPC604"; 36 /* case PPC_604r: return "MPC604r"; same value as 750 */37 36 case PPC_750: return "MPC750"; 38 37 case PPC_7400: return "MPC7400"; 39 38 case PPC_604e: return "MPC604e"; 39 case PPC_604r: return "MPC604r"; 40 40 case PPC_620: return "MPC620"; 41 41 case PPC_860: return "MPC860"; -
c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h
rda1100e rc074ea2e 28 28 PPC_604e = 0x9, 29 29 PPC_604r = 0xA, 30 PPC_7400 = 0x A,30 PPC_7400 = 0xC, 31 31 PPC_620 = 0x16, 32 32 PPC_860 = 0x50, -
c/src/lib/libcpu/powerpc/shared/src/Makefile.am
rda1100e rc074ea2e 6 6 VPATH = @srcdir@:@srcdir@/../../../shared/src 7 7 8 C_FILES = cache.c cache_aligned_malloc.c cache_manager.c 8 C_FILES = cache.c cache_aligned_malloc.c cache_manager.c stack.c 9 9 C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT)) 10 10 11 11 include_libcpudir = $(includedir)/libcpu 12 12 13 include_libcpu_HEADERS = cache_.h cache.h 13 include_libcpu_HEADERS = cache_.h cache.h stackTrace.h 14 14 15 15 OBJS = $(C_O_FILES)
Note: See TracChangeset
for help on using the changeset viewer.