HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ARM-software
speculation-barrier
Objective-C2018–2018
ARM-software / speculation-barrier · Archived

speculation-barrier

This project provides a header file which contains wrapper macros for the __builtin_load_no_speculate builtin function defined at https://www.arm.com/security-update This builtin function defines a speculation barrier, which can be used to limit the conditions under which a value which has been loaded can be used under speculative execution.

2Distinct people
2Mentions
0Explicit recommenders
46GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

This project provides a header file which contains wrapper macros for the __builtin_load_no_speculate builtin function defined at https://www.arm.com/security-update This builtin function defines a speculation barrier, which can be used to limit the conditions under which a value which has been loaded can be used under speculative execution.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 8:01:28 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by day2 dated mentions

Observed mentions: 2018-01-04 06:03:17 UTC to 2018-01-24 07:30:40 UTC.

012018-01-04 00:00:00 UTC to 2018-01-05 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 42018-01-05 00:00:00 UTC to 2018-01-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-06 00:00:00 UTC to 2018-01-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-07 00:00:00 UTC to 2018-01-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-08 00:00:00 UTC to 2018-01-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-09 00:00:00 UTC to 2018-01-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-10 00:00:00 UTC to 2018-01-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-11 00:00:00 UTC to 2018-01-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-12 00:00:00 UTC to 2018-01-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-13 00:00:00 UTC to 2018-01-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-14 00:00:00 UTC to 2018-01-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsJan 142018-01-15 00:00:00 UTC to 2018-01-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-16 00:00:00 UTC to 2018-01-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-17 00:00:00 UTC to 2018-01-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-18 00:00:00 UTC to 2018-01-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-19 00:00:00 UTC to 2018-01-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-20 00:00:00 UTC to 2018-01-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-21 00:00:00 UTC to 2018-01-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-22 00:00:00 UTC to 2018-01-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-23 00:00:00 UTC to 2018-01-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-24 00:00:00 UTC to 2018-01-25 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 24

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jan 42018-01-04 00:00:00 UTC2018-01-05 00:00:00 UTC101
Jan 52018-01-05 00:00:00 UTC2018-01-06 00:00:00 UTC000
Jan 62018-01-06 00:00:00 UTC2018-01-07 00:00:00 UTC000
Jan 72018-01-07 00:00:00 UTC2018-01-08 00:00:00 UTC000
Jan 82018-01-08 00:00:00 UTC2018-01-09 00:00:00 UTC000
Jan 92018-01-09 00:00:00 UTC2018-01-10 00:00:00 UTC000
Jan 102018-01-10 00:00:00 UTC2018-01-11 00:00:00 UTC000
Jan 112018-01-11 00:00:00 UTC2018-01-12 00:00:00 UTC000
Jan 122018-01-12 00:00:00 UTC2018-01-13 00:00:00 UTC000
Jan 132018-01-13 00:00:00 UTC2018-01-14 00:00:00 UTC000
Jan 142018-01-14 00:00:00 UTC2018-01-15 00:00:00 UTC000
Jan 152018-01-15 00:00:00 UTC2018-01-16 00:00:00 UTC000
Jan 162018-01-16 00:00:00 UTC2018-01-17 00:00:00 UTC000
Jan 172018-01-17 00:00:00 UTC2018-01-18 00:00:00 UTC000
Jan 182018-01-18 00:00:00 UTC2018-01-19 00:00:00 UTC000
Jan 192018-01-19 00:00:00 UTC2018-01-20 00:00:00 UTC000
Jan 202018-01-20 00:00:00 UTC2018-01-21 00:00:00 UTC000
Jan 212018-01-21 00:00:00 UTC2018-01-22 00:00:00 UTC000
Jan 222018-01-22 00:00:00 UTC2018-01-23 00:00:00 UTC000
Jan 232018-01-23 00:00:00 UTC2018-01-24 00:00:00 UTC000
Jan 242018-01-24 00:00:00 UTC2018-01-25 00:00:00 UTC101

What Hacker News says

1 sources
On ARM (A64, A32, T32) we get CSDB barrier, but it's a hint instruction instead of going via MSR registers. From whitepaper CSDB is 1101_0101_0000_0011_0010_0010_100_11111 Here some snippets from ARM manuals: HINT instruction: 1101 0101 0000 0011 0010 0010 100 11111 CRm = 0010 op2 = 100 Some encodings described here are not allocated in this revision of the architecture, and behave as NOPs. (This is important) Hints 18 to 23 variant Applies when CRm == 0010 && op2 != 00x. HINT #<imm> Hint is encoded in CRm:op2 pair, existing similar: 0010:000 ESB // Error Synchronization Barrier 0010:001 PSB CSYNC // Profiling Synchronization Barrier Thus in assembler this is written: hint #0x14 Which is a NOP if SOC does not understand this hint. It's being used here: http://lkml.iu.edu/hypermail/linux/kernel/1801.0/04191.html and also here: https://gith
Read the rest
ub.com/ARM-software/speculation-barrier/blob/mas... (which is being upstreamed to compilers in cross-platform generic form IIRC) ARM whitepaper states that conditional selection/conditional move is enough on most ARM implementations. If it's not the case then the new CSDB solves the problem. On older CPUs it's still a NOP. X-Gene disables branch prediction: http://lkml.iu.edu/hypermail/linux/kernel/1801.2/06482.html ThunderX2 branch prediction hardening: https://patchwork.kernel.org/patch/10151975/
In The new microcode from Intel and AMD adds three new features

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.