aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx
Commit message (Expand)AuthorAgeFilesLines
...
* ar71xx: cleanup TP-Link profilesGabor Juhos2011-12-062-211/+96
* ar71xx: add TP-Link board detectionGabor Juhos2011-12-051-1/+54
* ar71xx: use correct mac on the lan interface on several TP-LINK devicesGabor Juhos2011-12-053-6/+6
* ar71xx: allow to pass negative offset values for ar71xx_init_macGabor Juhos2011-12-052-3/+3
* ar71xx: don't register PCI controller on AR934x if PCIE_RC bit is not setGabor Juhos2011-12-051-2/+7
* ar71xx: verify hardware id of firmware images on TP-Link boardsGabor Juhos2011-12-052-0/+26
* ar71xx: reclaim some unused space on TP-Link boardsGabor Juhos2011-12-051-4/+31
* ar71xx: check squashfs signature in TP-Link mtd parserGabor Juhos2011-12-051-1/+31
* ar71xx: use the lzma-loader on TP-Link boards w/o lzma supportGabor Juhos2011-12-051-11/+42
* ar71xx: add lzma loaderGabor Juhos2011-12-0517-0/+1941
* ar71xx: add preliminary support for wzr-hp-g450hFelix Fietkau2011-12-059-0/+118
* ar71xx: move multi-m25p80 concat code from wzr-hp-ag300h mach code to dev-m25...Felix Fietkau2011-12-053-72/+78
* ar71xx: rewrite WNDR3700/3800 handlingGabor Juhos2011-12-0510-297/+59
* add some missing wndr3800 base-files definitionsJo-Philipp Wich2011-12-053-2/+72
* ar71xx: change user-space board detectionGabor Juhos2011-12-052-6/+25
* ar71xx: allow WNDR3700 image creation to fail if kernel/rootfs too bigGabor Juhos2011-12-051-18/+16
* ar71xx: use the tp-link parser on the tp-link boardsGabor Juhos2011-12-038-267/+33
* ar71xx: add mtd partition parser for the TP-Link boardsGabor Juhos2011-12-033-0/+191
* ar71xx: run the RedBoot parser only on the RedBoot based boardsGabor Juhos2011-12-037-27/+60
* ar71xx: run the MyLoader parser only on the WP543 boardGabor Juhos2011-12-033-26/+13
* ar71xx: run the wrt160nl parser only on the WRT160NL boardGabor Juhos2011-12-032-57/+4
* ar71xx: allow to pass part_probe types to the m25p80 driverGabor Juhos2011-12-034-5/+28
* ar71xx: create initramfs images for the newer TP-Link boardsGabor Juhos2011-12-031-0/+8
* ar71xx: remove swconfig and wpad-mini from custom profilesGabor Juhos2011-12-035-5/+5
* ar71xx: add uboot-envtools to the default package listGabor Juhos2011-12-031-1/+1
* ar71xx: reclaim unused space in WNDR3700/3800 imagesGabor Juhos2011-12-031-20/+63
* ar71xx: add a profile and build image for the OM2P boardGabor Juhos2011-12-012-0/+36
* ar71xx: add support for Ubiquiti AirRouterGabor Juhos2011-12-015-0/+42
* ar71xx: configure default led behavior for the OM2PGabor Juhos2011-12-011-0/+5
* ar71xx: use /lib/functions/uci-defaults.shGabor Juhos2011-12-011-124/+49
* ar71xx: modify phy mask of the WP543 boardGabor Juhos2011-11-241-2/+2
* ar71xx: fix wndr3800 machine nameGabor Juhos2011-11-245-2/+9
* ar71xx: copy atheros initramfs images to the image directoryGabor Juhos2011-11-241-0/+2
* ar71xx: specify mtd layout in command line for the DB120 boardGabor Juhos2011-11-241-1/+2
* ar71xx: set GE0 phy_mask for AR933xGabor Juhos2011-11-201-0/+2
* ar71xx: fix USB LED on the DB120 boardGabor Juhos2011-11-142-0/+4
* ar71xx: add a function for selecting output signal on a given GPIO pinGabor Juhos2011-11-142-0/+38
* ar71xx: fix GPIO function handling on AR934xGabor Juhos2011-11-142-9/+35
* ar71xx: add AR71XX_ prefix to GPIO_REG_* definesGabor Juhos2011-11-145-91/+95
* ar71xx: merge nand scan patchGabor Juhos2011-11-143-24/+2
* ar71xx: fix a compiler warningGabor Juhos2011-11-141-4/+4
* ar71xx: fix GPIO count for AR934xGabor Juhos2011-11-141-1/+1
* ar71xx: flush DDR writeback buffers for WMAC and PCIe on AR934XGabor Juhos2011-11-142-6/+7
* ar71xx: use a dummy irq chip for WMAC and PCIe irq hadlingGabor Juhos2011-11-144-2/+50
* ar71xx: add AR934X_RESET_REG_PCIE_WMAC_INT_STATUS definesGabor Juhos2011-11-141-0/+20
* ar71xx: add an irq parameter for ar724x_pcibios_initGabor Juhos2011-11-143-6/+6
* ar71xx: remove hardwired interface parameters from mach-* filesGabor Juhos2011-11-1413-128/+20
* ar71xx: force hardwired interface parameters in ar71xx_add_device_ethGabor Juhos2011-11-141-1/+11
* ar71xx: use if-else instead of conditional operators in ar71xx_add_device_ethGabor Juhos2011-11-141-48/+76
* ar71xx: enable has_gbit flag on AR724{0,1}Gabor Juhos2011-11-131-0/+1
">int mread(unsigned long adrs, void *buf, int size) { memcpy(buf, (void *)adrs, size); return size; } static void get_function_bounds(unsigned long pc, unsigned long *startp, unsigned long *endp) { unsigned long size, offset; const char *name; *startp = *endp = 0; if (pc == 0) return; name = symbols_lookup(pc, &size, &offset, namebuf); if (name != NULL) { *startp = pc - offset; *endp = pc - offset + size; } } /* Print an address in numeric and symbolic form (if possible) */ static void xmon_print_symbol(unsigned long address, const char *mid, const char *after) { const char *name = NULL; unsigned long offset, size; printk(REG, address); name = symbols_lookup(address, &size, &offset, namebuf); if (name) { printk("%s%s+%#lx/%#lx", mid, name, offset, size); } printk("%s", after); } static void backtrace( unsigned long sp, unsigned long lr, unsigned long pc) { unsigned long ip; unsigned long newsp; unsigned long marker; int count = 0; struct cpu_user_regs regs; do { if (sp > xenheap_phys_end) { if (sp != 0) printk("SP (%lx) is not in xen space\n", sp); break; } if (!mread(sp + LRSAVE_OFFSET, &ip, sizeof(unsigned long)) || !mread(sp, &newsp, sizeof(unsigned long))) { printk("Couldn't read stack frame at %lx\n", sp); break; } /* * For the first stack frame, try to work out if * LR and/or the saved LR value in the bottommost * stack frame are valid. */ if ((pc | lr) != 0) { unsigned long fnstart, fnend; unsigned long nextip; int printip = 1; get_function_bounds(pc, &fnstart, &fnend); nextip = 0; if (newsp > sp) mread(newsp + LRSAVE_OFFSET, &nextip, sizeof(unsigned long)); if (lr == ip) { if (lr >= xenheap_phys_end || (fnstart <= lr && lr < fnend)) printip = 0; } else if (lr == nextip) { printip = 0; } else if (lr < xenheap_phys_end && !(fnstart <= lr && lr < fnend)) { printk("[link register ] "); xmon_print_symbol(lr, " ", "\n"); } if (printip) { printk("["REG"] ", sp); xmon_print_symbol(ip, " ", " (unreliable)\n"); } pc = lr = 0; } else { printk("["REG"] ", sp); xmon_print_symbol(ip, " ", "\n"); } /* Look for "regshere" marker to see if this is an exception frame. */ if (mread(sp + MARKER_OFFSET, &marker, sizeof(unsigned long)) && marker == REG_FRAME_MARKER) { if (mread(sp + REGS_OFFSET, &regs, sizeof(regs)) != sizeof(regs)) { printk("Couldn't read registers at %lx\n", sp + REGS_OFFSET); break; } printk("--- Exception: %x %s at ", regs.entry_vector, getvecname(TRAP(&regs))); pc = regs.pc; lr = regs.lr; xmon_print_symbol(pc, " ", "\n"); } if (newsp == 0) break; sp = newsp; } while (count++ < xmon_depth_to_print); } void show_backtrace(ulong sp, ulong lr, ulong pc) { console_start_sync(); backtrace(sp, lr, pc); console_end_sync(); } void show_backtrace_regs(struct cpu_user_regs *regs) { console_start_sync(); show_registers(regs); printk("hid4 0x%016lx\n", regs->hid4); printk("---[ backtrace ]---\n"); show_backtrace(regs->gprs[1], regs->lr, regs->pc); console_end_sync(); } void dump_execution_state(void) { struct cpu_user_regs *regs = guest_cpu_user_regs(); show_registers(regs); if (regs->msr & MSR_HV) { printk("In Xen:\n"); show_backtrace(regs->gprs[1], regs->pc, regs->lr); } }