Date: Sat, 31 Aug 2013 13:41:21 +0000 (UTC) From: Mark Murray <markm@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r255094 - in projects/random_number_generator: bin/sh contrib/libcxxrt contrib/llvm/lib/Transforms/InstCombine lib/libcompiler_rt share/man/man4 sys/amd64/amd64 sys/arm/arm sys/dev/acpi... Message-ID: <201308311341.r7VDfLsT087435@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markm Date: Sat Aug 31 13:41:20 2013 New Revision: 255094 URL: http://svnweb.freebsd.org/changeset/base/255094 Log: MFC Added: projects/random_number_generator/sys/mips/conf/PICOSTATION_M2HP - copied unchanged from r255093, head/sys/mips/conf/PICOSTATION_M2HP projects/random_number_generator/sys/mips/conf/PICOSTATION_M2HP.hints - copied unchanged from r255093, head/sys/mips/conf/PICOSTATION_M2HP.hints projects/random_number_generator/sys/mips/malta/gt_pci_bus_space.c - copied unchanged from r255093, head/sys/mips/malta/gt_pci_bus_space.c projects/random_number_generator/sys/mips/malta/gt_pci_bus_space.h - copied unchanged from r255093, head/sys/mips/malta/gt_pci_bus_space.h projects/random_number_generator/tools/regression/bin/sh/builtins/type3.0 - copied unchanged from r255093, head/tools/regression/bin/sh/builtins/type3.0 Modified: projects/random_number_generator/bin/sh/exec.c projects/random_number_generator/bin/sh/parser.c projects/random_number_generator/contrib/libcxxrt/exception.cc projects/random_number_generator/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp projects/random_number_generator/lib/libcompiler_rt/Makefile projects/random_number_generator/share/man/man4/vmx.4 projects/random_number_generator/sys/amd64/amd64/pmap.c projects/random_number_generator/sys/arm/arm/machdep.c projects/random_number_generator/sys/arm/arm/stdatomic.c projects/random_number_generator/sys/dev/acpica/acpi_thermal.c projects/random_number_generator/sys/dev/md/md.c projects/random_number_generator/sys/dev/uart/uart_dev_ns8250.c projects/random_number_generator/sys/dev/usb/usbdevs projects/random_number_generator/sys/mips/conf/MALTA projects/random_number_generator/sys/mips/conf/MALTA64 projects/random_number_generator/sys/mips/malta/files.malta projects/random_number_generator/sys/mips/malta/gt_pci.c projects/random_number_generator/sys/mips/malta/malta_machdep.c projects/random_number_generator/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/random_number_generator/sys/sys/sysctl.h Directory Properties: projects/random_number_generator/ (props changed) projects/random_number_generator/contrib/libcxxrt/ (props changed) projects/random_number_generator/contrib/llvm/ (props changed) projects/random_number_generator/share/man/man4/ (props changed) projects/random_number_generator/sys/ (props changed) Modified: projects/random_number_generator/bin/sh/exec.c ============================================================================== --- projects/random_number_generator/bin/sh/exec.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/bin/sh/exec.c Sat Aug 31 13:41:20 2013 (r255094) @@ -762,5 +762,7 @@ typecmd_impl(int argc, char **argv, int int typecmd(int argc, char **argv) { + if (argc > 2 && strcmp(argv[1], "--") == 0) + argc--, argv++; return typecmd_impl(argc, argv, TYPECMD_TYPE, bltinlookup("PATH", 1)); } Modified: projects/random_number_generator/bin/sh/parser.c ============================================================================== --- projects/random_number_generator/bin/sh/parser.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/bin/sh/parser.c Sat Aug 31 13:41:20 2013 (r255094) @@ -108,12 +108,13 @@ static int funclinno; /* line # where t static struct parser_temp *parser_temp; -static union node *list(int, int); +static union node *list(int); static union node *andor(void); static union node *pipeline(void); static union node *command(void); static union node *simplecmd(union node **, union node *); static union node *makename(void); +static union node *makebinary(int type, union node *n1, union node *n2); static void parsefname(void); static void parseheredoc(void); static int peektoken(void); @@ -121,6 +122,7 @@ static int readtoken(void); static int xxreadtoken(void); static int readtoken1(int, const char *, const char *, int); static int noexpand(char *); +static void consumetoken(int); static void synexpect(int) __dead2; static void synerror(const char *) __dead2; static void setprompt(int); @@ -223,18 +225,18 @@ parsecmd(int interact) if (t == TNL) return NULL; tokpushback++; - return list(1, 1); + return list(1); } static union node * -list(int nlflag, int erflag) +list(int nlflag) { union node *ntop, *n1, *n2, *n3; int tok; checkkwd = CHKNL | CHKKWD | CHKALIAS; - if (!nlflag && !erflag && tokendlist[peektoken()]) + if (!nlflag && tokendlist[peektoken()]) return NULL; ntop = n1 = NULL; for (;;) { @@ -256,17 +258,11 @@ list(int nlflag, int erflag) if (ntop == NULL) ntop = n2; else if (n1 == NULL) { - n1 = (union node *)stalloc(sizeof (struct nbinary)); - n1->type = NSEMI; - n1->nbinary.ch1 = ntop; - n1->nbinary.ch2 = n2; + n1 = makebinary(NSEMI, ntop, n2); ntop = n1; } else { - n3 = (union node *)stalloc(sizeof (struct nbinary)); - n3->type = NSEMI; - n3->nbinary.ch1 = n1->nbinary.ch2; - n3->nbinary.ch2 = n2; + n3 = makebinary(NSEMI, n1->nbinary.ch2, n2); n1->nbinary.ch2 = n3; n1 = n3; } @@ -287,8 +283,7 @@ list(int nlflag, int erflag) tokpushback++; } checkkwd = CHKNL | CHKKWD | CHKALIAS; - if (!nlflag && (erflag ? peektoken() == TEOF : - tokendlist[peektoken()])) + if (!nlflag && tokendlist[peektoken()]) return ntop; break; case TEOF: @@ -298,7 +293,7 @@ list(int nlflag, int erflag) pungetc(); /* push back EOF on input */ return ntop; default: - if (nlflag || erflag) + if (nlflag) synexpect(-1); tokpushback++; return ntop; @@ -311,10 +306,10 @@ list(int nlflag, int erflag) static union node * andor(void) { - union node *n1, *n2, *n3; + union node *n; int t; - n1 = pipeline(); + n = pipeline(); for (;;) { if ((t = readtoken()) == TAND) { t = NAND; @@ -322,14 +317,9 @@ andor(void) t = NOR; } else { tokpushback++; - return n1; + return n; } - n2 = pipeline(); - n3 = (union node *)stalloc(sizeof (struct nbinary)); - n3->type = t; - n3->nbinary.ch1 = n1; - n3->nbinary.ch2 = n2; - n1 = n3; + n = makebinary(t, n, pipeline()); } } @@ -411,49 +401,39 @@ command(void) case TIF: n1 = (union node *)stalloc(sizeof (struct nif)); n1->type = NIF; - if ((n1->nif.test = list(0, 0)) == NULL) + if ((n1->nif.test = list(0)) == NULL) synexpect(-1); - if (readtoken() != TTHEN) - synexpect(TTHEN); - n1->nif.ifpart = list(0, 0); + consumetoken(TTHEN); + n1->nif.ifpart = list(0); n2 = n1; while (readtoken() == TELIF) { n2->nif.elsepart = (union node *)stalloc(sizeof (struct nif)); n2 = n2->nif.elsepart; n2->type = NIF; - if ((n2->nif.test = list(0, 0)) == NULL) + if ((n2->nif.test = list(0)) == NULL) synexpect(-1); - if (readtoken() != TTHEN) - synexpect(TTHEN); - n2->nif.ifpart = list(0, 0); + consumetoken(TTHEN); + n2->nif.ifpart = list(0); } if (lasttoken == TELSE) - n2->nif.elsepart = list(0, 0); + n2->nif.elsepart = list(0); else { n2->nif.elsepart = NULL; tokpushback++; } - if (readtoken() != TFI) - synexpect(TFI); + consumetoken(TFI); checkkwd = CHKKWD | CHKALIAS; break; case TWHILE: - case TUNTIL: { - int got; - n1 = (union node *)stalloc(sizeof (struct nbinary)); - n1->type = (lasttoken == TWHILE)? NWHILE : NUNTIL; - if ((n1->nbinary.ch1 = list(0, 0)) == NULL) + case TUNTIL: + t = lasttoken; + if ((n1 = list(0)) == NULL) synexpect(-1); - if ((got=readtoken()) != TDO) { -TRACE(("expecting DO got %s %s\n", tokname[got], got == TWORD ? wordtext : "")); - synexpect(TDO); - } - n1->nbinary.ch2 = list(0, 0); - if (readtoken() != TDONE) - synexpect(TDONE); + consumetoken(TDO); + n1 = makebinary((t == TWHILE)? NWHILE : NUNTIL, n1, list(0)); + consumetoken(TDONE); checkkwd = CHKKWD | CHKALIAS; break; - } case TFOR: if (readtoken() != TWORD || quoteflag || ! goodname(wordtext)) synerror("Bad for loop variable"); @@ -465,10 +445,7 @@ TRACE(("expecting DO got %s %s\n", tokna if (lasttoken == TWORD && ! quoteflag && equal(wordtext, "in")) { app = ≈ while (readtoken() == TWORD) { - n2 = (union node *)stalloc(sizeof (struct narg)); - n2->type = NARG; - n2->narg.text = wordtext; - n2->narg.backquote = backquotelist; + n2 = makename(); *app = n2; app = &n2->narg.next; } @@ -500,21 +477,15 @@ TRACE(("expecting DO got %s %s\n", tokna t = TEND; else synexpect(-1); - n1->nfor.body = list(0, 0); - if (readtoken() != t) - synexpect(t); + n1->nfor.body = list(0); + consumetoken(t); checkkwd = CHKKWD | CHKALIAS; break; case TCASE: n1 = (union node *)stalloc(sizeof (struct ncase)); n1->type = NCASE; - if (readtoken() != TWORD) - synexpect(TWORD); - n1->ncase.expr = n2 = (union node *)stalloc(sizeof (struct narg)); - n2->type = NARG; - n2->narg.text = wordtext; - n2->narg.backquote = backquotelist; - n2->narg.next = NULL; + consumetoken(TWORD); + n1->ncase.expr = makename(); while (readtoken() == TNL); if (lasttoken != TWORD || ! equal(wordtext, "in")) synerror("expecting \"in\""); @@ -527,10 +498,7 @@ TRACE(("expecting DO got %s %s\n", tokna if (lasttoken == TLP) readtoken(); for (;;) { - *app = ap = (union node *)stalloc(sizeof (struct narg)); - ap->type = NARG; - ap->narg.text = wordtext; - ap->narg.backquote = backquotelist; + *app = ap = makename(); checkkwd = CHKNL | CHKKWD; if (readtoken() != TPIPE) break; @@ -540,7 +508,7 @@ TRACE(("expecting DO got %s %s\n", tokna ap->narg.next = NULL; if (lasttoken != TRP) synexpect(TRP); - cp->nclist.body = list(0, 0); + cp->nclist.body = list(0); checkkwd = CHKNL | CHKKWD | CHKALIAS; if ((t = readtoken()) != TESAC) { @@ -560,17 +528,15 @@ TRACE(("expecting DO got %s %s\n", tokna case TLP: n1 = (union node *)stalloc(sizeof (struct nredir)); n1->type = NSUBSHELL; - n1->nredir.n = list(0, 0); + n1->nredir.n = list(0); n1->nredir.redirect = NULL; - if (readtoken() != TRP) - synexpect(TRP); + consumetoken(TRP); checkkwd = CHKKWD | CHKALIAS; is_subshell = 1; break; case TBEGIN: - n1 = list(0, 0); - if (readtoken() != TEND) - synexpect(TEND); + n1 = list(0); + consumetoken(TEND); checkkwd = CHKKWD | CHKALIAS; break; /* A simple command must have at least one redirection or word. */ @@ -644,10 +610,7 @@ simplecmd(union node **rpp, union node * for (;;) { checkkwd = savecheckkwd; if (readtoken() == TWORD) { - n = (union node *)stalloc(sizeof (struct narg)); - n->type = NARG; - n->narg.text = wordtext; - n->narg.backquote = backquotelist; + n = makename(); *app = n; app = &n->narg.next; if (savecheckkwd != 0 && !isassignment(wordtext)) @@ -659,8 +622,7 @@ simplecmd(union node **rpp, union node * } else if (lasttoken == TLP && app == &args->narg.next && rpp == orig_rpp) { /* We have a function */ - if (readtoken() != TRP) - synexpect(TRP); + consumetoken(TRP); funclinno = plinno; /* * - Require plain text. @@ -708,6 +670,18 @@ makename(void) return n; } +static union node * +makebinary(int type, union node *n1, union node *n2) +{ + union node *n; + + n = (union node *)stalloc(sizeof (struct nbinary)); + n->type = type; + n->nbinary.ch1 = n1; + n->nbinary.ch2 = n2; + return (n); +} + void fixredir(union node *n, const char *text, int err) { @@ -734,8 +708,7 @@ parsefname(void) { union node *n = redirnode; - if (readtoken() != TWORD) - synexpect(-1); + consumetoken(TWORD); if (n->type == NHERE) { struct heredoc *here = heredoc; struct heredoc *p; @@ -786,11 +759,7 @@ parseheredoc(void) } readtoken1(pgetc(), here->here->type == NHERE? SQSYNTAX : DQSYNTAX, here->eofmark, here->striptabs); - n = (union node *)stalloc(sizeof (struct narg)); - n->narg.type = NARG; - n->narg.next = NULL; - n->narg.text = wordtext; - n->narg.backquote = backquotelist; + n = makename(); here->here->nhere.doc = n; } } @@ -1090,14 +1059,14 @@ done: doprompt = 0; } - n = list(0, oldstyle); + n = list(0); - if (oldstyle) + if (oldstyle) { + if (peektoken() != TEOF) + synexpect(-1); doprompt = saveprompt; - else { - if (readtoken() != TRP) - synexpect(TRP); - } + } else + consumetoken(TRP); (*nlpp)->n = n; if (oldstyle) { @@ -1880,6 +1849,14 @@ isassignment(const char *p) } +static void +consumetoken(int token) +{ + if (readtoken() != token) + synexpect(token); +} + + /* * Called when an unexpected token is read during the parse. The argument * is the token that is expected, or -1 if more than one type of token can Modified: projects/random_number_generator/contrib/libcxxrt/exception.cc ============================================================================== --- projects/random_number_generator/contrib/libcxxrt/exception.cc Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/contrib/libcxxrt/exception.cc Sat Aug 31 13:41:20 2013 (r255094) @@ -715,7 +715,9 @@ static void report_failure(_Unwind_Reaso if (status == 0) { free(demangled); } // Print a back trace if no handler is found. // TODO: Make this optional +#ifndef __arm__ _Unwind_Backtrace(trace, 0); +#endif break; } std::terminate(); Modified: projects/random_number_generator/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp ============================================================================== --- projects/random_number_generator/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp Sat Aug 31 13:41:20 2013 (r255094) @@ -845,21 +845,26 @@ Value *InstCombiner::SimplifyDemandedUse Value *InstCombiner::SimplifyShrShlDemandedBits(Instruction *Shr, Instruction *Shl, APInt DemandedMask, APInt &KnownZero, APInt &KnownOne) { - unsigned ShlAmt = cast<ConstantInt>(Shl->getOperand(1))->getZExtValue(); - unsigned ShrAmt = cast<ConstantInt>(Shr->getOperand(1))->getZExtValue(); + const APInt &ShlOp1 = cast<ConstantInt>(Shl->getOperand(1))->getValue(); + const APInt &ShrOp1 = cast<ConstantInt>(Shr->getOperand(1))->getValue(); + if (!ShlOp1 || !ShrOp1) + return 0; // Noop. + + Value *VarX = Shr->getOperand(0); + Type *Ty = VarX->getType(); + unsigned BitWidth = Ty->getIntegerBitWidth(); + if (ShlOp1.uge(BitWidth) || ShrOp1.uge(BitWidth)) + return 0; // Undef. + + unsigned ShlAmt = ShlOp1.getZExtValue(); + unsigned ShrAmt = ShrOp1.getZExtValue(); KnownOne.clearAllBits(); KnownZero = APInt::getBitsSet(KnownZero.getBitWidth(), 0, ShlAmt-1); KnownZero &= DemandedMask; - if (ShlAmt == 0 || ShrAmt == 0) - return 0; - - Value *VarX = Shr->getOperand(0); - Type *Ty = VarX->getType(); - - APInt BitMask1(APInt::getAllOnesValue(Ty->getIntegerBitWidth())); - APInt BitMask2(APInt::getAllOnesValue(Ty->getIntegerBitWidth())); + APInt BitMask1(APInt::getAllOnesValue(BitWidth)); + APInt BitMask2(APInt::getAllOnesValue(BitWidth)); bool isLshr = (Shr->getOpcode() == Instruction::LShr); BitMask1 = isLshr ? (BitMask1.lshr(ShrAmt) << ShlAmt) : Modified: projects/random_number_generator/lib/libcompiler_rt/Makefile ============================================================================== --- projects/random_number_generator/lib/libcompiler_rt/Makefile Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/lib/libcompiler_rt/Makefile Sat Aug 31 13:41:20 2013 (r255094) @@ -153,10 +153,11 @@ SRCF+= divsi3 \ .endif # FreeBSD-specific atomic intrinsics. -.if ${MACHINE_CPUARCH} == "arm" +.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6" .PATH: ${.CURDIR}/../../sys/arm/arm SRCF+= stdatomic +CFLAGS+= -DEMIT_SYNC_ATOMICS .elif ${MACHINE_CPUARCH} == "mips" .PATH: ${.CURDIR}/../../sys/mips/mips Modified: projects/random_number_generator/share/man/man4/vmx.4 ============================================================================== --- projects/random_number_generator/share/man/man4/vmx.4 Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/share/man/man4/vmx.4 Sat Aug 31 13:41:20 2013 (r255094) @@ -100,6 +100,7 @@ Number of receive descriptors per ring a The default value is 256. The value must be a multiple of 32, and the maximum is 2048. There are two rings so the actual usage is doubled. +.El .Sh EXAMPLES The following entry must be added to the VMware configuration file to provide the Modified: projects/random_number_generator/sys/amd64/amd64/pmap.c ============================================================================== --- projects/random_number_generator/sys/amd64/amd64/pmap.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/amd64/amd64/pmap.c Sat Aug 31 13:41:20 2013 (r255094) @@ -1863,6 +1863,7 @@ pmap_pinit0(pmap_t pmap) pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys); pmap->pm_root.rt_root = 0; CPU_ZERO(&pmap->pm_active); + CPU_ZERO(&pmap->pm_save); PCPU_SET(curpmap, pmap); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); @@ -5939,7 +5940,6 @@ pmap_activate(struct thread *td) critical_enter(); pmap = vmspace_pmap(td->td_proc->p_vmspace); oldpmap = PCPU_GET(curpmap); - CPU_ZERO(&pmap->pm_save); cpuid = PCPU_GET(cpuid); #ifdef SMP CPU_CLR_ATOMIC(cpuid, &oldpmap->pm_active); Modified: projects/random_number_generator/sys/arm/arm/machdep.c ============================================================================== --- projects/random_number_generator/sys/arm/arm/machdep.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/arm/arm/machdep.c Sat Aug 31 13:41:20 2013 (r255094) @@ -1263,7 +1263,7 @@ initarm(struct arm_boot_params *abp) break; /* * Restricted region includes memory region - * skip availble region + * skip available region */ if ((start >= rstart) && (rend >= end)) { start = rend; Modified: projects/random_number_generator/sys/arm/arm/stdatomic.c ============================================================================== --- projects/random_number_generator/sys/arm/arm/stdatomic.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/arm/arm/stdatomic.c Sat Aug 31 13:41:20 2013 (r255094) @@ -194,6 +194,7 @@ EMIT_ALL_OPS_N(1, uint8_t) EMIT_ALL_OPS_N(2, uint16_t) EMIT_ALL_OPS_N(4, uint32_t) EMIT_ALL_OPS_N(8, uint64_t) +#undef EMIT_ALL_OPS_N #else /* !_KERNEL */ @@ -330,6 +331,7 @@ EMIT_FETCH_OP_N(N, uintN_t, ldr, str, fe EMIT_ALL_OPS_N(1, uint8_t, "ldrb", "strb", "strbeq") EMIT_ALL_OPS_N(2, uint16_t, "ldrh", "strh", "strheq") EMIT_ALL_OPS_N(4, uint32_t, "ldr", "str", "streq") +#undef EMIT_ALL_OPS_N #endif /* _KERNEL */ @@ -337,7 +339,31 @@ EMIT_ALL_OPS_N(4, uint32_t, "ldr", "str" #endif /* __CLANG_ATOMICS || __GNUC_ATOMICS */ -#if defined(__SYNC_ATOMICS) +#if defined(__SYNC_ATOMICS) || defined(EMIT_SYNC_ATOMICS) + +#ifdef __clang__ +#pragma redefine_extname __sync_lock_test_and_set_1_c __sync_lock_test_and_set_1 +#pragma redefine_extname __sync_lock_test_and_set_2_c __sync_lock_test_and_set_2 +#pragma redefine_extname __sync_lock_test_and_set_4_c __sync_lock_test_and_set_4 +#pragma redefine_extname __sync_val_compare_and_swap_1_c __sync_val_compare_and_swap_1 +#pragma redefine_extname __sync_val_compare_and_swap_2_c __sync_val_compare_and_swap_2 +#pragma redefine_extname __sync_val_compare_and_swap_4_c __sync_val_compare_and_swap_4 +#pragma redefine_extname __sync_fetch_and_add_1_c __sync_fetch_and_add_1 +#pragma redefine_extname __sync_fetch_and_add_2_c __sync_fetch_and_add_2 +#pragma redefine_extname __sync_fetch_and_add_4_c __sync_fetch_and_add_4 +#pragma redefine_extname __sync_fetch_and_and_1_c __sync_fetch_and_and_1 +#pragma redefine_extname __sync_fetch_and_and_2_c __sync_fetch_and_and_2 +#pragma redefine_extname __sync_fetch_and_and_4_c __sync_fetch_and_and_4 +#pragma redefine_extname __sync_fetch_and_or_1_c __sync_fetch_and_or_1 +#pragma redefine_extname __sync_fetch_and_or_2_c __sync_fetch_and_or_2 +#pragma redefine_extname __sync_fetch_and_or_4_c __sync_fetch_and_or_4 +#pragma redefine_extname __sync_fetch_and_xor_1_c __sync_fetch_and_xor_1 +#pragma redefine_extname __sync_fetch_and_xor_2_c __sync_fetch_and_xor_2 +#pragma redefine_extname __sync_fetch_and_xor_4_c __sync_fetch_and_xor_4 +#pragma redefine_extname __sync_fetch_and_sub_1_c __sync_fetch_and_sub_1 +#pragma redefine_extname __sync_fetch_and_sub_2_c __sync_fetch_and_sub_2 +#pragma redefine_extname __sync_fetch_and_sub_4_c __sync_fetch_and_sub_4 +#endif /* * Old __sync_* API. @@ -430,7 +456,7 @@ get_2(const reg_t *r, const uint16_t *of #define EMIT_LOCK_TEST_AND_SET_N(N, uintN_t) \ uintN_t \ -__sync_lock_test_and_set_##N(uintN_t *mem, uintN_t val) \ +__sync_lock_test_and_set_##N##_c(uintN_t *mem, uintN_t val) \ { \ uint32_t *mem32; \ reg_t val32, negmask, old; \ @@ -462,7 +488,7 @@ EMIT_LOCK_TEST_AND_SET_N(2, uint16_t) #define EMIT_VAL_COMPARE_AND_SWAP_N(N, uintN_t) \ uintN_t \ -__sync_val_compare_and_swap_##N(uintN_t *mem, uintN_t expected, \ +__sync_val_compare_and_swap_##N##_c(uintN_t *mem, uintN_t expected, \ uintN_t desired) \ { \ uint32_t *mem32; \ @@ -503,7 +529,7 @@ EMIT_VAL_COMPARE_AND_SWAP_N(2, uint16_t) #define EMIT_ARITHMETIC_FETCH_AND_OP_N(N, uintN_t, name, op) \ uintN_t \ -__sync_##name##_##N(uintN_t *mem, uintN_t val) \ +__sync_##name##_##N##_c(uintN_t *mem, uintN_t val) \ { \ uint32_t *mem32; \ reg_t val32, posmask, old; \ @@ -541,7 +567,7 @@ EMIT_ARITHMETIC_FETCH_AND_OP_N(2, uint16 #define EMIT_BITWISE_FETCH_AND_OP_N(N, uintN_t, name, op, idempotence) \ uintN_t \ -__sync_##name##_##N(uintN_t *mem, uintN_t val) \ +__sync_##name##_##N##_c(uintN_t *mem, uintN_t val) \ { \ uint32_t *mem32; \ reg_t val32, old; \ @@ -577,7 +603,7 @@ EMIT_BITWISE_FETCH_AND_OP_N(2, uint16_t, */ uint32_t -__sync_lock_test_and_set_4(uint32_t *mem, uint32_t val) +__sync_lock_test_and_set_4_c(uint32_t *mem, uint32_t val) { uint32_t old, temp; @@ -594,7 +620,7 @@ __sync_lock_test_and_set_4(uint32_t *mem } uint32_t -__sync_val_compare_and_swap_4(uint32_t *mem, uint32_t expected, +__sync_val_compare_and_swap_4_c(uint32_t *mem, uint32_t expected, uint32_t desired) { uint32_t old, temp; @@ -616,7 +642,7 @@ __sync_val_compare_and_swap_4(uint32_t * #define EMIT_FETCH_AND_OP_4(name, op) \ uint32_t \ -__sync_##name##_4(uint32_t *mem, uint32_t val) \ +__sync_##name##_4##_c(uint32_t *mem, uint32_t val) \ { \ uint32_t old, temp1, temp2; \ \ @@ -694,6 +720,7 @@ EMIT_ALL_OPS_N(1, uint8_t) EMIT_ALL_OPS_N(2, uint16_t) EMIT_ALL_OPS_N(4, uint32_t) EMIT_ALL_OPS_N(8, uint64_t) +#undef EMIT_ALL_OPS_N #else /* !_KERNEL */ @@ -705,7 +732,7 @@ EMIT_ALL_OPS_N(8, uint64_t) #define EMIT_LOCK_TEST_AND_SET_N(N, uintN_t, ldr, str) \ uintN_t \ -__sync_lock_test_and_set_##N(uintN_t *mem, uintN_t val) \ +__sync_lock_test_and_set_##N##_c(uintN_t *mem, uintN_t val) \ { \ uint32_t old, temp, ras_start; \ \ @@ -734,7 +761,7 @@ __sync_lock_test_and_set_##N(uintN_t *me #define EMIT_VAL_COMPARE_AND_SWAP_N(N, uintN_t, ldr, streq) \ uintN_t \ -__sync_val_compare_and_swap_##N(uintN_t *mem, uintN_t expected, \ +__sync_val_compare_and_swap_##N##_c(uintN_t *mem, uintN_t expected, \ uintN_t desired) \ { \ uint32_t old, temp, ras_start; \ @@ -766,7 +793,7 @@ __sync_val_compare_and_swap_##N(uintN_t #define EMIT_FETCH_AND_OP_N(N, uintN_t, ldr, str, name, op) \ uintN_t \ -__sync_##name##_##N(uintN_t *mem, uintN_t val) \ +__sync_##name##_##N##_c(uintN_t *mem, uintN_t val) \ { \ uint32_t old, temp, ras_start; \ \ @@ -807,6 +834,30 @@ EMIT_ALL_OPS_N(1, uint8_t, "ldrb", "strb EMIT_ALL_OPS_N(2, uint16_t, "ldrh", "strh", "streqh") EMIT_ALL_OPS_N(4, uint32_t, "ldr", "str", "streq") +#ifndef __clang__ +__strong_reference(__sync_lock_test_and_set_1_c, __sync_lock_test_and_set_1); +__strong_reference(__sync_lock_test_and_set_2_c, __sync_lock_test_and_set_2); +__strong_reference(__sync_lock_test_and_set_4_c, __sync_lock_test_and_set_4); +__strong_reference(__sync_val_compare_and_swap_1_c, __sync_val_compare_and_swap_1); +__strong_reference(__sync_val_compare_and_swap_2_c, __sync_val_compare_and_swap_2); +__strong_reference(__sync_val_compare_and_swap_4_c, __sync_val_compare_and_swap_4); +__strong_reference(__sync_fetch_and_add_1_c, __sync_fetch_and_add_1); +__strong_reference(__sync_fetch_and_add_2_c, __sync_fetch_and_add_2); +__strong_reference(__sync_fetch_and_add_4_c, __sync_fetch_and_add_4); +__strong_reference(__sync_fetch_and_and_1_c, __sync_fetch_and_and_1); +__strong_reference(__sync_fetch_and_and_2_c, __sync_fetch_and_and_2); +__strong_reference(__sync_fetch_and_and_4_c, __sync_fetch_and_and_4); +__strong_reference(__sync_fetch_and_sub_1_c, __sync_fetch_and_sub_1); +__strong_reference(__sync_fetch_and_sub_2_c, __sync_fetch_and_sub_2); +__strong_reference(__sync_fetch_and_sub_4_c, __sync_fetch_and_sub_4); +__strong_reference(__sync_fetch_and_or_1_c, __sync_fetch_and_or_1); +__strong_reference(__sync_fetch_and_or_2_c, __sync_fetch_and_or_2); +__strong_reference(__sync_fetch_and_or_4_c, __sync_fetch_and_or_4); +__strong_reference(__sync_fetch_and_xor_1_c, __sync_fetch_and_xor_1); +__strong_reference(__sync_fetch_and_xor_2_c, __sync_fetch_and_xor_2); +__strong_reference(__sync_fetch_and_xor_4_c, __sync_fetch_and_xor_4); +#endif + #endif /* _KERNEL */ #endif Modified: projects/random_number_generator/sys/dev/acpica/acpi_thermal.c ============================================================================== --- projects/random_number_generator/sys/dev/acpica/acpi_thermal.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/dev/acpica/acpi_thermal.c Sat Aug 31 13:41:20 2013 (r255094) @@ -111,6 +111,7 @@ struct acpi_tz_softc { struct acpi_tz_zone tz_zone; /*Thermal zone parameters*/ int tz_validchecks; + int tz_insane_tmp_notified; /* passive cooling */ struct proc *tz_cooling_proc; @@ -161,6 +162,8 @@ static driver_t acpi_tz_driver = { sizeof(struct acpi_tz_softc), }; +static char *acpi_tz_tmp_name = "_TMP"; + static devclass_t acpi_tz_devclass; DRIVER_MODULE(acpi_tz, acpi, acpi_tz_driver, acpi_tz_devclass, 0, 0); MODULE_DEPEND(acpi_tz, acpi, 1, 1, 1); @@ -456,12 +459,11 @@ acpi_tz_get_temperature(struct acpi_tz_s { int temp; ACPI_STATUS status; - static char *tmp_name = "_TMP"; ACPI_FUNCTION_NAME ("acpi_tz_get_temperature"); /* Evaluate the thermal zone's _TMP method. */ - status = acpi_GetInteger(sc->tz_handle, tmp_name, &temp); + status = acpi_GetInteger(sc->tz_handle, acpi_tz_tmp_name, &temp); if (ACPI_FAILURE(status)) { ACPI_VPRINT(sc->tz_dev, acpi_device_get_parent_softc(sc->tz_dev), "error fetching current temperature -- %s\n", @@ -470,7 +472,7 @@ acpi_tz_get_temperature(struct acpi_tz_s } /* Check it for validity. */ - acpi_tz_sanity(sc, &temp, tmp_name); + acpi_tz_sanity(sc, &temp, acpi_tz_tmp_name); if (temp == -1) return (FALSE); @@ -696,10 +698,29 @@ static void acpi_tz_sanity(struct acpi_tz_softc *sc, int *val, char *what) { if (*val != -1 && (*val < TZ_ZEROC || *val > TZ_ZEROC + 2000)) { - device_printf(sc->tz_dev, "%s value is absurd, ignored (%d.%dC)\n", - what, TZ_KELVTOC(*val)); + /* + * If the value we are checking is _TMP, warn the user only + * once. This avoids spamming messages if, for instance, the + * sensor is broken and always returns an invalid temperature. + * + * This is only done for _TMP; other values always emit a + * warning. + */ + if (what != acpi_tz_tmp_name || !sc->tz_insane_tmp_notified) { + device_printf(sc->tz_dev, "%s value is absurd, ignored (%d.%dC)\n", + what, TZ_KELVTOC(*val)); + + /* Don't warn the user again if the read value doesn't improve. */ + if (what == acpi_tz_tmp_name) + sc->tz_insane_tmp_notified = 1; + } *val = -1; + return; } + + /* This value is correct. Warn if it's incorrect again. */ + if (what == acpi_tz_tmp_name) + sc->tz_insane_tmp_notified = 0; } /* Modified: projects/random_number_generator/sys/dev/md/md.c ============================================================================== --- projects/random_number_generator/sys/dev/md/md.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/dev/md/md.c Sat Aug 31 13:41:20 2013 (r255094) @@ -826,7 +826,7 @@ mdstart_swap(struct md_s *sc, struct bio vm_object_pip_add(sc->object, 1); for (i = bp->bio_offset / PAGE_SIZE; i <= lastp; i++) { len = ((i == lastp) ? lastend : PAGE_SIZE) - offs; - m = vm_page_grab(sc->object, i, VM_ALLOC_NORMAL); + m = vm_page_grab(sc->object, i, VM_ALLOC_SYSTEM); if (bp->bio_cmd == BIO_READ) { if (m->valid == VM_PAGE_BITS_ALL) rv = VM_PAGER_OK; Modified: projects/random_number_generator/sys/dev/uart/uart_dev_ns8250.c ============================================================================== --- projects/random_number_generator/sys/dev/uart/uart_dev_ns8250.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/dev/uart/uart_dev_ns8250.c Sat Aug 31 13:41:20 2013 (r255094) @@ -465,7 +465,7 @@ ns8250_bus_attach(struct uart_softc *sc) * accidental manner as before. More analysis is warranted, but * at least now we fixed a known regression. */ - DELAY(150); + DELAY(200); return (0); } Modified: projects/random_number_generator/sys/dev/usb/usbdevs ============================================================================== --- projects/random_number_generator/sys/dev/usb/usbdevs Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/dev/usb/usbdevs Sat Aug 31 13:41:20 2013 (r255094) @@ -515,11 +515,13 @@ vendor USR 0x0baf U.S. Robotics vendor AMBIT 0x0bb2 Ambit Microsystems vendor HTC 0x0bb4 HTC vendor REALTEK 0x0bda Realtek +vendor ERICSSON2 0x0bdb Ericsson vendor MEI 0x0bed MEI vendor ADDONICS2 0x0bf6 Addonics Technology vendor FSC 0x0bf8 Fujitsu Siemens Computers vendor AGATE 0x0c08 Agate Technologies vendor DMI 0x0c0b DMI +vendor CANYON 0x0c10 Canyon vendor ICOM 0x0c26 Icom Inc. vendor GNOTOMETRICS 0x0c33 GN Otometrics vendor CHICONY2 0x0c45 Chicony Modified: projects/random_number_generator/sys/mips/conf/MALTA ============================================================================== --- projects/random_number_generator/sys/mips/conf/MALTA Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/mips/conf/MALTA Sat Aug 31 13:41:20 2013 (r255094) @@ -65,5 +65,6 @@ device loop device ether device le device miibus +device bpf device md device uart Modified: projects/random_number_generator/sys/mips/conf/MALTA64 ============================================================================== --- projects/random_number_generator/sys/mips/conf/MALTA64 Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/mips/conf/MALTA64 Sat Aug 31 13:41:20 2013 (r255094) @@ -31,6 +31,8 @@ makeoptions MODULES_OVERRIDE="" options TICK_USE_YAMON_FREQ=defined #options TICK_USE_MALTA_RTC=defined +makeoptions KERNLOADADDR=0xffffffff80100000 + include "../malta/std.malta" hints "MALTA.hints" #Default places to look for devices. @@ -66,4 +68,5 @@ device ether device le device miibus device md +device bpf device uart Copied: projects/random_number_generator/sys/mips/conf/PICOSTATION_M2HP (from r255093, head/sys/mips/conf/PICOSTATION_M2HP) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/random_number_generator/sys/mips/conf/PICOSTATION_M2HP Sat Aug 31 13:41:20 2013 (r255094, copy of r255093, head/sys/mips/conf/PICOSTATION_M2HP) @@ -0,0 +1,68 @@ +# +# Specific board setup for the Picostation M2 HP board. +# +# This board has the following hardware: +# +# + AR7241 CPU SoC +# + AR9287 Wifi +# + Integrated switch (XXX speed?) +# + 8MB flash +# + 32MB RAM +# + uboot environment + +# $FreeBSD$ + +include "AR724X_BASE" +ident "PICOSTATION_M2HP" +hints "PICOSTATION_M2HP.hints" + +options AR71XX_REALMEM=32*1024*1024 + +options AR71XX_ENV_UBOOT + +# Limit inlines +makeoptions INLINE_LIMIT=768 + +# We bite the performance overhead for now; the kernel won't +# fit if the mutexes are inlined. +options MUTEX_NOINLINE +options RWLOCK_NOINLINE +options SX_NOINLINE + +# There's no need to enable swapping on this platform. +options NO_SWAPPING + +# For DOS - enable if required +# options MSDOSFS + +# uncompress - to boot read-only lzma natively from flash +device geom_uncompress +options GEOM_UNCOMPRESS +options ROOTDEVNAME=\"ufs:/dev/map/rootfs.uncompress\" + +# Not enough space for these.. +nooptions INVARIANTS +nooptions INVARIANT_SUPPORT +nooptions WITNESS +nooptions WITNESS_SKIPSPIN +nooptions DEBUG_REDZONE +nooptions DEBUG_MEMGUARD + +# Used for the static uboot partition map +device geom_map + +# Options needed for the EEPROM based calibration/PCI configuration data. +options AR71XX_ATH_EEPROM # Fetch EEPROM/PCI config from flash +options ATH_EEPROM_FIRMWARE # Use EEPROM from flash +device firmware # Used by the above + +# Options required for miiproxy and mdiobus +options ARGE_MDIO # Export an MDIO bus separate from arge +device miiproxy # MDIO bus <-> MII PHY rendezvous + +device etherswitch +device arswitch + +# Enable GPIO +device gpio +device gpioled Copied: projects/random_number_generator/sys/mips/conf/PICOSTATION_M2HP.hints (from r255093, head/sys/mips/conf/PICOSTATION_M2HP.hints) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/random_number_generator/sys/mips/conf/PICOSTATION_M2HP.hints Sat Aug 31 13:41:20 2013 (r255094, copy of r255093, head/sys/mips/conf/PICOSTATION_M2HP.hints) @@ -0,0 +1,103 @@ +# $FreeBSD$ + +# arge1 MDIO bus +hint.argemdio.0.at="nexus0" +hint.argemdio.0.maddr=0x1a000000 +hint.argemdio.0.msize=0x1000 +hint.argemdio.0.order=0 + +# Override MAC Address with the one on EEPROM +hint.arge.0.eeprommac=0x1fff0000 + +# arge0: dedicated switch port; RMII; dedicated PHY 4 on switch, connected +# via internal switch MDIO bus. +hint.arge.0.media=100 # Map to 100/full +hint.arge.0.fduplex=1 # +hint.arge.0.phymask=0x10 # PHY4 +hint.arge.0.mdio=mdioproxy1 # .. off of the switch mdiobus + +# arge1: nail to 1000/full, RMII - connected to the switch +hint.arge.1.media=1000 # Map to 1000/full +hint.arge.1.fduplex=1 # +hint.arge.1.phymask=0x0 # no directly mapped PHYs + +# +# AR7240 switch config +# +hint.arswitch.0.at="mdio0" +hint.arswitch.0.is_7240=1 # We need to be explicitly told this +hint.arswitch.0.numphys=4 # 4 active switch PHYs (PHY 0 -> 3) +hint.arswitch.0.phy4cpu=1 # Yes, PHY 4 == dedicated PHY +hint.arswitch.0.is_rgmii=0 # No, not RGMII +hint.arswitch.0.is_gmii=0 # No, not GMII + +# ath0 hint - pcie slot 0 +hint.pcib.0.bus.0.0.0.ath_fixup_addr=0x1fff1000 +hint.pcib.0.bus.0.0.0.ath_fixup_size=4096 + +# ath +hint.ath.0.eeprom_firmware="pcib.0.bus.0.0.0.eeprom_firmware" + +# GPIO pins +# Pin 0: red led (sig1) +# Pin 1: yellow led (sig2) +# Pin 11: green len (sig3) +# Pin 7: green len (sig4) +# Pin 12: Reset switch +hint.gpio.0.pinmask=0x1883 + +# Signal leds +hint.gpioled.0.at="gpiobus0" +hint.gpioled.0.name="sig1" +hint.gpioled.0.pins=0x0001 # pin 0 +hint.gpioled.1.at="gpiobus0" +hint.gpioled.1.name="sig2" +hint.gpioled.1.pins=0x0002 # pin 1 +hint.gpioled.2.at="gpiobus0" +hint.gpioled.2.name="sig3" +hint.gpioled.2.pins=0x0800 # pin 11 +hint.gpioled.3.at="gpiobus0" +hint.gpioled.3.name="sig4" +hint.gpioled.3.pins=0x0080 # pin 7 + +# GEOM_MAP +# +# Picostation M2 HP +# +# mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),1024k(kernel),6528k(rootfs),256k(cfg),64k(EEPROM) + +hint.map.0.at="flash/spi0" +hint.map.0.start=0x00000000 +hint.map.0.end=0x00040000 # 256k u-boot +hint.map.0.name="u-boot" +hint.map.0.readonly=1 + +hint.map.1.at="flash/spi0" +hint.map.1.start=0x00040000 +hint.map.1.end=0x00050000 # 64k u-boot-env +hint.map.1.name="u-boot-env" +hint.map.1.readonly=1 + +hint.map.2.at="flash/spi0" +hint.map.2.start=0x00050000 +hint.map.2.end=0x00130000 # 896k kernel +hint.map.2.name="kernel" +hint.map.2.readonly=1 + +hint.map.3.at="flash/spi0" +hint.map.3.start=0x130000 +hint.map.3.end=0x007b0000 # 6656k rootfs +hint.map.3.name="rootfs" +hint.map.3.readonly=0 + +hint.map.4.at="flash/spi0" +hint.map.4.start=0x007b0000 +hint.map.4.end=0x007f0000 # 256k cfg +hint.map.4.name="cfg" +hint.map.4.readonly=0 + +hint.map.5.at="flash/spi0" +hint.map.5.start=0x007f0000 +hint.map.5.end=0x00800000 # 64k EEPROM +hint.map.5.name="eeprom" +hint.map.5.readonly=1 Modified: projects/random_number_generator/sys/mips/malta/files.malta ============================================================================== --- projects/random_number_generator/sys/mips/malta/files.malta Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/mips/malta/files.malta Sat Aug 31 13:41:20 2013 (r255094) @@ -1,6 +1,7 @@ # $FreeBSD$ mips/malta/gt.c standard mips/malta/gt_pci.c standard +mips/malta/gt_pci_bus_space.c standard mips/malta/obio.c optional uart mips/malta/uart_cpu_maltausart.c optional uart mips/malta/uart_bus_maltausart.c optional uart Modified: projects/random_number_generator/sys/mips/malta/gt_pci.c ============================================================================== --- projects/random_number_generator/sys/mips/malta/gt_pci.c Sat Aug 31 08:56:33 2013 (r255093) +++ projects/random_number_generator/sys/mips/malta/gt_pci.c Sat Aug 31 13:41:20 2013 (r255094) @@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$"); #include <dev/pci/pcib_private.h> #include "pcib_if.h" +#include <mips/malta/gt_pci_bus_space.h> #define ICU_LEN 16 /* number of ISA IRQs */ @@ -635,7 +636,6 @@ gt_pci_alloc_resource(device_t bus, devi struct gt_pci_softc *sc = device_get_softc(bus); struct resource *rv = NULL; struct rman *rm; - bus_space_tag_t bt = 0; bus_space_handle_t bh = 0; switch (type) { @@ -644,12 +644,10 @@ gt_pci_alloc_resource(device_t bus, devi *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308311341.r7VDfLsT087435>