aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/uClibc
Commit message (Expand)AuthorAgeFilesLines
...
* fix stampfile variables for the toolchain build (fixes gcc compile error)Felix Fietkau2009-03-131-2/+2
* Upstream fix for syscall() not setting errno on errors on MIPSSteven Barth2009-02-281-0/+31
* move common variables to a dedicated include fileNicolas Thill2009-02-231-7/+3
* build system refactoring in preparation for allowing packages to do host-buil...Felix Fietkau2009-02-221-30/+30
* uClibc: refresh patches for uClibcHauke Mehrtens2009-02-2121-298/+84
* cosmetic & coherency fixesNicolas Thill2009-02-031-3/+1
* fix uClibc fpu/soft-float selectionNicolas Thill2009-01-211-1/+2
* fix uClibc v0.9.30 build on x86_64Nicolas Thill2009-01-211-0/+15
* enable UCLIBC_SUSV3_LEGACY in uClibc v0.9.30 configs to have <sys/timeb.h> & ...Nicolas Thill2009-01-2111-11/+11
* add missing config symbol in x86_64 configurationFlorian Fainelli2009-01-211-0/+1
* add support for gcc v4.3.1 & v4.3.2 (closes: #3479), thanks to Luigi Mantellini!Nicolas Thill2009-01-211-0/+13
* add support for uClibc v0.9.30 (closes: #4271), thanks to Luigi Mantellini & ...Nicolas Thill2009-01-2118-1/+2693
* we have a minimal gcc target compiler since [13931], so use it in uClibc head...Nicolas Thill2009-01-201-0/+1
* uClibc: compile fix for the new linuxthreads implementation on mipsFelix Fietkau2009-01-201-0/+10
* backport patch to allow building uClibc-0.9.28.2 on recent x86 kernelsNicolas Thill2009-01-192-13/+18
* fix linux headers & source paths at uClibc config stageNicolas Thill2009-01-171-2/+2
* uclibc: fix the new libpthread implementation on armFelix Fietkau2009-01-171-0/+27
* add uclibc eabi patches from #3988Felix Fietkau2009-01-173-0/+55
* work around problems with the libpthread onexit() handlerFelix Fietkau2009-01-141-0/+21
* fix the new libpthread implementation - the function table init was brokenFelix Fietkau2009-01-132-11/+35
* do not strip uclibcFelix Fietkau2009-01-131-1/+2
* use the new linuxthreads implementation on i386,i686Felix Fietkau2009-01-132-2/+2
* uclibc: add the trunc functionFelix Fietkau2009-01-131-0/+21
* uclibc: add some libpthread fixesFelix Fietkau2009-01-132-0/+23
* add support for alternative C libraries (currently only glibc/eglibc) other (...Nicolas Thill2009-01-083-51/+47
* general fixes for openwrt with kernel 2.6.28Imre Kaloz2009-01-051-0/+21
* enable netlink supportJo-Philipp Wich2009-01-0311-11/+11
* enable support for getifaddrs() - required by lldpdJo-Philipp Wich2009-01-031-0/+162
* remove the openat() patch, as it's breaking quite a few packages. the problem...Felix Fietkau2009-01-021-71/+0
* 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
* Fix locations for the uClibc snapshot version (#4065)Florian Fainelli2008-10-281-1/+12
* 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
* disable autorebuild for the toolchain, as it can easily lead to build breakagesFelix Fietkau2008-09-021-0/+1
* make libc.so symlink relative instead of absolute (#3878)Felix Fietkau2008-08-171-1/+1
* fix uClibc legacy versionFelix Fietkau2008-07-291-1/+1
* Update uClibc config for x86_64Florian Fainelli2008-07-271-14/+56
* 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-141-3/+3
* * refresh storm patches * disable BX in uClibc config, add ethernet and watch...Imre Kaloz2008-06-051-1/+1
* Fix a bug causing an infinite loop in getaddrinfo (closes: #3344)Nicolas Thill2008-05-111-0/+14
* 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-271-0/+210
* fix typoImre Kaloz2008-04-031-1/+1
* fix uclibc build on osxFelix Fietkau2008-03-091-0/+1
* fix md5sum for v0.28.2 (closes: #3159)Nicolas Thill2008-02-191-1/+1
* add missing config change for OABIFelix Fietkau2008-02-141-0/+2
type. */ #define PGT_count_width PG_shift(9) #define PGT_count_mask ((1UL<<PGT_count_width)-1) /* Cleared when the owning guest 'frees' this page. */ #define _PGC_allocated PG_shift(1) #define PGC_allocated PG_mask(1, 1) /* Page is Xen heap? */ #define _PGC_xen_heap PG_shift(2) #define PGC_xen_heap PG_mask(1, 2) /* ... */ /* Page is broken? */ #define _PGC_broken PG_shift(7) #define PGC_broken PG_mask(1, 7) /* Mutually-exclusive page states: { inuse, offlining, offlined, free }. */ #define PGC_state PG_mask(3, 9) #define PGC_state_inuse PG_mask(0, 9) #define PGC_state_offlining PG_mask(1, 9) #define PGC_state_offlined PG_mask(2, 9) #define PGC_state_free PG_mask(3, 9) #define page_state_is(pg, st) (((pg)->count_info&PGC_state) == PGC_state_##st) /* Count of references to this frame. */ #define PGC_count_width PG_shift(9) #define PGC_count_mask ((1UL<<PGC_count_width)-1) extern unsigned long xenheap_mfn_start, xenheap_mfn_end; extern unsigned long xenheap_virt_end; #define is_xen_heap_page(page) is_xen_heap_mfn(page_to_mfn(page)) #define is_xen_heap_mfn(mfn) ({ \ unsigned long _mfn = (mfn); \ (_mfn >= xenheap_mfn_start && _mfn < xenheap_mfn_end); \ }) #define is_xen_fixed_mfn(mfn) is_xen_heap_mfn(mfn) #define page_get_owner(_p) (_p)->v.inuse.domain #define page_set_owner(_p,_d) ((_p)->v.inuse.domain = (_d)) #define maddr_get_owner(ma) (page_get_owner(maddr_to_page((ma)))) #define XENSHARE_writable 0 #define XENSHARE_readonly 1 extern void share_xen_page_with_guest( struct page_info *page, struct domain *d, int readonly); extern void share_xen_page_with_privileged_guests( struct page_info *page, int readonly); #define frame_table ((struct page_info *)FRAMETABLE_VIRT_START) /* MFN of the first page in the frame table. */ extern unsigned long frametable_base_mfn; extern unsigned long max_page; extern unsigned long total_pages; /* Boot-time pagetable setup */ extern void setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr); /* MMU setup for secondary CPUS (which already have paging enabled) */ extern void __cpuinit mmu_init_secondary_cpu(void); /* Second stage paging setup, to be called on all CPUs */ extern void __cpuinit setup_virt_paging(void); /* Set up the xenheap: up to 1GB of contiguous, always-mapped memory. * Base must be 32MB aligned and size a multiple of 32MB. */ extern void setup_xenheap_mappings(unsigned long base_mfn, unsigned long nr_mfns); /* Map a frame table to cover physical addresses ps through pe */ extern void setup_frametable_mappings(paddr_t ps, paddr_t pe); /* Map a 4k page in a fixmap entry */ extern void set_fixmap(unsigned map, unsigned long mfn, unsigned attributes); /* Remove a mapping from a fixmap entry */ extern void clear_fixmap(unsigned map); /* map a 2MB aligned physical range in virtual memory. */ void* early_ioremap(paddr_t start, size_t len, unsigned attributes); #define mfn_valid(mfn) ({ \ unsigned long __m_f_n = (mfn); \ likely(__m_f_n < max_page); \ }) #define max_pdx max_page #define pfn_to_pdx(pfn) (pfn) #define pdx_to_pfn(pdx) (pdx) #define virt_to_pdx(va) virt_to_mfn(va) #define pdx_to_virt(pdx) mfn_to_virt(pdx) /* Convert between machine frame numbers and page-info structures. */ #define mfn_to_page(mfn) (frame_table + (pfn_to_pdx(mfn) - frametable_base_mfn)) #define page_to_mfn(pg) pdx_to_pfn((unsigned long)((pg) - frame_table) + frametable_base_mfn) #define __page_to_mfn(pg) page_to_mfn(pg) #define __mfn_to_page(mfn) mfn_to_page(mfn) /* Convert between machine addresses and page-info structures. */ #define maddr_to_page(ma) __mfn_to_page((ma) >> PAGE_SHIFT) #define page_to_maddr(pg) ((paddr_t)__page_to_mfn(pg) << PAGE_SHIFT) /* Convert between frame number and address formats. */ #define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT) #define paddr_to_pfn(pa) ((unsigned long)((pa) >> PAGE_SHIFT)) #define paddr_to_pdx(pa) pfn_to_pdx(paddr_to_pfn(pa)) static inline paddr_t virt_to_maddr(const void *va) { uint64_t par = va_to_par((vaddr_t)va); return (par & PADDR_MASK & PAGE_MASK) | ((vaddr_t) va & ~PAGE_MASK); } static inline void *maddr_to_virt(paddr_t ma) { ASSERT(is_xen_heap_mfn(ma >> PAGE_SHIFT)); ma -= pfn_to_paddr(xenheap_mfn_start); return (void *)(unsigned long) ma + XENHEAP_VIRT_START; } static inline int gvirt_to_maddr(vaddr_t va, paddr_t *pa) { uint64_t par = gva_to_ma_par(va); if ( par & PAR_F ) return -EFAULT; *pa = (par & PADDR_MASK & PAGE_MASK) | ((unsigned long) va & ~PAGE_MASK); return 0; } /* Convert between Xen-heap virtual addresses and machine addresses. */ #define __pa(x) (virt_to_maddr(x)) #define __va(x) (maddr_to_virt(x)) /* Convert between Xen-heap virtual addresses and machine frame numbers. */ #define virt_to_mfn(va) (virt_to_maddr(va) >> PAGE_SHIFT) #define mfn_to_virt(mfn) (maddr_to_virt((paddr_t)(mfn) << PAGE_SHIFT)) /* Convert between Xen-heap virtual addresses and page-info structures. */ static inline struct page_info *virt_to_page(const void *v) { unsigned long va = (unsigned long)v; ASSERT(va >= XENHEAP_VIRT_START); ASSERT(va < xenheap_virt_end); return frame_table + ((va - XENHEAP_VIRT_START) >> PAGE_SHIFT) + xenheap_mfn_start - frametable_base_mfn; } static inline void *page_to_virt(const struct page_info *pg) { return mfn_to_virt(page_to_mfn(pg)); } struct domain *page_get_owner_and_reference(struct page_info *page); void put_page(struct page_info *page); int get_page(struct page_info *page, struct domain *domain); /* * The MPT (machine->physical mapping table) is an array of word-sized * values, indexed on machine frame number. It is expected that guest OSes * will use it to store a "physical" frame number to give the appearance of * contiguous (or near contiguous) physical memory. */ #undef machine_to_phys_mapping #define machine_to_phys_mapping ((unsigned long *)RDWR_MPT_VIRT_START) #define INVALID_M2P_ENTRY (~0UL) #define VALID_M2P(_e) (!((_e) & (1UL<<(BITS_PER_LONG-1)))) #define SHARED_M2P_ENTRY (~0UL - 1UL) #define SHARED_M2P(_e) ((_e) == SHARED_M2P_ENTRY) #define _set_gpfn_from_mfn(mfn, pfn) ({ \ struct domain *d = page_get_owner(__mfn_to_page(mfn)); \ if(d && (d == dom_cow)) \ machine_to_phys_mapping[(mfn)] = SHARED_M2P_ENTRY; \ else \ machine_to_phys_mapping[(mfn)] = (pfn); \ }) static inline void put_gfn(struct domain *d, unsigned long gfn) {} static inline void mem_event_cleanup(struct domain *d) {} static inline int relinquish_shared_pages(struct domain *d) { return 0; } #define INVALID_MFN (~0UL) /* Xen always owns P2M on ARM */ #define set_gpfn_from_mfn(mfn, pfn) do { (void) (mfn), (void)(pfn); } while (0) #define mfn_to_gmfn(_d, mfn) (mfn) /* Arch-specific portion of memory_op hypercall. */ long arch_memory_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg); int steal_page( struct domain *d, struct page_info *page, unsigned int memflags); int donate_page( struct domain *d, struct page_info *page, unsigned int memflags); #define domain_set_alloc_bitsize(d) ((void)0) #define domain_clamp_alloc_bitsize(d, b) (b) unsigned long domain_get_maximum_gpfn(struct domain *d); extern struct domain *dom_xen, *dom_io, *dom_cow; #define memguard_init(_s) (_s) #define memguard_guard_stack(_p) ((void)0) #define memguard_guard_range(_p,_l) ((void)0) #define memguard_unguard_range(_p,_l) ((void)0) /* Release all __init and __initdata ranges to be reused */ void free_init_memory(void); int guest_physmap_mark_populate_on_demand(struct domain *d, unsigned long gfn, unsigned int order); extern void put_page_type(struct page_info *page); static inline void put_page_and_type(struct page_info *page) { put_page_type(page); put_page(page); } #endif /* __ARCH_ARM_MM__ */ /* * Local variables: * mode: C * c-file-style: "BSD" * c-basic-offset: 4 * indent-tabs-mode: nil * End: */