aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain
Commit message (Expand)AuthorAgeFilesLines
* fix gcc-4.2.4 when target != avr32Nicolas Thill2008-12-031-1/+3
* nuke old gcc 4.2 versionsImre Kaloz2008-12-0293-40818/+0
* sync gcc's Config.in with Config.versionImre Kaloz2008-12-021-2/+3
* nuke binutils 2.16.1 - old, unused, buggyImre Kaloz2008-12-029-1060/+0
* sync gcc patches with the Atmel 1.1.3 releaseImre Kaloz2008-12-027-7672/+7362
* clean up patchImre Kaloz2008-12-021-461/+0
* sync avr32 binutils patch with the Atmel 1.0.1 releaseImre Kaloz2008-12-021-509/+283
* switch powerpc targets to gcc 4.2.4Imre Kaloz2008-11-261-3/+2
* switch to gcc 4.2.4 for avr32Imre Kaloz2008-11-251-1/+1
* add avr32 support to binutils 2.18Imre Kaloz2008-11-252-1/+53416
* openat is not an implemented syscall on linux-2.4, so make it only available ...Florian Fainelli2008-11-161-1/+4
* Add support for openat system call - this must be extended for the rest of th...Hamish Guthrie2008-11-141-0/+68
* indent conditionnals in uClibc MakefileNicolas Thill2008-11-081-21/+21
* add md5sums for binutils & gcc and use the GNU mirror facilityNicolas Thill2008-11-082-12/+40
* Fix locations for the uClibc snapshot version (#4065)Florian Fainelli2008-10-281-1/+12
* The merge of ppc (32-bit headers) and powerpc (previously 64-bit only headers...Hamish Guthrie2008-10-091-3/+5
* fix up the asm includes location for .27 when building kernel headersFelix Fietkau2008-09-291-0/+5
* Fix a segfault in uclibc ldso.Lars-Peter Clausen2008-09-251-0/+30
* Avoid endless recursion in uClibc pthreads.Lars-Peter Clausen2008-09-221-0/+14
* add patches to fixes gcc 4.2.x bugs: - fix gcc ICE when compiling package/ath...Nicolas Thill2008-09-189-0/+472
* disable autorebuild for the toolchain, as it can easily lead to build breakagesFelix Fietkau2008-09-024-0/+4
* make libc.so symlink relative instead of absolute (#3878)Felix Fietkau2008-08-171-1/+1
* storm is ARMv4, not ARMv4T (thx, SeG)Felix Fietkau2008-07-311-1/+1
* Disable smash stacking support by default, but allow to enable it as an exper...Florian Fainelli2008-07-302-0/+15
* fix uClibc legacy versionFelix Fietkau2008-07-291-1/+1
* Update uClibc config for x86_64Florian Fainelli2008-07-271-14/+56
* surprise :pGabor Juhos2008-07-211-0/+1
* uClibc for x86 targets and kernels >= 2.6.24 need to copy the right include f...Florian Fainelli2008-07-211-0/+7
* use qstrip macro to strip quoted CONFIG_* stringsNicolas Thill2008-07-143-6/+5
* add some sanity checkingFelix Fietkau2008-06-151-1/+3
* finally fixes etrax toolchain problems, thanks nbdJohn Crispin2008-06-061-0/+17
* * refresh storm patches * disable BX in uClibc config, add ethernet and watch...Imre Kaloz2008-06-051-1/+1
* add patch to fix EABI compiles on ARMv4Imre Kaloz2008-06-051-0/+11
* add preliminary Marvell Orion supportImre Kaloz2008-06-041-1/+1
* soft-float shouldn't be used on targets with FPUImre Kaloz2008-06-031-1/+1
* gcc 4.2.4 supportImre Kaloz2008-05-3129-0/+27272
* refresh gcc-4.2.3 patchesMatteo Croce2008-05-2127-594/+707
* fix avr32 compilingTravis Kemen2008-05-161-0/+20
* Fix a bug causing an infinite loop in getaddrinfo (closes: #3344)Nicolas Thill2008-05-111-0/+14
* remove ugly hack for etraxJohn Crispin2008-05-031-8/+4
* fix up uclibc support for etraxJohn Crispin2008-05-032-16/+54
* fix uclibc version selectionJohn Crispin2008-05-031-1/+1
* add preliminary support for Storm SL3512 based devices, not ready yetImre Kaloz2008-04-272-0/+211
* PXA has Xscale core as well, so optimize the same way as we do on IXP/IOPImre Kaloz2008-04-261-1/+1
* make sure the toolchain target dir really existsFelix Fietkau2008-04-221-1/+1
* do target dependent optimizationsImre Kaloz2008-04-141-1/+1
* provide a cleaner way to specify a biarch toolchain buildJeremy Kerr2008-04-124-0/+53
* Do not disable tls yet, uclibc-ntpl will support it soonFlorian Fainelli2008-04-101-2/+0
* Disable tls support, uClibc does not support it, and it could lead to linking...Florian Fainelli2008-04-101-0/+2
* fix typoImre Kaloz2008-04-031-1/+1
n>->addr, p->size, &data); p->data = data; } else /* p->dir == IOREQ_WRITE */ rc = write_handler(v, p->addr, p->size, p->data); return rc; } if ( p->dir == IOREQ_READ ) { for ( i = 0; i < p->count; i++ ) { int ret; rc = read_handler(v, p->addr + step * i, p->size, &data); if ( rc != X86EMUL_OKAY ) break; ret = hvm_copy_to_guest_phys(p->data + step * i, &data, p->size); if ( (ret == HVMCOPY_gfn_paged_out) || (ret == HVMCOPY_gfn_shared) ) { rc = X86EMUL_RETRY; break; } } } else { for ( i = 0; i < p->count; i++ ) { switch ( hvm_copy_from_guest_phys(&data, p->data + step * i, p->size) ) { case HVMCOPY_okay: break; case HVMCOPY_gfn_paged_out: case HVMCOPY_gfn_shared: rc = X86EMUL_RETRY; break; case HVMCOPY_bad_gfn_to_mfn: data = ~0; break; case HVMCOPY_bad_gva_to_gfn: ASSERT(0); /* fall through */ default: rc = X86EMUL_UNHANDLEABLE; break; } if ( rc != X86EMUL_OKAY ) break; rc = write_handler(v, p->addr + step * i, p->size, data); if ( rc != X86EMUL_OKAY ) break; } } if ( i != 0 ) { p->count = i; rc = X86EMUL_OKAY; } return rc; } int hvm_mmio_intercept(ioreq_t *p) { struct vcpu *v = current; int i; for ( i = 0; i < HVM_MMIO_HANDLER_NR; i++ ) if ( hvm_mmio_handlers[i]->check_handler(v, p->addr) ) return hvm_mmio_access( v, p, hvm_mmio_handlers[i]->read_handler, hvm_mmio_handlers[i]->write_handler); return X86EMUL_UNHANDLEABLE; } static int process_portio_intercept(portio_action_t action, ioreq_t *p) { int rc = X86EMUL_OKAY, i, step = p->df ? -p->size : p->size; uint32_t data; if ( !p->data_is_ptr ) { if ( p->dir == IOREQ_READ ) { rc = action(IOREQ_READ, p->addr, p->size, &data); p->data = data; } else { data = p->data; rc = action(IOREQ_WRITE, p->addr, p->size, &data); } return rc; } if ( p->dir == IOREQ_READ ) { for ( i = 0; i < p->count; i++ ) { rc = action(IOREQ_READ, p->addr, p->size, &data); if ( rc != X86EMUL_OKAY ) break; (void)hvm_copy_to_guest_phys(p->data + step * i, &data, p->size); } } else /* p->dir == IOREQ_WRITE */ { for ( i = 0; i < p->count; i++ ) { data = 0; switch ( hvm_copy_from_guest_phys(&data, p->data + step * i, p->size) ) { case HVMCOPY_okay: break; case HVMCOPY_gfn_paged_out: case HVMCOPY_gfn_shared: rc = X86EMUL_RETRY; break; case HVMCOPY_bad_gfn_to_mfn: data = ~0; break; case HVMCOPY_bad_gva_to_gfn: ASSERT(0); /* fall through */ default: rc = X86EMUL_UNHANDLEABLE; break; } if ( rc != X86EMUL_OKAY ) break; rc = action(IOREQ_WRITE, p->addr, p->size, &data); if ( rc != X86EMUL_OKAY ) break; } } if ( i != 0 ) { p->count = i; rc = X86EMUL_OKAY; } return rc; } /* * Check if the request is handled inside xen * return value: 0 --not handled; 1 --handled */ int hvm_io_intercept(ioreq_t *p, int type) { struct vcpu *v = current; struct hvm_io_handler *handler = v->domain->arch.hvm_domain.io_handler; int i; unsigned long addr, size; if ( type == HVM_PORTIO ) { int rc = dpci_ioport_intercept(p); if ( (rc == X86EMUL_OKAY) || (rc == X86EMUL_RETRY) ) return rc; } for ( i = 0; i < handler->num_slot; i++ ) { if ( type != handler->hdl_list[i].type ) continue; addr = handler->hdl_list[i].addr; size = handler->hdl_list[i].size; if ( (p->addr >= addr) && ((p->addr + p->size) <= (addr + size)) ) { if ( type == HVM_PORTIO ) return process_portio_intercept( handler->hdl_list[i].action.portio, p); return handler->hdl_list[i].action.mmio(p); } } return X86EMUL_UNHANDLEABLE; } void register_io_handler( struct domain *d, unsigned long addr, unsigned long size, void *action, int type) { struct hvm_io_handler *handler = d->arch.hvm_domain.io_handler; int num = handler->num_slot; BUG_ON(num >= MAX_IO_HANDLER); handler->hdl_list[num].addr = addr; handler->hdl_list[num].size = size; handler->hdl_list[num].action.ptr = action; handler->hdl_list[num].type = type; handler->num_slot++; } void relocate_io_handler( struct domain *d, unsigned long old_addr, unsigned long new_addr, unsigned long size, int type) { struct hvm_io_handler *handler = d->arch.hvm_domain.io_handler; int i; for ( i = 0; i < handler->num_slot; i++ ) if ( (handler->hdl_list[i].addr == old_addr) && (handler->hdl_list[i].size == size) && (handler->hdl_list[i].type == type) ) handler->hdl_list[i].addr = new_addr; } /* * Local variables: * mode: C * c-file-style: "BSD" * c-basic-offset: 4 * tab-width: 4 * indent-tabs-mode: nil * End: */