Date: Sat, 6 Jun 2015 22:52:56 +0000 From: "zbb (Zbigniew Bodek)" <phabric-noreply@FreeBSD.org> To: freebsd-arm@freebsd.org Subject: [Differential] [Updated, 34 lines] D2701: Add options to dmb() and dsb() macros Message-ID: <13c018f87024eca6888b23b7f1400deb@localhost.localdomain> In-Reply-To: <differential-rev-PHID-DREV-kl3ls7rde2bkjzreqxfo-req@FreeBSD.org> References: <differential-rev-PHID-DREV-kl3ls7rde2bkjzreqxfo-req@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--b1_13c018f87024eca6888b23b7f1400deb Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit zbb updated the summary for this revision. zbb removed rS FreeBSD src repository as the repository for this revision. zbb updated this revision to Diff 5973. CHANGES SINCE LAST UPDATE https://reviews.freebsd.org/D2701?vs=5849&id=5973 REVISION DETAIL https://reviews.freebsd.org/D2701 AFFECTED FILES sys/arm64/arm64/db_interface.c sys/arm64/arm64/vfp.c sys/arm64/include/atomic.h CHANGE DETAILS diff --git a/sys/arm64/include/atomic.h b/sys/arm64/include/atomic.h --- a/sys/arm64/include/atomic.h +++ b/sys/arm64/include/atomic.h @@ -29,13 +29,29 @@ #ifndef _MACHINE_ATOMIC_H_ #define _MACHINE_ATOMIC_H_ -#define isb() __asm __volatile("isb" : : : "memory") -#define dsb() __asm __volatile("dsb sy" : : : "memory") -#define dmb() __asm __volatile("dmb sy" : : : "memory") +#define isb() __asm __volatile("isb" : : : "memory") -#define mb() dmb() -#define wmb() dmb() -#define rmb() dmb() +/* + * Options for DMB and DSB: + * oshld Outer Shareable, load + * oshst Outer Shareable, store + * osh Outer Shareable, all + * nshld Non-shareable, load + * nshst Non-shareable, store + * nsh Non-shareable, all + * ishld Inner Shareable, load + * ishst Inner Shareable, store + * ish Inner Shareable, all + * ld Full system, load + * st Full system, store + * sy Full system, all + */ +#define dsb(opt) __asm __volatile("dsb " __STRING(opt) : : : "memory") +#define dmb(opt) __asm __volatile("dmb " __STRING(opt) : : : "memory") + +#define mb() dmb(sy) /* Full system memory barrier all */ +#define wmb() dmb(st) /* Full system memory barrier store */ +#define rmb() dmb(ld) /* Full system memory barrier load */ static __inline void atomic_add_32(volatile uint32_t *p, uint32_t val) diff --git a/sys/arm64/arm64/vfp.c b/sys/arm64/arm64/vfp.c --- a/sys/arm64/arm64/vfp.c +++ b/sys/arm64/arm64/vfp.c @@ -120,7 +120,7 @@ td->td_pcb->pcb_fpcr = fpcr; td->td_pcb->pcb_fpsr = fpsr; - dsb(); + dsb(ish); vfp_disable(); } critical_exit(); diff --git a/sys/arm64/arm64/db_interface.c b/sys/arm64/arm64/db_interface.c --- a/sys/arm64/arm64/db_interface.c +++ b/sys/arm64/arm64/db_interface.c @@ -156,13 +156,11 @@ } *dst++ = *data++; } + dsb(ish); - dsb(); /* Clean D-cache and invalidate I-cache */ cpu_dcache_wb_range(addr, (vm_size_t)size); cpu_icache_sync_range(addr, (vm_size_t)size); - dsb(); - isb(); return (0); } EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: zbb, emaste, imp, ian, andrew Cc: emaste, andrew, freebsd-arm-list, imp --b1_13c018f87024eca6888b23b7f1400deb Content-Type: text/x-patch; charset=utf-8; name="D2701.5973.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D2701.5973.patch" ZGlmZiAtLWdpdCBhL3N5cy9hcm02NC9pbmNsdWRlL2F0b21pYy5oIGIvc3lzL2FybTY0L2luY2x1 ZGUvYXRvbWljLmgKLS0tIGEvc3lzL2FybTY0L2luY2x1ZGUvYXRvbWljLmgKKysrIGIvc3lzL2Fy bTY0L2luY2x1ZGUvYXRvbWljLmgKQEAgLTI5LDEzICsyOSwyOSBAQAogI2lmbmRlZglfTUFDSElO RV9BVE9NSUNfSF8KICNkZWZpbmUJX01BQ0hJTkVfQVRPTUlDX0hfCiAKLSNkZWZpbmUJaXNiKCkg IF9fYXNtIF9fdm9sYXRpbGUoImlzYiIgOiA6IDogIm1lbW9yeSIpCi0jZGVmaW5lCWRzYigpICBf X2FzbSBfX3ZvbGF0aWxlKCJkc2Igc3kiIDogOiA6ICJtZW1vcnkiKQotI2RlZmluZQlkbWIoKSAg X19hc20gX192b2xhdGlsZSgiZG1iIHN5IiA6IDogOiAibWVtb3J5IikKKyNkZWZpbmUJaXNiKCkJ CV9fYXNtIF9fdm9sYXRpbGUoImlzYiIgOiA6IDogIm1lbW9yeSIpCiAKLSNkZWZpbmUJbWIoKSAg IGRtYigpCi0jZGVmaW5lCXdtYigpICBkbWIoKQotI2RlZmluZQlybWIoKSAgZG1iKCkKKy8qCisg KiBPcHRpb25zIGZvciBETUIgYW5kIERTQjoKKyAqCW9zaGxkCU91dGVyIFNoYXJlYWJsZSwgbG9h ZAorICoJb3Noc3QJT3V0ZXIgU2hhcmVhYmxlLCBzdG9yZQorICoJb3NoCU91dGVyIFNoYXJlYWJs ZSwgYWxsCisgKgluc2hsZAlOb24tc2hhcmVhYmxlLCBsb2FkCisgKgluc2hzdAlOb24tc2hhcmVh YmxlLCBzdG9yZQorICoJbnNoCU5vbi1zaGFyZWFibGUsIGFsbAorICoJaXNobGQJSW5uZXIgU2hh cmVhYmxlLCBsb2FkCisgKglpc2hzdAlJbm5lciBTaGFyZWFibGUsIHN0b3JlCisgKglpc2gJSW5u ZXIgU2hhcmVhYmxlLCBhbGwKKyAqCWxkCUZ1bGwgc3lzdGVtLCBsb2FkCisgKglzdAlGdWxsIHN5 c3RlbSwgc3RvcmUKKyAqCXN5CUZ1bGwgc3lzdGVtLCBhbGwKKyAqLworI2RlZmluZQlkc2Iob3B0 KQlfX2FzbSBfX3ZvbGF0aWxlKCJkc2IgIiBfX1NUUklORyhvcHQpIDogOiA6ICJtZW1vcnkiKQor I2RlZmluZQlkbWIob3B0KQlfX2FzbSBfX3ZvbGF0aWxlKCJkbWIgIiBfX1NUUklORyhvcHQpIDog OiA6ICJtZW1vcnkiKQorCisjZGVmaW5lCW1iKCkJZG1iKHN5KQkvKiBGdWxsIHN5c3RlbSBtZW1v cnkgYmFycmllciBhbGwgKi8KKyNkZWZpbmUJd21iKCkJZG1iKHN0KQkvKiBGdWxsIHN5c3RlbSBt ZW1vcnkgYmFycmllciBzdG9yZSAqLworI2RlZmluZQlybWIoKQlkbWIobGQpCS8qIEZ1bGwgc3lz dGVtIG1lbW9yeSBiYXJyaWVyIGxvYWQgKi8KIAogc3RhdGljIF9faW5saW5lIHZvaWQKIGF0b21p Y19hZGRfMzIodm9sYXRpbGUgdWludDMyX3QgKnAsIHVpbnQzMl90IHZhbCkKZGlmZiAtLWdpdCBh L3N5cy9hcm02NC9hcm02NC92ZnAuYyBiL3N5cy9hcm02NC9hcm02NC92ZnAuYwotLS0gYS9zeXMv YXJtNjQvYXJtNjQvdmZwLmMKKysrIGIvc3lzL2FybTY0L2FybTY0L3ZmcC5jCkBAIC0xMjAsNyAr MTIwLDcgQEAKIAkJdGQtPnRkX3BjYi0+cGNiX2ZwY3IgPSBmcGNyOwogCQl0ZC0+dGRfcGNiLT5w Y2JfZnBzciA9IGZwc3I7CiAKLQkJZHNiKCk7CisJCWRzYihpc2gpOwogCQl2ZnBfZGlzYWJsZSgp OwogCX0KIAljcml0aWNhbF9leGl0KCk7CmRpZmYgLS1naXQgYS9zeXMvYXJtNjQvYXJtNjQvZGJf aW50ZXJmYWNlLmMgYi9zeXMvYXJtNjQvYXJtNjQvZGJfaW50ZXJmYWNlLmMKLS0tIGEvc3lzL2Fy bTY0L2FybTY0L2RiX2ludGVyZmFjZS5jCisrKyBiL3N5cy9hcm02NC9hcm02NC9kYl9pbnRlcmZh Y2UuYwpAQCAtMTU2LDEzICsxNTYsMTEgQEAKIAkJfQogCQkqZHN0KysgPSAqZGF0YSsrOwogCX0K Kwlkc2IoaXNoKTsKIAotCWRzYigpOwogCS8qIENsZWFuIEQtY2FjaGUgYW5kIGludmFsaWRhdGUg SS1jYWNoZSAqLwogCWNwdV9kY2FjaGVfd2JfcmFuZ2UoYWRkciwgKHZtX3NpemVfdClzaXplKTsK IAljcHVfaWNhY2hlX3N5bmNfcmFuZ2UoYWRkciwgKHZtX3NpemVfdClzaXplKTsKLQlkc2IoKTsK LQlpc2IoKTsKIAogCXJldHVybiAoMCk7CiB9Cgo= --b1_13c018f87024eca6888b23b7f1400deb--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?13c018f87024eca6888b23b7f1400deb>